File indexing completed on 2024-06-16 04:16:16
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef _PRESETHISTORY_DOCK_H_ 0008 #define _PRESETHISTORY_DOCK_H_ 0009 0010 #include <QDockWidget> 0011 #include <QListWidget> 0012 #include <QPointer> 0013 #include <KisKineticScroller.h> 0014 0015 #include <KoCanvasObserverBase.h> 0016 #include <KisResourceModel.h> 0017 0018 #include <kis_canvas2.h> 0019 #include <kis_types.h> 0020 0021 class QActionGroup; 0022 0023 class PresetHistoryList : public QListWidget { 0024 Q_OBJECT 0025 public: 0026 PresetHistoryList(QWidget *parent = nullptr); 0027 protected: 0028 void mouseReleaseEvent(QMouseEvent *e) override; 0029 Q_SIGNALS: 0030 void mouseReleased(QListWidgetItem *item); 0031 }; 0032 0033 class PresetHistoryDock : public QDockWidget, public KoCanvasObserverBase { 0034 Q_OBJECT 0035 public: 0036 enum HistoryDataRole { 0037 ResourceID = Qt::UserRole, 0038 BubbleMarkerRole = Qt::UserRole + 1 0039 }; 0040 0041 enum DisplayOrder { 0042 Static = 0, 0043 MostRecent = 1, 0044 Bubbling = 2 0045 }; 0046 0047 PresetHistoryDock(); 0048 QString observerName() override { return "PresetHistoryDock"; } 0049 void setCanvas(KoCanvasBase *canvas) override; 0050 void unsetCanvas() override; 0051 public Q_SLOTS: 0052 void slotScrollerStateChanged(QScroller::State state){ KisKineticScroller::updateCursor(this, state); } 0053 private Q_SLOTS: 0054 void presetSelected(QListWidgetItem *item); 0055 void canvasResourceChanged(int key, const QVariant& v); 0056 void slotSortingModeChanged(QAction *action); 0057 void slotPresetLimitChanged(int presetLimit); 0058 void showPresetLimitDialog(); 0059 void slotContextMenuRequest(const QPoint &pos); 0060 void updatePresets(); 0061 private: 0062 void updatePresetState(int position); 0063 int bubblePreset(int position); 0064 void addPreset(QString name, QIcon icon, int resourceId); 0065 private: 0066 QPointer<KisCanvas2> m_canvas; 0067 PresetHistoryList *m_presetHistory; 0068 QAction *m_actionSortStatic; 0069 QAction *m_actionSortMostRecent; 0070 QAction *m_actionSortBubble; 0071 QActionGroup *m_sortingModes; 0072 DisplayOrder m_sorting {Static}; 0073 int m_presetLimit; 0074 KisResourceModel* m_resourceModel {0}; 0075 bool m_block {false}; 0076 bool m_initialized {false}; 0077 }; 0078 0079 0080 #endif