summaryrefslogtreecommitdiffstats
path: root/smb4k/core/smb4kprint.h
diff options
context:
space:
mode:
Diffstat (limited to 'smb4k/core/smb4kprint.h')
-rw-r--r--smb4k/core/smb4kprint.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/smb4k/core/smb4kprint.h b/smb4k/core/smb4kprint.h
new file mode 100644
index 0000000..8a9a5cd
--- /dev/null
+++ b/smb4k/core/smb4kprint.h
@@ -0,0 +1,170 @@
+/***************************************************************************
+ smb4kprint - The printing core class.
+ -------------------
+ begin : Tue Mar 30 2004
+ copyright : (C) 2004 by Alexander Reinholdt
+ email : dustpuppy@mail.berlios.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 *
+ * General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef SMB4KPRINT_H
+#define SMB4KPRINT_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// Qt includes
+#include <qobject.h>
+#include <qstring.h>
+#include <qwidget.h>
+
+// KDE includes
+#include <kprocess.h>
+#include <kdialogbase.h>
+
+// forward declarations
+class Smb4KPrintInfo;
+
+
+/**
+ * This is a core class. It provides the interface for printing documents over
+ * the network neighborhood.
+ *
+ * You shouldn't use this class directly but access it through Smb4KCore.
+ *
+ * @author Alexander Reinholdt <dustpuppy@users.berlios.de>
+ */
+
+class Smb4KPrint : public QObject
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * The constructor.
+ */
+ Smb4KPrint( QObject *parent = 0, const char *name = 0 );
+
+ /**
+ * The destructor.
+ */
+ ~Smb4KPrint();
+
+ /**
+ * This function starts the printing of a file. It takes a Smb4KPrintInfo object
+ * and constructs the print dialog from it. The information entered there will be
+ * used to print the file.
+ *
+ * Note that @p info will be deleted. So do not try to use the pointer later in your
+ * code!
+ *
+ * @param info The Smb4KShareItem object
+ */
+ bool print( Smb4KPrintInfo *info );
+
+ /**
+ * Aborts the print process.
+ */
+ void abort();
+
+ /**
+ * This function returns TRUE if the printer handler is running and
+ * FALSE otherwise.
+ *
+ * @returns TRUE is the printer handler is running and FALSE otherwise.
+ */
+ bool isRunning() { return m_working; }
+
+ signals:
+ /**
+ * This signal emits the run state.
+ *
+ * @param state The so-called run state. There are several defined
+ * in the smb4kdefs.h header file.
+ */
+ void state( int state );
+
+ protected slots:
+ /**
+ * This slot receives output at stdout.
+ */
+ void slotReceivedStdout( KProcess *, char *buf, int len );
+
+ /**
+ * This slot receives output at stderr.
+ */
+ void slotReceivedStderr( KProcess *, char *buf, int len );
+
+ /**
+ * This slot is called when the process exited.
+ */
+ void slotProcessExited( KProcess * );
+
+ /**
+ * This slot is invoked if the print process should be restarted
+ * (i.e. because authentication data was missing, etc.).
+ */
+ void slotRetry();
+
+ private:
+
+ /**
+ * The KProcess object.
+ */
+ KProcess *m_proc;
+
+ /**
+ * The buffer
+ */
+ QString m_buffer;
+
+ /**
+ * This boolean is TRUE if the printer handler is running and
+ * FALSE otherwise.
+ */
+ bool m_working;
+
+ /**
+ * The print info object
+ */
+ Smb4KPrintInfo *m_info;
+
+ /**
+ * Sets the device URI
+ */
+ void setDeviceURI();
+
+ /**
+ * Do normal printing.
+ */
+ void printNormal();
+
+ /**
+ * Print DVI files.
+ */
+ void printDVI();
+
+ /**
+ * Print text files
+ */
+ void printText();
+};
+
+#endif