[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