summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-05-02 13:33:28 +0100
committerCaolán McNamara <caolanm@redhat.com>2017-05-02 13:53:21 +0100
commitfd04a78d71f17eecae254e025508a57d34c9aa5a (patch)
tree1853e6450c76a9cce5d4ab1024a93bdb04c6f6fc /vcl
parent666403a4b66fa94d2014b4688b2e6a7b085bd2cc (diff)
printerinfomanager.hxx can be moved into vcl
probably was exposed while padmin was still a thing Change-Id: I9605b7ae0c5bc59aa998580f5a28dc7b527219e9
Diffstat (limited to 'vcl')
-rw-r--r--vcl/headless/svpprn.cxx2
-rw-r--r--vcl/inc/printerinfomanager.hxx199
-rw-r--r--vcl/inc/unx/cupsmgr.hxx2
-rw-r--r--vcl/null/printerinfomanager.cxx2
-rw-r--r--vcl/unx/generic/plugadapt/salplug.cxx2
-rw-r--r--vcl/unx/generic/print/common_gfx.cxx2
-rw-r--r--vcl/unx/generic/print/genprnpsp.cxx2
-rw-r--r--vcl/unx/generic/print/genpspgraphics.cxx2
-rw-r--r--vcl/unx/generic/print/printerjob.cxx2
-rw-r--r--vcl/unx/generic/print/prtsetup.hxx2
-rw-r--r--vcl/unx/generic/printer/jobdata.cxx2
-rw-r--r--vcl/unx/generic/window/salframe.cxx2
12 files changed, 210 insertions, 11 deletions
diff --git a/vcl/headless/svpprn.cxx b/vcl/headless/svpprn.cxx
index dfef1239dc0f..09b43a37ae28 100644
--- a/vcl/headless/svpprn.cxx
+++ b/vcl/headless/svpprn.cxx
@@ -19,7 +19,7 @@
#include <vcl/svapp.hxx>
#include <vcl/timer.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "jobset.h"
#include "print.h"
diff --git a/vcl/inc/printerinfomanager.hxx b/vcl/inc/printerinfomanager.hxx
new file mode 100644
index 000000000000..0bfeab7289d2
--- /dev/null
+++ b/vcl/inc/printerinfomanager.hxx
@@ -0,0 +1,199 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_PRINTERINFOMANAGER_HXX
+#define INCLUDED_VCL_PRINTERINFOMANAGER_HXX
+
+#include <memory>
+#include <list>
+#include <unordered_map>
+
+#include <vcl/dllapi.h>
+#include <vcl/jobdata.hxx>
+#include <osl/file.hxx>
+#include <unx/helper.hxx>
+
+#include <cstdio>
+
+namespace psp
+{
+
+class SystemQueueInfo;
+
+struct PrinterInfo : JobData
+{
+ // basename of PPD
+ OUString m_aDriverName;
+ // can be the queue
+ OUString m_aLocation;
+ // a user defined comment
+ OUString m_aComment;
+ // a command line to pipe a PS-file to
+ OUString m_aCommand;
+ // a command line to pipe a PS-file to in case of direct print
+ OUString m_aQuickCommand;
+ // a list of special features separated by ',' not used by psprint
+ // but assigned from the outside (currently for "fax","pdf=","autoqueue","external_dialog")
+ OUString m_aFeatures;
+ bool m_bPapersizeFromSetup;
+
+ PrinterInfo()
+ : JobData()
+ , m_bPapersizeFromSetup(false)
+ {}
+};
+
+class VCL_DLLPUBLIC PrinterInfoManager
+{
+public:
+ enum class Type { Default = 0, CUPS = 1 };
+
+ struct SystemPrintQueue
+ {
+ OUString m_aQueue;
+ OUString m_aLocation;
+ OUString m_aComment;
+ };
+protected:
+ // needed for checkPrintersChanged: files (not necessarily existent)
+ // and their last known modification time
+ struct WatchFile
+ {
+ // the file in question
+ OUString m_aFilePath;
+ // the last know modification time or 0, if file did not exist
+ TimeValue m_aModified;
+ };
+
+ // internal data to describe a printer
+ struct Printer
+ {
+ // configuration file containing this printer
+ // empty means a freshly added printer that has to be saved yet
+ OUString m_aFile;
+ // details other config files that have this printer
+ // in case of removal all have to be removed
+ std::list< OUString > m_aAlternateFiles;
+ // group in m_aFile containing the printer
+ // this must be unique over all configuration files
+ // it usually should be the printer name
+ OString m_aGroup;
+ // whether changes need to be saved
+ bool m_bModified;
+ // the corresponding info and job data
+ PrinterInfo m_aInfo;
+ };
+
+ std::unordered_map< OUString, Printer, OUStringHash > m_aPrinters;
+ PrinterInfo m_aGlobalDefaults;
+ std::list< WatchFile > m_aWatchFiles;
+ OUString m_aDefaultPrinter;
+ OUString m_aSystemPrintCommand;
+
+ std::list< SystemPrintQueue > m_aSystemPrintQueues;
+
+ std::unique_ptr<SystemQueueInfo>
+ m_pQueueInfo;
+
+ Type m_eType;
+ bool m_bUseIncludeFeature;
+ bool m_bUseJobPatch;
+ OUString m_aSystemDefaultPaper;
+
+ PrinterInfoManager( Type eType = Type::Default );
+
+ virtual void initialize();
+
+ // fill default paper if not configured in config file
+ // default paper is e.g. locale dependent
+ // if a paper is already set it will not be overwritten
+ void setDefaultPaper( PPDContext& rInfo ) const;
+
+public:
+
+ // there can only be one
+ static PrinterInfoManager& get();
+ // only called by SalData destructor, frees the global instance
+ static void release();
+
+ // get PrinterInfoManager type
+ Type getType() const { return m_eType; }
+
+ // lists the names of all known printers
+ void listPrinters( std::list< OUString >& rList ) const;
+
+ // gets info about a named printer
+ const PrinterInfo& getPrinterInfo( const OUString& rPrinter ) const;
+
+ // gets the name of the default printer
+ const OUString& getDefaultPrinter() const { return m_aDefaultPrinter; }
+
+ virtual void setupJobContextData( JobData& rData );
+
+ // check if the printer configuration has changed
+ // if bwait is true, then this method waits for eventual asynchronous
+ // printer discovery to finish
+ virtual bool checkPrintersChanged( bool bWait );
+
+ // members for administration
+
+ // add a named printer
+ // addPrinter fails if a printer with the same name already exists
+ // or the driver does not exist
+ virtual bool addPrinter( const OUString& rPrinterName, const OUString& rDriverName );
+
+ // remove a named printer
+ // this fails if the config file belonging to this printer
+ // is not writeable
+ // if bCheckOnly is true, the printer is not really removed;
+ // this is for checking if the removal would fail
+ virtual bool removePrinter( const OUString& rPrinterName, bool bCheckOnly );
+
+ // save the changes to all printers. this fails if there
+ // is no writable config file at all
+ virtual bool writePrinterConfig();
+
+ // set a new default printer
+ // fails if the specified printer does not exist
+ virtual bool setDefaultPrinter( const OUString& rPrinterName );
+
+ // abstract print command
+ // returns a stdio FILE* that a postscript file may be written to
+ // this may either be a regular file or the result of popen()
+ virtual FILE* startSpool( const OUString& rPrinterName, bool bQuickCommand );
+ // close the FILE* returned by startSpool and does the actual spooling
+ // set bBanner to "false" will attempt to suppress banner printing
+ // set bBanner to "true" will rely on the system default
+ // returns true on success
+ virtual bool endSpool( const OUString& rPrinterName, const OUString& rJobTitle, FILE* pFile, const JobData& rDocumentJobData, bool bBanner, const OUString &rFaxNumber );
+
+ bool getUseIncludeFeature() const { return m_bUseIncludeFeature; }
+ bool getUseJobPatch() const { return m_bUseJobPatch; }
+
+ // check whether a printer's feature string contains a subfeature
+ bool checkFeatureToken( const OUString& rPrinterName, const char* pToken ) const;
+
+ virtual ~PrinterInfoManager();
+};
+
+} // namespace
+
+#endif // INCLUDED_VCL_PRINTERINFOMANAGER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/unx/cupsmgr.hxx b/vcl/inc/unx/cupsmgr.hxx
index 2890d5dcffb1..f0dd91171ae2 100644
--- a/vcl/inc/unx/cupsmgr.hxx
+++ b/vcl/inc/unx/cupsmgr.hxx
@@ -20,7 +20,7 @@
#ifndef INCLUDED_VCL_INC_UNX_CUPSMGR_HXX
#define INCLUDED_VCL_INC_UNX_CUPSMGR_HXX
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "osl/module.h"
#include "osl/thread.h"
#include "osl/mutex.hxx"
diff --git a/vcl/null/printerinfomanager.cxx b/vcl/null/printerinfomanager.cxx
index 4cc7e78f3bb1..6545ffb2a898 100644
--- a/vcl/null/printerinfomanager.cxx
+++ b/vcl/null/printerinfomanager.cxx
@@ -18,7 +18,7 @@
*/
#include <memory>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "unx/gendata.hxx"
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index ce032538044b..65f721730941 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -28,7 +28,7 @@
#include "unx/gendata.hxx"
#include "headless/svpinst.hxx"
#include "unx/desktops.hxx"
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include <config_vclplug.h>
#include <desktop/crashreport.hxx>
diff --git a/vcl/unx/generic/print/common_gfx.cxx b/vcl/unx/generic/print/common_gfx.cxx
index c9be5dde750c..ef1a767e3414 100644
--- a/vcl/unx/generic/print/common_gfx.cxx
+++ b/vcl/unx/generic/print/common_gfx.cxx
@@ -28,7 +28,7 @@
#include "unx/printerjob.hxx"
#include "unx/fontmanager.hxx"
#include <vcl/strhelper.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "tools/debug.hxx"
#include "tools/color.hxx"
diff --git a/vcl/unx/generic/print/genprnpsp.cxx b/vcl/unx/generic/print/genprnpsp.cxx
index 43948c8da01e..1feccabbd013 100644
--- a/vcl/unx/generic/print/genprnpsp.cxx
+++ b/vcl/unx/generic/print/genprnpsp.cxx
@@ -45,7 +45,7 @@
#include <vcl/svapp.hxx>
#include <vcl/print.hxx>
#include <vcl/pdfwriter.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include <vcl/settings.hxx>
#include "svids.hrc"
#include "saldatabasic.hxx"
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index 85f81cc4454b..ed50638a45b4 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -33,7 +33,7 @@
#include <i18nlangtag/mslangid.hxx>
#include <vcl/bitmapaccess.hxx>
#include <vcl/jobdata.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/sysdata.hxx>
diff --git a/vcl/unx/generic/print/printerjob.cxx b/vcl/unx/generic/print/printerjob.cxx
index cb1133ac0724..8a0fa92bb3f3 100644
--- a/vcl/unx/generic/print/printerjob.cxx
+++ b/vcl/unx/generic/print/printerjob.cxx
@@ -30,7 +30,7 @@
#include "unx/printergfx.hxx"
#include <vcl/ppdparser.hxx>
#include <vcl/strhelper.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "rtl/ustring.hxx"
#include "rtl/strbuf.hxx"
diff --git a/vcl/unx/generic/print/prtsetup.hxx b/vcl/unx/generic/print/prtsetup.hxx
index fa22a4417ab3..f7f7a29fabf2 100644
--- a/vcl/unx/generic/print/prtsetup.hxx
+++ b/vcl/unx/generic/print/prtsetup.hxx
@@ -32,7 +32,7 @@
#include <vcl/field.hxx>
#include <vcl/combobox.hxx>
#include <vcl/ppdparser.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
class RTSPaperPage;
class RTSDevicePage;
diff --git a/vcl/unx/generic/printer/jobdata.cxx b/vcl/unx/generic/printer/jobdata.cxx
index b9359429fd8a..a6e5af0f5dd5 100644
--- a/vcl/unx/generic/printer/jobdata.cxx
+++ b/vcl/unx/generic/printer/jobdata.cxx
@@ -19,7 +19,7 @@
#include <officecfg/Office/Common.hxx>
#include <vcl/jobdata.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include "tools/stream.hxx"
#include <rtl/strbuf.hxx>
diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx
index 6a2c8ca1cf0f..4667d4076c7f 100644
--- a/vcl/unx/generic/window/salframe.cxx
+++ b/vcl/unx/generic/window/salframe.cxx
@@ -31,7 +31,7 @@
#include <vcl/svapp.hxx>
#include <vcl/keycodes.hxx>
#include <vcl/layout.hxx>
-#include <vcl/printerinfomanager.hxx>
+#include "printerinfomanager.hxx"
#include <vcl/settings.hxx>
#include <vcl/bitmapaccess.hxx>
#include <vcl/opengl/OpenGLContext.hxx>