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 #include "WGQuickSettingsWidget.h"
0008 
0009 #include "ui_WdgQuickSettings.h"
0010 #include "WGConfigSelectorTypes.h"
0011 #include "WGSelectorConfigGrid.h"
0012 
0013 #include <KisVisualColorSelector.h>
0014 #include <KisColorSelectorConfiguration.h>
0015 
0016 #include <QButtonGroup>
0017 
0018 WGQuickSettingsWidget::WGQuickSettingsWidget(QWidget *parent, KisVisualColorSelector *selector)
0019     : QWidget(parent)
0020     , m_ui(new Ui_QuickSettingsWidget)
0021     , m_modelGroup(new QButtonGroup(this))
0022     , m_selector(selector)
0023 {
0024     m_ui->setupUi(this);
0025 
0026     m_modelGroup->addButton(m_ui->btnHSV, KisVisualColorModel::HSV);
0027     m_modelGroup->addButton(m_ui->btnHSL, KisVisualColorModel::HSL);
0028     m_modelGroup->addButton(m_ui->btnHSI, KisVisualColorModel::HSI);
0029     m_modelGroup->addButton(m_ui->btnHSY, KisVisualColorModel::HSY);
0030 #if QT_VERSION >= QT_VERSION_CHECK(5,15,0)
0031     connect(m_modelGroup, SIGNAL(idToggled(int,bool)), SLOT(slotColorGroupToggled(int,bool)));
0032 #else
0033     connect(m_modelGroup, SIGNAL(buttonToggled(int,bool)), SLOT(slotColorGroupToggled(int,bool)));
0034 #endif
0035 
0036     m_selectorConf = new WGSelectorConfigGrid(this);
0037     m_ui->verticalLayout->addWidget(m_selectorConf);
0038     connect(m_selectorConf, SIGNAL(sigConfigSelected(KisColorSelectorConfiguration)),
0039             SLOT(slotConfigSelected(KisColorSelectorConfiguration)));
0040 }
0041 
0042 WGQuickSettingsWidget::~WGQuickSettingsWidget()
0043 {
0044     delete m_ui;
0045 }
0046 
0047 void WGQuickSettingsWidget::loadConfiguration()
0048 {
0049     WGConfig::Accessor cfg;
0050     m_selectorConf->setConfigurations(cfg.favoriteConfigurations());
0051 }
0052 
0053 void WGQuickSettingsWidget::showEvent(QShowEvent *event)
0054 {
0055     Q_UNUSED(event);
0056     if (m_selector) {
0057         QAbstractButton *button = m_modelGroup->button(m_selector->selectorModel()->colorModel());
0058         if (button) {
0059             m_modelGroup->blockSignals(true);
0060             button->setChecked(true);
0061             m_modelGroup->blockSignals(false);
0062         }
0063         m_selectorConf->setColorModel(m_selector->selectorModel()->colorModel());
0064         m_selectorConf->setChecked(m_selector->configuration());
0065     }
0066 }
0067 
0068 void WGQuickSettingsWidget::slotColorGroupToggled(int id, bool checked)
0069 {
0070     if (!m_selector || !checked) {
0071         return;
0072     }
0073     KisVisualColorModel::ColorModel model = static_cast<KisVisualColorModel::ColorModel>(id);
0074     m_selector->selectorModel()->setRGBColorModel(model);
0075     m_selectorConf->setColorModel(model);
0076 
0077     WGConfig::Accessor cfg(false);
0078     cfg.set(WGConfig::rgbColorModel, model);
0079 }
0080 
0081 void WGQuickSettingsWidget::slotConfigSelected(const KisColorSelectorConfiguration &config)
0082 {
0083     if (m_selector) {
0084         m_selector->setConfiguration(&config);
0085     }
0086     WGConfig::Accessor cfg(false);
0087     cfg.setColorSelectorConfiguration(config);
0088     WGConfig::notifier()->notifySelectorConfigChanged();
0089 }