[settings] Fix row initialization in sub menus

This commit is contained in:
Émilie Feral
2019-12-17 14:32:44 +01:00
committed by LeaNumworks
parent a3774fb510
commit 8c6a2836de
6 changed files with 19 additions and 13 deletions

View File

@@ -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) {

View File

@@ -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];
};

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -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];
};