QList<int> MythGenericTree::getRouteById() { QList<int> routeByID; routeByID.push_front(getInt()); MythGenericTree *parent = this; while( (parent = parent->getParent()) ) { routeByID.push_front(parent->getInt()); } return routeByID; }
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; }
MythGenericTree* MythGenericTree::getChildById(int an_int) const { QList<MythGenericTree*> *children = getAllChildren(); if (children && children->count() > 0) { SortableMythGenericTreeList::Iterator it; MythGenericTree *child = NULL; for (it = children->begin(); it != children->end(); ++it) { child = *it; if (!child) continue; if (child->getInt() == an_int) return child; } } return NULL; }
void NetTree::handleSelect(MythUIButtonListItem *item) { MythGenericTree *node = GetNodePtrFromButton(item); int nodeInt = node->getInt(); switch (nodeInt) { case kSubFolder: handleDirSelect(node); break; case kUpFolder: goBack(); break; default: { streamWebVideo(); } }; slotItemChanged(); }
void NetTree::UpdateItem(MythUIButtonListItem *item) { if (!item) return; MythGenericTree *node = GetNodePtrFromButton(item); if (!node) return; RSSSite *site = qVariantValue<RSSSite *>(node->GetData()); ResultItem *video = qVariantValue<ResultItem *>(node->GetData()); int nodeInt = node->getInt(); if (nodeInt == kSubFolder) { item->SetText(QString("%1").arg(node->visibleChildCount()), "childcount"); item->DisplayState("subfolder", "nodetype"); item->SetText(node->getString(), "title"); item->SetText(node->getString()); item->SetImage(node->GetData().toString()); } else if (nodeInt == kUpFolder) { item->DisplayState("upfolder", "nodetype"); item->SetText(node->getString(), "title"); item->SetText(node->getString()); } if (site) { item->SetText(site->GetTitle()); item->SetText(site->GetDescription(), "description"); item->SetText(site->GetURL(), "url"); item->SetImage(site->GetImage()); } else if (video) { item->SetText(video->GetTitle()); MetadataMap metadataMap; video->toMap(metadataMap); item->SetTextFromMap(metadataMap); int pos; if (m_type == DLG_TREE) pos = 0; else pos = m_siteButtonList->GetItemPos(item); QString dlfile = video->GetThumbnail(); if (dlfile.contains("%SHAREDIR%")) dlfile.replace("%SHAREDIR%", GetShareDir()); else dlfile = getDownloadFilename(video->GetTitle(), video->GetThumbnail()); if (QFile::exists(dlfile)) item->SetImage(dlfile); else if (video->GetThumbnail().startsWith("http")) m_imageDownload->addThumb(video->GetTitle(), video->GetThumbnail(), qVariantFromValue<uint>(pos)); } else { item->SetText(node->getString()); if (!node->GetData().toString().isEmpty()) { QString tpath = node->GetData().toString(); if (tpath.startsWith("http://")) { uint pos; if (m_type == DLG_TREE) pos = 0; else pos = m_siteButtonList->GetItemPos(item); QString dlfile = GetThumbnailFilename(tpath, node->getString()); if (QFile::exists(dlfile)) item->SetImage(dlfile); else m_imageDownload->addThumb(node->getString(), tpath, qVariantFromValue<uint>(pos)); } else if (tpath != "0") { QString filename = node->GetData().toString(); if (filename.contains("%SHAREDIR%")) filename.replace("%SHAREDIR%", GetShareDir()); item->SetImage(filename); } } } }