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"