File indexing completed on 2024-05-26 04:32:47

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef TOUCHDOCKER_DOCK_H
0008 #define TOUCHDOCKER_DOCK_H
0009 
0010 #include <QDockWidget>
0011 #include <QIcon>
0012 #include <KoCanvasObserverBase.h>
0013 #include <QPointer>
0014 
0015 #include <kis_canvas2.h>
0016 
0017 class KoDialog;
0018 class QQuickWidget;
0019 
0020 class TouchDockerDock : public QDockWidget, public KoCanvasObserverBase {
0021     Q_OBJECT
0022     Q_PROPERTY(bool allowClose READ allowClose WRITE setAllowClose)
0023     Q_PROPERTY(QString currentSketchPage READ currentSketchPage WRITE setCurrentSketchPage NOTIFY currentSketchPageChanged)
0024     Q_PROPERTY(QObject* sketchKisView READ sketchKisView WRITE setSketchKisView NOTIFY sketchKisViewChanged)
0025 
0026 public:
0027     TouchDockerDock();
0028     ~TouchDockerDock() override;
0029     QString observerName() override { return "TouchDockerDock"; }
0030     void setCanvas(KoCanvasBase *canvas) override;
0031     void unsetCanvas() override;
0032 
0033     bool allowClose() const;
0034     void setAllowClose(bool allow);
0035 
0036     QString currentSketchPage() const;
0037     void setCurrentSketchPage(QString newPage);
0038 
0039     QObject *sketchKisView() const;
0040     void setSketchKisView(QObject *newView);
0041 
0042     void closeEvent(QCloseEvent *event) override;
0043 
0044 Q_SIGNALS:
0045     void closeRequested();
0046     void currentSketchPageChanged();
0047     void sketchKisViewChanged();
0048 
0049 public Q_SLOTS:
0050 
0051     void slotButtonPressed(const QString &id);
0052     void slotOpenImage(QString path);
0053     void slotSaveAs(QString path, QString mime);
0054 
0055     void hideFileOpenDialog();
0056     void hideFileSaveAsDialog();
0057 
0058     QString imageForButton(QString id);
0059     QString iconForButton(QString id, bool useDarkIcons);
0060     QString textForButton(QString id);
0061     QAction *action(QString id) const;
0062 
0063 private:
0064 
0065     void showFileOpenDialog();
0066     void showFileSaveAsDialog();
0067     void changeEvent(QEvent* event) override;
0068 
0069     void tabletEvent(QTabletEvent *event) override;
0070 
0071     KoDialog *createDialog(const QString qml);
0072 
0073     QPointer<KisCanvas2> m_canvas;
0074     QQuickWidget *m_quickWidget {0};
0075 
0076     class Private;
0077     const QScopedPointer<Private> d;
0078 
0079 };
0080 
0081 
0082 #endif
0083