[apps/settings] Between two 'didEnterResponderChain', the exam mode page

might change the number of rows/the displayed messages. We then have to
re-layout the SelectableViewWithMessages to set the right frame to the
SelectableTableView.
This commit is contained in:
Émilie Feral
2020-02-11 10:49:47 +01:00
committed by Léa Saviot
parent 46fb233428
commit 466f588a99
3 changed files with 7 additions and 1 deletions

View File

@@ -35,7 +35,7 @@ void ExamModeController::didEnterResponderChain(Responder * previousFirstRespond
* reload the selection as the number of rows might have also changed. We
* force to reload the entire data because they might have changed. */
selectCellAtLocation(0, initialSelectedRow());
m_selectableTableView.reloadData();
m_contentView.reload();
// We add a message when the mode exam is on
if (GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) {
I18n::Message deactivateMessages[] = {I18n::Message::ToDeactivateExamMode1, I18n::Message::ToDeactivateExamMode2, I18n::Message::ToDeactivateExamMode3};

View File

@@ -32,6 +32,11 @@ void SelectableViewWithMessages::setMessages(I18n::Message * m, int numberOfMess
layoutSubviews();
}
void SelectableViewWithMessages::reload() {
m_selectableTableView->reloadData();
layoutSubviews();
}
View * SelectableViewWithMessages::subviewAtIndex(int index) {
assert(index >= 0 && index < numberOfSubviews());
if (index == 0) {

View File

@@ -11,6 +11,7 @@ public:
SelectableViewWithMessages(SelectableTableView * selectableTableView);
void drawRect(KDContext * ctx, KDRect rect) const override;
void setMessages(I18n::Message * messages, int numberOfMessages);
void reload();
private:
int numberOfSubviews() const override { return 1 + m_numberOfMessages; }
View * subviewAtIndex(int index) override;