Skip to content

Commit 44f5d76

Browse files
committed
Convert TranslatorManager to singleton QObject owning translators.
1 parent f7f467d commit 44f5d76

File tree

4 files changed

+30
-10
lines changed

4 files changed

+30
-10
lines changed

src/app/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ int main( int argc, char **argv )
189189
auto sentryClose = qScopeGuard( [] { sentry_wrapper::close(); } );
190190
#endif
191191

192-
QTranslator *qfieldTranslator = TranslatorManager::qfieldTranslator();
193-
QTranslator *qtTranslator = TranslatorManager::qtTranslator();
192+
QTranslator *qfieldTranslator = TranslatorManager::instance()->qfieldTranslator();
193+
QTranslator *qtTranslator = TranslatorManager::instance()->qtTranslator();
194194
bool qfieldTranslatorLoaded = false;
195195
bool qtTranslatorLoaded = false;
196196
if ( !customLanguage.isEmpty() )

src/core/appinterface.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ void AppInterface::changeLanguage( const QString &languageCode )
240240
return;
241241
}
242242

243-
QTranslator *qfieldTranslator = TranslatorManager::qfieldTranslator();
244-
QTranslator *qtTranslator = TranslatorManager::qtTranslator();
243+
QTranslator *qfieldTranslator = TranslatorManager::instance()->qfieldTranslator();
244+
QTranslator *qtTranslator = TranslatorManager::instance()->qtTranslator();
245245

246246
QCoreApplication::removeTranslator( qtTranslator );
247247
QCoreApplication::removeTranslator( qfieldTranslator );

src/core/translatormanager.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,24 @@
1717

1818
#include <QTranslator>
1919

20+
TranslatorManager::TranslatorManager()
21+
: mQfieldTranslator( new QTranslator() )
22+
, mQtTranslator( new QTranslator() )
23+
{
24+
}
25+
2026
QTranslator *TranslatorManager::qfieldTranslator()
2127
{
22-
static QTranslator *translator = new QTranslator();
23-
return translator;
28+
return mQfieldTranslator;
2429
}
2530

2631
QTranslator *TranslatorManager::qtTranslator()
2732
{
28-
static QTranslator *translator = new QTranslator();
29-
return translator;
33+
return mQtTranslator;
34+
}
35+
36+
TranslatorManager *TranslatorManager::instance()
37+
{
38+
static TranslatorManager *sInstance = new TranslatorManager();
39+
return sInstance;
3040
}

src/core/translatormanager.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,20 @@ class TranslatorManager
2929
{
3030
public:
3131
//! Returns the global QField translator instance.
32-
static QTranslator *qfieldTranslator();
32+
QTranslator *qfieldTranslator();
3333

3434
//! Returns the global Qt framework translator instance.
35-
static QTranslator *qtTranslator();
35+
QTranslator *qtTranslator();
36+
37+
//! Returns the singleton instance of TranslatorManager.
38+
static TranslatorManager *instance();
39+
40+
private:
41+
TranslatorManager();
42+
~TranslatorManager() = default;
43+
44+
QTranslator *mQfieldTranslator = nullptr;
45+
QTranslator *mQtTranslator = nullptr;
3646
};
3747

3848
#endif // TRANSLATORMANAGER_H

0 commit comments

Comments
 (0)