mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps/calculation] Additional outputs for Unit
This commit is contained in:
committed by
Émilie Feral
parent
f8050f0673
commit
266482ef99
@@ -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 \
|
||||
|
||||
32
apps/calculation/additional_outputs/unit_list_controller.cpp
Normal file
32
apps/calculation/additional_outputs/unit_list_controller.cpp
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
22
apps/calculation/additional_outputs/unit_list_controller.h
Normal file
22
apps/calculation/additional_outputs/unit_list_controller.h
Normal 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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user