File indexing completed on 2023-09-24 04:14:56
0001 /* 0002 SPDX-FileCopyrightText: 2005 Aaron Seigo <aseigo@kde.org> 0003 SPDX-FileCopyrightText: 2007 Riccardo Iaconelli <riccardo@kde.org> 0004 SPDX-FileCopyrightText: 2008 Ménard Alexis <darktears31@gmail.com> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "dataengineconsumer.h" 0010 #include "private/dataengineconsumer_p.h" 0011 0012 #include <QSet> 0013 0014 #include <QDebug> 0015 0016 #include "debug_p.h" 0017 #include "private/dataenginemanager_p.h" 0018 #include "servicejob.h" 0019 0020 namespace Plasma 0021 { 0022 void DataEngineConsumerPrivate::slotJobFinished(Plasma::ServiceJob *job) 0023 { 0024 #ifndef NDEBUG 0025 // qCDebug(LOG_PLASMA) << "engine ready!"; 0026 QString engineName = job->parameters().value(QStringLiteral("EngineName")).toString(); 0027 QString location = job->destination(); 0028 QPair<QString, QString> pair(location, engineName); 0029 // qCDebug(LOG_PLASMA) << "pair = " << pair; 0030 #endif 0031 } 0032 0033 void DataEngineConsumerPrivate::slotServiceReady(Plasma::Service *plasmoidService) 0034 { 0035 QVariantMap op = plasmoidService->operationDescription(QStringLiteral("DataEngine")); 0036 op[QStringLiteral("EngineName")] = engineNameForService.value(plasmoidService); 0037 plasmoidService->startOperationCall(op); 0038 connect(plasmoidService, SIGNAL(finished(Plasma::ServiceJob *)), this, SLOT(slotJobFinished(Plasma::ServiceJob *))); 0039 } 0040 0041 DataEngineConsumer::DataEngineConsumer() 0042 : d(new DataEngineConsumerPrivate) 0043 { 0044 } 0045 0046 DataEngineConsumer::~DataEngineConsumer() 0047 { 0048 for (const QString &engine : std::as_const(d->loadedEngines)) { 0049 DataEngineManager::self()->unloadEngine(engine); 0050 } 0051 0052 delete d; 0053 } 0054 0055 DataEngine *DataEngineConsumer::dataEngine(const QString &name) 0056 { 0057 if (d->loadedEngines.contains(name)) { 0058 DataEngine *engine = DataEngineManager::self()->engine(name); 0059 if (engine->isValid()) { 0060 return engine; 0061 } 0062 } 0063 0064 DataEngine *engine = DataEngineManager::self()->loadEngine(name); 0065 d->loadedEngines.insert(name); 0066 return engine; 0067 } 0068 0069 } // namespace Plasma 0070 0071 #include "private/moc_dataengineconsumer_p.cpp"