mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps] Two exam modes in settings: Standard & Dutch
This commit is contained in:
committed by
LeaNumworks
parent
6cd98a3a48
commit
6ecfe9c5db
@@ -168,9 +168,8 @@ bool AppsContainer::processEvent(Ion::Events::Event event) {
|
||||
// Warning: if the window is dirtied, you need to call window()->redraw()
|
||||
if (event == Ion::Events::USBPlug) {
|
||||
if (Ion::USB::isPlugged()) {
|
||||
// TODO
|
||||
if (GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) {
|
||||
displayExamModePopUp(false);
|
||||
displayExamModePopUp(GlobalPreferences::ExamMode::Off);
|
||||
window()->redraw();
|
||||
} else {
|
||||
Ion::USB::enable();
|
||||
@@ -276,8 +275,8 @@ void AppsContainer::reloadTitleBarView() {
|
||||
m_window.reloadTitleBarView();
|
||||
}
|
||||
|
||||
void AppsContainer::displayExamModePopUp(bool activate) {
|
||||
m_examPopUpController.setActivatingExamMode(activate);
|
||||
void AppsContainer::displayExamModePopUp(GlobalPreferences::ExamMode mode) {
|
||||
m_examPopUpController.setTargetExamMode(mode);
|
||||
s_activeApp->displayModalViewController(&m_examPopUpController, 0.f, 0.f, Metric::ExamPopUpTopMargin, Metric::PopUpRightMargin, Metric::ExamPopUpBottomMargin, Metric::PopUpLeftMargin);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
bool updateBatteryState();
|
||||
void refreshPreferences();
|
||||
void reloadTitleBarView();
|
||||
void displayExamModePopUp(bool activate);
|
||||
void displayExamModePopUp(GlobalPreferences::ExamMode mode);
|
||||
void shutdownDueToLowBattery();
|
||||
void setShiftAlphaStatus(Ion::Events::ShiftAlphaStatus newStatus);
|
||||
OnBoarding::PopUpController * promptController();
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
ExamPopUpController::ExamPopUpController(ExamPopUpControllerDelegate * delegate) :
|
||||
ViewController(nullptr),
|
||||
m_contentView(this),
|
||||
m_isActivatingExamMode(false),
|
||||
m_targetExamMode(GlobalPreferences::ExamMode::Unknown),
|
||||
m_delegate(delegate)
|
||||
{
|
||||
}
|
||||
|
||||
void ExamPopUpController::setActivatingExamMode(bool activatingExamMode) {
|
||||
m_isActivatingExamMode = activatingExamMode;
|
||||
m_contentView.setMessages(activatingExamMode);
|
||||
void ExamPopUpController::setTargetExamMode(GlobalPreferences::ExamMode mode) {
|
||||
m_targetExamMode = mode;
|
||||
m_contentView.setMessagesForExamMode(mode);
|
||||
}
|
||||
|
||||
View * ExamPopUpController::view() {
|
||||
@@ -22,7 +22,7 @@ View * ExamPopUpController::view() {
|
||||
}
|
||||
|
||||
void ExamPopUpController::viewDidDisappear() {
|
||||
if (m_isActivatingExamMode == false) {
|
||||
if (m_targetExamMode == GlobalPreferences::ExamMode::Off) {
|
||||
m_delegate->examDeactivatingPopUpIsDismissed();
|
||||
}
|
||||
}
|
||||
@@ -50,15 +50,15 @@ ExamPopUpController::ContentView::ContentView(Responder * parentResponder) :
|
||||
}, parentResponder), KDFont::SmallFont),
|
||||
m_okButton(parentResponder, I18n::Message::Ok, Invocation([](void * context, void * sender) {
|
||||
ExamPopUpController * controller = (ExamPopUpController *)context;
|
||||
// TODO
|
||||
GlobalPreferences::ExamMode mode = controller->isActivatingExamMode() ? GlobalPreferences::ExamMode::Dutch : GlobalPreferences::ExamMode::Off;
|
||||
GlobalPreferences::ExamMode mode = controller->targetExamMode();
|
||||
assert(mode != GlobalPreferences::ExamMode::Unknown);
|
||||
GlobalPreferences::sharedGlobalPreferences()->setExamMode(mode);
|
||||
AppsContainer * container = AppsContainer::sharedAppsContainer();
|
||||
if (controller->isActivatingExamMode()) {
|
||||
container->activateExamMode(mode);
|
||||
} else {
|
||||
if (mode == GlobalPreferences::ExamMode::Off) {
|
||||
Ion::LED::setColor(KDColorBlack);
|
||||
Ion::LED::updateColorWithPlugAndCharge();
|
||||
} else {
|
||||
container->activateExamMode(mode);
|
||||
}
|
||||
container->refreshPreferences();
|
||||
Container::activeApp()->dismissModalViewController();
|
||||
@@ -88,15 +88,16 @@ int ExamPopUpController::ContentView::selectedButton() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ExamPopUpController::ContentView::setMessages(bool activingExamMode) {
|
||||
if (activingExamMode) {
|
||||
m_messageTextView1.setMessage(I18n::Message::ActiveExamModeMessage1);
|
||||
m_messageTextView2.setMessage(I18n::Message::ActiveExamModeMessage2);
|
||||
m_messageTextView3.setMessage(I18n::Message::ActiveExamModeMessage3);
|
||||
} else {
|
||||
void ExamPopUpController::ContentView::setMessagesForExamMode(GlobalPreferences::ExamMode mode) {
|
||||
if (mode == GlobalPreferences::ExamMode::Off) {
|
||||
m_messageTextView1.setMessage(I18n::Message::ExitExamMode1);
|
||||
m_messageTextView2.setMessage(I18n::Message::ExitExamMode2);
|
||||
m_messageTextView3.setMessage(I18n::Message::Default);
|
||||
} else {
|
||||
// TODO different messages for Dutch
|
||||
m_messageTextView1.setMessage(I18n::Message::ActiveExamModeMessage1);
|
||||
m_messageTextView2.setMessage(I18n::Message::ActiveExamModeMessage2);
|
||||
m_messageTextView3.setMessage(I18n::Message::ActiveExamModeMessage3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <escher.h>
|
||||
#include "exam_pop_up_controller_delegate.h"
|
||||
#include "global_preferences.h"
|
||||
|
||||
class HighContrastButton : public Button {
|
||||
public:
|
||||
@@ -13,8 +14,8 @@ public:
|
||||
class ExamPopUpController : public ViewController {
|
||||
public:
|
||||
ExamPopUpController(ExamPopUpControllerDelegate * delegate);
|
||||
void setActivatingExamMode(bool activingExamMode);
|
||||
bool isActivatingExamMode() const { return m_isActivatingExamMode; }
|
||||
void setTargetExamMode(GlobalPreferences::ExamMode mode);
|
||||
GlobalPreferences::ExamMode targetExamMode() const { return m_targetExamMode; }
|
||||
// View Controller
|
||||
View * view() override;
|
||||
void viewDidDisappear() override;
|
||||
@@ -28,7 +29,7 @@ private:
|
||||
void drawRect(KDContext * ctx, KDRect rect) const override;
|
||||
void setSelectedButton(int selectedButton);
|
||||
int selectedButton();
|
||||
void setMessages(bool activingExamMode);
|
||||
void setMessagesForExamMode(GlobalPreferences::ExamMode mode);
|
||||
private:
|
||||
constexpr static KDCoordinate k_buttonMargin = 10;
|
||||
constexpr static KDCoordinate k_buttonHeight = 20;
|
||||
@@ -45,7 +46,7 @@ private:
|
||||
MessageTextView m_messageTextView3;
|
||||
};
|
||||
ContentView m_contentView;
|
||||
bool m_isActivatingExamMode;
|
||||
GlobalPreferences::ExamMode m_targetExamMode;
|
||||
ExamPopUpControllerDelegate * m_delegate;
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18
|
||||
constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)};
|
||||
constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)};
|
||||
constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::ActivateExamMode), SettingsMessageTree(I18n::Message::ActivateDutchExamMode)};
|
||||
constexpr SettingsMessageTree s_modelAboutChildren[3] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)};
|
||||
|
||||
constexpr SettingsMessageTree s_modelMenu[] =
|
||||
@@ -17,7 +17,7 @@ constexpr SettingsMessageTree s_modelMenu[] =
|
||||
SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3),
|
||||
SettingsMessageTree(I18n::Message::Brightness),
|
||||
SettingsMessageTree(I18n::Message::Language),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2),
|
||||
SettingsMessageTree(I18n::Message::BetaPopUp),
|
||||
SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 3)};
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18
|
||||
constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)};
|
||||
constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)};
|
||||
constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::ActivateExamMode), SettingsMessageTree(I18n::Message::ActivateDutchExamMode)};
|
||||
constexpr SettingsMessageTree s_modelAboutChildren[3] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)};
|
||||
|
||||
constexpr SettingsMessageTree s_modelMenu[] =
|
||||
@@ -18,7 +18,7 @@ constexpr SettingsMessageTree s_modelMenu[] =
|
||||
SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3),
|
||||
SettingsMessageTree(I18n::Message::Brightness),
|
||||
SettingsMessageTree(I18n::Message::Language),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2),
|
||||
SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 3)};
|
||||
|
||||
constexpr SettingsMessageTree s_model = SettingsMessageTree(I18n::Message::SettingsApp, s_modelMenu, 8);
|
||||
|
||||
@@ -7,7 +7,7 @@ constexpr SettingsMessageTree s_modelAngleChildren[3] = {SettingsMessageTree(I18
|
||||
constexpr SettingsMessageTree s_modelEditionModeChildren[2] = {SettingsMessageTree(I18n::Message::Edition2D), SettingsMessageTree(I18n::Message::EditionLinear)};
|
||||
constexpr SettingsMessageTree s_modelFloatDisplayModeChildren[4] = {SettingsMessageTree(I18n::Message::Decimal), SettingsMessageTree(I18n::Message::Scientific), SettingsMessageTree(I18n::Message::Engineering), SettingsMessageTree(I18n::Message::SignificantFigures)};
|
||||
constexpr SettingsMessageTree s_modelComplexFormatChildren[3] = {SettingsMessageTree(I18n::Message::Real), SettingsMessageTree(I18n::Message::Cartesian), SettingsMessageTree(I18n::Message::Polar)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[1] = {SettingsMessageTree(I18n::Message::ActivateExamMode)};
|
||||
constexpr SettingsMessageTree s_modelExamChildren[2] = {SettingsMessageTree(I18n::Message::ActivateExamMode), SettingsMessageTree(I18n::Message::ActivateDutchExamMode)};
|
||||
constexpr SettingsMessageTree s_modelAboutChildren[3] = {SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId)};
|
||||
|
||||
constexpr SettingsMessageTree s_modelMenu[] =
|
||||
@@ -17,7 +17,7 @@ constexpr SettingsMessageTree s_modelMenu[] =
|
||||
SettingsMessageTree(I18n::Message::ComplexFormat, s_modelComplexFormatChildren, 3),
|
||||
SettingsMessageTree(I18n::Message::Brightness),
|
||||
SettingsMessageTree(I18n::Message::Language),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 1),
|
||||
SettingsMessageTree(I18n::Message::ExamMode, s_modelExamChildren, 2),
|
||||
SettingsMessageTree(I18n::Message::UpdatePopUp),
|
||||
SettingsMessageTree(I18n::Message::About, s_modelAboutChildren, 3)};
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "exam_mode_controller.h"
|
||||
#include "../../global_preferences.h"
|
||||
#include "../../apps_container.h"
|
||||
#include <apps/i18n.h>
|
||||
#include <assert.h>
|
||||
#include <cmath>
|
||||
|
||||
@@ -11,35 +12,43 @@ namespace Settings {
|
||||
|
||||
ExamModeController::ExamModeController(Responder * parentResponder) :
|
||||
GenericSubController(parentResponder),
|
||||
m_cell(I18n::Message::ExamModeActive, KDFont::LargeFont)
|
||||
m_cell{MessageTableCell(I18n::Message::ExamModeActive, KDFont::LargeFont), MessageTableCell(I18n::Message::ActivateDutchExamMode, KDFont::LargeFont)}
|
||||
{
|
||||
}
|
||||
|
||||
void ExamModeController::didEnterResponderChain(Responder * previousFirstResponder) {
|
||||
selectCellAtLocation(0, 0);
|
||||
m_selectableTableView.reloadData();
|
||||
}
|
||||
|
||||
bool ExamModeController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE) {
|
||||
AppsContainer::sharedAppsContainer()->displayExamModePopUp(true);
|
||||
GlobalPreferences::ExamMode mode = m_messageTreeModel->children(selectedRow())->label() == I18n::Message::ActivateExamMode ? GlobalPreferences::ExamMode::Standard : GlobalPreferences::ExamMode::Dutch;
|
||||
AppsContainer::sharedAppsContainer()->displayExamModePopUp(mode);
|
||||
return true;
|
||||
}
|
||||
return GenericSubController::handleEvent(event);
|
||||
}
|
||||
|
||||
int ExamModeController::numberOfRows() const {
|
||||
if (GlobalPreferences::sharedGlobalPreferences()->language() != I18n::Language::EN || GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) {
|
||||
return 1;
|
||||
}
|
||||
return GenericSubController::numberOfRows();
|
||||
}
|
||||
|
||||
HighlightCell * ExamModeController::reusableCell(int index, int type) {
|
||||
assert(type == 0);
|
||||
assert(index == 0);
|
||||
return &m_cell;
|
||||
assert(index >= 0 && index < k_maxNumberOfCells);
|
||||
return &m_cell[index];
|
||||
}
|
||||
|
||||
int ExamModeController::reusableCellCount(int type) {
|
||||
return 1;
|
||||
return k_maxNumberOfCells;
|
||||
}
|
||||
|
||||
void ExamModeController::willDisplayCellForIndex(HighlightCell * cell, int index) {
|
||||
GenericSubController::willDisplayCellForIndex(cell, index);
|
||||
// TODO
|
||||
if (GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) {
|
||||
MessageTableCell * myCell = (MessageTableCell *)cell;
|
||||
myCell->setMessage(I18n::Message::ExamModeActive);
|
||||
|
||||
@@ -10,11 +10,13 @@ public:
|
||||
ExamModeController(Responder * parentResponder);
|
||||
void didEnterResponderChain(Responder * previousFirstResponder) override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
int numberOfRows() const override;
|
||||
HighlightCell * reusableCell(int index, int type) override;
|
||||
int reusableCellCount(int type) override;
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
private:
|
||||
MessageTableCell m_cell;
|
||||
static constexpr int k_maxNumberOfCells = 2;
|
||||
MessageTableCell m_cell[k_maxNumberOfCells];
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user