File indexing completed on 2024-05-26 04:32:50
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Mathias Wein <lynx.mw+kde@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef WGSELECTORCONFIGGRID_H 0008 #define WGSELECTORCONFIGGRID_H 0009 0010 #include <KisVisualColorModel.h> 0011 #include <KisColorSelectorConfiguration.h> 0012 0013 #include <QWidget> 0014 #include <QVector> 0015 #include <QIcon> 0016 0017 class QGridLayout; 0018 class QActionGroup; 0019 class KisVisualColorSelector; 0020 0021 class WGSelectorConfigGrid : public QWidget 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit WGSelectorConfigGrid(QWidget *parent = nullptr, bool multiSelect = false); 0026 0027 void clear(); 0028 QIcon currentIcon() const; 0029 KisColorSelectorConfiguration currentConfiguration() const; 0030 QVector<KisColorSelectorConfiguration> selectedConfigurations() const; 0031 void setColorModel(KisVisualColorModel::ColorModel model); 0032 void setConfigurations(const QVector<KisColorSelectorConfiguration> &configurations); 0033 void setChecked(const KisColorSelectorConfiguration &configuration); 0034 QIcon generateIcon(const KisColorSelectorConfiguration &configuration, qreal pixelRatio = 1.0, bool dualState = false) const; 0035 0036 static QVector<KisColorSelectorConfiguration> hueBasedConfigurations(); 0037 protected: 0038 bool event(QEvent *event) override; 0039 private Q_SLOTS: 0040 void slotActionTriggered(QAction *action); 0041 Q_SIGNALS: 0042 void sigConfigSelected(const KisColorSelectorConfiguration &cfg); 0043 private: 0044 void updateIcons(); 0045 0046 int m_columns {4}; 0047 int m_iconSize {96}; 0048 QGridLayout *m_layout; 0049 QActionGroup *m_actionGroup; 0050 KisVisualColorSelector *m_selector; 0051 QAction *m_dummyAction {0}; 0052 QAction *m_currentAction {0}; 0053 }; 0054 0055 #endif // WGSELECTORCONFIGGRID_H