ImagingTools Core SDK
CImtStyle.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtWidgets/QProxyStyle>
7#include <QtWidgets/QStyleOption>
8
9// ImtCore includes
10#include <imtstyle/IColorPaletteProvider.h>
11
12
13namespace imtstyle
14{
15
16
17class CImtStyle: public QProxyStyle
18{
19 Q_OBJECT
20public:
21 typedef QProxyStyle BaseClass;
22
23 enum StyleType
24 {
25 ST_IMAGINGTOOLS,
26 ST_FLAT
27 };
28
29 static CImtStyle* GetInstance();
30
31 StyleType GetStyleType() const;
32 void SetStyleType(StyleType styleType);
33 QByteArray GetActiveDesignSchemaId() const;
34 void SetActiveDesignSchema(const IColorPaletteProvider::ColorSchema& schema);
35
36 // reimplemented (QStyle)
37 virtual void polish(QWidget* widgetPtr) override;
38 virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = nullptr) const override;
39 virtual void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override;
40 virtual QRect subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget = nullptr) const override;
41 virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget = nullptr) const override;
42
43public:
44 class DesignSchemaSetterBlocker
45 {
46 public:
47 explicit DesignSchemaSetterBlocker(CImtStyle& parent);
48 ~DesignSchemaSetterBlocker();
49
50 private:
51 CImtStyle& m_parent;
52 };
53
54protected:
55 virtual void DrawImagingToolsToolButton(
56 const QStyleOptionToolButton* optionPtr,
57 QPainter* painter,
58 const QWidget* widget = nullptr) const;
59
60private:
61 void EnsureStyleSheetApplied(bool force = false) const;
62
63private:
64 struct GradientColors
65 {
66 QColor startColor;
67 QColor endColor;
68 };
69
70 IColorPaletteProvider::ColorSchema m_activeColorSchema;
71
72 StyleType m_styleType;
73
74 mutable bool m_wasStyleSheetInitialized;
75
76private:
77 CImtStyle();
78 Q_DISABLE_COPY(CImtStyle);
79
80 static CImtStyle* m_instancePtr;
81
82 int m_blockerCount;
83};
84
85
86} // namespace imtstyle
87
88