1 #pragma once
2 
3 #include <QObject>
4 class lcQColorList;
5 
6 class lcQColorPickerPopup : public QFrame
7 {
8 	Q_OBJECT
9 
10 public:
11 	lcQColorPickerPopup(QWidget* Parent = nullptr, int ColorIndex = 0, bool AllowNoColor = false);
12 	~lcQColorPickerPopup();
13 
14 	void exec();
15 
16 signals:
17 	void changed(int colorIndex);
18 	void selected(int colorIndex);
19 	void hid();
20 
21 public slots:
22 	void colorChanged(int colorIndex);
23 	void colorSelected(int colorIndex);
24 
25 protected:
26 	void showEvent(QShowEvent* ShowEvent) override;
27 	void hideEvent(QHideEvent* HideEvent) override;
28 	void mouseReleaseEvent(QMouseEvent* MouseEvent) override;
29 
30 private:
31 	QEventLoop* eventLoop;
32 	lcQColorList* colorList;
33 };
34 
35 class lcQColorPicker : public QPushButton
36 {
37 	Q_OBJECT
38 
39 public:
40 	lcQColorPicker(QWidget* Parent = nullptr, bool AllowNoColor = false);
41 	~lcQColorPicker();
42 
43 	int currentColor() const;
44 	int currentColorCode() const;
45 	void setCurrentColor(int colorIndex);
46 	void setCurrentColorCode(int colorCode);
47 
48 public slots:
49 	void changed(int colorIndex);
50 	void selected(int colorIndex);
51 
52 signals:
53 	void colorChanged(int colorIndex);
54 
55 private slots:
56 	void buttonPressed(bool toggled);
57 	void popupClosed();
58 
59 protected:
60 	void UpdateIcon();
61 
62 	int mCurrentColorIndex = 0;
63 	int mInitialColorIndex = 0;
64 	bool mAllowNoColor = false;
65 };
66