From eb9b3a03783aff3ee4af9c566aaa1439e2ebe9d8 Mon Sep 17 00:00:00 2001 From: Fatih Uzunoglu <fuzun54@outlook.com> Date: Fri, 2 Apr 2021 01:22:34 +0300 Subject: [PATCH] qt: make player identifiers translatable Signed-off-by: Pierre Lamot <pierre@videolabs.io> --- .../gui/qt/player/player_controlbar_model.cpp | 23 +++++++++++++++++-- .../gui/qt/player/player_controlbar_model.hpp | 8 +++++++ po/POTFILES.in | 2 ++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/modules/gui/qt/player/player_controlbar_model.cpp b/modules/gui/qt/player/player_controlbar_model.cpp index cc36cb222866..ba55088597c8 100644 --- a/modules/gui/qt/player/player_controlbar_model.cpp +++ b/modules/gui/qt/player/player_controlbar_model.cpp @@ -21,8 +21,15 @@ #include <QMetaEnum> #include <QJSEngine> +#include "qt.hpp" #include "control_list_model.hpp" +decltype (PlayerControlbarModel::playerIdentifierDictionary) + PlayerControlbarModel::playerIdentifierDictionary { + {Mainplayer, N_("Mainplayer")}, + {Miniplayer, N_("Miniplayer")} + }; + QJSValue PlayerControlbarModel::getPlaylistIdentifierListModel(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) @@ -35,8 +42,20 @@ QJSValue PlayerControlbarModel::getPlaylistIdentifierListModel(QQmlEngine *engin { QJSValue obj = scriptEngine->newObject(); - obj.setProperty("identifier", metaEnum.value(i)); - obj.setProperty("name", metaEnum.key(i)); + const int val = metaEnum.value(i); + obj.setProperty("identifier", val); + + QString key; + if ( playerIdentifierDictionary.contains(static_cast<PlayerControlbarModel::PlayerIdentifier>(i)) ) + { + key = qtr( playerIdentifierDictionary[static_cast<PlayerControlbarModel::PlayerIdentifier>(i)] ); + } + else + { + key = metaEnum.key(i); + } + + obj.setProperty("name", key); array.setProperty(i, obj); } diff --git a/modules/gui/qt/player/player_controlbar_model.hpp b/modules/gui/qt/player/player_controlbar_model.hpp index 3bf7e4c08c61..a6d3b3389e58 100644 --- a/modules/gui/qt/player/player_controlbar_model.hpp +++ b/modules/gui/qt/player/player_controlbar_model.hpp @@ -21,6 +21,8 @@ #include <QObject> #include <QJSValue> +#include <QMap> + #include <array> class ControlListModel; @@ -40,6 +42,9 @@ public: // add its identifier in this enum and set QML buttons layout // identifier to it. Such as `property int identifier = // PlayerControlbarModel.Mainplayer`. + // To make it translatable, add a corresponding entry to + // the static member playerIdentifierDictionary which is + // initalized in the source file. enum PlayerIdentifier { Mainplayer = 0, Miniplayer @@ -51,6 +56,9 @@ public: // Thanks to MOC, adding an entry to this enum // is enough for the editor to consider the // added entry without any other modification. + // (except for the translation) + + static const QMap<PlayerIdentifier, const char*> playerIdentifierDictionary; static QJSValue getPlaylistIdentifierListModel(class QQmlEngine *engine, class QJSEngine *scriptEngine); diff --git a/po/POTFILES.in b/po/POTFILES.in index 2631ce0715d7..3128f9f62a1b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -799,6 +799,8 @@ modules/gui/qt/widgets/native/searchlineedit.hpp modules/gui/qt/util/singleton.hpp modules/gui/qt/util/validators.cpp modules/gui/qt/util/validators.hpp +modules/gui/qt/player/player_controlbar_model.cpp +modules/gui/qt/player/player_controlbar_model.hpp modules/gui/qt/dialogs/dialogs/qml/CustomDialog.qml modules/gui/qt/dialogs/dialogs/qml/Dialogs.qml modules/gui/qt/dialogs/dialogs/qml/WindowDialog.qml -- GitLab