[apps/settings] Enable to modify settings

Change-Id: Idd5e28a64d08d607f5bb2065a45ab4ecf5a26dca
This commit is contained in:
Émilie Feral
2017-01-30 11:38:24 +01:00
parent f89c770bbc
commit d67ff87448
6 changed files with 107 additions and 27 deletions

View File

@@ -3,11 +3,14 @@
namespace Settings {
SubController::SubController(Responder * parentResponder) :
SubController::SubController(Responder * parentResponder, Preference * preference) :
ViewController(parentResponder),
m_cells{MenuListCell(nullptr, KDText::FontSize::Large), MenuListCell(nullptr, KDText::FontSize::Large)},
m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin,
Metric::BottomMargin, Metric::LeftMargin)),
m_nodeModel(nullptr)
m_nodeModel(nullptr),
m_preferenceIndex(0),
m_preference(preference)
{
}
@@ -23,11 +26,16 @@ View * SubController::view() {
}
void SubController::didBecomeFirstResponder() {
m_selectableTableView.selectCellAtLocation(0, 0);
m_selectableTableView.selectCellAtLocation(0, valueIndexAtPreferenceIndex(m_preferenceIndex));
app()->setFirstResponder(&m_selectableTableView);
}
bool SubController::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::OK) {
setPreferenceAtIndexWithValueIndex(m_preferenceIndex, m_selectableTableView.selectedRow());
StackViewController * stack = stackController();
stack->pop();
}
return false;
}
@@ -57,8 +65,52 @@ void SubController::willDisplayCellForIndex(TableViewCell * cell, int index) {
myCell->setText(m_nodeModel->children(index)->label());
}
void SubController::setNodeModel(const Node * nodeModel) {
void SubController::setNodeModel(const Node * nodeModel, int preferenceIndex) {
m_nodeModel = (Node *)nodeModel;
m_preferenceIndex = preferenceIndex;
}
StackViewController * SubController::stackController() const {
return (StackViewController *)parentResponder();
}
void SubController::setPreferenceAtIndexWithValueIndex(int preferenceIndex, int valueIndex) {
switch (preferenceIndex) {
case 0:
m_preference->setAngleUnit((Preference::AngleUnit)valueIndex);
break;
case 1:
m_preference->setDisplayMode((Preference::DisplayMode)valueIndex);
break;
case 2:
m_preference->setNumberType((Preference::NumberType)valueIndex);
break;
case 3:
m_preference->setComplexFormat((Preference::ComplexFormat)valueIndex);
break;
case 4:
m_preference->setLanguage((Preference::Language)valueIndex);
break;
}
}
int SubController::valueIndexAtPreferenceIndex(int preferenceIndex) {
switch (preferenceIndex) {
case 0:
return (int)m_preference->angleUnit();
case 1:
return (int)m_preference->displayMode();
case 2:
return (int)m_preference->numberType();
case 3:
return (int)m_preference->complexFormat();
case 4:
return (int)m_preference->language();
default:
assert(false);
return 0;
}
}
}