ACF $AcfVersion:0$
CTranslationManagerComp.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QMap>
7#include <QtCore/QString>
8#include <QtCore/QTranslator>
9#include <QtCore/QReadWriteLock>
10
11// ACF includes
12#include <istd/TSmartPtr.h>
16#include <iprm/IOptionsList.h>
19
20
21namespace iqt
22{
23
24
31 public QObject,
33 virtual public iqt::ITranslationManager,
34 virtual public iprm::IOptionsList
35{
36 Q_OBJECT
37public:
39
40 I_BEGIN_COMPONENT(CTranslationManagerComp);
41 I_REGISTER_INTERFACE(iqt::ITranslationManager);
42 I_REGISTER_INTERFACE(iprm::IOptionsList);
43 I_ASSIGN(m_ignoreLocaleAttrPtr, "IgnoreLocale", "Ignore locale in language IDs", true, false);
44 I_ASSIGN(m_installTranslatorAttrPtr, "InstallTranslator", "Install translator when switch language", false, false);
45 I_ASSIGN(m_translationFilePathAttrPtr, "TranslationFilePath", "Base file path got translations", true, "");
46 I_ASSIGN(m_translationFilePrefixAttrPtr, "TranslationFilePrefix", "Prefix of the translation file", true, "");
47 I_ASSIGN_MULTI_0(m_languagesAttrPtr, "LanguageIds", "List of language IDs in ISO-format", true);
48 I_ASSIGN_MULTI_0(m_languageNamesAttrPtr, "LanguageNames", "List of language names according to 'LanguageIds' attribute", false);
49 I_ASSIGN(m_slaveTranslationManagerCompPtr, "SlaveTranslationManager", "Slave translation manager", false, "SlaveTranslationManager");
50 I_ASSIGN(m_languageSelectionCompPtr, "LanguageSelection", "Language selection provider", false, "LanguageSelection");
51 I_ASSIGN_TO(m_languageSelectionModelCompPtr, m_languageSelectionCompPtr, false);
52 I_END_COMPONENT;
53
58
59 // reimplemented (icomp:CComponentBase)
60 virtual void OnComponentCreated() override;
61 virtual void OnComponentDestroyed() override;
62
63 // reimplemented (iqt::ITranslationManager)
64 virtual const iprm::IOptionsList& GetLanguagesInfo() const override;
65 virtual int GetCurrentLanguageIndex() const override;
66 virtual const QTranslator* GetLanguageTranslator(int languageIndex) const override;
67 virtual const ITranslationManager* GetSlaveTranslationManager() const override;
68 virtual void SwitchLanguage(int languageIndex) override;
69 virtual void SetSystemLanguage() override;
70
71 // reimplemented (iprm::IOptionsList)
72 virtual int GetOptionsFlags() const override;
73 virtual int GetOptionsCount() const override;
74 virtual QString GetOptionName(int index) const override;
75 virtual QString GetOptionDescription(int index) const override;
76 virtual QByteArray GetOptionId(int index) const override;
77 virtual bool IsOptionEnabled(int index) const override;
78
79protected:
80 virtual void LoadTranslations();
81
82Q_SIGNALS:
83 void EmitInstallTranslator(int languageIndex);
84
85protected Q_SLOTS:
86 void InstallTranslator(int languageIndex);
87
88protected:
93 class LanguageSelectionObserver: public imod::TSingleModelObserverBase<iprm::ISelectionParam>
94 {
95 public:
97
98 protected:
99 // reimplemented (imod::CSingleModelObserverBase)
100 virtual void OnUpdate(const istd::IChangeable::ChangeSet& changeSet) override;
101
102 private:
103 CTranslationManagerComp& m_parent;
104 };
105
106protected:
107 I_ATTR(bool, m_ignoreLocaleAttrPtr);
108 I_ATTR(bool, m_installTranslatorAttrPtr);
109 I_ATTR(QString, m_translationFilePathAttrPtr);
110 I_ATTR(QByteArray, m_translationFilePrefixAttrPtr);
111 I_MULTIATTR(QByteArray, m_languagesAttrPtr);
112 I_MULTITEXTATTR(m_languageNamesAttrPtr);
113 I_REF(iqt::ITranslationManager, m_slaveTranslationManagerCompPtr);
114 I_REF(iprm::ISelectionParam, m_languageSelectionCompPtr);
115 I_REF(imod::IModel, m_languageSelectionModelCompPtr);
116
123
124 typedef QVector<Translator> TranslatorsList;
125
127
129
131
132 mutable QReadWriteLock m_mutex;
133};
134
135
136} // namespace iqt
137
138
139
140
Template wrapper adding comprehensive logging functionality to components.
Common interface for model objects, that supports Model/Observer design pattern.
Definition IModel.h:25
Basic implementation for a single model observer with binding to concrete data object interface.
Constraints of selection from set of possibilities.
Interface allowing to select single option from list of options.
virtual void OnUpdate(const istd::IChangeable::ChangeSet &changeSet) override
Called on update of observed model.
LanguageSelectionObserver(CTranslationManagerComp &parent)
A translation manager component.
LanguageSelectionObserver m_selectionObserver
I_MULTITEXTATTR(m_languageNamesAttrPtr)
ilog::CLoggerComponentBase BaseClass
virtual int GetOptionsCount() const override
Get number of managed options.
virtual void OnComponentDestroyed() override
Called when component is destroyed.
void InstallTranslator(int languageIndex)
virtual const ITranslationManager * GetSlaveTranslationManager() const override
Get slave translation manager, if set.
void EmitInstallTranslator(int languageIndex)
virtual void OnComponentCreated() override
Called when component is created.
virtual QByteArray GetOptionId(int index) const override
Get option ID.
virtual QString GetOptionName(int index) const override
Get name of specified option.
virtual void SwitchLanguage(int languageIndex) override
Switch the current language to the language with the index languageIndex.
CTranslationManagerComp()
Default constructor.
virtual const QTranslator * GetLanguageTranslator(int languageIndex) const override
Get Qt translator for a given language.
virtual void LoadTranslations()
virtual const iprm::IOptionsList & GetLanguagesInfo() const override
Get the list of supported languages given as a list of options.
virtual QString GetOptionDescription(int index) const override
Get human-readable description for an option.
virtual int GetCurrentLanguageIndex() const override
Get current language index.
virtual int GetOptionsFlags() const override
Get constraints flags.
virtual void SetSystemLanguage() override
Set default system's language.
virtual bool IsOptionEnabled(int index) const override
Return true if the option is enabled and can be selected.
Common interface for the localization manager.
Set of change flags (its IDs).
Definition IChangeable.h:36
This namespace contains non-UI utility classes based on Qt.