QuarkUnhideListView::QuarkUnhideListView (const QuarkComponents_t& components, ViewManager *viewMgr, ICoreProxy_ptr proxy, QWidget *parent) : Util::UnhideListViewBase (proxy, [&components, &proxy, viewMgr] (QStandardItemModel *model) { for (const auto& comp : components) { std::unique_ptr<QuarkManager> qm; try { qm.reset (new QuarkManager (comp, viewMgr, proxy)); } catch (const std::exception& e) { qWarning () << Q_FUNC_INFO << "error creating manager for quark" << comp->Url_; continue; } const auto& manifest = qm->GetManifest (); auto item = new QStandardItem; item->setData (manifest.GetID (), Util::UnhideListModel::Roles::ItemClass); item->setData (manifest.GetName (), Util::UnhideListModel::Roles::ItemName); item->setData (manifest.GetDescription (), Util::UnhideListModel::Roles::ItemDescription); item->setData (Util::GetAsBase64Src (manifest.GetIcon ().pixmap (32, 32).toImage ()), Util::UnhideListModel::Roles::ItemIcon); model->appendRow (item); } }, parent) , ViewManager_ (viewMgr) { for (const auto& comp : components) { try { const auto& manager = std::make_shared<QuarkManager> (comp, ViewManager_, proxy); const auto& manifest = manager->GetManifest (); ID2Component_ [manifest.GetID ()] = { comp, manager }; } catch (const std::exception& e) { qWarning () << Q_FUNC_INFO << "skipping component" << comp->Url_ << ":" << e.what (); } } connect (rootObject (), SIGNAL (itemUnhideRequested (QString)), this, SLOT (unhide (QString)), Qt::QueuedConnection); }
UnhideListViewBase::UnhideListViewBase (ICoreProxy_ptr proxy, QWidget *parent) : QDeclarativeView (parent) , Model_ (new UnhideListModel (this)) { new UnhoverDeleteMixin (this); const auto& file = GetSysPath (SysPath::QML, "common", "UnhideListView.qml"); if (file.isEmpty ()) { qWarning () << Q_FUNC_INFO << "file not found"; deleteLater (); return; } setStyleSheet ("background: transparent"); setWindowFlags (Qt::ToolTip); setAttribute (Qt::WA_TranslucentBackground); for (const auto& cand : GetPathCandidates (SysPath::QML, "")) engine ()->addImportPath (cand); rootContext ()->setContextProperty ("unhideListModel", Model_); rootContext ()->setContextProperty ("colorProxy", new Util::ColorThemeProxy (proxy->GetColorThemeManager (), this)); engine ()->addImageProvider ("ThemeIcons", new Util::ThemeImageProvider (proxy)); setSource (QUrl::fromLocalFile (file)); connect (rootObject (), SIGNAL (closeRequested ()), this, SLOT (deleteLater ())); connect (rootObject (), SIGNAL (itemUnhideRequested (QString)), this, SIGNAL (itemUnhideRequested (QString))); }
QuarkUnhideListView::QuarkUnhideListView (const QuarkComponents_t& components, ViewManager *viewMgr, ICoreProxy_ptr proxy, QWidget *parent) : Util::UnhideListViewBase (proxy, parent) , ViewManager_ (viewMgr) { QList<QStandardItem*> items; for (const auto& comp : components) { QuarkManager_ptr manager; try { manager.reset (new QuarkManager (comp, ViewManager_, proxy)); } catch (const std::exception& e) { qWarning () << Q_FUNC_INFO << "error creating manager for quark" << comp->Url_; continue; } const auto& manifest = manager->GetManifest (); auto item = new QStandardItem; item->setData (manifest.GetID (), Util::UnhideListModel::Roles::ItemClass); item->setData (manifest.GetName (), Util::UnhideListModel::Roles::ItemName); item->setData (manifest.GetDescription (), Util::UnhideListModel::Roles::ItemDescription); item->setData (Util::GetAsBase64Src (manifest.GetIcon ().pixmap (32, 32).toImage ()), Util::UnhideListModel::Roles::ItemIcon); items << item; ID2Component_ [manifest.GetID ()] = { comp, manager }; } Model_->invisibleRootItem ()->appendRows (items); connect (rootObject (), SIGNAL (itemUnhideRequested (QString)), this, SLOT (unhide (QString)), Qt::QueuedConnection); }
TabUnhideListView::TabUnhideListView (const QList<TabClassInfo>& tcs, ICoreProxy_ptr proxy, QWidget *parent) : UnhideListViewBase (proxy, parent) { QList<QStandardItem*> items; for (const auto& tc : tcs) { auto item = new QStandardItem; item->setData (tc.TabClass_, Util::UnhideListModel::Roles::ItemClass); item->setData (tc.VisibleName_, Util::UnhideListModel::Roles::ItemName); item->setData (tc.Description_, Util::UnhideListModel::Roles::ItemDescription); item->setData (Util::GetAsBase64Src (tc.Icon_.pixmap (32, 32).toImage ()), Util::UnhideListModel::Roles::ItemIcon); items << item; } Model_->invisibleRootItem ()->appendRows (items); connect (rootObject (), SIGNAL (itemUnhideRequested (QString)), this, SLOT (unhide (QString)), Qt::QueuedConnection); }