1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/*
* This file is part of the KDE libraries
* Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License version 2 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
**/
#ifndef KMJOBMANAGER_H
#define KMJOBMANAGER_H
#if !defined( _KDEPRINT_COMPILE ) && defined( __GNUC__ )
#warning internal header, do not use except if you are a KDEPrint developer
#endif
#include <qobject.h>
#include <qptrlist.h>
#include <qdict.h>
#include <qvaluelist.h>
#include <kdelibs_export.h>
class KMJob;
class KMThreadJob;
class KActionCollection;
class KAction;
/**
* @internal
* This class is internal to KDEPrint and is not intended to be
* used outside it. Please do not make use of this header, except
* if you're a KDEPrint developer. The API might change in the
* future and binary compatibility might be broken.
*/
class KDEPRINT_EXPORT KMJobManager : public QObject
{
Q_OBJECT
public:
enum JobType { ActiveJobs = 0, CompletedJobs = 1 };
struct JobFilter
{
JobFilter() { m_type[0] = m_type[1] = 0; m_isspecial = false; }
int m_type[2];
bool m_isspecial;
};
KMJobManager(QObject *parent = 0, const char *name = 0);
virtual ~KMJobManager();
static KMJobManager* self();
void addPrinter(const QString& pr, JobType type = ActiveJobs, bool isSpecial = false);
void removePrinter(const QString& pr, JobType type = ActiveJobs);
void clearFilter();
QDict<JobFilter>* filter();
int limit();
void setLimit(int val);
//KMJob* findJob(int ID);
KMJob* findJob(const QString& uri);
//bool sendCommand(int ID, int action, const QString& arg = QString::null);
bool sendCommand(const QString& uri, int action, const QString& arg = QString::null);
bool sendCommand(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
const QPtrList<KMJob>& jobList(bool reload = true);
void addJob(KMJob*);
KMThreadJob* threadJob();
virtual int actions();
virtual QValueList<KAction*> createPluginActions(KActionCollection*);
virtual void validatePluginActions(KActionCollection*, const QPtrList<KMJob>&);
virtual bool doPluginAction(int, const QPtrList<KMJob>&);
protected:
void discardAllJobs();
void removeDiscardedJobs();
protected:
virtual bool listJobs(const QString& prname, JobType type, int limit = 0);
virtual bool sendCommandSystemJob(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
bool sendCommandThreadJob(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
protected:
QPtrList<KMJob> m_jobs;
QDict<JobFilter> m_filter;
KMThreadJob *m_threadjob;
};
inline QDict<KMJobManager::JobFilter>* KMJobManager::filter()
{ return &m_filter; }
inline void KMJobManager::clearFilter()
{ m_filter.clear(); }
inline KMThreadJob* KMJobManager::threadJob()
{ return m_threadjob; }
#endif
|