ImagingTools Core SDK
CDesignTokenBasedResourceProviderComp.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 <QtGui/QFont>
7
8// ACF includes
9#include <icomp/CComponentBase.h>
10#include <ilog/TLoggerCompWrap.h>
11#include <istd/TSmartPtr.h>
12
13// ImtCore includes
14#include <imtbase/CCollectionInfo.h>
15#include <imtbase/CJsonHelper.h>
16#include <imtstyle/IColorPaletteProvider.h>
17#include <imtstyle/IFontProvider.h>
18#include <imtdesign/IDesignTokenFileParser.h>
19
20
21namespace imtstyle
22{
23
24
25class CDesignTokenBasedResourceProviderComp:
26 public ilog::TLoggerCompWrap<icomp::CComponentBase>,
27 private imtbase::CJsonHelper,
28 virtual public IColorPaletteProvider,
29 virtual public IFontProvider
30{
31 Q_DECLARE_TR_FUNCTIONS(CDesignTokenBasedResourceProviderComp)
32public:
33 typedef ilog::TLoggerCompWrap<icomp::CComponentBase> BaseClass;
34
35 I_BEGIN_COMPONENT(CDesignTokenBasedResourceProviderComp);
36 I_REGISTER_INTERFACE(IDesignSchemaInfoProvider);
37 I_REGISTER_INTERFACE(IColorPaletteProvider);
38 I_REGISTER_INTERFACE(IFontProvider);
39 I_ASSIGN_MULTI_0(m_resourceFileNameAttrPtr, "ResourceFileNames", "Path to the resource file containing the theme", true);
40 I_ASSIGN_MULTI_0(m_designShemaIdAttrPtr, "DesignSchemaIds", "Design schema IDs", false);
41 I_ASSIGN_MULTI_0(m_designShemaNamesAttrPtr, "DesignSchemaNames", "Design schema names", false);
42 I_ASSIGN_MULTI_0(m_paletteModeAttrPtr, "PaletteModes", "Palette modes", false);
43 I_ASSIGN(m_designTokenFileParserCompPtr, "DesignTokenFileParser", "DesignToken File Parser", false, "DesignTokenFileParser");
44 I_END_COMPONENT;
45
46 // reimplemented (IColorPaletteProvider)
47 virtual bool GetColorPalette(const QByteArray& designSchemaId, ColorSchema& palette) const override;
48
49 // reimplemented (IFontProvider)
50 virtual const imtbase::ICollectionInfo& GetFontList(const QByteArray& designSchemaId) const override;
51 virtual bool GetFont(const QByteArray& designSchemaId, const QByteArray& fontId, QFont& font) const override;
52
53 // reimplemented (IDesignSchemaInfoProvider)
54 virtual const imtbase::ICollectionInfo& GetDesignSchemaList() const override;
55
56protected:
57 // reimplemented (icomp::CComponentBase)
58 virtual void OnComponentCreated() override;
59
60private:
61 int GetCount() const;
62 void CreateDefaultPalettes();
63 bool StringToColor(const QString& colorString, QColor& color) const;
64
65private:
66 I_MULTIATTR(QByteArray, m_resourceFileNameAttrPtr);
67 I_MULTIATTR(QByteArray, m_designShemaIdAttrPtr);
68 I_MULTITEXTATTR(m_designShemaNamesAttrPtr);
69 I_MULTIATTR(QByteArray, m_paletteModeAttrPtr);
70 I_REF(imtdesign::IDesignTokenFileParser, m_designTokenFileParserCompPtr);
71
72 mutable imtbase::CCollectionInfo m_designSchemaList;
73
74 imtbase::CCollectionInfo m_emptyCollectionInfo;
75
76 QMap<QByteArray, ColorSchema> m_paletteMap;
77 QMap<QByteArray, istd::TSmartPtr<imtbase::ICollectionInfo>> m_fontsCollectionInfos;
78 QMap<QByteArray, QMap<QByteArray, QFont>> m_fonts;
79
80};
81
82
83} // namespace imtstyle
84
85