From kde-commits Tue Mar 31 23:51:53 2009 From: =?utf-8?q?Aaron=20J=2E=20Seigo?= Date: Tue, 31 Mar 2009 23:51:53 +0000 To: kde-commits Subject: KDE/kdelibs/plasma Message-Id: <1238543513.158324.11684.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=123854352208819 SVN commit 947636 by aseigo: abstract the bit of data engine management code out into a small class that the private classes can then subclass, and add dataEngine(const QString &) to Wallpaper M +1 -15 applet.cpp M +3 -2 private/applet_p.h A private/dataengineconsumer_p.h [License: LGPL (v2+)] M +9 -1 wallpaper.cpp M +21 -0 wallpaper.h --- trunk/KDE/kdelibs/plasma/applet.cpp #947635:947636 @@ -574,17 +574,7 @@ DataEngine *Applet::dataEngine(const QString &name) const { - int index = d->loadedEngines.indexOf(name); - if (index != -1) { - return DataEngineManager::self()->engine(name); - } - - DataEngine *engine = DataEngineManager::self()->loadEngine(name); - if (engine->isValid()) { - d->loadedEngines.append(name); - } - - return engine; + return d->dataEngine(name); } const Package *Applet::package() const @@ -2035,10 +2025,6 @@ activationAction->forgetGlobalShortcut(); } - foreach (const QString &engine, loadedEngines) { - DataEngineManager::self()->unloadEngine(engine); - } - if (extender) { delete extender; extender = 0; --- trunk/KDE/kdelibs/plasma/private/applet_p.h #947635:947636 @@ -26,6 +26,8 @@ #include +#include "plasma/private/dataengineconsumer_p.h" + class KKeySequenceWidget; namespace Plasma @@ -51,7 +53,7 @@ void overlayAnimationComplete(); }; -class AppletPrivate +class AppletPrivate : public DataEngineConsumer { public: AppletPrivate(KService::Ptr service, int uniqueID, Applet *applet); @@ -107,7 +109,6 @@ AppletOverlayWidget *messageOverlay; Plasma::BusyWidget *busyWidget; QSet registeredAsDragHandle; - QStringList loadedEngines; Plasma::FrameSvg *background; AppletScript *script; QVariantList args; --- trunk/KDE/kdelibs/plasma/wallpaper.cpp #947635:947636 @@ -25,10 +25,12 @@ #include +#include "plasma/private/dataengineconsumer_p.h" + namespace Plasma { -class WallpaperPrivate +class WallpaperPrivate : public DataEngineConsumer { public: WallpaperPrivate(KService::Ptr service, Wallpaper *wallpaper) : @@ -109,6 +111,7 @@ if (!wallpaper) { kDebug() << "Couldn't load wallpaper \"" << wallpaperName << "\"! reason given: " << error; } + return wallpaper; } @@ -237,6 +240,11 @@ Q_UNUSED(event) } +DataEngine *Wallpaper::dataEngine(const QString &name) const +{ + return d->dataEngine(name); +} + } // Plasma namespace #include "wallpaper.moc" --- trunk/KDE/kdelibs/plasma/wallpaper.h #947635:947636 @@ -28,6 +28,8 @@ namespace Plasma { + +class DataEngine; class WallpaperPrivate; /** @@ -204,6 +206,25 @@ */ virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + /** + * Loads the given DataEngine + * + * Tries to load the data engine given by @p name. Each engine is + * only loaded once, and that instance is re-used on all subsequent + * requests. + * + * If the data engine was not found, an invalid data engine is returned + * (see DataEngine::isValid()). + * + * Note that you should not delete the returned engine. + * + * @param name Name of the data engine to load + * @return pointer to the data engine if it was loaded, + * or an invalid data engine if the requested engine + * could not be loaded + */ + Q_INVOKABLE DataEngine *dataEngine(const QString &name) const; + Q_SIGNALS: /** * This signal indicates that wallpaper needs to be repainted.