1 /* This file is part of the KDE project
3 Copyright (C) 2007 by Javier Goday <jgoday@gmail.com>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
11 #include "kuiserverjobs.h"
13 #include "kgetglobaljob.h"
16 #include <kuiserverjobtracker.h>
18 KUiServerJobs::KUiServerJobs(QObject
*parent
)
19 : QObject(parent
), m_jobs(), m_registeredJobs(), m_globalJob(0)
23 KUiServerJobs::~KUiServerJobs()
25 foreach(KJob
*job
, m_jobs
) {
30 KIO::getJobTracker()->unregisterJob(globalJob());
36 void KUiServerJobs::registerJob(KJob
*job
)
40 if(Settings::enableKUIServerIntegration()) {
41 if(Settings::exportGlobalJob()) {
42 globalJob()->registerJob(job
);
45 m_registeredJobs
.append(job
);
46 KIO::getJobTracker()->registerJob(job
);
51 void KUiServerJobs::unregisterJob(KJob
*job
)
53 m_jobs
.removeAll(job
);
55 if(Settings::enableKUIServerIntegration()) {
56 if(Settings::exportGlobalJob()) {
57 globalJob()->unregisterJob(job
);
60 m_registeredJobs
.removeAll(job
);
61 KIO::getJobTracker()->unregisterJob(job
);
66 // every time the configuration changed, check the registered jobs and the state through the ui server
67 void KUiServerJobs::reload()
69 if(Settings::exportGlobalJob() && Settings::enableKUIServerIntegration() && !m_globalJob
) {
70 foreach(KJob
*job
, m_registeredJobs
) {
71 KIO::getJobTracker()->unregisterJob(job
);
72 m_registeredJobs
.removeAll(job
);
74 KIO::getJobTracker()->registerJob(globalJob());
77 if((!Settings::exportGlobalJob() && Settings::enableKUIServerIntegration())
78 || !Settings::enableKUIServerIntegration()) {
80 KIO::getJobTracker()->unregisterJob(globalJob());
86 foreach(KJob
*job
, m_jobs
) {
87 if(!Settings::exportGlobalJob() && Settings::enableKUIServerIntegration() && job
88 && job
->percent() < 100) {
89 if(!m_registeredJobs
.contains(job
)) {
90 m_registeredJobs
.append(job
);
91 KIO::getJobTracker()->registerJob(job
);
95 m_registeredJobs
.removeAll(job
);
96 KIO::getJobTracker()->unregisterJob(job
);
102 // get the kget global job
103 KGetGlobalJob
*KUiServerJobs::globalJob()
106 m_globalJob
= new KGetGlobalJob();
108 foreach(KJob
*job
, m_jobs
) {
109 m_globalJob
->registerJob(job
);
112 if(Settings::exportGlobalJob() && Settings::enableKUIServerIntegration()) {
113 KIO::getJobTracker()->registerJob(globalJob());