From 796f3058d6d1d5622c06eba749b72aac6241802b Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Mon, 23 Aug 2021 17:14:24 +0200 Subject: [PATCH 1/2] Use KParts::PartLoader for querying part availability --- src/konqmainwindow.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/konqmainwindow.cpp b/src/konqmainwindow.cpp index f1e3be9de..1491906ed 100644 --- a/src/konqmainwindow.cpp +++ b/src/konqmainwindow.cpp @@ -125,6 +125,7 @@ #include #include #include +#include #include #include #include @@ -768,9 +769,9 @@ bool KonqMainWindow::openView(QString mimeType, const QUrl &_url, KonqView *chil } // Do we even have a part to embed? Otherwise don't ask, since we'd ask twice. if (!forceAutoEmbed) { - KService::List partServiceOffers; - KonqFactory::getOffers(mimeType, &partServiceOffers); - if (partServiceOffers.isEmpty()) { + const auto parts = KParts::PartLoader::partsForMimeType(mimeType); + + if (parts.isEmpty()) { qCDebug(KONQUEROR_LOG) << "No part available for" << mimeType; return false; } -- GitLab From 5ccfd9ddd1b4426962389020da68f8fe271d477a Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Mon, 23 Aug 2021 17:15:20 +0200 Subject: [PATCH 2/2] Load service offers in KonqView directly Call the relevant function directly instead of passing them around through several function calls --- src/konqfactory.cpp | 9 --------- src/konqfactory.h | 2 -- src/konqview.cpp | 12 ++++-------- src/konqview.h | 2 -- src/konqviewmanager.cpp | 35 +++++++++++++---------------------- src/konqviewmanager.h | 4 ---- 6 files changed, 17 insertions(+), 47 deletions(-) diff --git a/src/konqfactory.cpp b/src/konqfactory.cpp index a350f24e4..bc954ced6 100644 --- a/src/konqfactory.cpp +++ b/src/konqfactory.cpp @@ -77,8 +77,6 @@ static KonqViewFactory tryLoadingService(KService::Ptr service) KonqViewFactory KonqFactory::createView(const QString &serviceType, const QString &serviceName, KService::Ptr *serviceImpl, - KService::List *partServiceOffers, - KService::List *appServiceOffers, bool forceAutoEmbed) { qCDebug(KONQUEROR_LOG) << "Trying to create view for" << serviceType << serviceName; @@ -89,13 +87,6 @@ KonqViewFactory KonqFactory::createView(const QString &serviceType, // Query the trader getOffers(serviceType, &offers, &appOffers); - if (partServiceOffers) { - (*partServiceOffers) = offers; - } - if (appServiceOffers) { - (*appServiceOffers) = appOffers; - } - // We ask ourselves whether to do it or not only if no service was specified. // If it was (from the View menu or from RMB + Embedding service), just do it. forceAutoEmbed = forceAutoEmbed || !serviceName.isEmpty(); diff --git a/src/konqfactory.h b/src/konqfactory.h index 81a9efa23..e8e7c5ee5 100644 --- a/src/konqfactory.h +++ b/src/konqfactory.h @@ -65,8 +65,6 @@ public: KonqViewFactory createView(const QString &serviceType, const QString &serviceName = QString(), KService::Ptr *serviceImpl = nullptr, - KService::List *partServiceOffers = nullptr, - KService::List *appServiceOffers = nullptr, bool forceAutoEmbed = false); static void getOffers(const QString &serviceType, diff --git a/src/konqview.cpp b/src/konqview.cpp index 7b1289d00..c016f9608 100644 --- a/src/konqview.cpp +++ b/src/konqview.cpp @@ -57,8 +57,6 @@ KonqView::KonqView(KonqViewFactory &viewFactory, KonqFrame *viewFrame, KonqMainWindow *mainWindow, const KService::Ptr &service, - const KService::List &partServiceOffers, - const KService::List &appServiceOffers, const QString &serviceType, bool passiveMode ) @@ -75,8 +73,6 @@ KonqView::KonqView(KonqViewFactory &viewFactory, m_pPart = nullptr; m_service = service; - m_partServiceOffers = partServiceOffers; - m_appServiceOffers = appServiceOffers; m_serviceType = serviceType; m_lstHistoryIndex = -1; @@ -100,6 +96,8 @@ KonqView::KonqView(KonqViewFactory &viewFactory, #endif switchView(viewFactory); + + KonqFactory::getOffers(serviceType, &m_partServiceOffers, &m_appServiceOffers); } KonqView::~KonqView() @@ -327,18 +325,16 @@ bool KonqView::changePart(const QString &mimeType, return false; // we can't do that if our view mode is locked } - KService::List partServiceOffers, appServiceOffers; KService::Ptr service; KonqFactory konqFactory; - KonqViewFactory viewFactory = konqFactory.createView(mimeType, serviceName, &service, &partServiceOffers, &appServiceOffers, forceAutoEmbed); + KonqViewFactory viewFactory = konqFactory.createView(mimeType, serviceName, &service, forceAutoEmbed); if (viewFactory.isNull()) { return false; } m_serviceType = mimeType; - m_partServiceOffers = partServiceOffers; - m_appServiceOffers = appServiceOffers; + KonqFactory::getOffers(mimeType, &m_partServiceOffers, &m_appServiceOffers); // Check if that's already the kind of part we have -> no need to recreate it // Note: we should have an operator== for KService... diff --git a/src/konqview.h b/src/konqview.h index 0109acb26..29468c3b7 100644 --- a/src/konqview.h +++ b/src/konqview.h @@ -84,8 +84,6 @@ public: KonqFrame *viewFrame, KonqMainWindow *mainWindow, const KService::Ptr &service, - const KService::List &partServiceOffers, - const KService::List &appServiceOffers, const QString &serviceType, bool passiveMode); diff --git a/src/konqviewmanager.cpp b/src/konqviewmanager.cpp index e3f79d501..2cc0dd316 100644 --- a/src/konqviewmanager.cpp +++ b/src/konqviewmanager.cpp @@ -60,14 +60,13 @@ KonqView *KonqViewManager::createFirstView(const QString &mimeType, const QStrin { //qCDebug(KONQUEROR_LOG) << serviceName; KService::Ptr service; - KService::List partServiceOffers, appServiceOffers; - KonqViewFactory newViewFactory = createView(mimeType, serviceName, service, partServiceOffers, appServiceOffers, true /*forceAutoEmbed*/); + KonqViewFactory newViewFactory = createView(mimeType, serviceName, service, true /*forceAutoEmbed*/); if (newViewFactory.isNull()) { qCDebug(KONQUEROR_LOG) << "No suitable factory found."; return nullptr; } - KonqView *childView = setupView(tabContainer(), newViewFactory, service, partServiceOffers, appServiceOffers, mimeType, false); + KonqView *childView = setupView(tabContainer(), newViewFactory, service, mimeType, false); setActivePart(childView->part()); @@ -94,9 +93,8 @@ KonqView *KonqViewManager::splitView(KonqView *currentView, const QString serviceType = currentView->serviceType(); KService::Ptr service; - KService::List partServiceOffers, appServiceOffers; - KonqViewFactory newViewFactory = createView(serviceType, currentView->service()->desktopEntryName(), service, partServiceOffers, appServiceOffers, forceAutoEmbed); + KonqViewFactory newViewFactory = createView(serviceType, currentView->service()->desktopEntryName(), service, forceAutoEmbed); if (newViewFactory.isNull()) { return nullptr; //do not split at all if we can't create the new view @@ -118,7 +116,7 @@ KonqView *KonqViewManager::splitView(KonqView *currentView, KonqFrameContainer *newContainer = parentContainer->splitChildFrame(splitFrame, orientation); //qCDebug(KONQUEROR_LOG) << "Create new child"; - KonqView *newView = setupView(newContainer, newViewFactory, service, partServiceOffers, appServiceOffers, serviceType, false); + KonqView *newView = setupView(newContainer, newViewFactory, service, serviceType, false); #ifndef DEBUG //printSizeInfo( splitFrame, parentContainer, "after child insert" ); @@ -163,9 +161,8 @@ KonqView *KonqViewManager::splitMainContainer(KonqView *currentView, //qCDebug(KONQUEROR_LOG); KService::Ptr service; - KService::List partServiceOffers, appServiceOffers; - KonqViewFactory newViewFactory = createView(serviceType, serviceName, service, partServiceOffers, appServiceOffers); + KonqViewFactory newViewFactory = createView(serviceType, serviceName, service); if (newViewFactory.isNull()) { return nullptr; //do not split at all if we can't create the new view @@ -177,7 +174,7 @@ KonqView *KonqViewManager::splitMainContainer(KonqView *currentView, KonqFrameContainer *newContainer = m_pMainWindow->splitChildFrame(mainFrame, orientation); - KonqView *childView = setupView(newContainer, newViewFactory, service, partServiceOffers, appServiceOffers, serviceType, true); + KonqView *childView = setupView(newContainer, newViewFactory, service, serviceType, true); newContainer->insertWidget(newOneFirst ? 0 : 1, childView->frame()); if (newOneFirst) { @@ -207,7 +204,6 @@ KonqView *KonqViewManager::addTab(const QString &serviceType, const QString &ser #endif KService::Ptr service; - KService::List partServiceOffers, appServiceOffers; Q_ASSERT(!serviceType.isEmpty()); @@ -227,13 +223,13 @@ KonqView *KonqViewManager::addTab(const QString &serviceType, const QString &ser } } - KonqViewFactory newViewFactory = createView(serviceType, actualServiceName, service, partServiceOffers, appServiceOffers, true /*forceAutoEmbed*/); + KonqViewFactory newViewFactory = createView(serviceType, actualServiceName, service, true /*forceAutoEmbed*/); if (newViewFactory.isNull()) { return nullptr; //do not split at all if we can't create the new view } - KonqView *childView = setupView(tabContainer(), newViewFactory, service, partServiceOffers, appServiceOffers, serviceType, passiveMode, openAfterCurrentPage, pos); + KonqView *childView = setupView(tabContainer(), newViewFactory, service, serviceType, passiveMode, openAfterCurrentPage, pos); #ifdef DEBUG_VIEWMGR m_pMainWindow->dumpViewList(); @@ -779,8 +775,6 @@ KonqView *KonqViewManager::chooseNextView(KonqView *view) KonqViewFactory KonqViewManager::createView(const QString &serviceType, const QString &serviceName, KService::Ptr &service, - KService::List &partServiceOffers, - KService::List &appServiceOffers, bool forceAutoEmbed) { KonqViewFactory viewFactory; @@ -798,12 +792,12 @@ KonqViewFactory KonqViewManager::createView(const QString &serviceType, KonqFactory konqFactory; viewFactory = konqFactory.createView(_serviceType, _serviceName, - &service, &partServiceOffers, &appServiceOffers, forceAutoEmbed); + &service, forceAutoEmbed); } else { //create view with the given servicetype KonqFactory konqFactory; viewFactory = konqFactory.createView(serviceType, serviceName, - &service, &partServiceOffers, &appServiceOffers, forceAutoEmbed); + &service, forceAutoEmbed); } return viewFactory; @@ -812,8 +806,6 @@ KonqViewFactory KonqViewManager::createView(const QString &serviceType, KonqView *KonqViewManager::setupView(KonqFrameContainerBase *parentContainer, KonqViewFactory &viewFactory, const KService::Ptr &service, - const KService::List &partServiceOffers, - const KService::List &appServiceOffers, const QString &serviceType, bool passiveMode, bool openAfterCurrentPage, @@ -833,7 +825,7 @@ KonqView *KonqViewManager::setupView(KonqFrameContainerBase *parentContainer, //qCDebug(KONQUEROR_LOG) << "Creating KonqView"; KonqView *v = new KonqView(viewFactory, newViewFrame, - m_pMainWindow, service, partServiceOffers, appServiceOffers, sType, passiveMode); + m_pMainWindow, service, sType, passiveMode); //qCDebug(KONQUEROR_LOG) << "KonqView created - v=" << v << "v->part()=" << v->part(); QObject::connect(v, SIGNAL(sigPartChanged(KonqView*,KParts::ReadOnlyPart*,KParts::ReadOnlyPart*)), @@ -1133,10 +1125,9 @@ void KonqViewManager::loadItem(const KConfigGroup &cfg, KonqFrameContainerBase * //qCDebug(KONQUEROR_LOG) << "serviceType" << serviceType << serviceName; KService::Ptr service; - KService::List partServiceOffers, appServiceOffers; KonqFactory konqFactory; - KonqViewFactory viewFactory = konqFactory.createView(serviceType, serviceName, &service, &partServiceOffers, &appServiceOffers, true /*forceAutoEmbed*/); + KonqViewFactory viewFactory = konqFactory.createView(serviceType, serviceName, &service, true /*forceAutoEmbed*/); if (viewFactory.isNull()) { qCWarning(KONQUEROR_LOG) << "Profile Loading Error: View creation failed"; return; //ugh.. @@ -1148,7 +1139,7 @@ void KonqViewManager::loadItem(const KConfigGroup &cfg, KonqFrameContainerBase * if (parent == m_pMainWindow) { parent = tabContainer(); } - KonqView *childView = setupView(parent, viewFactory, service, partServiceOffers, appServiceOffers, serviceType, passiveMode, openAfterCurrentPage, pos); + KonqView *childView = setupView(parent, viewFactory, service, serviceType, passiveMode, openAfterCurrentPage, pos); if (!childView->isFollowActive()) { childView->setLinkedView(cfg.readEntry(QStringLiteral("LinkedView").prepend(prefix), false)); diff --git a/src/konqviewmanager.h b/src/konqviewmanager.h index a4d3fcc71..b4d056337 100644 --- a/src/konqviewmanager.h +++ b/src/konqviewmanager.h @@ -323,8 +323,6 @@ private: KonqViewFactory createView(const QString &serviceType, /* can be servicetype or mimetype */ const QString &serviceName, KService::Ptr &service, - KService::List &partServiceOffers, - KService::List &appServiceOffers, bool forceAutoEmbed = false); /** @@ -334,8 +332,6 @@ private: KonqView *setupView(KonqFrameContainerBase *parentContainer, KonqViewFactory &viewFactory, const KService::Ptr &service, - const KService::List &partServiceOffers, - const KService::List &appServiceOffers, const QString &serviceType, bool passiveMode, bool openAfterCurrentPage = false, int pos = -1); -- GitLab