File indexing completed on 2025-03-09 05:06:37

0001 /*
0002     SPDX-FileCopyrightText: 2010-2018 Daniel Nicoletti <dantti12@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef PRINT_QUEUE_UI_H
0008 #define PRINT_QUEUE_UI_H
0009 
0010 #include <QDialog>
0011 #include <QModelIndex>
0012 
0013 namespace Ui
0014 {
0015 class PrintQueueUi;
0016 }
0017 
0018 class KCupsRequest;
0019 class KCupsPrinter;
0020 class JobSortFilterModel;
0021 class JobModel;
0022 class QToolButton;
0023 
0024 class PrintQueueUi : public QDialog
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     explicit PrintQueueUi(const KCupsPrinter &printer, QWidget *parent = nullptr);
0030     ~PrintQueueUi() override;
0031 
0032 signals:
0033     void finished();
0034 
0035 public slots:
0036     void update();
0037 
0038 private slots:
0039     void updatePrinterByName(const QString &printer);
0040     void updatePrinter(const QString &text,
0041                        const QString &printerUri,
0042                        const QString &printerName,
0043                        uint printerState,
0044                        const QString &printerStateReasons,
0045                        bool printerIsAcceptingJobs);
0046     void whichJobsIndexChanged(int index);
0047     void pausePrinter();
0048     void configurePrinter();
0049 
0050     void cancelJob();
0051     void holdJob();
0052     void resumeJob();
0053     void reprintJob();
0054     void authenticateJob();
0055 
0056     int columnCount(const QModelIndex &parent = QModelIndex()) const;
0057     void updateButtons();
0058     void showContextMenu(const QPoint &point);
0059     void showHeaderContextMenu(const QPoint &point);
0060     void getAttributesFinished(KCupsRequest *request);
0061 
0062 private:
0063     void closeEvent(QCloseEvent *event) override;
0064     void setupButtons();
0065     void setState(int state, const QString &message);
0066     void modifyJob(int action, const QString &destName = QString());
0067 
0068     Ui::PrintQueueUi *const ui;
0069     QToolButton *m_filterJobs = nullptr;
0070     JobSortFilterModel *m_proxyModel = nullptr;
0071     JobModel *m_model = nullptr;
0072     QString m_destName;
0073     QString m_title;
0074     QPixmap m_printerIcon;
0075     char m_lastState = 0;
0076     bool m_isClass;
0077     bool m_preparingMenu = false;
0078     bool m_printerPaused = false;
0079 };
0080 
0081 #endif