[apps/calculation] Additional outputs for Unit

This commit is contained in:
Ruben Dashyan
2020-03-05 17:30:16 +01:00
committed by Émilie Feral
parent f8050f0673
commit 266482ef99
6 changed files with 64 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ app_calculation_src = $(addprefix apps/calculation/,\
additional_outputs/trigonometry_graph_cell.cpp \
additional_outputs/trigonometry_list_controller.cpp \
additional_outputs/trigonometry_model.cpp \
additional_outputs/unit_list_controller.cpp \
app.cpp \
edit_expression_controller.cpp \
expression_field.cpp \

View File

@@ -0,0 +1,32 @@
#include "unit_list_controller.h"
#include "../app.h"
#include "../../shared/poincare_helpers.h"
namespace Calculation {
int UnitListController::numberOfRows() const { //FIXME
return 2;
}
void UnitListController::computeLayoutAtIndex(int index) { //FIXME
Poincare::Expression expressionAtIndex;
if (index == 0) {
expressionAtIndex = m_expression;
} else {
assert(index == 1);
Poincare::ExpressionNode::ReductionContext reductionContext(
App::app()->localContext(),
Poincare::Preferences::sharedPreferences()->complexFormat(),
Poincare::Preferences::sharedPreferences()->angleUnit(),
Poincare::ExpressionNode::ReductionTarget::SystemForApproximation,
Poincare::ExpressionNode::SymbolicComputation::ReplaceAllSymbolsWithDefinitionsOrUndefined);
expressionAtIndex = m_expression.reduce(reductionContext);
}
m_layouts[index] = Shared::PoincareHelpers::CreateLayout(expressionAtIndex);
}
I18n::Message UnitListController::messageAtIndex(int index) {
return (I18n::Message)0;
}
}

View File

@@ -0,0 +1,22 @@
#ifndef CALCULATION_ADDITIONAL_OUTPUTS_UNIT_LIST_CONTROLLER_H
#define CALCULATION_ADDITIONAL_OUTPUTS_UNIT_LIST_CONTROLLER_H
#include "expressions_list_controller.h"
namespace Calculation {
class UnitListController : public ExpressionsListController {
public:
UnitListController(EditExpressionController * editExpressionController) :
ExpressionsListController(editExpressionController) {}
//ListViewDataSource
int numberOfRows() const override;
private:
void computeLayoutAtIndex(int index) override;
I18n::Message messageAtIndex(int index) override;
};
}
#endif

View File

@@ -250,8 +250,9 @@ Calculation::AdditionalInformationType Calculation::additionalInformationType(Co
if (input().isDefinedCosineOrSine(context, complexFormat, preferences->angleUnit()) || o.isDefinedCosineOrSine(context, complexFormat, preferences->angleUnit())) {
return AdditionalInformationType::Trigonometry;
}
// TODO: return AdditionalInformationType::Unit
if (o.hasUnit()) {
return AdditionalInformationType::Unit;
}
if (o.isBasedIntegerCappedBy(k_maximalIntegerWithAdditionalInformation)) {
return AdditionalInformationType::Integer;
}

View File

@@ -15,7 +15,8 @@ HistoryController::HistoryController(EditExpressionController * editExpressionCo
m_complexController(editExpressionController),
m_integerController(editExpressionController),
m_rationalController(editExpressionController),
m_trigonometryController(editExpressionController)
m_trigonometryController(editExpressionController),
m_unitController(editExpressionController)
{
for (int i = 0; i < k_maxNumberOfDisplayedRows; i++) {
m_calculationHistory[i].setParentResponder(&m_selectableTableView);
@@ -106,6 +107,8 @@ bool HistoryController::handleEvent(Ion::Events::Event event) {
vc = &m_integerController;
} else if (additionalInfoType == Calculation::AdditionalInformationType::Rational) {
vc = &m_rationalController;
} else if (additionalInfoType == Calculation::AdditionalInformationType::Unit) {
vc = &m_unitController;
}
if (vc) {
vc->setExpression(e);

View File

@@ -9,6 +9,7 @@
#include "additional_outputs/integer_list_controller.h"
#include "additional_outputs/rational_list_controller.h"
#include "additional_outputs/trigonometry_list_controller.h"
#include "additional_outputs/unit_list_controller.h"
namespace Calculation {
@@ -45,6 +46,7 @@ private:
IntegerListController m_integerController;
RationalListController m_rationalController;
TrigonometryListController m_trigonometryController;
UnitListController m_unitController;
};
}