diff --git a/apps/calculation/calculation.cpp b/apps/calculation/calculation.cpp index a5fe1e80b..d5ff68351 100644 --- a/apps/calculation/calculation.cpp +++ b/apps/calculation/calculation.cpp @@ -135,6 +135,10 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre // Get input height Layout inputLayout = createInputLayout(); KDCoordinate inputHeight = inputLayout.layoutSize().height(); + KDCoordinate inputWidth = inputLayout.layoutSize().width(); + float singleMargin = 2 * Metric::CommonSmallMargin; + float doubleMargin = 2 * Metric::CommonSmallMargin; + bool singleLine = false; KDCoordinate inputBaseline = inputLayout.baseline(); // Get exact output height if needed @@ -156,11 +160,22 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre if (displayOutput(context) == DisplayOutput::ExactOnly) { KDCoordinate exactOutputHeight = exactLayout.layoutSize().height(); - if (allExpressionsInline) { - KDCoordinate exactOutputBaseline = exactLayout.baseline(); - result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline); + KDCoordinate exactOutputWidth = exactLayout.layoutSize().width(); + singleLine = exactOutputWidth + inputWidth < maxWidth - 40; + if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { + if (allExpressionsInline) { + KDCoordinate exactOutputBaseline = exactLayout.baseline(); + result = (inputHeight >= exactOutputHeight) ? maxCoordinate(inputBaseline, exactOutputBaseline) + singleMargin : maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline) + singleMargin; + } else { + result = (inputHeight >= exactOutputHeight) ? inputHeight + singleMargin : exactOutputHeight + singleMargin; + } } else { - result = inputHeight+exactOutputHeight; + if (allExpressionsInline) { + KDCoordinate exactOutputBaseline = exactLayout.baseline(); + result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline)+doubleMargin; + } else { + result = inputHeight+exactOutputHeight+doubleMargin+doubleMargin; + } } } else { bool couldNotCreateApproximateLayout = false; @@ -182,23 +197,47 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre } KDCoordinate approximateOutputHeight = approximateLayout.layoutSize().height(); + KDCoordinate approximateOutputWidth = approximateLayout.layoutSize().width(); + singleLine = approximateOutputWidth + inputWidth < maxWidth - 40; if (displayOutput(context) == DisplayOutput::ApproximateOnly || (!expanded && displayOutput(context) == DisplayOutput::ExactAndApproximateToggle)) { - if (allExpressionsInline) { - KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); - result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline); + if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { + if (allExpressionsInline) { + KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); + result = (inputHeight >= approximateOutputHeight) ? maxCoordinate(inputBaseline, approximateOutputBaseline) + singleMargin : maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline) + singleMargin; + } else { + result = (inputHeight >= approximateOutputHeight) ? inputHeight + singleMargin : approximateOutputHeight + singleMargin; + } } else { - result = inputHeight+approximateOutputHeight; + if (allExpressionsInline) { + KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); + result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline) + doubleMargin + singleMargin; + } else { + result = inputHeight+approximateOutputHeight+doubleMargin+singleMargin; + } } } else { assert(displayOutput(context) == DisplayOutput::ExactAndApproximate || (displayOutput(context) == DisplayOutput::ExactAndApproximateToggle && expanded)); KDCoordinate exactOutputHeight = exactLayout.layoutSize().height(); KDCoordinate exactOutputBaseline = exactLayout.baseline(); + KDCoordinate exactOutputWidth = exactLayout.layoutSize().width(); + KDCoordinate approximateOutputWidth = approximateLayout.layoutSize().width(); + KDCoordinate outputWidth = exactOutputWidth + approximateOutputWidth; + singleLine = outputWidth + inputWidth < maxWidth - 70; KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); - if (allExpressionsInline) { - result = maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)); - } else { + if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { KDCoordinate outputHeight = maxCoordinate(exactOutputBaseline, approximateOutputBaseline) + maxCoordinate(exactOutputHeight-exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline); - result = inputHeight + outputHeight; + if (allExpressionsInline) { + result = (inputHeight >= outputHeight) ? maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + singleMargin : maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)) + singleMargin; + } else { + result = (inputHeight >= outputHeight) ? inputHeight + singleMargin : outputHeight + singleMargin; + } + } else { + if (allExpressionsInline) { + result = maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)); + } else { + KDCoordinate outputHeight = maxCoordinate(exactOutputBaseline, approximateOutputBaseline) + maxCoordinate(exactOutputHeight-exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline) + doubleMargin; + result = inputHeight + outputHeight + doubleMargin; + } } } } diff --git a/apps/calculation/calculation.h b/apps/calculation/calculation.h index 98c352f21..5dec4fc0a 100644 --- a/apps/calculation/calculation.h +++ b/apps/calculation/calculation.h @@ -95,6 +95,7 @@ public: // Additional Information AdditionalInformationType additionalInformationType(Poincare::Context * context); private: + static constexpr int maxWidth = 314; static constexpr int k_numberOfExpressions = 4; static constexpr KDCoordinate k_heightComputationFailureHeight = 50; static constexpr const char * k_maximalIntegerWithAdditionalInformation = "10000000000000000"; diff --git a/apps/calculation/history_controller.cpp b/apps/calculation/history_controller.cpp index a817a6598..d39883880 100644 --- a/apps/calculation/history_controller.cpp +++ b/apps/calculation/history_controller.cpp @@ -200,7 +200,7 @@ KDCoordinate HistoryController::rowHeight(int j) { return 0; } Shared::ExpiringPointer calculation = calculationAtIndex(j); - return calculation->height(App::app()->localContext(), j == selectedRow() && selectedSubviewType() == SubviewType::Output) + 4 * Metric::CommonSmallMargin; + return calculation->height(App::app()->localContext(), j == selectedRow() && selectedSubviewType() == SubviewType::Output); } int HistoryController::typeAtLocation(int i, int j) { diff --git a/apps/calculation/history_controller.h b/apps/calculation/history_controller.h index d0bed934e..7d7b67116 100644 --- a/apps/calculation/history_controller.h +++ b/apps/calculation/history_controller.h @@ -37,7 +37,7 @@ private: CalculationSelectableTableView * selectableTableView(); bool calculationAtIndexToggles(int index); void historyViewCellDidChangeSelection(HistoryViewCell ** cell, HistoryViewCell ** previousCell, int previousSelectedCellX, int previousSelectedCellY, SubviewType type, SubviewType previousType) override; - constexpr static int k_maxNumberOfDisplayedRows = 5; + constexpr static int k_maxNumberOfDisplayedRows = 8; CalculationSelectableTableView m_selectableTableView; HistoryViewCell m_calculationHistory[k_maxNumberOfDisplayedRows]; CalculationStore * m_calculationStore; diff --git a/apps/calculation/history_view_cell.cpp b/apps/calculation/history_view_cell.cpp index b40bb30ff..0007c0bac 100644 --- a/apps/calculation/history_view_cell.cpp +++ b/apps/calculation/history_view_cell.cpp @@ -185,14 +185,21 @@ void HistoryViewCell::layoutSubviews(bool force) { inputSize.height()), force); KDSize outputSize = m_scrollableOutputView.minimalSizeForOptimalDisplay(); + int outputY = (oneLine() && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) ? maxCoordinate(0, inputSize.height() - outputSize.height()) / 2 : inputSize.height(); m_scrollableOutputView.setFrame(KDRect( maxCoordinate(0, maxFrameWidth - outputSize.width()), - inputSize.height(), + outputY, minCoordinate(maxFrameWidth, outputSize.width()), - outputSize.height()), + oneLine() ? outputSize.height() : (bounds().height() - inputSize.height())), force); } +bool HistoryViewCell::oneLine() { + KDSize inputSize = m_inputView.minimalSizeForOptimalDisplay(); + KDSize outputSize = m_scrollableOutputView.minimalSizeForOptimalDisplay(); + return outputSize.width() + inputSize.width() < bounds().width() - 6; +} + void HistoryViewCell::setCalculation(Calculation * calculation, bool expanded) { uint32_t newCalculationCRC = Ion::crc32Byte((const uint8_t *)calculation, ((char *)calculation->next()) - ((char *) calculation)); if (newCalculationCRC == m_calculationCRC32 && m_calculationExpanded == expanded) { diff --git a/apps/calculation/history_view_cell.h b/apps/calculation/history_view_cell.h index 42e59719c..b831e49ed 100644 --- a/apps/calculation/history_view_cell.h +++ b/apps/calculation/history_view_cell.h @@ -51,6 +51,7 @@ public: Shared::ScrollableTwoExpressionsView * outputView(); Calculation::AdditionalInformationType additionalInformationType() const { return m_calculationAdditionInformation; } private: + bool oneLine(); constexpr static KDCoordinate k_resultWidth = 80; void reloadScroll(); void reloadOutputSelection(HistoryViewCellDataSource::SubviewType previousType); diff --git a/apps/settings/base.de.i18n b/apps/settings/base.de.i18n index e8e4b3750..01ded04ac 100644 --- a/apps/settings/base.de.i18n +++ b/apps/settings/base.de.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "Epsilon version" CustomSoftwareVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPythonversion" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Python Schriftgröße" LargeFont = "Große " SmallFont = "Kleine " diff --git a/apps/settings/base.en.i18n b/apps/settings/base.en.i18n index 377c81d92..848b8aa64 100644 --- a/apps/settings/base.en.i18n +++ b/apps/settings/base.en.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "Epsilon version" CustomSoftwareVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPython version" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Python font size" LargeFont = "Large " SmallFont = "Small " diff --git a/apps/settings/base.es.i18n b/apps/settings/base.es.i18n index 68435d29a..ac8520411 100644 --- a/apps/settings/base.es.i18n +++ b/apps/settings/base.es.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "Versión de Epsilon" CustomSoftwareVersion = "Versión de Omega" Username = "Apellido" MicroPythonVersion = "Version de µPython" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Tipografía Python" LargeFont = "Grande " SmallFont = "Pequeño " diff --git a/apps/settings/base.fr.i18n b/apps/settings/base.fr.i18n index 2575bf2a9..08d0de9ec 100644 --- a/apps/settings/base.fr.i18n +++ b/apps/settings/base.fr.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "Version d'Epsilon" CustomSoftwareVersion = "Version d'Omega" Username = "Nom" MicroPythonVersion = "Version de µPython" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Police Python" LargeFont = "Grand " SmallFont = "Petit " diff --git a/apps/settings/base.hu.i18n b/apps/settings/base.hu.i18n index de8c16cb6..c1a20a569 100644 --- a/apps/settings/base.hu.i18n +++ b/apps/settings/base.hu.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "version d'Epsilon" CustomSoftwareVersion = "Omega verzió" Username = "Felhasználónév" MicroPythonVersion = "µPython verzió" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Python betü méret" LargeFont = "Large " SmallFont = "Small " diff --git a/apps/settings/base.pt.i18n b/apps/settings/base.pt.i18n index c12556e39..03cc970d9 100644 --- a/apps/settings/base.pt.i18n +++ b/apps/settings/base.pt.i18n @@ -38,6 +38,9 @@ SoftwareVersion = "Versão do Epsilon" CustomSoftwareVersion = "Versão do Omega" Username = "Nome" MicroPythonVersion = "Versao do µPython" +ResultDisplay = "Result display" +DefaultResult = "Default " +CompactResult = "Compact " FontSizes = "Tipografia Python" LargeFont = "Grande " SmallFont = "Pequeno " diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index 6d72ac40f..5f7701ea4 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -14,6 +14,7 @@ constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMess constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)}; constexpr SettingsMessageTree s_symbolChildren[4] = {SettingsMessageTree(I18n::Message::SymbolMultiplicationCross),SettingsMessageTree(I18n::Message::SymbolMultiplicationMiddleDot),SettingsMessageTree(I18n::Message::SymbolMultiplicationStar),SettingsMessageTree(I18n::Message::SymbolMultiplicationAutoSymbol)}; constexpr SettingsMessageTree s_modelMathOptionsChildren[5] = {SettingsMessageTree(I18n::Message::AngleUnit, s_modelAngleChildren), SettingsMessageTree(I18n::Message::DisplayMode, s_modelFloatDisplayModeChildren), SettingsMessageTree(I18n::Message::EditionMode, s_modelEditionModeChildren), SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren), SettingsMessageTree(I18n::Message::SymbolMultiplication, s_symbolChildren)}; +constexpr SettingsMessageTree s_modelResultDisplayChildren[2] = {SettingsMessageTree(I18n::Message::DefaultResult), SettingsMessageTree(I18n::Message::CompactResult)}; constexpr SettingsMessageTree s_modelFontChildren[2] = {SettingsMessageTree(I18n::Message::LargeFont), SettingsMessageTree(I18n::Message::SmallFont)}; constexpr SettingsMessageTree s_accessibilityChildren[6] = {SettingsMessageTree(I18n::Message::AccessibilityInvertColors), SettingsMessageTree(I18n::Message::AccessibilityMagnify),SettingsMessageTree(I18n::Message::AccessibilityGamma),SettingsMessageTree(I18n::Message::AccessibilityGammaRed),SettingsMessageTree(I18n::Message::AccessibilityGammaGreen),SettingsMessageTree(I18n::Message::AccessibilityGammaBlue)}; constexpr SettingsMessageTree s_contributorsChildren[17] = {SettingsMessageTree(I18n::Message::Developers), SettingsMessageTree(I18n::Message::QuentinGuidee), SettingsMessageTree(I18n::Message::DannySimmons), SettingsMessageTree(I18n::Message::JoachimLeFournis), SettingsMessageTree(I18n::Message::JeanBaptisteBoric), SettingsMessageTree(I18n::Message::MaximeFriess), SettingsMessageTree(I18n::Message::David), SettingsMessageTree(I18n::Message::DamienNicolet), SettingsMessageTree(I18n::Message::EvannDreumont), SettingsMessageTree(I18n::Message::SzaboLevente), SettingsMessageTree(I18n::Message::VenceslasDuet), SettingsMessageTree(I18n::Message::BetaTesters), SettingsMessageTree(I18n::Message::CyprienMejat), SettingsMessageTree(I18n::Message::TimeoArnouts), SettingsMessageTree(I18n::Message::LouisC), SettingsMessageTree(I18n::Message::LucaRusso), SettingsMessageTree(I18n::Message::LelahelHideux)}; diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index f2717b65d..af9114825 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -19,6 +19,7 @@ extern const SettingsMessageTree s_modelFloatDisplayModeChildren[4]; extern const SettingsMessageTree s_modelComplexFormatChildren[3]; extern const SettingsMessageTree s_symbolChildren[4]; extern const SettingsMessageTree s_modelMathOptionsChildren[5]; +extern const SettingsMessageTree s_modelResultDisplayChildren[2]; extern const SettingsMessageTree s_modelFontChildren[2]; extern const SettingsMessageTree s_accessibilityChildren[6]; extern const SettingsMessageTree s_contributorsChildren[17]; @@ -49,7 +50,8 @@ private: constexpr static int k_indexOfBrightnessCell = k_indexOfMathOptionsChildren + 1; constexpr static int k_indexOfLanguageCell = k_indexOfBrightnessCell + 1; constexpr static int k_indexOfExamModeCell = k_indexOfLanguageCell + 1; - constexpr static int k_indexOfFontCell = k_indexOfExamModeCell + 1; + constexpr static int k_indexOfResultDisplayCell = k_indexOfExamModeCell + 1; + constexpr static int k_indexOfFontCell = k_indexOfResultDisplayCell + 1; /* Pop-up cell and About cell are located at the same index because pop-up * cell is optional. We must always correct k_indexOfAboutCell with * hasPrompt() (TODO: make hasPrompt() constexpr and correct @@ -61,7 +63,7 @@ private: StackViewController * stackController() const; I18n::Message promptMessage() const; bool hasPrompt() const { return promptMessage() != I18n::Message::Default; } - constexpr static int k_numberOfSimpleChevronCells = 8; + constexpr static int k_numberOfSimpleChevronCells = 9; MessageTableCellWithChevronAndMessage m_cells[k_numberOfSimpleChevronCells]; MessageTableCellWithGaugeWithSeparator m_brightnessCell; MessageTableCellWithSwitch m_popUpCell; diff --git a/apps/settings/main_controller_prompt_beta.cpp b/apps/settings/main_controller_prompt_beta.cpp index 8ee38839f..f7546a2ce 100644 --- a/apps/settings/main_controller_prompt_beta.cpp +++ b/apps/settings/main_controller_prompt_beta.cpp @@ -7,6 +7,7 @@ namespace Settings { constexpr SettingsMessageTree s_modelMenu[] = {SettingsMessageTree(I18n::Message::MathOptions, s_modelMathOptionsChildren), SettingsMessageTree(I18n::Message::Brightness), + SettingsMessageTree(I18n::Message::ResultDisplay, s_modelResultDisplayChildren), SettingsMessageTree(I18n::Message::FontSizes, s_modelFontChildren), SettingsMessageTree(I18n::Message::Language), SettingsMessageTree(I18n::Message::ExamMode, ExamModeConfiguration::s_modelExamChildren), diff --git a/apps/settings/main_controller_prompt_none.cpp b/apps/settings/main_controller_prompt_none.cpp index ac670ab4c..d382a0b11 100644 --- a/apps/settings/main_controller_prompt_none.cpp +++ b/apps/settings/main_controller_prompt_none.cpp @@ -9,6 +9,7 @@ constexpr SettingsMessageTree s_modelMenu[] = SettingsMessageTree(I18n::Message::Brightness), SettingsMessageTree(I18n::Message::Language), SettingsMessageTree(I18n::Message::ExamMode, ExamModeConfiguration::s_modelExamChildren), + SettingsMessageTree(I18n::Message::ResultDisplay, s_modelResultDisplayChildren), SettingsMessageTree(I18n::Message::FontSizes, s_modelFontChildren), SettingsMessageTree(I18n::Message::Accessibility, s_accessibilityChildren), SettingsMessageTree(I18n::Message::About, s_modelAboutChildren)}; diff --git a/apps/settings/main_controller_prompt_update.cpp b/apps/settings/main_controller_prompt_update.cpp index 5ccbd1607..b7586d190 100644 --- a/apps/settings/main_controller_prompt_update.cpp +++ b/apps/settings/main_controller_prompt_update.cpp @@ -7,6 +7,7 @@ namespace Settings { constexpr SettingsMessageTree s_modelMenu[] = {SettingsMessageTree(I18n::Message::MathOptions, s_modelMathOptionsChildren), SettingsMessageTree(I18n::Message::Brightness), + SettingsMessageTree(I18n::Message::ResultDisplay, s_modelResultDisplayChildren), SettingsMessageTree(I18n::Message::FontSizes, s_modelFontChildren), SettingsMessageTree(I18n::Message::Language), SettingsMessageTree(I18n::Message::ExamMode, ExamModeConfiguration::s_modelExamChildren), diff --git a/apps/settings/sub_menu/preferences_controller.cpp b/apps/settings/sub_menu/preferences_controller.cpp index c5db57bc7..8505b98db 100644 --- a/apps/settings/sub_menu/preferences_controller.cpp +++ b/apps/settings/sub_menu/preferences_controller.cpp @@ -178,6 +178,18 @@ Layout PreferencesController::layoutForPreferences(I18n::Message message) { case I18n::Message::SymbolMultiplicationAutoSymbol: return CodePointLayout::Builder(' ', k_layoutFont); + // Result display + case I18n::Message::DefaultResult: + { + const char * text = " "; + return LayoutHelper::String(text, strlen(text), k_layoutFont); + } + case I18n::Message::CompactResult: + { + const char * text = "Beta"; + return LayoutHelper::String(text, strlen(text), k_layoutFont); + } + // Font size case I18n::Message::LargeFont: case I18n::Message::SmallFont: @@ -228,6 +240,8 @@ void PreferencesController::setPreferenceWithValueIndex(I18n::Message message, i GlobalPreferences::sharedGlobalPreferences()->setTempExamMode((GlobalPreferences::ExamMode)((uint8_t)valueIndex + 1)); } else if (message == I18n::Message::SymbolMultiplication) { preferences->setSymbolMultiplication((Preferences::SymbolMultiplication)valueIndex); + } else if (message == I18n::Message::ResultDisplay) { + preferences->setResultDisplay((Preferences::ResultDisplay)valueIndex); } else if (message == I18n::Message::FontSizes) { GlobalPreferences::sharedGlobalPreferences()->setFont(valueIndex == 0 ? KDFont::LargeFont : KDFont::SmallFont); } @@ -254,6 +268,9 @@ int PreferencesController::valueIndexForPreference(I18n::Message message) const if (message == I18n::Message::SymbolMultiplication) { return (int)preferences->symbolofMultiplication(); } + if (message == I18n::Message::ResultDisplay) { + return (int)preferences->resultDisplay(); + } if (message == I18n::Message::FontSizes) { return GlobalPreferences::sharedGlobalPreferences()->font() == KDFont::LargeFont ? 0 : 1; } diff --git a/poincare/include/poincare/preferences.h b/poincare/include/poincare/preferences.h index 4782754a0..228909dc1 100644 --- a/poincare/include/poincare/preferences.h +++ b/poincare/include/poincare/preferences.h @@ -52,6 +52,10 @@ public: Star = 2, Auto = 3 }; + enum class ResultDisplay : uint8_t { + Default = 0, + Compact = 1 + }; enum class PythonFont : uint8_t { Large = 0, Small = 1 @@ -72,6 +76,8 @@ public: void setColorOfLED(LEDColor color) { m_colorOfLED = color; } SymbolMultiplication symbolofMultiplication() const { return m_symbolMultiplication; } void setSymbolMultiplication(SymbolMultiplication symbolofMultiplication) { m_symbolMultiplication = symbolofMultiplication; } + ResultDisplay resultDisplay() const { return m_resultDisplay; } + void setResultDisplay(ResultDisplay resultDisplay) { m_resultDisplay = resultDisplay; } PythonFont pythonFont() const { return m_pythonFont; } void setPythonFont(PythonFont pythonFont) { m_pythonFont = pythonFont; } const KDFont * KDPythonFont() const { return (m_pythonFont == PythonFont::Small) ? KDFont::SmallFont : KDFont::LargeFont; } @@ -83,6 +89,7 @@ private: uint8_t m_numberOfSignificantDigits; LEDColor m_colorOfLED; SymbolMultiplication m_symbolMultiplication; + ResultDisplay m_resultDisplay; PythonFont m_pythonFont; }; diff --git a/poincare/src/preferences.cpp b/poincare/src/preferences.cpp index b6e3efb32..c21482c1f 100644 --- a/poincare/src/preferences.cpp +++ b/poincare/src/preferences.cpp @@ -15,6 +15,7 @@ Preferences::Preferences() : m_numberOfSignificantDigits(PrintFloat::k_numberOfPrintedSignificantDigits), m_colorOfLED(Preferences::LEDColor::Red), m_symbolMultiplication(Preferences::SymbolMultiplication::Auto), + m_resultDisplay(Preferences::ResultDisplay::Default), m_pythonFont(Preferences::PythonFont::Large) {}