22 #include "kuiserverjobtracker_p.h"
24 #include "jobviewiface.h"
25 #include "jobviewifacev2.h"
48 QHash<KJob*, org::kde::JobViewV2*> progressJobView;
51 void KUiServerJobTracker::Private::_k_killJob()
53 org::kde::JobViewV2 *jobView = qobject_cast<org::kde::JobViewV2*>(q->sender());
56 KJob *job = progressJobView.key(jobView);
71 if (!d->progressJobView.isEmpty()) {
72 qWarning() <<
"A KUiServerJobTracker instance contains"
73 << d->progressJobView.size() <<
"stalled jobs";
82 if (d->progressJobView.contains(job)) {
89 if (programIconName.isEmpty()) {
93 QWeakPointer<KJob> jobWatch = job;
94 QDBusReply<QDBusObjectPath> reply = serverProxy->uiserver().requestView(componentData.
aboutData()->
programName(),
99 if (reply.isValid()) {
100 org::kde::JobViewV2 *jobView =
new org::kde::JobViewV2(
"org.kde.JobViewServer",
101 reply.value().path(),
102 QDBusConnection::sessionBus());
110 QObject::connect(jobView, SIGNAL(cancelRequested()),
this,
112 QObject::connect(jobView, SIGNAL(suspendRequested()), job,
114 QObject::connect(jobView, SIGNAL(resumeRequested()), job,
117 QVariant destUrl = job->property(
"destUrl");
118 if (destUrl.isValid()) {
119 jobView->setDestUrl(QDBusVariant(destUrl));
129 d->progressJobView.insert(job, jobView);
130 }
else if (!jobWatch) {
131 qWarning() <<
"Uh-oh...KUiServerJobTracker was trying to forward a job, but it was deleted from under us."
132 <<
"kuiserver *may* have a stranded job. we can't do anything about it because the returned objectPath is invalid.";
143 if (!d->progressJobView.contains(job)) {
147 org::kde::JobViewV2 *jobView = d->progressJobView.take(job);
160 if (!d->progressJobView.contains(job)) {
164 org::kde::JobViewV2 *jobView = d->progressJobView.take(job);
175 if (!d->progressJobView.contains(job)) {
179 org::kde::JobViewV2 *jobView = d->progressJobView[job];
181 jobView->setSuspended(
true);
186 if (!d->progressJobView.contains(job)) {
190 org::kde::JobViewV2 *jobView = d->progressJobView[job];
192 jobView->setSuspended(
false);
199 if (!d->progressJobView.contains(job)) {
203 org::kde::JobViewV2 *jobView = d->progressJobView[job];
205 jobView->setInfoMessage(title);
207 if (field1.first.isNull() || field1.second.isNull()) {
208 jobView->clearDescriptionField(0);
210 jobView->setDescriptionField(0, field1.first, field1.second);
213 if (field2.first.isNull() || field2.second.isNull()) {
214 jobView->clearDescriptionField(1);
216 jobView->setDescriptionField(1, field2.first, field2.second);
224 if (!d->progressJobView.contains(job)) {
228 org::kde::JobViewV2 *jobView = d->progressJobView[job];
230 jobView->setInfoMessage(plain);
235 if (!d->progressJobView.contains(job)) {
239 org::kde::JobViewV2 *jobView = d->progressJobView[job];
243 jobView->setTotalAmount(amount,
"bytes");
246 jobView->setTotalAmount(amount,
"files");
249 jobView->setTotalAmount(amount,
"dirs");
258 if (!d->progressJobView.contains(job)) {
262 org::kde::JobViewV2 *jobView = d->progressJobView[job];
266 jobView->setProcessedAmount(amount,
"bytes");
269 jobView->setProcessedAmount(amount,
"files");
272 jobView->setProcessedAmount(amount,
"dirs");
281 if (!d->progressJobView.contains(job)) {
285 org::kde::JobViewV2 *jobView = d->progressJobView[job];
287 jobView->setPercent(percent);
292 if (!d->progressJobView.contains(job)) {
296 org::kde::JobViewV2 *jobView = d->progressJobView[job];
298 jobView->setSpeed(value);
301 KSharedUiServerProxy::KSharedUiServerProxy()
302 : m_uiserver(
"org.kde.JobViewServer",
"/JobViewServer", QDBusConnection::sessionBus())
304 if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(
"org.kde.JobViewServer"))
311 kError() <<
"Couldn't start kuiserver from kuiserver.desktop: " << error;
315 if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(
"org.kde.JobViewServer"))
316 kDebug() <<
"The dbus name org.kde.JobViewServer is STILL NOT REGISTERED, even after starting kuiserver. Should not happen.";
318 kDebug() <<
"kuiserver registered";
321 KSharedUiServerProxy::~KSharedUiServerProxy()
325 org::kde::JobViewServer &KSharedUiServerProxy::uiserver()
330 #include "kuiserverjobtracker.moc"
331 #include "kuiserverjobtracker_p.moc"