summaryrefslogtreecommitdiffstats
path: root/kdeprint/kmprinter.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/kmprinter.h')
-rw-r--r--kdeprint/kmprinter.h236
1 files changed, 236 insertions, 0 deletions
diff --git a/kdeprint/kmprinter.h b/kdeprint/kmprinter.h
new file mode 100644
index 000000000..810793e3d
--- /dev/null
+++ b/kdeprint/kmprinter.h
@@ -0,0 +1,236 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (c) 2001 Michael Goffioul <[email protected]>
+ *
+ * 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 KMPRINTER_H
+#define KMPRINTER_H
+
+#if !defined( _KDEPRINT_COMPILE ) && defined( __GNUC__ )
+#warning internal header, do not use except if you are a KDEPrint developer
+#endif
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include <kurl.h>
+#include <qmap.h>
+#include <kdeprint/kmobject.h>
+
+class KMDBEntry;
+class DrMain;
+class KPrinter;
+class QWidget;
+
+/**
+ * @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 KMPrinter : public KMObject
+{
+public:
+ enum PrinterType {
+ Printer = 0x01,
+ Class = 0x02,
+ Implicit = 0x04,
+ Virtual = 0x08,
+ Remote = 0x10,
+ Invalid = 0x20,
+ Special = 0x40
+ };
+ enum PrinterState {
+ Idle = 0x01,
+ Stopped = 0x02,
+ Processing = 0x03,
+ Unknown = 0x04,
+ Rejecting = 0x08,
+ StateMask = 0x07
+ };
+ enum PrinterCap {
+ CapBW = 0x0001,
+ CapColor = 0x0002,
+ CapDuplex = 0x0004,
+ CapStaple = 0x0008,
+ CapCopies = 0x0010,
+ CapCollate = 0x0020,
+ CapPunch = 0x0040,
+ CapCover = 0x0080,
+ CapBind = 0x0100,
+ CapSort = 0x0200,
+ CapSmall = 0x0400,
+ CapMedium = 0x0800,
+ CapLarge = 0x1000,
+ CapVariable = 0x2000
+ };
+
+ // constructor functions
+ KMPrinter();
+ KMPrinter(const KMPrinter& p);
+ ~KMPrinter();
+ void copy(const KMPrinter& p);
+
+
+ // inline access functions
+ const QString& name() const { return m_name; }
+ void setName(const QString& s) { m_name = s; if (m_printername.isEmpty()) m_printername = s; }
+ const QString& printerName() const { return m_printername; }
+ void setPrinterName(const QString& s) { m_printername = s; if (m_name.isEmpty()) m_name = s; }
+ const QString& instanceName() const { return m_instancename; }
+ void setInstanceName(const QString& s) { m_instancename = s; }
+ int type() const { return m_type; }
+ void setType(int t) { m_type = t; }
+ void addType(int t) { m_type |= t; }
+ PrinterState state(bool complete = false) const { return PrinterState(m_state & (complete ? ~0x0 : StateMask)); }
+ QString stateString() const;
+ void setState(PrinterState s) { m_state = PrinterState((m_state & ~StateMask) | s); }
+ bool acceptJobs() const { return !(m_state & Rejecting); }
+ void setAcceptJobs(bool on) { m_state = PrinterState((m_state & StateMask) | (on ? 0 : Rejecting)); }
+ const QString& device() const { return m_device; }
+ QString deviceProtocol() const;
+ void setDevice(const QString& d) { m_device = d; }
+ const QStringList& members() const { return m_members; }
+ void setMembers(const QStringList& l) { m_members = l; }
+ void addMember(const QString& s) { m_members.append(s); }
+ const QString& description() const { return m_description; }
+ void setDescription(const QString& s) { m_description = s; }
+ const QString& location() const { return m_location; }
+ void setLocation(const QString& s) { m_location = s; }
+ const KURL& uri() const { return m_uri; }
+ void setUri(const KURL& u) { m_uri = u; }
+ const QString& manufacturer() const { return m_manufacturer; }
+ void setManufacturer(const QString&s ) { m_manufacturer = s; }
+ const QString& model() const { return m_model; }
+ void setModel(const QString& s) { m_model = s; }
+ const QString& driverInfo() const { return m_driverinfo; }
+ void setDriverInfo(const QString& s) { m_driverinfo = s; }
+ int printerCap() const { return m_printercap; }
+ void setPrinterCap( int c ) { m_printercap = c; }
+ void addPrinterCap( int c ) { m_printercap |= c; }
+
+ // some useful functions
+ bool isClass(bool useImplicit = true) const { return ((m_type & KMPrinter::Class) || (useImplicit && isImplicit())); }
+ bool isImplicit() const { return (m_type & KMPrinter::Implicit); }
+ bool isPrinter() const { return (m_type & KMPrinter::Printer); }
+ bool isRemote() const { return (m_type & KMPrinter::Remote); }
+ bool isLocal() const { return !isRemote(); }
+ bool isVirtual() const { return (m_type & KMPrinter::Virtual); }
+ bool isValid() const { return !(m_type & KMPrinter::Invalid); }
+ bool isSpecial() const { return (m_type & KMPrinter::Special); }
+
+ // misc
+ KMDBEntry* dbEntry() const { return m_dbentry; }
+ void setDbEntry(KMDBEntry *e) { m_dbentry = e; }
+ QString pixmap();
+ void setPixmap(const QString& s) { m_pixmap = s; }
+ bool isHardDefault() const { return m_harddefault; }
+ void setHardDefault(bool on) { m_harddefault = on; }
+ bool isSoftDefault() const { return m_softdefault; }
+ void setSoftDefault(bool on) { m_softdefault = on; }
+ bool ownSoftDefault() const { return m_ownsoftdefault; }
+ void setOwnSoftDefault(bool on) { m_ownsoftdefault = on; }
+ static int compare(KMPrinter *p1, KMPrinter *p2);
+ const QString& option(const QString& key) const { return m_options[key]; }
+ bool hasOption(const QString& key) const { return m_options.contains(key); }
+ void setOption(const QString& key, const QString& value) { if (!key.isEmpty()) m_options[key] = value; }
+ void removeOption(const QString& key) { m_options.remove(key); }
+ QMap<QString,QString> options() const { return m_options; }
+ void setOptions(const QMap<QString,QString>& opts) { m_options = opts; }
+ DrMain* driver() const { return m_driver; }
+ void setDriver(DrMain*);
+ DrMain* takeDriver();
+
+ // configure an existing KPrinter object
+ bool autoConfigure(KPrinter *prt, QWidget *parent = 0);
+
+ // default options
+ const QString& defaultOption(const QString& key) const { return m_defaultoptions[key]; }
+ void setDefaultOption(const QString& key, const QString& value) { if (!key.isEmpty()) m_defaultoptions[key] = value; }
+ QMap<QString,QString> defaultOptions() const { return m_defaultoptions; }
+ void setDefaultOptions(const QMap<QString,QString>& opts) { m_defaultoptions = opts; }
+ // edited options
+ const QString& editedOption(const QString& key) const { return m_editedoptions[key]; }
+ void setEditedOption(const QString& key, const QString& value) { if (!key.isEmpty()) m_editedoptions[key] = value; }
+ QMap<QString,QString> editedOptions() const { return m_editedoptions; }
+ void setEditedOptions(const QMap<QString,QString>& opts) { m_editedoptions = opts; }
+ // edited flag
+ bool isEdited() const { return m_isedited; }
+ void setEdited(bool on) { m_isedited = on; }
+
+
+protected:
+ // mandantory information
+ QString m_name; // identification name
+ QString m_printername; // real printer name
+ QString m_instancename; // instance name (human-readable)
+ int m_type; // printer type (any PrinterType flag OR-ed together)
+ PrinterState m_state; // printer state
+ /**
+ * Represent the device as a string, to provide native
+ * support for exotic devices. Conversion to URL is done
+ * only when really needed
+ */
+ QString m_device; // printer device
+
+ // class specific information
+ QStringList m_members; // members of the class
+
+ // other useful information that should be completed by manager on demand
+ QString m_description; // short description, comment
+ QString m_location; // printer location
+ KURL m_uri; // URI printer identification
+ QString m_manufacturer; // printer manufacturer (driver)
+ QString m_model; // printer model (driver)
+ QString m_driverinfo; // short driver info (ex: nick name in PPD)
+
+ // DB driver entry (used when creating a printer). Internal use only !!!
+ KMDBEntry *m_dbentry;
+ DrMain *m_driver;
+ QString m_pixmap;
+
+ // default flags
+ bool m_harddefault;
+ bool m_softdefault;
+ bool m_ownsoftdefault;
+
+ // other options (for any use)
+ QMap<QString,QString> m_options;
+
+ // options used for instances, and print library. These options are not
+ // overwritten when copying from another KMPrinter object. This allows to
+ // to keep the user settings through an application session. The difference
+ // between "default" and "edited" can be used for option saving (only save
+ // the options corresponding to current edited printer).
+ QMap<QString,QString> m_defaultoptions;
+ QMap<QString,QString> m_editedoptions;
+ bool m_isedited;
+
+ // printer capabilities (based on CUPS model)
+ int m_printercap;
+};
+
+class KMPrinterList : public QPtrList<KMPrinter>
+{
+public:
+ KMPrinterList() : QPtrList<KMPrinter>() {}
+ virtual int compareItems(QPtrCollection::Item i1, QPtrCollection::Item i2)
+ { return KMPrinter::compare((KMPrinter*)i1, (KMPrinter*)i2); }
+};
+
+#endif