[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/sysadmin/shaman
From: Lukas Appelhans <l.appelhans () gmx ! de>
Date: 2010-08-14 13:46:43
Message-ID: 20100814134643.504FBAC84E () svn ! kde ! org
[Download RAW message or body]
SVN commit 1163590 by lappelhans:
Fix the grouping of repos in the akabei plugin and some search related
stuff in the proxymodel
M +62 -5 libshaman/backends/akabei/AkabeiBackend.cpp
M +2 -0 libshaman/backends/akabei/AkabeiBackend.h
M +1 -1 libshaman/backends/akabei/AkabeiPackage.cpp
M +18 -3 plugins/packagesview/PackagesSortFilterProxyModel.cpp
--- trunk/playground/sysadmin/shaman/libshaman/backends/akabei/AkabeiBackend.cpp \
#1163589:1163590 @@ -114,17 +114,60 @@
bool AkabeiBackend::cancelQueueProcessing()
{
-
+ return false;
}
void AkabeiBackend::processQueue(const Shaman::AbstractPackage::List& packages, \
const Shaman::ProcessQueueOption::List &options) {
- // Do nothing
+ AkabeiClient::Queue *queue = AkabeiClient::Backend::instance()->queue();
+
+ /*
+ void phaseChanged(AkabeiClient::TransactionHandler::Phase phase);
+ void packageProgressChanged(Akabei::Package * pkg, int percent);
+ void downloadSpeedChanged(Akabei::Package * pkg, int speed);
+ void newTransactionMessage(const QString &message);
+ void errorsOccurred(QList<Akabei::Error*>);
+ void finished();*/ //TODO: Move the connects to the first time we will \
process the queue< +
+ connect(AkabeiClient::Backend::instance()->transactionHandler(), \
SIGNAL(newTransactionMessage(QString)), SLOT(addTransactionMessage(QString))); + \
connect(AkabeiClient::Backend::instance()->transactionHandler(), \
SIGNAL(phaseChanged(AkabeiClient::TransactionHandler::Phase)), \
SLOT(phaseChanged(AkabeiClient::TransactionHandler::Phase))); +
+ AkabeiClient::Backend::instance()->transactionHandler()->process(queue);
}
+void AkabeiBackend::phaseChanged(AkabeiClient::TransactionHandler::Phase phase)
+{
+ switch (phase) {
+ //Validating,
+ case AkabeiClient::TransactionHandler::RunningPreHooks:
+ setTransactionState(Shaman::TransactionInterface::RunningPreHooks);
+ break;
+ case AkabeiClient::TransactionHandler::Downloading:
+ setTransactionState(Shaman::TransactionInterface::Downloading);
+ break;
+ case AkabeiClient::TransactionHandler::Processing:
+ setTransactionState(Shaman::TransactionInterface::Processing);
+ break;
+ case AkabeiClient::TransactionHandler::RunningScriptlets:
+ setTransactionState(Shaman::TransactionInterface::Processing);
+ break;
+ case AkabeiClient::TransactionHandler::RunningPostHooks:
+ setTransactionState(Shaman::TransactionInterface::RunningPostHooks);//FIXME \
maybe this has to be Processing? + break;
+ case AkabeiClient::TransactionHandler::Cleaning:
+ setTransactionState(Shaman::TransactionInterface::Cleaning);
+ break;
+ case AkabeiClient::TransactionHandler::Finished:
+ setTransactionState(Shaman::TransactionInterface::NoTransaction);
+ break;
+ default:
+ break;
+ }
+}
+
bool AkabeiBackend::cancelRepositoriesUpdate()
{
-
+ return false;
}
void AkabeiBackend::updateRepositories()
@@ -192,8 +235,9 @@
PERFORMANCE_MONITOR_START("Akabei Reload");
Shaman::Repository::List repos;
- foreach (AkabeiClient::DatabaseHandler * db, \
AkabeiClient::Backend::instance()->databases()) + foreach \
(AkabeiClient::DatabaseHandler * db, AkabeiClient::Backend::instance()->databases()) \
{
repos.append(new Shaman::Repository(db->name(), db->mirror(), this));
+ }
repos.append(new Shaman::Repository(i18n("Local"), KUrl(), this));
@@ -263,6 +307,7 @@
void AkabeiBackend::markAdditionalTargetsForQueue(const \
Shaman::ProcessQueueOption::List &options) {
+ //TODO: Maybe also already validate the queue + transactions?
// Do nothing
}
@@ -328,8 +373,20 @@
Shaman::Repository * AkabeiBackend::repositoryFromDatabase(Akabei::Database * db)
{
- QString name = db->name();
+ AkabeiClient::DatabaseHandler *dbHandler = 0;
+ foreach (AkabeiClient::DatabaseHandler * h, \
AkabeiClient::Backend::instance()->databases()) { + if (db == h->database()) {
+ //kDebug() << "Found repo" << h->name();
+ dbHandler = h;
+ break;
+ }
+ }
+ QString name;
+ if (dbHandler)
+ name = dbHandler->name();
+ //kDebug() << name;
foreach (Shaman::Repository * repo, backend()->repositories()) {
+ //kDebug() << repo->name();
if (name == repo->name() || (db == \
Akabei::Backend::instance()->localDatabase() && repo->name() == i18n("Local"))) \
return repo; }
--- trunk/playground/sysadmin/shaman/libshaman/backends/akabei/AkabeiBackend.h \
#1163589:1163590 @@ -16,6 +16,7 @@
#include <shamanbackendpackage.h>
#include <akabeibackend.h>
#include <akabeidatabasehandler.h>
+#include <akabeiclienttransactionhandler.h>
namespace Akabei {
class Package;
@@ -56,6 +57,7 @@
void packageQueryComplete(const QUuid &id, const QList<Akabei::Package*> \
&result);
void groupQueryComplete(const QUuid &id, const QList<Akabei::Group*> \
&result);
void databaseStatusChanged(AkabeiClient::DatabaseHandler::Status status);
+ void phaseChanged(AkabeiClient::TransactionHandler::Phase phase);
private:
bool m_init;
--- trunk/playground/sysadmin/shaman/libshaman/backends/akabei/AkabeiPackage.cpp \
#1163589:1163590 @@ -47,7 +47,7 @@
if (repo)
repo->append(this);
- kDebug() << pkg->groups().count();
+ //kDebug() << pkg->groups().count();
foreach (Shaman::PackageGroup * group, \
m_backend->groupsFromAkabeiGroups(pkg->groups())) group->append(this);
--- trunk/playground/sysadmin/shaman/plugins/packagesview/PackagesSortFilterProxyModel.cpp \
#1163589:1163590 @@ -95,19 +95,34 @@
bool PackagesSortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex \
&sourceParent) const {
//Our "main"-method
- AbstractPackage *package = \
static_cast<PackagesModel*>(sourceModel())->packageFromModelIndex(sourceModel()->index(sourceRow, \
1, sourceParent)); + AbstractPackage *package = \
static_cast<PackagesModel*>(sourceModel())->packageFromModelIndex(sourceModel()->index(sourceRow, \
0, sourceParent)); //We have a package as internal pointer
if (!package)
return false;
- bool result = (!m_group || m_group->contains(package)) && //Look if it's in the \
group
- (!m_repo || m_repo->contains(package)) && //Look if it's in the \
repository + bool subitem = false;
+ if (!sourceParent.isValid() && sourceModel()->hasChildren(sourceParent)) {
+ const QModelIndex &index = sourceModel()->index(sourceRow, 0, sourceParent);
+ int i = 0;
+ while (index.child(i, 0).isValid()) {
+ if ((m_repo && \
m_repo->contains(static_cast<PackagesModel*>(sourceModel())->packageFromModelIndex(index.child(i, \
0)))) + || (m_group && \
m_group->contains(static_cast<PackagesModel*>(sourceModel())->packageFromModelIndex(index.child(i, \
0))))) { + subitem = true;
+ break;
+ }
+ i++;
+ }
+ }
+
+ bool result = (!m_group || m_group->contains(package) || subitem) && //Look if \
it's in the group + (!m_repo || m_repo->contains(package) || \
subitem) && //Look if it's in the repository ((m_state == \
PackageStateModel::AllPackages) ||
(package->state() == AbstractPackage::Installed && m_state == \
PackageStateModel::InstalledPackages) ||
(package->state() == AbstractPackage::NotInstalled && m_state == \
PackageStateModel::NotInstalledPackages) ||
(package->state() == AbstractPackage::Upgradeable && m_state == \
PackageStateModel::UpgradeablePackages) ||
(package->action() != AbstractPackage::NoAction && m_state == \
PackageStateModel::QueuedPackages));
+
if ((m_searchCapabilities & BackendCapabilities::BasicSearchFromViewCapability \
&& m_searchType == SearchModel::Basic) ||
(m_searchCapabilities & \
BackendCapabilities::ExtendedSearchFromViewCapability && m_searchType == \
SearchModel::Extended)) { return result && (m_searchText.isEmpty() ||
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic