summaryrefslogtreecommitdiffstats
path: root/src/printsupport/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/printsupport/widgets')
-rw-r--r--src/printsupport/widgets/qcupsjobwidget.cpp171
-rw-r--r--src/printsupport/widgets/qcupsjobwidget.ui108
-rw-r--r--src/printsupport/widgets/qcupsjobwidget_p.h104
-rw-r--r--src/printsupport/widgets/widgets.pri9
4 files changed, 392 insertions, 0 deletions
diff --git a/src/printsupport/widgets/qcupsjobwidget.cpp b/src/printsupport/widgets/qcupsjobwidget.cpp
new file mode 100644
index 0000000000..28fb8e859b
--- /dev/null
+++ b/src/printsupport/widgets/qcupsjobwidget.cpp
@@ -0,0 +1,171 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtPrintSupport module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qcupsjobwidget_p.h"
+
+#include <QCheckBox>
+#include <QDateTime>
+#include <QFontDatabase>
+#include <QLabel>
+#include <QLayout>
+#include <QTime>
+#include <QTableWidget>
+#include <QTableWidgetItem>
+#include <QHeaderView>
+#include <QPrinter>
+#include <QPrintEngine>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \internal
+ \class QCupsJobWidget
+
+ A widget to add to QPrintDialog to enable extra CUPS options
+ such as Job Scheduling, Job Priority or Job Billing
+ \ingroup printing
+ \inmodule QtPrintSupport
+ */
+
+QCupsJobWidget::QCupsJobWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ m_ui.setupUi(this);
+ //set all the default values
+ //TODO restore last used values
+ initJobHold();
+ initJobBilling();
+ initJobPriority();
+}
+
+QCupsJobWidget::~QCupsJobWidget()
+{
+}
+
+void QCupsJobWidget::setPrinter(QPrinter *printer)
+{
+ m_printer = printer;
+}
+
+void QCupsJobWidget::setupPrinter()
+{
+ QCUPSSupport::setJobHold(m_printer, jobHold(), jobHoldTime());
+ QCUPSSupport::setJobBilling(m_printer, jobBilling());
+ QCUPSSupport::setJobPriority(m_printer, jobPriority());
+}
+
+void QCupsJobWidget::initJobHold()
+{
+ m_ui.jobHoldComboBox->addItem(tr("Print Immediately"), QVariant::fromValue(QCUPSSupport::NoHold));
+ m_ui.jobHoldComboBox->addItem(tr("Hold Indefinitely"), QVariant::fromValue(QCUPSSupport::Indefinite));
+ m_ui.jobHoldComboBox->addItem(tr("Day (06:00 to 17:59)"), QVariant::fromValue(QCUPSSupport::DayTime));
+ m_ui.jobHoldComboBox->addItem(tr("Night (18:00 to 05:59)"), QVariant::fromValue(QCUPSSupport::Night));
+ m_ui.jobHoldComboBox->addItem(tr("Second Shift (16:00 to 23:59)"), QVariant::fromValue(QCUPSSupport::SecondShift));
+ m_ui.jobHoldComboBox->addItem(tr("Third Shift (00:00 to 07:59)"), QVariant::fromValue(QCUPSSupport::ThirdShift));
+ m_ui.jobHoldComboBox->addItem(tr("Weekend (Saturday to Sunday)"), QVariant::fromValue(QCUPSSupport::Weekend));
+ m_ui.jobHoldComboBox->addItem(tr("Specific Time"), QVariant::fromValue(QCUPSSupport::SpecificTime));
+
+ connect(m_ui.jobHoldComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(toggleJobHoldTime()));
+
+ setJobHold(QCUPSSupport::NoHold, QTime());
+ toggleJobHoldTime();
+}
+
+void QCupsJobWidget::setJobHold(QCUPSSupport::JobHoldUntil jobHold, const QTime &holdUntilTime)
+{
+ if (jobHold == QCUPSSupport::SpecificTime && holdUntilTime.isNull()) {
+ jobHold = QCUPSSupport::NoHold;
+ toggleJobHoldTime();
+ }
+ m_ui.jobHoldComboBox->setCurrentIndex(m_ui.jobHoldComboBox->findData(QVariant::fromValue(jobHold)));
+ m_ui.jobHoldTimeEdit->setTime(holdUntilTime);
+}
+
+QCUPSSupport::JobHoldUntil QCupsJobWidget::jobHold() const
+{
+ return m_ui.jobHoldComboBox->itemData(m_ui.jobHoldComboBox->currentIndex()).value<QCUPSSupport::JobHoldUntil>();
+}
+
+void QCupsJobWidget::toggleJobHoldTime()
+{
+ if (jobHold() == QCUPSSupport::SpecificTime)
+ m_ui.jobHoldTimeEdit->setEnabled(true);
+ else
+ m_ui.jobHoldTimeEdit->setEnabled(false);
+}
+
+QTime QCupsJobWidget::jobHoldTime() const
+{
+ return m_ui.jobHoldTimeEdit->time();
+}
+
+void QCupsJobWidget::initJobBilling()
+{
+ setJobBilling(QString());
+}
+
+void QCupsJobWidget::setJobBilling(const QString &jobBilling)
+{
+ m_ui.jobBillingLineEdit->insert(jobBilling);
+}
+
+QString QCupsJobWidget::jobBilling() const
+{
+ return m_ui.jobBillingLineEdit->text();
+}
+
+void QCupsJobWidget::initJobPriority()
+{
+ setJobPriority(50);
+}
+
+void QCupsJobWidget::setJobPriority(int jobPriority)
+{
+ m_ui.jobPrioritySpinBox->setValue(jobPriority);
+}
+
+int QCupsJobWidget::jobPriority() const
+{
+ return m_ui.jobPrioritySpinBox->value();
+}
+
+QT_END_NAMESPACE
diff --git a/src/printsupport/widgets/qcupsjobwidget.ui b/src/printsupport/widgets/qcupsjobwidget.ui
new file mode 100644
index 0000000000..2c03ef843a
--- /dev/null
+++ b/src/printsupport/widgets/qcupsjobwidget.ui
@@ -0,0 +1,108 @@
+<ui version="4.0" >
+ <class>QCupsJobWidget</class>
+ <widget class="QWidget" name="QCupsJobWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>294</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Job</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3" >
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="jobControlGroupBox" >
+ <property name="title" >
+ <string>Job Control</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="jobHoldLabel" >
+ <property name="text" >
+ <string>Scheduled printing:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2" >
+ <widget class="QComboBox" name="jobHoldComboBox" />
+ </item>
+ <item row="0" column="3" >
+ <widget class="QTimeEdit" name="jobHoldTimeEdit" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="jobBillingLabel" >
+ <property name="text" >
+ <string>Billing information:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="3" >
+ <widget class="QLineEdit" name="jobBillingLineEdit" />
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="jobPriorityLabel" >
+ <property name="text" >
+ <string>Job priority:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="QSpinBox" name="jobPrioritySpinBox" >
+ <property name="maximum" >
+ <number>100</number>
+ </property>
+ <property name="value" >
+ <number>50</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2" colspan="2" >
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>180</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="1" >
+ <spacer name="verticalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>35</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <spacer name="verticalSpacer_3" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>13</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/printsupport/widgets/qcupsjobwidget_p.h b/src/printsupport/widgets/qcupsjobwidget_p.h
new file mode 100644
index 0000000000..b0f276b251
--- /dev/null
+++ b/src/printsupport/widgets/qcupsjobwidget_p.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtPrintSupport module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QCUPSJOBWIDGET_P_H
+#define QCUPSJOBWIDGET_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// to version without notice, or even be removed.
+//
+// We mean it.
+//
+//
+
+#include <ui_qcupsjobwidget.h>
+#include <private/qcups_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QString;
+class QTime;
+class QPrinter;
+
+class QCupsJobWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QCupsJobWidget(QWidget *parent = 0);
+ ~QCupsJobWidget();
+ void setPrinter(QPrinter *printer);
+ void setupPrinter();
+
+private Q_SLOTS:
+ void toggleJobHoldTime();
+
+private:
+
+ void setJobHold(QCUPSSupport::JobHoldUntil jobHold = QCUPSSupport::NoHold, const QTime &holdUntilTime = QTime());
+ QCUPSSupport::JobHoldUntil jobHold() const;
+ QTime jobHoldTime() const;
+
+ void setJobBilling(const QString &jobBilling = QString());
+ QString jobBilling() const;
+
+ void setJobPriority(int priority = 50);
+ int jobPriority() const;
+
+ void initJobHold();
+ void initJobBilling();
+ void initJobPriority();
+
+ QPrinter *m_printer;
+ Ui::QCupsJobWidget m_ui;
+
+ Q_DISABLE_COPY(QCupsJobWidget)
+};
+
+QT_END_NAMESPACE
+
+#endif // QCUPSJOBWIDGET_P_H
diff --git a/src/printsupport/widgets/widgets.pri b/src/printsupport/widgets/widgets.pri
index 40eb306623..8e5cb12a6d 100644
--- a/src/printsupport/widgets/widgets.pri
+++ b/src/printsupport/widgets/widgets.pri
@@ -1,2 +1,11 @@
HEADERS += widgets/qprintpreviewwidget.h
SOURCES += widgets/qprintpreviewwidget.cpp
+
+unix:!mac:contains(QT_CONFIG, cups): {
+ HEADERS += widgets/qcupsjobwidget_p.h
+ SOURCES += widgets/qcupsjobwidget.cpp
+ FORMS += widgets/qcupsjobwidget.ui
+
+ INCLUDEPATH += $$PWD
+}
+