diff options
Diffstat (limited to 'settings')
| -rw-r--r-- | settings/accounts-translations-plugin/accounts-translations-plugin.pro | 17 | ||||
| -rw-r--r-- | settings/accounts-translations-plugin/plugin.cpp | 50 | ||||
| -rw-r--r-- | settings/accounts-translations-plugin/qmldir | 2 | ||||
| -rw-r--r-- | settings/accounts/accounts.pro | 27 | ||||
| -rw-r--r-- | settings/accounts/providers/mastodon.provider | 1 | ||||
| -rw-r--r-- | settings/accounts/services/mastodon-microblog.service | 1 | ||||
| -rw-r--r-- | settings/accounts/services/mastodon-sharing.service | 1 | ||||
| -rw-r--r-- | settings/accounts/ui/MastodonSettingsDisplay.qml | 15 | ||||
| -rw-r--r-- | settings/accounts/ui/mastodon-settings.qml | 13 | ||||
| -rw-r--r-- | settings/accounts/ui/mastodon-update.qml | 1 | ||||
| -rw-r--r-- | settings/accounts/ui/mastodon.qml | 19 | ||||
| -rw-r--r-- | settings/settings.pro | 4 |
12 files changed, 144 insertions, 7 deletions
diff --git a/settings/accounts-translations-plugin/accounts-translations-plugin.pro b/settings/accounts-translations-plugin/accounts-translations-plugin.pro new file mode 100644 index 0000000..48b5a84 --- /dev/null +++ b/settings/accounts-translations-plugin/accounts-translations-plugin.pro @@ -0,0 +1,17 @@ +TEMPLATE = lib +TARGET = mastodonaccountstranslationsplugin +TARGET = $$qtLibraryTarget($$TARGET) + +MODULENAME = com/jolla/settings/accounts/mastodon +TARGETPATH = $$[QT_INSTALL_QML]/$$MODULENAME + +QT += qml +CONFIG += plugin + +SOURCES += plugin.cpp + +target.path = $$TARGETPATH +qmldir.files = qmldir +qmldir.path = $$TARGETPATH + +INSTALLS += target qmldir diff --git a/settings/accounts-translations-plugin/plugin.cpp b/settings/accounts-translations-plugin/plugin.cpp new file mode 100644 index 0000000..2bd504f --- /dev/null +++ b/settings/accounts-translations-plugin/plugin.cpp @@ -0,0 +1,50 @@ +#include <QCoreApplication> +#include <QLocale> +#include <QQmlEngine> +#include <QQmlExtensionPlugin> +#include <QTranslator> +#include <QtQml> + +class AppTranslator : public QTranslator +{ + Q_OBJECT +public: + explicit AppTranslator(QObject *parent) + : QTranslator(parent) + { + qApp->installTranslator(this); + } + + ~AppTranslator() override + { + qApp->removeTranslator(this); + } +}; + +class MastodonAccountsTranslationsPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "com.jolla.settings.accounts.mastodon") + +public: + void initializeEngine(QQmlEngine *engine, const char *uri) override + { + Q_UNUSED(uri) + + AppTranslator *engineeringEnglish = new AppTranslator(engine); + engineeringEnglish->load("settings-accounts-mastodon_eng_en", "/usr/share/translations"); + + AppTranslator *translator = new AppTranslator(engine); + translator->load(QLocale(), "settings-accounts-mastodon", "-", "/usr/share/translations"); + } + + void registerTypes(const char *uri) override + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("com.jolla.settings.accounts.mastodon")); + qmlRegisterUncreatableType<MastodonAccountsTranslationsPlugin>(uri, 1, 0, + "MastodonTranslationPlugin", + QString()); + } +}; + +#include "plugin.moc" diff --git a/settings/accounts-translations-plugin/qmldir b/settings/accounts-translations-plugin/qmldir new file mode 100644 index 0000000..9b7a872 --- /dev/null +++ b/settings/accounts-translations-plugin/qmldir @@ -0,0 +1,2 @@ +module com.jolla.settings.accounts.mastodon +plugin mastodonaccountstranslationsplugin diff --git a/settings/accounts/accounts.pro b/settings/accounts/accounts.pro index 7adc97e..d451438 100644 --- a/settings/accounts/accounts.pro +++ b/settings/accounts/accounts.pro @@ -1,5 +1,30 @@ TEMPLATE = aux +TS_FILE = $$OUT_PWD/settings-accounts-mastodon.ts +EE_QM = $$OUT_PWD/settings-accounts-mastodon_eng_en.qm + +ts.commands += lupdate $$PWD/ui -ts $$TS_FILE +ts.CONFIG += no_check_exist no_link +ts.output = $$TS_FILE +ts.input = . + +ts_install.files = $$TS_FILE +ts_install.path = /usr/share/translations/source +ts_install.CONFIG += no_check_exist + +engineering_english.commands += lrelease -idbased $$TS_FILE -qm $$EE_QM +engineering_english.CONFIG += no_check_exist no_link +engineering_english.depends = ts +engineering_english.input = $$TS_FILE +engineering_english.output = $$EE_QM + +engineering_english_install.path = /usr/share/translations +engineering_english_install.files = $$EE_QM +engineering_english_install.CONFIG += no_check_exist + +QMAKE_EXTRA_TARGETS += ts engineering_english +PRE_TARGETDEPS += ts engineering_english + OTHER_FILES += \ $$PWD/providers/mastodon.provider \ $$PWD/services/mastodon-microblog.service \ @@ -24,4 +49,4 @@ ui.files += \ $$PWD/ui/mastodon-update.qml ui.path = /usr/share/accounts/ui/ -INSTALLS += provider services ui +INSTALLS += provider services ui ts_install engineering_english_install diff --git a/settings/accounts/providers/mastodon.provider b/settings/accounts/providers/mastodon.provider index 8523691..73700c4 100644 --- a/settings/accounts/providers/mastodon.provider +++ b/settings/accounts/providers/mastodon.provider @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE provider> <provider version="1.0" id="mastodon"> + <translations>/usr/share/translations/settings-accounts-mastodon</translations> <name>Mastodon</name> <description>Mastodon social network</description> <icon>image://theme/icon-l-mastodon</icon> diff --git a/settings/accounts/services/mastodon-microblog.service b/settings/accounts/services/mastodon-microblog.service index bbc5945..703b3c5 100644 --- a/settings/accounts/services/mastodon-microblog.service +++ b/settings/accounts/services/mastodon-microblog.service @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> <service id="mastodon-microblog"> <type>microblogging</type> + <translations>/usr/share/translations/settings-accounts-mastodon</translations> <name>Posts</name> <icon>image://theme/icon-l-mastodon</icon> <provider>mastodon</provider> diff --git a/settings/accounts/services/mastodon-sharing.service b/settings/accounts/services/mastodon-sharing.service index 19e3e24..cbf007d 100644 --- a/settings/accounts/services/mastodon-sharing.service +++ b/settings/accounts/services/mastodon-sharing.service @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> <service id="mastodon-sharing"> <type>sharing</type> + <translations>/usr/share/translations/settings-accounts-mastodon</translations> <name>Sharing</name> <icon>image://theme/icon-l-mastodon</icon> <provider>mastodon</provider> diff --git a/settings/accounts/ui/MastodonSettingsDisplay.qml b/settings/accounts/ui/MastodonSettingsDisplay.qml index a9e2c5a..9a45e45 100644 --- a/settings/accounts/ui/MastodonSettingsDisplay.qml +++ b/settings/accounts/ui/MastodonSettingsDisplay.qml @@ -9,6 +9,16 @@ StandardAccountSettingsDisplay { settingsModified: true + function _displayNameFromApiHost(apiHost) { + var host = apiHost ? apiHost.toString().trim() : "" + host = host.replace(/^https?:\/\//i, "") + var pathSeparator = host.indexOf("/") + if (pathSeparator !== -1) { + host = host.substring(0, pathSeparator) + } + return host + } + onAboutToSaveAccount: { settingsLoader.updateAllSyncProfiles() @@ -33,6 +43,11 @@ StandardAccountSettingsDisplay { : "" if (credentialsUserName.length > 0 && root.account.displayName !== credentialsUserName) { root.account.displayName = credentialsUserName + } else if ((!root.account.displayName || root.account.displayName.toString().trim().length === 0)) { + var fallback = _displayNameFromApiHost(root.account.configurationValues("")["api/Host"]) + if (fallback.length > 0) { + root.account.displayName = fallback + } } var autoSync = root.account.configurationValues("")["FeedViewAutoSync"] diff --git a/settings/accounts/ui/mastodon-settings.qml b/settings/accounts/ui/mastodon-settings.qml index 630f51d..6b25bb3 100644 --- a/settings/accounts/ui/mastodon-settings.qml +++ b/settings/accounts/ui/mastodon-settings.qml @@ -13,7 +13,18 @@ AccountSettingsAgent { if (credentialsUserName.length > 0) { return credentialsUserName } - return account.displayName + var displayName = account.displayName ? account.displayName.toString().trim() : "" + if (displayName.length > 0) { + return displayName + } + var apiHost = account.configurationValues("")["api/Host"] + var host = apiHost ? apiHost.toString().trim() : "" + host = host.replace(/^https?:\/\//i, "") + var pathSeparator = host.indexOf("/") + if (pathSeparator !== -1) { + host = host.substring(0, pathSeparator) + } + return host } Account { diff --git a/settings/accounts/ui/mastodon-update.qml b/settings/accounts/ui/mastodon-update.qml index 3a6c25c..d577b05 100644 --- a/settings/accounts/ui/mastodon-update.qml +++ b/settings/accounts/ui/mastodon-update.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 import Sailfish.Accounts 1.0 import com.jolla.settings.accounts 1.0 +import com.jolla.settings.accounts.mastodon 1.0 AccountCredentialsAgent { id: root diff --git a/settings/accounts/ui/mastodon.qml b/settings/accounts/ui/mastodon.qml index 758ed9b..3359ce8 100644 --- a/settings/accounts/ui/mastodon.qml +++ b/settings/accounts/ui/mastodon.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 import Sailfish.Accounts 1.0 import com.jolla.settings.accounts 1.0 +import com.jolla.settings.accounts.mastodon 1.0 AccountCreationAgent { id: root @@ -43,6 +44,14 @@ AccountCreationAgent { return oauthHost(apiHost) } + function _fallbackDisplayName(apiHost) { + var display = _displayName(apiHost) + if (display.length > 0) { + return display + } + return _displayName(defaultApiHost) + } + function _showRegistrationError(message, busyPage) { _registering = false accountCreationError(message) @@ -290,10 +299,12 @@ AccountCreationAgent { ? newAccount.defaultCredentialsUserName.toString().trim() : "" var providerDisplayName = root._displayName(apiHost) - if (credentialsUserName.length > 0) { - newAccount.displayName = credentialsUserName - } else if (providerDisplayName.length > 0) { - newAccount.displayName = providerDisplayName + var accountDescription = credentialsUserName.length > 0 + ? credentialsUserName + : root._fallbackDisplayName(apiHost) + if (accountDescription.length > 0) { + newAccount.displayName = accountDescription + newAccount.setConfigurationValue("", "description", accountDescription) } newAccount.setConfigurationValue("", "api/Host", apiHost) diff --git a/settings/settings.pro b/settings/settings.pro index 5f2c9b0..84f2a75 100644 --- a/settings/settings.pro +++ b/settings/settings.pro @@ -1,2 +1,4 @@ TEMPLATE = subdirs -SUBDIRS += accounts +SUBDIRS += \ + accounts \ + accounts-translations-plugin |
