[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/sysadmin/shaman
From:       Dario Freddi <drf () kde ! org>
Date:       2009-12-25 15:44:18
Message-ID: 1261755858.994596.15717.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1066053 by dafre:

First round of revamp of Providers

Signed-off-by: Dario Freddi <drf@kde.org>

 M  +27 -1     libshaman/shamanprovider.cpp  
 M  +4 -1      libshaman/shamanprovider.h  
 M  +2 -0      libshaman/shamanprovider_p.h  
 M  +26 -2     libshaman/shamanproviderplugin.cpp  
 M  +11 -5     libshaman/shamanproviderplugin.h  
 M  +1 -0      libshaman/shamanproviderplugin_p.h  
 M  +5 -15     plugins/aur/AurPlugin.cpp  
 M  +1 -3      plugins/aur/AurPlugin.h  


--- trunk/playground/sysadmin/shaman/libshaman/shamanprovider.cpp #1066052:1066053
@@ -29,14 +29,40 @@
 
 }
 
-AbstractPackage::List Provider::additionalTargetsForQueue() const
+Provider::Capabilities Provider::capabilities() const
 {
+    Q_D(const Provider);
+    return d->capabilities;
+}
 
+AbstractPackage::List Provider::packages() const
+{
+    Q_D(const Provider);
+    return d->packages;
 }
 
+QSet< AbstractPackage* > Provider::allAvailablePackages() const
+{
+    Q_D(const Provider);
+    QSet< AbstractPackage* > retset;
+    retset.unite(d->plugin->d_func()->searchCache);
+    retset.unite(d->packages.toSet());
+    return retset;
+}
+
 AbstractPackage::List Provider::queue() const
 {
+    AbstractPackage::List retlist;
+    // Let's find out
+    foreach (AbstractPackage * const package, allAvailablePackages()) {
+        if (package->action() == AbstractPackage::Install ||
+            package->action() == AbstractPackage::Uninstall ||
+            package->action() == AbstractPackage::Upgrade) {
+            retlist.append(package);
+        }
+    }
 
+    return retlist;
 }
 
 Backend::State Provider::state() const
--- trunk/playground/sysadmin/shaman/libshaman/shamanprovider.h #1066052:1066053
@@ -39,14 +39,17 @@
         typedef QList<Provider*> List;
 
         Backend::State state() const;
+        Capabilities capabilities() const;
 
         AbstractPackage::List queue() const;
-        AbstractPackage::List additionalTargetsForQueue() const;
 
         void markAdditionalTargetsForQueue();
         void process();
         bool cancelProcessing();
 
+        AbstractPackage::List packages() const;
+        QSet< AbstractPackage* > allAvailablePackages() const;
+
         void search(const QString &search);
 
     Q_SIGNALS:
--- trunk/playground/sysadmin/shaman/libshaman/shamanprovider_p.h #1066052:1066053
@@ -26,6 +26,8 @@
 
         ProviderPlugin *plugin;
         Backend::State state;
+        Provider::Capabilities capabilities;
+        AbstractPackage::List packages;
 };
 
 }
--- trunk/playground/sysadmin/shaman/libshaman/shamanproviderplugin.cpp \
#1066052:1066053 @@ -34,9 +34,11 @@
     d->provider->d_ptr->state = state;
 }
 
-void ProviderPlugin::setAdditionalTargetsForQueue(const \
Shaman::AbstractPackage::List& additionalProvider) +void \
ProviderPlugin::setAdditionalTargetsForQueue(const Shaman::AbstractPackage::List& \
packages)  {
-
+    Q_D(ProviderPlugin);
+    emit d->provider->additionalTargetsRetrieved(packages);
+    setState(Backend::Idling);
 }
 
 void ProviderPlugin::setPackageProgress(AbstractPackage* package, int progress)
@@ -53,10 +55,32 @@
 void ProviderPlugin::setSearchResult(const QString& search, const \
Shaman::AbstractPackage::List& result)  {
     Q_D(ProviderPlugin);
+    if (d->provider->capabilities() & \
Provider::RetrieveAdditionalPackagesOnSearchCapability) { +        // Then we need to \
populate the cache as well +        d->searchCache = \
d->searchCache.unite(result.toSet()); +    }
     emit d->provider->searchCompleted(search, result);
     setState(Backend::Idling);
 }
 
+QSet< AbstractPackage* > ProviderPlugin::searchCache() const
+{
+    Q_D(const ProviderPlugin);
+    return d->searchCache;
 }
 
