summaryrefslogtreecommitdiffstats
path: root/kdeprint/kmjobmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/kmjobmanager.h')
-rw-r--r--kdeprint/kmjobmanager.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/kdeprint/kmjobmanager.h b/kdeprint/kmjobmanager.h
new file mode 100644
index 000000000..2148a4810
--- /dev/null
+++ b/kdeprint/kmjobmanager.h
@@ -0,0 +1,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