Disable clipboardsharing in view only mode.
[kdenetwork.git] / kget / core / kuiserverjobs.cpp
blobab812f91e9e5bea77491f35b9d3a9536c4b9d4f7
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.
9 */
11 #include "kuiserverjobs.h"
13 #include "kgetglobaljob.h"
14 #include "settings.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) {
26 unregisterJob(job);
29 if(m_globalJob) {
30 KIO::getJobTracker()->unregisterJob(globalJob());
31 delete m_globalJob;
32 m_globalJob = 0;
36 void KUiServerJobs::registerJob(KJob *job)
38 m_jobs.append(job);
40 if(Settings::enableKUIServerIntegration()) {
41 if(Settings::exportGlobalJob()) {
42 globalJob()->registerJob(job);
44 else {
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);
59 else {
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());
76 else {
77 if((!Settings::exportGlobalJob() && Settings::enableKUIServerIntegration())
78 || !Settings::enableKUIServerIntegration()) {
79 if(m_globalJob) {
80 KIO::getJobTracker()->unregisterJob(globalJob());
81 delete m_globalJob;
82 m_globalJob = 0;
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);
94 else {
95 m_registeredJobs.removeAll(job);
96 KIO::getJobTracker()->unregisterJob(job);
102 // get the kget global job
103 KGetGlobalJob *KUiServerJobs::globalJob()
105 if(!m_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());
117 return m_globalJob;