void NetTree::buildGenericTree(MythGenericTree *dst, QStringList paths, QString dirthumb, QList<ResultItem*> videos) { MythGenericTree *folder = NULL; // A little loop to determine what path of the provided path might // already exist in the tree. while (folder == NULL && paths.size()) { QString curPath = paths.takeFirst(); curPath.replace("|", "/"); MythGenericTree *tmp = dst->getChildByName(curPath); if (tmp) dst = tmp; else folder = new MythGenericTree( curPath, kSubFolder, false); } if (!folder) return; folder->SetData(dirthumb); dst->addNode(folder); // Add an upfolder if (m_type != DLG_TREE) { folder->addNode(QString(tr("Back")), kUpFolder, true, false); } if (paths.size()) buildGenericTree(folder, paths, dirthumb, videos); else { // File Handling for (QList<ResultItem*>::iterator it = videos.begin(); it != videos.end(); ++it) AddFileNode(folder, *it); } }
/** \fn GalleryViewHelper::LoadNodeTreeData(QList<ImageMetadata *> *, MythGenericTree *) * \brief Creates a new generic tree with the information from the database * \param list The list with the database file information * \param tree The tree that will be populated and shown * \return void */ void GalleryViewHelper::LoadTreeNodeData(QList<ImageMetadata *> *list, MythGenericTree *tree) { // Add all items in the list to the tree for (int i = 0; i < list->size(); ++i) { ImageMetadata *im = list->at(i); if (im) { m_thumbGenThread->AddToThumbnailList(im); // Create a new tree node that will hold the data MythGenericTree *treeItem = new MythGenericTree(im->m_fileName, im->m_type, true); treeItem->SetData(qVariantFromValue<ImageMetadata *> (im)); tree->addNode(treeItem); } } }
void GameUI::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); QString resultid = dce->GetId(); QString resulttext = dce->GetResultText(); if (resultid == "showMenuPopup") { if (resulttext == tr("Edit Details")) { edit(); } if (resulttext == tr("Scan For Changes")) { doScan(); } else if (resulttext == tr("Show Information")) { showInfo(); } else if (resulttext == tr("Make Favorite") || resulttext == tr("Remove Favorite")) { toggleFavorite(); } else if (resulttext == tr("Retrieve Details")) { gameSearch(); } } else if (resultid == "chooseSystemPopup") { if (!resulttext.isEmpty() && resulttext != tr("Cancel")) { MythGenericTree *node = m_gameUITree->GetCurrentNode(); RomInfo *romInfo = qVariantValue<RomInfo *>(node->GetData()); GameHandler::Launchgame(romInfo, resulttext); } } else if (resultid == "editMetadata") { MythGenericTree *node = m_gameUITree->GetCurrentNode(); RomInfo *oldRomInfo = qVariantValue<RomInfo *>(node->GetData()); delete oldRomInfo; RomInfo *romInfo = qVariantValue<RomInfo *>(dce->GetData()); node->SetData(qVariantFromValue(romInfo)); node->SetText(romInfo->Gamename()); romInfo->SaveToDatabase(); updateChangedNode(node, romInfo); } else if (resultid == "detailsPopup") { // Play button pushed itemClicked(0); } } if (event->type() == MetadataLookupEvent::kEventType) { MetadataLookupEvent *lue = (MetadataLookupEvent *)event; MetadataLookupList lul = lue->lookupList; if (m_busyPopup) { m_busyPopup->Close(); m_busyPopup = NULL; } if (lul.isEmpty()) return; if (lul.count() == 1) { OnGameSearchDone(lul.takeFirst()); } else { MetadataResultsDialog *resultsdialog = new MetadataResultsDialog(m_popupStack, lul); connect(resultsdialog, SIGNAL(haveResult(MetadataLookup*)), SLOT(OnGameSearchListSelection(MetadataLookup*)), Qt::QueuedConnection); if (resultsdialog->Create()) m_popupStack->AddScreen(resultsdialog); } } else if (event->type() == MetadataLookupFailure::kEventType) { MetadataLookupFailure *luf = (MetadataLookupFailure *)event; MetadataLookupList lul = luf->lookupList; if (m_busyPopup) { m_busyPopup->Close(); m_busyPopup = NULL; } if (lul.size()) { MetadataLookup *lookup = lul.takeFirst(); MythGenericTree *node = qVariantValue<MythGenericTree *>(lookup->GetData()); if (node) { RomInfo *metadata = qVariantValue<RomInfo *>(node->GetData()); if (metadata) { } } LOG(VB_GENERAL, LOG_ERR, QString("No results found for %1").arg(lookup->GetTitle())); } } else if (event->type() == ImageDLEvent::kEventType) { ImageDLEvent *ide = (ImageDLEvent *)event; MetadataLookup *lookup = ide->item; if (!lookup) return; handleDownloadedImages(lookup); } }
void NetTree::fillTree() { // First let's add all the RSS m_rssGeneric = new MythGenericTree( RSSNode, kSubFolder, false); // Add an upfolder if (m_type != DLG_TREE) { m_rssGeneric->addNode(QString(tr("Back")), kUpFolder, true, false); } m_rssGeneric->SetData(QString("%1/mythnetvision/icons/rss.png") .arg(GetShareDir())); RSSSite::rssList::iterator i = m_rssList.begin(); for (; i != m_rssList.end(); ++i) { ResultItem::resultList items = getRSSArticles((*i)->GetTitle(), VIDEO_PODCAST); MythGenericTree *ret = new MythGenericTree( (*i)->GetTitle(), kSubFolder, false); ret->SetData(qVariantFromValue(*i)); m_rssGeneric->addNode(ret); // Add an upfolder if (m_type != DLG_TREE) { ret->addNode(QString(tr("Back")), kUpFolder, true, false); } ResultItem::resultList::iterator it = items.begin(); for (; it != items.end(); ++it) { AddFileNode(ret, *it); } } if (m_rssList.count() > 0) m_siteGeneric->addNode(m_rssGeneric); else { delete m_rssGeneric; m_rssGeneric = NULL; } // Now let's add all the grabber trees for (GrabberScript::scriptList::iterator i = m_grabberList.begin(); i != m_grabberList.end(); ++i) { QMultiMap<QPair<QString,QString>, ResultItem*> treePathsNodes = getTreeArticles((*i)->GetTitle(), VIDEO_FILE); QList< QPair<QString,QString> > paths = treePathsNodes.uniqueKeys(); MythGenericTree *ret = new MythGenericTree( (*i)->GetTitle(), kSubFolder, false); QString thumb = QString("%1mythnetvision/icons/%2").arg(GetShareDir()) .arg((*i)->GetImage()); ret->SetData(qVariantFromValue(thumb)); // Add an upfolder if (m_type != DLG_TREE) { ret->addNode(QString(tr("Back")), kUpFolder, true, false); } for (QList<QPair<QString, QString> >::iterator i = paths.begin(); i != paths.end(); ++i) { QStringList curPaths = (*i).first.split("/"); QString dirthumb = (*i).second; QList<ResultItem*> videos = treePathsNodes.values(*i); buildGenericTree(ret, curPaths, dirthumb, videos); } m_siteGeneric->addNode(ret); } }