mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[apps] Rename exact/approx as left/right in scrollable_exact_approx_exp_view
This commit is contained in:
@@ -11,8 +11,8 @@ HistoryViewCell::HistoryViewCell(Responder * parentResponder) :
|
||||
Responder(parentResponder),
|
||||
m_calculation(),
|
||||
m_inputLayout(),
|
||||
m_exactOutputLayout(),
|
||||
m_approximateOutputLayout(),
|
||||
m_leftOutputLayout(),
|
||||
m_rightOutputLayout(),
|
||||
m_inputView(this),
|
||||
m_scrollableOutputView(this),
|
||||
m_selectedSubviewType(HistoryViewCell::SubviewType::Output)
|
||||
@@ -106,21 +106,21 @@ void HistoryViewCell::setCalculation(Calculation * calculation) {
|
||||
* when updating one layout, if the second one still points to a deleted
|
||||
* layout, calling to layoutSubviews() would fail. */
|
||||
assert(!calculation->shouldOnlyDisplayApproximateOutput(calculationApp->localContext()) || !calculation->shouldOnlyDisplayExactOutput());
|
||||
if (!m_exactOutputLayout.isUninitialized()) {
|
||||
m_exactOutputLayout = Poincare::Layout();
|
||||
if (!m_leftOutputLayout.isUninitialized()) {
|
||||
m_leftOutputLayout = Poincare::Layout();
|
||||
}
|
||||
if (!m_approximateOutputLayout.isUninitialized()) {
|
||||
m_approximateOutputLayout = Poincare::Layout();
|
||||
if (!m_rightOutputLayout.isUninitialized()) {
|
||||
m_rightOutputLayout = Poincare::Layout();
|
||||
}
|
||||
if (calculation->shouldOnlyDisplayExactOutput()) {
|
||||
m_approximateOutputLayout = calculation->createExactOutputLayout();
|
||||
m_rightOutputLayout = calculation->createExactOutputLayout();
|
||||
} else {
|
||||
m_approximateOutputLayout = calculation->createApproximateOutputLayout(calculationApp->localContext());
|
||||
m_rightOutputLayout = calculation->createApproximateOutputLayout(calculationApp->localContext());
|
||||
if (!calculation->shouldOnlyDisplayApproximateOutput(calculationApp->localContext())) {
|
||||
m_exactOutputLayout = calculation->createExactOutputLayout();
|
||||
m_leftOutputLayout = calculation->createExactOutputLayout();
|
||||
}
|
||||
}
|
||||
m_scrollableOutputView.setLayouts(m_approximateOutputLayout, m_exactOutputLayout);
|
||||
m_scrollableOutputView.setLayouts(m_rightOutputLayout, m_leftOutputLayout);
|
||||
I18n::Message equalMessage = calculation->exactAndApproximateDisplayedOutputsAreEqual(calculationApp->localContext()) == Calculation::EqualSign::Equal ? I18n::Message::Equal : I18n::Message::AlmostEqual;
|
||||
m_scrollableOutputView.setEqualMessage(equalMessage);
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@ private:
|
||||
constexpr static KDCoordinate k_resultWidth = 80;
|
||||
Calculation m_calculation;
|
||||
Poincare::Layout m_inputLayout;
|
||||
Poincare::Layout m_exactOutputLayout;
|
||||
Poincare::Layout m_approximateOutputLayout;
|
||||
Poincare::Layout m_leftOutputLayout;
|
||||
Poincare::Layout m_rightOutputLayout;
|
||||
ScrollableExpressionView m_inputView;
|
||||
Shared::ScrollableExactApproximateExpressionsView m_scrollableOutputView;
|
||||
SubviewType m_selectedSubviewType;
|
||||
|
||||
@@ -6,9 +6,9 @@ using namespace Poincare;
|
||||
namespace Shared {
|
||||
|
||||
ScrollableExactApproximateExpressionsView::ContentCell::ContentCell() :
|
||||
m_approximateExpressionView(),
|
||||
m_rightExpressionView(),
|
||||
m_approximateSign(KDFont::LargeFont, I18n::Message::AlmostEqual, 0.5f, 0.5f, Palette::GreyVeryDark),
|
||||
m_exactExpressionView(),
|
||||
m_leftExpressionView(),
|
||||
m_selectedSubviewType((SubviewType)0)
|
||||
{
|
||||
}
|
||||
@@ -21,13 +21,13 @@ KDColor ScrollableExactApproximateExpressionsView::ContentCell::backgroundColor(
|
||||
void ScrollableExactApproximateExpressionsView::ContentCell::setHighlighted(bool highlight) {
|
||||
// Do not call HighlightCell::setHighlighted to avoid marking all cell as dirty
|
||||
m_highlighted = highlight;
|
||||
m_exactExpressionView.setBackgroundColor(backgroundColor());
|
||||
m_approximateExpressionView.setBackgroundColor(backgroundColor());
|
||||
m_leftExpressionView.setBackgroundColor(backgroundColor());
|
||||
m_rightExpressionView.setBackgroundColor(backgroundColor());
|
||||
if (highlight) {
|
||||
if (m_selectedSubviewType == SubviewType::ExactOutput) {
|
||||
m_exactExpressionView.setBackgroundColor(Palette::Select);
|
||||
m_leftExpressionView.setBackgroundColor(Palette::Select);
|
||||
} else {
|
||||
m_approximateExpressionView.setBackgroundColor(Palette::Select);
|
||||
m_rightExpressionView.setBackgroundColor(Palette::Select);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,24 +36,24 @@ void ScrollableExactApproximateExpressionsView::ContentCell::reloadCell() {
|
||||
setHighlighted(isHighlighted());
|
||||
m_approximateSign.setBackgroundColor(backgroundColor());
|
||||
if (numberOfSubviews() == 1) {
|
||||
m_approximateExpressionView.setTextColor(KDColorBlack);
|
||||
m_rightExpressionView.setTextColor(KDColorBlack);
|
||||
} else {
|
||||
m_approximateExpressionView.setTextColor(Palette::GreyVeryDark);
|
||||
m_rightExpressionView.setTextColor(Palette::GreyVeryDark);
|
||||
}
|
||||
layoutSubviews();
|
||||
}
|
||||
|
||||
KDSize ScrollableExactApproximateExpressionsView::ContentCell::minimalSizeForOptimalDisplay() const {
|
||||
KDSize approximateExpressionSize = m_approximateExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDSize rightExpressionSize = m_rightExpressionView.minimalSizeForOptimalDisplay();
|
||||
if (numberOfSubviews() == 1) {
|
||||
return approximateExpressionSize;
|
||||
return rightExpressionSize;
|
||||
}
|
||||
KDSize exactExpressionSize = m_exactExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDCoordinate exactBaseline = m_exactExpressionView.layout().baseline();
|
||||
KDCoordinate approximateBaseline = m_approximateExpressionView.layout().baseline();
|
||||
KDCoordinate height = max(exactBaseline, approximateBaseline) + max(exactExpressionSize.height()-exactBaseline, approximateExpressionSize.height()-approximateBaseline);
|
||||
KDSize leftExpressionSize = m_leftExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDCoordinate leftBaseline = m_leftExpressionView.layout().baseline();
|
||||
KDCoordinate rightBaseline = m_rightExpressionView.layout().baseline();
|
||||
KDCoordinate height = max(leftBaseline, rightBaseline) + max(leftExpressionSize.height()-leftBaseline, rightExpressionSize.height()-rightBaseline);
|
||||
KDSize approximateSignSize = m_approximateSign.minimalSizeForOptimalDisplay();
|
||||
return KDSize(exactExpressionSize.width()+approximateSignSize.width()+approximateExpressionSize.width()+2*k_digitHorizontalMargin, height);
|
||||
return KDSize(leftExpressionSize.width()+approximateSignSize.width()+rightExpressionSize.width()+2*k_digitHorizontalMargin, height);
|
||||
}
|
||||
|
||||
void ScrollableExactApproximateExpressionsView::ContentCell::setSelectedSubviewType(ScrollableExactApproximateExpressionsView::SubviewType subviewType) {
|
||||
@@ -63,39 +63,39 @@ void ScrollableExactApproximateExpressionsView::ContentCell::setSelectedSubviewT
|
||||
|
||||
Poincare::Layout ScrollableExactApproximateExpressionsView::ContentCell::layout() const {
|
||||
if (m_selectedSubviewType == SubviewType::ExactOutput) {
|
||||
return m_exactExpressionView.layout();
|
||||
return m_leftExpressionView.layout();
|
||||
} else {
|
||||
return m_approximateExpressionView.layout();
|
||||
return m_rightExpressionView.layout();
|
||||
}
|
||||
}
|
||||
|
||||
int ScrollableExactApproximateExpressionsView::ContentCell::numberOfSubviews() const {
|
||||
if (m_exactExpressionView.layout().isUninitialized()) {
|
||||
if (m_leftExpressionView.layout().isUninitialized()) {
|
||||
return 1;
|
||||
}
|
||||
return 3;
|
||||
}
|
||||
|
||||
View * ScrollableExactApproximateExpressionsView::ContentCell::subviewAtIndex(int index) {
|
||||
View * views[3] = {&m_approximateExpressionView, &m_approximateSign, &m_exactExpressionView};
|
||||
View * views[3] = {&m_rightExpressionView, &m_approximateSign, &m_leftExpressionView};
|
||||
return views[index];
|
||||
}
|
||||
|
||||
void ScrollableExactApproximateExpressionsView::ContentCell::layoutSubviews() {
|
||||
KDCoordinate height = bounds().height();
|
||||
KDSize approximateExpressionSize = m_approximateExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDSize rightExpressionSize = m_rightExpressionView.minimalSizeForOptimalDisplay();
|
||||
if (numberOfSubviews() == 1) {
|
||||
m_approximateExpressionView.setFrame(KDRect(0, 0, approximateExpressionSize.width(), height));
|
||||
m_rightExpressionView.setFrame(KDRect(0, 0, rightExpressionSize.width(), height));
|
||||
return;
|
||||
}
|
||||
KDCoordinate exactBaseline = m_exactExpressionView.layout().baseline();
|
||||
KDCoordinate approximateBaseline = m_approximateExpressionView.layout().baseline();
|
||||
KDCoordinate baseline = max(exactBaseline, approximateBaseline);
|
||||
KDSize exactExpressionSize = m_exactExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDCoordinate leftBaseline = m_leftExpressionView.layout().baseline();
|
||||
KDCoordinate rightBaseline = m_rightExpressionView.layout().baseline();
|
||||
KDCoordinate baseline = max(leftBaseline, rightBaseline);
|
||||
KDSize leftExpressionSize = m_leftExpressionView.minimalSizeForOptimalDisplay();
|
||||
KDSize approximateSignSize = m_approximateSign.minimalSizeForOptimalDisplay();
|
||||
m_exactExpressionView.setFrame(KDRect(0, baseline-exactBaseline, exactExpressionSize));
|
||||
m_approximateExpressionView.setFrame(KDRect(2*k_digitHorizontalMargin+exactExpressionSize.width()+approximateSignSize.width(), baseline-approximateBaseline, approximateExpressionSize));
|
||||
m_approximateSign.setFrame(KDRect(k_digitHorizontalMargin+exactExpressionSize.width(), baseline-approximateSignSize.height()/2, approximateSignSize));
|
||||
m_leftExpressionView.setFrame(KDRect(0, baseline-leftBaseline, leftExpressionSize));
|
||||
m_rightExpressionView.setFrame(KDRect(2*k_digitHorizontalMargin+leftExpressionSize.width()+approximateSignSize.width(), baseline-rightBaseline, rightExpressionSize));
|
||||
m_approximateSign.setFrame(KDRect(k_digitHorizontalMargin+leftExpressionSize.width(), baseline-approximateSignSize.height()/2, approximateSignSize));
|
||||
}
|
||||
|
||||
ScrollableExactApproximateExpressionsView::ScrollableExactApproximateExpressionsView(Responder * parentResponder) :
|
||||
@@ -104,9 +104,9 @@ ScrollableExactApproximateExpressionsView::ScrollableExactApproximateExpressions
|
||||
{
|
||||
}
|
||||
|
||||
void ScrollableExactApproximateExpressionsView::setLayouts(Poincare::Layout approximateLayout, Poincare::Layout exactLayout) {
|
||||
m_contentCell.approximateExpressionView()->setLayout(approximateLayout);
|
||||
m_contentCell.exactExpressionView()->setLayout(exactLayout);
|
||||
void ScrollableExactApproximateExpressionsView::setLayouts(Poincare::Layout rightLayout, Poincare::Layout leftLayout) {
|
||||
m_contentCell.rightExpressionView()->setLayout(rightLayout);
|
||||
m_contentCell.leftExpressionView()->setLayout(leftLayout);
|
||||
m_contentCell.layoutSubviews();
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ void ScrollableExactApproximateExpressionsView::setEqualMessage(I18n::Message eq
|
||||
}
|
||||
|
||||
void ScrollableExactApproximateExpressionsView::didBecomeFirstResponder() {
|
||||
if (m_contentCell.exactExpressionView()->layout().isUninitialized()) {
|
||||
if (m_contentCell.leftExpressionView()->layout().isUninitialized()) {
|
||||
setSelectedSubviewType(SubviewType::ApproximativeOutput);
|
||||
} else {
|
||||
setSelectedSubviewType(SubviewType::ExactOutput);
|
||||
@@ -123,12 +123,12 @@ void ScrollableExactApproximateExpressionsView::didBecomeFirstResponder() {
|
||||
}
|
||||
|
||||
bool ScrollableExactApproximateExpressionsView::handleEvent(Ion::Events::Event event) {
|
||||
if (m_contentCell.exactExpressionView()->layout().isUninitialized()) {
|
||||
if (m_contentCell.leftExpressionView()->layout().isUninitialized()) {
|
||||
return ScrollableView::handleEvent(event);
|
||||
}
|
||||
bool rightExpressionIsVisible = minimalSizeForOptimalDisplay().width() - m_contentCell.approximateExpressionView()->minimalSizeForOptimalDisplay().width() - m_manualScrollingOffset.x() < bounds().width()
|
||||
bool rightExpressionIsVisible = minimalSizeForOptimalDisplay().width() - m_contentCell.rightExpressionView()->minimalSizeForOptimalDisplay().width() - m_manualScrollingOffset.x() < bounds().width()
|
||||
;
|
||||
bool leftExpressionIsVisible = m_contentCell.exactExpressionView()->minimalSizeForOptimalDisplay().width() - m_manualScrollingOffset.x() > 0;
|
||||
bool leftExpressionIsVisible = m_contentCell.leftExpressionView()->minimalSizeForOptimalDisplay().width() - m_manualScrollingOffset.x() > 0;
|
||||
if ((event == Ion::Events::Right && selectedSubviewType() == SubviewType::ExactOutput && rightExpressionIsVisible) ||
|
||||
(event == Ion::Events::Left && selectedSubviewType() == SubviewType::ApproximativeOutput && leftExpressionIsVisible)) {
|
||||
SubviewType otherSubviewType = selectedSubviewType() == SubviewType::ExactOutput ? SubviewType::ApproximativeOutput : SubviewType::ExactOutput;
|
||||
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
::EvenOddCell * evenOddCell() {
|
||||
return &m_contentCell;
|
||||
}
|
||||
void setLayouts(Poincare::Layout approximatelayout, Poincare::Layout exactLayout);
|
||||
void setLayouts(Poincare::Layout rightlayout, Poincare::Layout leftLayout);
|
||||
void setEqualMessage(I18n::Message equalSignMessage);
|
||||
SubviewType selectedSubviewType() {
|
||||
return m_contentCell.selectedSubviewType();
|
||||
@@ -37,11 +37,11 @@ private:
|
||||
void setHighlighted(bool highlight) override;
|
||||
void reloadCell() override;
|
||||
KDSize minimalSizeForOptimalDisplay() const override;
|
||||
ExpressionView * approximateExpressionView() {
|
||||
return &m_approximateExpressionView;
|
||||
ExpressionView * rightExpressionView() {
|
||||
return &m_rightExpressionView;
|
||||
}
|
||||
ExpressionView * exactExpressionView() {
|
||||
return &m_exactExpressionView;
|
||||
ExpressionView * leftExpressionView() {
|
||||
return &m_leftExpressionView;
|
||||
}
|
||||
MessageTextView * approximateSign() {
|
||||
return &m_approximateSign;
|
||||
@@ -56,9 +56,9 @@ private:
|
||||
private:
|
||||
View * subviewAtIndex(int index) override;
|
||||
constexpr static KDCoordinate k_digitHorizontalMargin = 10;
|
||||
ExpressionView m_approximateExpressionView;
|
||||
ExpressionView m_rightExpressionView;
|
||||
MessageTextView m_approximateSign;
|
||||
ExpressionView m_exactExpressionView;
|
||||
ExpressionView m_leftExpressionView;
|
||||
SubviewType m_selectedSubviewType;
|
||||
};
|
||||
ContentCell m_contentCell;
|
||||
|
||||
Reference in New Issue
Block a user