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