mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[settings] Fix row initialization in sub menus
This commit is contained in:
committed by
LeaNumworks
parent
a3774fb510
commit
8c6a2836de
@@ -16,9 +16,14 @@ ExamModeController::ExamModeController(Responder * parentResponder) :
|
||||
{
|
||||
}
|
||||
|
||||
void ExamModeController::didEnterResponderChain(Responder * previousFirstResponder) {
|
||||
selectCellAtLocation(0, 0);
|
||||
m_selectableTableView.reloadData();
|
||||
int ExamModeController::initialSelectedRow() const {
|
||||
int row = selectedRow();
|
||||
if (row >= numberOfRows()) {
|
||||
return numberOfRows()-1;
|
||||
} else if (row < 0) {
|
||||
return 0;
|
||||
}
|
||||
return row;
|
||||
}
|
||||
|
||||
bool ExamModeController::handleEvent(Ion::Events::Event event) {
|
||||
|
||||
@@ -8,13 +8,13 @@ namespace Settings {
|
||||
class ExamModeController : public GenericSubController {
|
||||
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:
|
||||
int initialSelectedRow() const override;
|
||||
static constexpr int k_maxNumberOfCells = 2;
|
||||
MessageTableCell m_cell[k_maxNumberOfCells];
|
||||
};
|
||||
|
||||
@@ -26,8 +26,12 @@ View * GenericSubController::view() {
|
||||
return &m_selectableTableView;
|
||||
}
|
||||
|
||||
void GenericSubController::didEnterResponderChain(Responder * previousFirstResponder) {
|
||||
selectCellAtLocation(0, initialSelectedRow());
|
||||
m_selectableTableView.reloadData();
|
||||
}
|
||||
|
||||
void GenericSubController::didBecomeFirstResponder() {
|
||||
selectCellAtLocation(0, 0);
|
||||
Container::activeApp()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
@@ -75,10 +79,6 @@ void GenericSubController::setMessageTreeModel(const MessageTree * messageTreeMo
|
||||
m_messageTreeModel = (MessageTree *)messageTreeModel;
|
||||
}
|
||||
|
||||
void GenericSubController::viewWillAppear() {
|
||||
m_selectableTableView.reloadData();
|
||||
}
|
||||
|
||||
void GenericSubController::viewDidDisappear() {
|
||||
m_selectableTableView.deselectTable();
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ public:
|
||||
GenericSubController(Responder * parentResponder);
|
||||
const char * title() override;
|
||||
View * view() override;
|
||||
void didEnterResponderChain(Responder * previousFirstResponder) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
int numberOfRows() const override;
|
||||
@@ -20,10 +21,10 @@ public:
|
||||
int typeAtLocation(int i, int j) override;
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
void setMessageTreeModel(const MessageTree * messageTreeModel);
|
||||
void viewWillAppear() override;
|
||||
void viewDidDisappear() override;
|
||||
protected:
|
||||
StackViewController * stackController() const;
|
||||
virtual int initialSelectedRow() const { return 0; }
|
||||
constexpr static KDCoordinate k_topBottomMargin = 13;
|
||||
SelectableTableView m_selectableTableView;
|
||||
MessageTree * m_messageTreeModel;
|
||||
|
||||
@@ -23,7 +23,6 @@ PreferencesController::PreferencesController(Responder * parentResponder) :
|
||||
}
|
||||
|
||||
void PreferencesController::didBecomeFirstResponder() {
|
||||
selectCellAtLocation(0, valueIndexForPreference(m_messageTreeModel->label()));
|
||||
Container::activeApp()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
@@ -145,7 +144,7 @@ void PreferencesController::setPreferenceWithValueIndex(I18n::Message message, i
|
||||
}
|
||||
}
|
||||
|
||||
int PreferencesController::valueIndexForPreference(I18n::Message message) {
|
||||
int PreferencesController::valueIndexForPreference(I18n::Message message) const {
|
||||
Preferences * preferences = Preferences::sharedPreferences();
|
||||
if (message == I18n::Message::AngleUnit) {
|
||||
return (int)preferences->angleUnit();
|
||||
|
||||
@@ -18,9 +18,10 @@ protected:
|
||||
constexpr static int k_totalNumberOfCell = 3;
|
||||
private:
|
||||
constexpr static const KDFont * k_layoutFont = KDFont::SmallFont;
|
||||
int initialSelectedRow() const override { return valueIndexForPreference(m_messageTreeModel->label()); }
|
||||
Poincare::Layout layoutForPreferences(I18n::Message message);
|
||||
void setPreferenceWithValueIndex(I18n::Message message, int valueIndex);
|
||||
int valueIndexForPreference(I18n::Message message);
|
||||
int valueIndexForPreference(I18n::Message message) const;
|
||||
MessageTableCellWithExpression m_cells[k_totalNumberOfCell];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user