void IconView::LoadDirectory(const QString &dir) { if (m_thumbGen && m_thumbGen->isRunning()) m_thumbGen->cancel(); if (m_childCountThread && m_childCountThread->isRunning()) m_childCountThread->cancel(); QDir d(dir); if (!d.exists()) { LOG(VB_GENERAL, LOG_ERR, LOC + "LoadDirectory called with " + QString("non-existant directory: '%1'").arg(dir)); return; } m_showDevices = false; m_currDir = d.absolutePath(); while (!m_itemList.isEmpty()) delete m_itemList.takeFirst(); m_itemHash.clear(); m_imageList->Reset(); m_isGallery = GalleryUtil::LoadDirectory(m_itemList, dir, *m_galleryFilter, false, &m_itemHash, m_thumbGen); if (m_thumbGen && !m_thumbGen->isRunning()) m_thumbGen->start(); ThumbItem *thumbitem; for (int x = 0; x < m_itemList.size(); x++) { thumbitem = m_itemList.at(x); thumbitem->InitCaption(m_showcaption); MythUIButtonListItem* item = new MythUIButtonListItem(m_imageList, thumbitem->GetCaption(), 0, true, MythUIButtonListItem::NotChecked); item->SetData(qVariantFromValue(thumbitem)); if (thumbitem->IsDir()) { item->DisplayState("subfolder", "nodetype"); m_childCountThread->addFile(thumbitem->GetPath()); } LoadThumbnail(thumbitem); if (QFile(thumbitem->GetImageFilename()).exists()) item->SetImage(thumbitem->GetImageFilename()); if (m_itemMarked.contains(thumbitem->GetPath())) item->setChecked(MythUIButtonListItem::FullChecked); } if (m_childCountThread && !m_childCountThread->isRunning()) m_childCountThread->start(); if (m_noImagesText) m_noImagesText->SetVisible(m_itemList.isEmpty()); if (!m_itemList.isEmpty()) { UpdateText(m_imageList->GetItemCurrent()); UpdateImage(m_imageList->GetItemCurrent()); } }
void IconView::HandleShowDevices(void) { MediaMonitor *mon = MediaMonitor::GetMediaMonitor(); #ifndef _WIN32 if (m_currDevice && mon && mon->ValidateAndLock(m_currDevice)) { m_currDevice->disconnect(this); mon->Unlock(m_currDevice); } else m_currDir = m_galleryDir; #endif m_currDevice = NULL; m_showDevices = true; while (!m_itemList.isEmpty()) delete m_itemList.takeFirst(); m_itemHash.clear(); m_imageList->Reset(); m_thumbGen->cancel(); m_childCountThread->cancel(); // add gallery directory ThumbItem *item = new ThumbItem("Gallery", m_galleryDir, true); m_itemList.append(item); m_itemHash.insert(item->GetName(), item); if (mon) { MythMediaType type = MythMediaType(MEDIATYPE_DATA | MEDIATYPE_MGALLERY | MEDIATYPE_MVIDEO); QList<MythMediaDevice*> removables = mon->GetMedias(type); QList<MythMediaDevice*>::Iterator it = removables.begin(); for (; it != removables.end(); ++it) { if (mon->ValidateAndLock(*it)) { item = new ThumbItem( (*it)->getVolumeID().isEmpty() ? (*it)->getDevicePath() : (*it)->getVolumeID(), (*it)->getMountPath(), true, *it); m_itemList.append(item); m_itemHash.insert(item->GetName(), item); mon->Unlock(*it); } } } ThumbItem *thumbitem; for (int x = 0; x < m_itemList.size(); x++) { thumbitem = m_itemList.at(x); thumbitem->InitCaption(m_showcaption); MythUIButtonListItem* item = new MythUIButtonListItem(m_imageList, thumbitem->GetCaption(), 0, true, MythUIButtonListItem::NotChecked); item->SetData(qVariantFromValue(thumbitem)); } // exit from menu on show devices action.. SetFocusWidget(m_imageList); }