KIO
kdynamicjobtracker.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kdynamicjobtracker_p.h"
00021
00022 #include <kuiserverjobtracker.h>
00023 #include <kwidgetjobtracker.h>
00024 #include <kjobtrackerinterface.h>
00025 #include <kdebug.h>
00026
00027 #include <QDBusConnection>
00028 #include <QDBusConnectionInterface>
00029 #include <QMap>
00030
00031 class KDynamicJobTracker::Private
00032 {
00033 public:
00034 Private() : kuiserverTracker(0),
00035 widgetTracker(0)
00036 {
00037 }
00038
00039 ~Private()
00040 {
00041 delete kuiserverTracker;
00042 delete widgetTracker;
00043 }
00044
00045 KUiServerJobTracker *kuiserverTracker;
00046 KWidgetJobTracker *widgetTracker;
00047 QMap<KJob*, KJobTrackerInterface*> trackers;
00048 };
00049
00050 KDynamicJobTracker::KDynamicJobTracker(QObject *parent)
00051 : KJobTrackerInterface(parent),
00052 d(new Private)
00053 {
00054 }
00055
00056 KDynamicJobTracker::~KDynamicJobTracker()
00057 {
00058 delete d;
00059 }
00060
00061 void KDynamicJobTracker::registerJob(KJob *job)
00062 {
00063 if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.JobViewServer")) {
00064 if (!d->kuiserverTracker) {
00065 d->kuiserverTracker = new KUiServerJobTracker();
00066 }
00067 d->trackers[job] = d->kuiserverTracker;
00068 } else {
00069 if (!d->widgetTracker) {
00070 d->widgetTracker = new KWidgetJobTracker();
00071 }
00072 d->trackers[job] = d->widgetTracker;
00073 }
00074
00075 Q_ASSERT(d->trackers[job]);
00076
00077 d->trackers[job]->registerJob(job);
00078 }
00079
00080
00081 void KDynamicJobTracker::unregisterJob(KJob *job)
00082 {
00083 if (!d->trackers[job]) {
00084 kWarning() << "Tried to unregister a kio job that hasn't been registered.";
00085 return;
00086 }
00087
00088 d->trackers[job]->unregisterJob(job);
00089 }
00090
00091 #include "kdynamicjobtracker_p.moc"