+void ProviderPlugin::setCapabilities(Provider::Capabilities capabilities)
+{
+    Q_D(ProviderPlugin);
+    d->provider->d_func()->capabilities = capabilities;
+}
+
+void ProviderPlugin::setPackages(const Shaman::AbstractPackage::List& packages)
+{
+    Q_D(ProviderPlugin);
+    d->provider->d_func()->packages = packages;
+}
+
+}
+
 #include "shamanproviderplugin.moc"
--- trunk/playground/sysadmin/shaman/libshaman/shamanproviderplugin.h \
#1066052:1066053 @@ -13,9 +13,10 @@
 
 #include "shamanabstractplugin.h"
 
-#include "shamanproviderpackage.h"
+#include "shamanabstractpackage.h"
 #include "shamanmacros.h"
 #include "shamanprovider.h"
+#include <QtCore/QSet>
 
 namespace Shaman {
 class Backend;
@@ -33,7 +34,7 @@
         ProviderPlugin(QObject * parent);
         ~ProviderPlugin();
 
-        Provider *provider() const;
+        Shaman::Provider *provider() const;
 
         virtual void markAdditionalTargetsForQueue() = 0;
         virtual void process() = 0;
@@ -41,14 +42,19 @@
 
         virtual void search(const QString &search) = 0;
 
+        QSet< AbstractPackage* > searchCache() const;
+
     protected:
         void setState(Backend::State state);
         //void setError(Provider::Error error, const QString &details);
         //void addMessage(const QString &message, Provider::MessageLevel level);
-        void setPackageProgress(AbstractPackage * package, int progress);
-        void setSearchResult(const QString &search, const AbstractPackage::List \
                &result);
-        void setAdditionalTargetsForQueue(const AbstractPackage::List \
&additionalProvider); +        void setPackageProgress(Shaman::AbstractPackage * \
package, int progress); +        void setSearchResult(const QString &search, const \
Shaman::AbstractPackage::List &result); +        void \
setAdditionalTargetsForQueue(const Shaman::AbstractPackage::List &packages); +        \
void setPackages(const Shaman::AbstractPackage::List &packages);  
+        void setCapabilities(Shaman::Provider::Capabilities capabilities);
+
 };
 }
 
--- trunk/playground/sysadmin/shaman/libshaman/shamanproviderplugin_p.h \
#1066052:1066053 @@ -22,6 +22,7 @@
         virtual ~ProviderPluginPrivate() {}
 
         Provider *provider;
+        QSet<AbstractPackage*> searchCache;
 };
 }
 
--- trunk/playground/sysadmin/shaman/plugins/aur/AurPlugin.cpp #1066052:1066053
@@ -1,6 +1,7 @@
 /* This file is part of the KDE project
 
    Copyright (C) 2008 - 2009 Lukas Appelhans <l.appelhans@gmx.de>
+   Copyright (C) 2009 Dario Freddi <drf@kde.org>
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public
@@ -17,24 +18,13 @@
 
 SHAMAN_PLUGIN_EXPORT(AurPlugin)
 
-class AurPlugin::Private
-{
-    public:
-        Private() {}
-        ~Private() {}
-
-        QList<AurPackage*> cache;
-};
-
 AurPlugin::AurPlugin(QObject *parent, const QVariantList &)
-  : ProviderPlugin(parent),
-    d(new Private())
+  : ProviderPlugin(parent)
 {
 }
 
 AurPlugin::~AurPlugin()
 {
-    delete d;
 }
 
 void AurPlugin::init()
@@ -68,9 +58,10 @@
 void AurPlugin::slotSearchCompleted(const QString &search, const \
Aqpm::Aur::Package::List &packages)  {
     Shaman::AbstractPackage::List returnPackages;
+
     foreach (const Aqpm::Aur::Package &package, packages) {
-        AurPackage *thepackage = 0;
-        foreach (AurPackage * p, d->cache) {
+        Shaman::AbstractPackage *thepackage = 0;
+        foreach (Shaman::AbstractPackage * p, searchCache()) {
             if (p->name() == package.name) {
                 thepackage = p;
             }
@@ -78,7 +69,6 @@
         if (!thepackage) {
             thepackage = new AurPackage(package.name, package.description, \
                package.version, package.url,
                                         package.license, package.id, this);
-            d->cache << thepackage;
         }
         returnPackages << thepackage;
     }
--- trunk/playground/sysadmin/shaman/plugins/aur/AurPlugin.h #1066052:1066053
@@ -1,6 +1,7 @@
 /* This file is part of the KDE project
 
    Copyright (C) 2008 - 2009 Lukas Appelhans <l.appelhans@gmx.de>
+   Copyright (C) 2009 Dario Freddi <drf@kde.org>
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public
@@ -32,9 +33,6 @@
     public slots:
         void slotSearchCompleted(const QString&, const Aqpm::Aur::Package::List&);
 
-    private:
-        class Private;
-        Private *d;
 };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic