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 }