[apps/settings] Implement setting menu with a tree (for navigation)

Change-Id: Ie27c3c25085a279c47eb53f3f1054d970b607f8b
This commit is contained in:
Émilie Feral
2017-01-30 10:25:00 +01:00
parent d17d57d3b9
commit ca9ff19c21
7 changed files with 164 additions and 5 deletions

View File

@@ -0,0 +1,64 @@
#include "sub_controller.h"
#include <assert.h>
namespace Settings {
SubController::SubController(Responder * parentResponder) :
ViewController(parentResponder),
m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin,
Metric::BottomMargin, Metric::LeftMargin)),
m_nodeModel(nullptr)
{
}
const char * SubController::title() const {
if (m_nodeModel) {
return m_nodeModel->label();
}
return "";
}
View * SubController::view() {
return &m_selectableTableView;
}
void SubController::didBecomeFirstResponder() {
m_selectableTableView.selectCellAtLocation(0, 0);
app()->setFirstResponder(&m_selectableTableView);
}
bool SubController::handleEvent(Ion::Events::Event event) {
return false;
}
int SubController::numberOfRows() {
if (m_nodeModel) {
return m_nodeModel->numberOfChildren();
}
return 0;
}
TableViewCell * SubController::reusableCell(int index) {
assert(index >= 0);
assert(index < k_totalNumberOfCell);
return &m_cells[index];
}
int SubController::reusableCellCount() {
return k_totalNumberOfCell;
}
KDCoordinate SubController::cellHeight() {
return Metric::ParameterCellHeight;
}
void SubController::willDisplayCellForIndex(TableViewCell * cell, int index) {
MenuListCell * myCell = (MenuListCell *)cell;
myCell->setText(m_nodeModel->children(index)->label());
}
void SubController::setNodeModel(const Node * nodeModel) {
m_nodeModel = (Node *)nodeModel;
}
}