File indexing completed on 2024-06-16 04:16:24

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Mathias Wein <lynx.mw+kde@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef WGPOPUPMANAGER_H
0008 #define WGPOPUPMANAGER_H
0009 
0010 #include "WGSelectorWidgetBase.h"
0011 
0012 #include <KisVisualColorModel.h>
0013 #include <QObject>
0014 
0015 class QAction;
0016 class KisCanvas2;
0017 class KisSignalCompressor;
0018 class KisViewManager;
0019 class KisVisualColorSelector;
0020 
0021 class WGColorPreviewToolTip;
0022 class WGColorSelectorDock;
0023 class WGMyPaintShadeSelector;
0024 class WGSelectorPopup;
0025 class WGShadeSelector;
0026 namespace WGConfig {
0027 typedef class WGConfig Accessor;
0028 }
0029 
0030 class WGActionManager : public QObject
0031 {
0032     Q_OBJECT
0033 public:
0034     explicit WGActionManager(WGColorSelectorDock *parentDock = nullptr);
0035     ~WGActionManager() override;
0036 
0037     void setCanvas(KisCanvas2* canvas, KisCanvas2* oldCanvas);
0038     void registerActions(KisViewManager *viewManager);
0039     void setLastUsedColor(const KoColor &col);
0040 private:
0041     void updateWidgetSize(QWidget *widget, int size);
0042     void showPopup(WGSelectorPopup *popup);
0043     void loadColorSelectorSettings(WGConfig::Accessor &cfg);
0044     void modifyHSX(int channel, float amount);
0045 private Q_SLOTS:
0046     void slotConfigChanged();
0047     void slotSelectorConfigChanged();
0048     void slotPopupClosed(WGSelectorPopup *popup);
0049     void slotShowColorSelectorPopup();
0050     void slotShowShadeSelectorPopup();
0051     void slotShowMyPaintSelectorPopup();
0052     void slotShowColorHistoryPopup();
0053     void slotIncreaseLightness();
0054     void slotDecreaseLightness();
0055     void slotIncreaseSaturation();
0056     void slotDecreaseSaturation();
0057     void slotShiftHueCW();
0058     void slotShiftHueCCW();
0059 
0060     void slotChannelValuesChanged();
0061     void slotColorInteraction(bool active);
0062     void slotColorPatchInteraction(bool active);
0063     void slotColorSelected(const KoColor &color);
0064     void slotUpdateDocker();
0065 Q_SIGNALS:
0066 private:
0067     WGColorSelectorDock *m_docker {0};
0068     WGSelectorDisplayConfigSP m_displayConfig;
0069     WGColorPreviewToolTip *m_colorTooltip;
0070     KisSignalCompressor *m_colorChangeCompressor;
0071     WGSelectorPopup *m_currentPopup {0};
0072     WGSelectorPopup *m_colorSelectorPopup {0};
0073     WGSelectorPopup *m_shadeSelectorPopup {0};
0074     WGSelectorPopup *m_myPaintSelectorPopup {0};
0075     WGSelectorPopup *m_colorHistoryPopup {0};
0076     KisVisualColorSelector *m_colorSelector {0};
0077     WGShadeSelector *m_shadeSelector {0};
0078     WGMyPaintShadeSelector *m_myPaintSelector {0};
0079     KisVisualColorModelSP m_colorModel;
0080     KoColor m_lastUsedColor;
0081     bool m_isSynchronizing {false};
0082 };
0083 
0084 #endif // WGPOPUPMANAGER_H