mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-26 01:00:50 +01:00
[apps/math_toolbox] Add fork nodes in tree
Some nodes of the ToolboxMessageTree can be marked as "forks", dispatching one branch or the other depending on preferences. They are used in the Unit menu to provide a different toolbox depending on the unit system. Change-Id: I591f7abc3d24e682e827a540a9defac1877871b5
This commit is contained in:
committed by
Émilie Feral
parent
6105f44a46
commit
2e2845370a
@@ -39,7 +39,7 @@ void Toolbox::willDisplayCellForIndex(HighlightCell * cell, int index) {
|
||||
}
|
||||
|
||||
int Toolbox::typeAtLocation(int i, int j) {
|
||||
MessageTree * messageTree = (MessageTree *)m_messageTreeModel->childAtIndex(j);
|
||||
const MessageTree * messageTree = m_messageTreeModel->childAtIndex(j);
|
||||
if (messageTree->numberOfChildren() == 0) {
|
||||
return LeafCellType;
|
||||
}
|
||||
@@ -48,7 +48,11 @@ int Toolbox::typeAtLocation(int i, int j) {
|
||||
|
||||
bool Toolbox::selectSubMenu(int selectedRow) {
|
||||
m_selectableTableView.deselectTable();
|
||||
m_messageTreeModel = (ToolboxMessageTree *)m_messageTreeModel->childAtIndex(selectedRow);
|
||||
m_messageTreeModel = static_cast<const ToolboxMessageTree *>(m_messageTreeModel->childAtIndex(selectedRow));
|
||||
if (m_messageTreeModel->isFork()) {
|
||||
assert(m_messageTreeModel->numberOfChildren() < 0);
|
||||
m_messageTreeModel = static_cast<const ToolboxMessageTree *>(m_messageTreeModel->childAtIndex(indexAfterFork()));
|
||||
}
|
||||
return NestedMenuController::selectSubMenu(selectedRow);
|
||||
}
|
||||
|
||||
@@ -56,15 +60,14 @@ bool Toolbox::returnToPreviousMenu() {
|
||||
m_selectableTableView.deselectTable();
|
||||
int currentDepth = m_stack.depth();
|
||||
int index = 0;
|
||||
// We want to get the current ToolboxMessageTree's parent ToolboxMessageTree,
|
||||
// but there is no ToolboxMessageTree::getParent() method. We thus have to
|
||||
// start from the root ToolboxMessageTree and sequentially get the selected
|
||||
// child until it has the wanted depth.
|
||||
ToolboxMessageTree * parentMessageTree = (ToolboxMessageTree *)rootModel();
|
||||
Stack::State * previousState = m_stack.stateAtIndex(index++);
|
||||
while (currentDepth-- > 1) {
|
||||
parentMessageTree = (ToolboxMessageTree *)parentMessageTree->childAtIndex(previousState->selectedRow());
|
||||
previousState = m_stack.stateAtIndex(index++);
|
||||
if (parentMessageTree->isFork()) {
|
||||
parentMessageTree = (ToolboxMessageTree *)parentMessageTree->childAtIndex(indexAfterFork());
|
||||
}
|
||||
}
|
||||
m_messageTreeModel = parentMessageTree;
|
||||
return NestedMenuController::returnToPreviousMenu();
|
||||
|
||||
Reference in New Issue
Block a user