void GameUI::searchStart(void) { MythGenericTree *parent = m_gameUITree->GetCurrentNode()->getParent(); if (parent != NULL) { QStringList childList; QList<MythGenericTree*>::iterator it; QList<MythGenericTree*> *children = parent->getAllChildren(); for (it = children->begin(); it != children->end(); ++it) { MythGenericTree *child = *it; childList << child->GetText(); } MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack"); MythUISearchDialog *searchDialog = new MythUISearchDialog(popupStack, tr("Game Search"), childList, true, ""); if (searchDialog->Create()) { connect(searchDialog, SIGNAL(haveResult(QString)), SLOT(searchComplete(QString))); popupStack->AddScreen(searchDialog); } else delete searchDialog; } }
MythGenericTree* MythGenericTree::findNode(QList<int> route_of_branches, int depth) { // Starting from *this* node (which will often be root) find a set of // branches that have id's that match the collection passed in // route_of_branches. Return the end point of those branches. // // In practical terms, mythmusic will use this to force the playback // screen's ManagedTreeList to move to a given track in a given playlist MythGenericTree *node = NULL; for (int i = 0; i < route_of_branches.count(); i++) { if (!node) node = this; bool foundit = false; QList<MythGenericTree*>::iterator it; QList<MythGenericTree*> *children = node->getAllChildren(); if (!children) break; MythGenericTree *child = NULL; for (it = children->begin(); it != children->end(); ++it) { child = *it; if (!child) continue; if (child->getInt() == route_of_branches[i]) { node = child; foundit = true; break; } } if (!foundit) break; } return NULL; }