[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/sysadmin/shaman/plugins/packagekit
From: Wang Kai <fearee () gmail ! com>
Date: 2008-07-15 7:11:23
Message-ID: 1216105883.137431.23878.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 832692 by wkai:
GetPackages/RepoList code, it should work, but didn't, anyone please help, QtDBus related
M +9 -5 PKPlugin.cpp
M +28 -6 TransactionWorker.cpp
M +1 -0 TransactionWorker.h
--- trunk/playground/sysadmin/shaman/plugins/packagekit/PKPlugin.cpp #832691:832692
@@ -66,18 +66,22 @@
void PKPlugin::reloadPackages()
{
- // Oops, can't connect qt-dbus signals across threads, this doesn't work!!!
-/*
TransactionWorker worker(m_pk, TransactionWorker::GetPkgList, this);
worker.start();
+ kDebug() << "Start transaction GetPkgList";
+ worker.wait();
+ kDebug() << "Thread exited.";
setPackages(worker.pkgList);
-*/
}
void PKPlugin::reloadRepositories()
{
-
-
+ TransactionWorker worker(m_pk, TransactionWorker::GetPkgRepos, this);
+ worker.start();
+ kDebug() << "Start transaction GetRepoList";
+ worker.wait();
+ kDebug() << "Thread exited.";
+ setRepositories(worker.repoList);
}
void PKPlugin::reloadPackageGroups()
--- trunk/playground/sysadmin/shaman/plugins/packagekit/TransactionWorker.cpp #832691:832692
@@ -1,11 +1,11 @@
#include "TransactionWorker.h"
#include <KDebug>
#include <Qt>
+#include <KUrl>
TransactionWorker::TransactionWorker(PK *m_pk, TransactionType t,
Shaman::BackendPlugin *parent)
- : QThread(),
- type(t),
+ : type(t),
pkinterface(m_pk),
m_parent(parent)
{
@@ -32,6 +32,7 @@
isSuccessful = false;
}
working = false;
+ this->exit(0);
}
void TransactionWorker::dbusPackage(const QString &info,
@@ -49,14 +50,26 @@
pkgList.append(new Shaman::Package(fields[0], summary, fields[1], state, m_parent));
}
+void TransactionWorker::dbusRepoDetail(const QString &repo_id,
+ const QString &description, bool enabled)
+{
+ if (enabled)
+ repoList.append(new Shaman::Repository(repo_id, KUrl(), m_parent));
+}
+
void TransactionWorker::connectSignals(PKTrans *pk_trans)
{
+/*
connect(pk_trans,
SIGNAL(Details(const QString&, const QString&, const QString&,
const QString&, const QString&, qulonglong)),
SLOT(dbusDetails(const QString&, const QString&, const QString&,
const QString&, const QString&, qulonglong)));
+*/
connect(pk_trans,
+ SIGNAL(RepoDetail(const QString &, const QString &, bool)),
+ SLOT(dbusRepoDetail(const QString &, const QString &, bool)));
+ connect(pk_trans,
SIGNAL(Package(const QString&, const QString&, const QString&)),
SLOT(dbusPackage(const QString&, const QString&, const QString&)));
connect(pk_trans,
@@ -66,13 +79,14 @@
void TransactionWorker::run()
{
+ kDebug() << "i'm running";
PKTrans *m_pktrans;
QDBusReply<QString> path = pkinterface->GetTid();
if (path.isValid()) {
m_pktrans = new PKTrans("org.freedesktop.PackageKit",
path.value(),
QDBusConnection::systemBus(),
- this);
+ NULL);
if (m_pktrans->isValid()) {
connectSignals(m_pktrans);
switch (type) {
@@ -80,23 +94,31 @@
status = Shaman::BackendPlugin::Downloading;
working = true;
if (m_pktrans->GetPackages("none").isValid()) {
- QDBusReply<QStringList> tlist = pkinterface->GetTransactionList();
- while ( tlist.isValid() && ! tlist.value().empty() )
- tlist = pkinterface->GetTransactionList();
+ kDebug() << "beginning exec().";
+ exec();
} else {
error = Shaman::BackendPlugin::DownloadFailed;
working = false;
}
break;
case GetPkgRepos:
+ if (m_pktrans->GetRepoList("none").isValid()) {
+ kDebug() << "beginning exec().";
+ exec();
+ } else {
+ error = Shaman::BackendPlugin::DownloadFailed;
+ working = false;
+ }
break;
default:
break;
}
}
+ delete m_pktrans;
} else {
}
status = Shaman::BackendPlugin::NoTransaction;
+
}
#include "TransactionWorker.moc"
--- trunk/playground/sysadmin/shaman/plugins/packagekit/TransactionWorker.h #832691:832692
@@ -41,6 +41,7 @@
private slots:
void dbusPackage(const QString &, const QString &, const QString &);
void dbusFinished(const QString &, uint);
+ void dbusRepoDetail(const QString &, const QString &, bool);
private:
void connectSignals(PKTrans *);
private:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic