diff --git a/applet.cpp b/applet.cpp index 0e1a3c85b..ccab40ebd 100644 --- a/applet.cpp +++ b/applet.cpp @@ -1923,6 +1923,10 @@ void Applet::showConfigurationInterface() KCModuleProxy *module = new KCModuleProxy(kcm); if (module->realModule()) { connect(module, SIGNAL(changed(bool)), dialog, SLOT(settingsModified(bool))); + connect(dialog, SIGNAL(okClicked()), + module->realModule(), SLOT(save())); + connect(dialog, SIGNAL(applyClicked()), + module->realModule(), SLOT(save())); dialog->addPage(module, module->moduleInfo().moduleName(), module->moduleInfo().icon()); hasPages = true; } else { @@ -1935,6 +1939,10 @@ void Applet::showConfigurationInterface() KCModule *module = service->createInstance(dialog, QVariantList(), &error); if (module) { connect(module, SIGNAL(changed(bool)), dialog, SLOT(settingsModified(bool))); + connect(dialog, SIGNAL(okClicked()), + module, SLOT(save())); + connect(dialog, SIGNAL(applyClicked()), + module, SLOT(save())); dialog->addPage(module, service->name(), service->icon()); hasPages = true; } else { diff --git a/data/servicetypes/plasma-runner.desktop b/data/servicetypes/plasma-runner.desktop index d4dd2474a..1e3f1be40 100644 --- a/data/servicetypes/plasma-runner.desktop +++ b/data/servicetypes/plasma-runner.desktop @@ -56,7 +56,7 @@ Comment[nn]=KRunner-tillegg Comment[pa]=ਕੇਰਨਰ ਪਲੱਗਇਨ Comment[pl]=Wtyczka KRunnera Comment[pt]='Plugin' do KRunner -Comment[pt_BR]=Plug-in do KRunner +Comment[pt_BR]=Plugin do KRunner Comment[ro]=Modul KRunner Comment[ru]=Расширение KRunner Comment[se]=KRunner-lassemodula diff --git a/package.cpp b/package.cpp index 9d05a8dd9..1a4953153 100644 --- a/package.cpp +++ b/package.cpp @@ -33,12 +33,6 @@ #include #include #include -#ifndef PLASMA_NO_KIO -#include -#include -#include -#include -#endif #include #include #include @@ -58,8 +52,6 @@ namespace Plasma { -#ifdef PLASMA_NO_KIO // Provide some convenience for dealing with folders - bool copyFolder(QString sourcePath, QString targetPath) { QDir source(sourcePath); @@ -118,9 +110,6 @@ bool removeFolder(QString folderPath) return folder.rmdir(folderName); } -#endif // PLASMA_NO_KIO - - Package::Package() : d(new PackagePrivate(PackageStructure::Ptr(0), QString())) { @@ -569,32 +558,20 @@ bool Package::installPackage(const QString &package, if (archivedPackage) { // it's in a temp dir, so just move it over. -#ifndef PLASMA_NO_KIO - KIO::CopyJob *job = KIO::move(KUrl(path), KUrl(targetName), KIO::HideProgressInfo); - const bool ok = job->exec(); - const QString errorString = job->errorString(); -#else const bool ok = copyFolder(path, targetName); removeFolder(path); - const QString errorString("unknown"); -#endif if (!ok) { - kWarning() << "Could not move package to destination:" << targetName << " : " << errorString; + kWarning() << "Could not move package to destination:" << targetName; return false; } } else { + kDebug() << "************************** 12"; // it's a directory containing the stuff, so copy the contents rather // than move them -#ifndef PLASMA_NO_KIO - KIO::CopyJob *job = KIO::copy(KUrl(path), KUrl(targetName), KIO::HideProgressInfo); - const bool ok = job->exec(); - const QString errorString = job->errorString(); -#else const bool ok = copyFolder(path, targetName); - const QString errorString("unknown"); -#endif + kDebug() << "************************** 13"; if (!ok) { - kWarning() << "Could not copy package to destination:" << targetName << " : " << errorString; + kWarning() << "Could not copy package to destination:" << targetName; return false; } } @@ -606,9 +583,12 @@ bool Package::installPackage(const QString &package, if (!servicePrefix.isEmpty()) { // and now we register it as a service =) + kDebug() << "************************** 1"; QString metaPath = targetName + "/metadata.desktop"; + kDebug() << "************************** 2"; KDesktopFile df(metaPath); KConfigGroup cg = df.desktopGroup(); + kDebug() << "************************** 3"; // Q: should not installing it as a service disqualify it? // Q: i don't think so since KServiceTypeTrader may not be @@ -620,14 +600,9 @@ bool Package::installPackage(const QString &package, QString serviceName = servicePrefix + meta.pluginName(); QString service = KStandardDirs::locateLocal("services", serviceName + ".desktop"); -#ifndef PLASMA_NO_KIO - KIO::FileCopyJob *job = KIO::file_copy(metaPath, service, -1, KIO::HideProgressInfo); - const bool ok = job->exec(); - const QString errorString = job->errorString(); -#else + kDebug() << "************************** 4"; const bool ok = QFile::copy(metaPath, service); - const QString errorString("unknown"); -#endif + kDebug() << "************************** 5"; if (ok) { // the icon in the installed file needs to point to the icon in the // installation dir! @@ -639,8 +614,9 @@ bool Package::installPackage(const QString &package, cg.writeEntry("Icon", iconPath); } } else { - kWarning() << "Could not register package as service (this is not necessarily fatal):" << serviceName << " : " << errorString; + kWarning() << "Could not register package as service (this is not necessarily fatal):" << serviceName; } + kDebug() << "************************** 7"; } return true; @@ -669,14 +645,8 @@ bool Package::uninstallPackage(const QString &pluginName, kWarning() << "Unable to remove " << service; } -#ifndef PLASMA_NO_KIO - KIO::DeleteJob *job = KIO::del(KUrl(targetName)); - ok = job->exec(); - const QString errorString = job->errorString(); -#else ok = removeFolder(targetName); const QString errorString("unknown"); -#endif if (!ok) { kWarning() << "Could not delete package from:" << targetName << " : " << errorString; return false; @@ -711,12 +681,7 @@ bool Package::registerPackage(const PackageMetadata &data, const QString &iconPa iconPath.right(iconPath.length() - iconPath.lastIndexOf("/"))); cg.writeEntry("Icon", installedIcon); installedIcon = KStandardDirs::locateLocal("icon", installedIcon); -#ifndef PLASMA_NO_KIO - KIO::FileCopyJob *job = KIO::file_copy(iconPath, installedIcon, -1, KIO::HideProgressInfo); - job->exec(); -#else QFile::copy(iconPath, installedIcon); -#endif } return true; diff --git a/private/service_p.h b/private/service_p.h index 8afef0b6f..c6fb77cd7 100644 --- a/private/service_p.h +++ b/private/service_p.h @@ -23,7 +23,7 @@ #include "servicejob.h" #include "service.h" -#include +#include #include #include #include @@ -114,7 +114,7 @@ public: DNSSD::PublicService *publicService; ServiceProvider *serviceProvider; QMultiHash associatedWidgets; - QMultiHash associatedGraphicsWidgets; + QMultiHash associatedGraphicsWidgets; QSet disabledOperations; }; diff --git a/querymatch.cpp b/querymatch.cpp index 2723c0574..0ba9b5676 100644 --- a/querymatch.cpp +++ b/querymatch.cpp @@ -265,6 +265,11 @@ bool QueryMatch::operator==(const QueryMatch &other) const return (d == other.d); } +bool QueryMatch::operator!=(const QueryMatch &other) const +{ + return (d != other.d); +} + void QueryMatch::run(const RunnerContext &context) const { //kDebug() << "we run the term" << context->query() << "whose type is" << context->mimetype(); diff --git a/querymatch.h b/querymatch.h index 7e3133c30..366767345 100644 --- a/querymatch.h +++ b/querymatch.h @@ -84,6 +84,7 @@ class PLASMA_EXPORT QueryMatch ~QueryMatch(); QueryMatch &operator=(const QueryMatch &other); bool operator==(const QueryMatch &other) const; + bool operator!=(const QueryMatch &other) const; bool operator<(const QueryMatch &other) const; diff --git a/runnermanager.cpp b/runnermanager.cpp index 49569a303..845fe224c 100644 --- a/runnermanager.cpp +++ b/runnermanager.cpp @@ -252,6 +252,11 @@ public: } } + if (!singleRunnerWasLoaded) { + // in case we deleted it up above + clearSingleRunner(); + } + kDebug() << "All runners loaded, total:" << runners.count(); } @@ -811,7 +816,9 @@ void RunnerManager::reset() qDeleteAll(d->oldSearchJobs); d->oldSearchJobs.clear(); } else { - Weaver::instance()->dequeue(); + Q_FOREACH(FindMatchesJob *job, d->searchJobs) { + Weaver::instance()->dequeue(job); + } d->oldSearchJobs += d->searchJobs; } diff --git a/service.cpp b/service.cpp index 84378dbf9..a860813c2 100644 --- a/service.cpp +++ b/service.cpp @@ -26,6 +26,7 @@ #include "config-plasma.h" #include +#include #include #include @@ -93,7 +94,7 @@ void ServicePrivate::associatedWidgetDestroyed(QObject *obj) void ServicePrivate::associatedGraphicsWidgetDestroyed(QObject *obj) { - associatedGraphicsWidgets.remove(static_cast(obj)); + associatedGraphicsWidgets.remove(static_cast(obj)); } void ServicePrivate::publish(AnnouncementMethods methods, const QString &name, const PackageMetadata &metadata) @@ -275,12 +276,22 @@ void Service::disassociateWidget(QWidget *widget) } void Service::associateWidget(QGraphicsWidget *widget, const QString &operation) +{ + associateItem(widget, operation); +} + +void Service::disassociateWidget(QGraphicsWidget *widget) +{ + disassociateItem(widget); +} + +void Service::associateItem(QGraphicsObject *widget, const QString &operation) { if (!widget) { return; } - disassociateWidget(widget); + disassociateItem(widget); d->associatedGraphicsWidgets.insert(widget, operation); connect(widget, SIGNAL(destroyed(QObject*)), this, SLOT(associatedGraphicsWidgetDestroyed(QObject*))); @@ -288,7 +299,7 @@ void Service::associateWidget(QGraphicsWidget *widget, const QString &operation) widget->setEnabled(!d->disabledOperations.contains(operation)); } -void Service::disassociateWidget(QGraphicsWidget *widget) +void Service::disassociateItem(QGraphicsObject *widget) { if (!widget) { return; @@ -343,7 +354,7 @@ void Service::setOperationEnabled(const QString &operation, bool enable) } { - QHashIterator it(d->associatedGraphicsWidgets); + QHashIterator it(d->associatedGraphicsWidgets); while (it.hasNext()) { it.next(); if (it.value() == operation) { @@ -380,7 +391,7 @@ void Service::setOperationsScheme(QIODevice *xml) } { - QHashIterator it(d->associatedGraphicsWidgets); + QHashIterator it(d->associatedGraphicsWidgets); while (it.hasNext()) { it.next(); it.key()->setEnabled(d->config->hasGroup(it.value())); diff --git a/service.h b/service.h index 314909ba8..db8956035 100644 --- a/service.h +++ b/service.h @@ -30,7 +30,7 @@ #include #include "packagemetadata.h" -class QGraphicsWidget; +class QGraphicsObject; class QIODevice; class QWidget; @@ -201,27 +201,41 @@ public: Q_INVOKABLE void disassociateWidget(QWidget *widget); /** - * Assoicates a widget with an operation, which allows the service to - * automatically manage, for example, the enabled state of a widget. + * This method only exists to maintain binary compatibility. * - * This will remove any previous associations the widget had with - * operations on this engine. - * - * @param widget the QGraphicsItem to associate with the service - * @param operation the operation to associate the widget with + * @see associateItem */ Q_INVOKABLE void associateWidget(QGraphicsWidget *widget, const QString &operation); /** - * Disassociates a widget if it has been associated with an operation - * on this service. + * This method only exists to maintain binary compatibility. * - * This will not change the enabled state of the widget. - * - * @param widget the QGraphicsWidget to disassociate. + * @see disassociateItem */ Q_INVOKABLE void disassociateWidget(QGraphicsWidget *widget); + /** + * Associates a graphics item with an operation, which allows the service to + * automatically manage, for example, the enabled state of the item. + * + * This will remove any previous associations the item had with + * operations on this engine. + * + * @param item the QGraphicsObject to associate with the service + * @param operation the operation to associate the item with + */ + Q_INVOKABLE void associateItem(QGraphicsObject *item, const QString &operation); + + /** + * Disassociates a graphics item if it has been associated with an operation + * on this service. + * + * This will not change the enabled state of the item. + * + * @param widget the QGraphicsItem to disassociate. + */ + Q_INVOKABLE void disassociateItem(QGraphicsObject *widget); + /** * @return a parameter map for the given description * @param description the configuration values to turn into the parameter map diff --git a/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop b/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop index 36a85ec8f..f935444b8 100644 --- a/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop +++ b/tests/testcontainmentactionsplugin/plasma-containmentactions-test.desktop @@ -100,7 +100,7 @@ Comment[nl]=Een dummy plugin voor testen Comment[pa]=ਟੈਸਟ ਕਰਨ ਲਈ ਫਰਜ਼ੀ ਪਲੱਗਇਨ Comment[pl]=Prosta wtyczka testowa Comment[pt]=Um 'plugin' de exemplo para testes -Comment[pt_BR]=Um plug-in fictício para testes +Comment[pt_BR]=Um plugin fictício para testes Comment[ro]=Modul fictiv pentru testare Comment[ru]=Расширение для тестирования Comment[se]=Geahččalanlassemodula