summaryrefslogtreecommitdiff
path: root/settings
diff options
context:
space:
mode:
Diffstat (limited to 'settings')
-rw-r--r--settings/accounts-translations-plugin/accounts-translations-plugin.pro17
-rw-r--r--settings/accounts-translations-plugin/plugin.cpp50
-rw-r--r--settings/accounts-translations-plugin/qmldir2
-rw-r--r--settings/accounts/accounts.pro27
-rw-r--r--settings/accounts/providers/mastodon.provider1
-rw-r--r--settings/accounts/services/mastodon-microblog.service1
-rw-r--r--settings/accounts/services/mastodon-sharing.service1
-rw-r--r--settings/accounts/ui/MastodonSettingsDisplay.qml15
-rw-r--r--settings/accounts/ui/mastodon-settings.qml13
-rw-r--r--settings/accounts/ui/mastodon-update.qml1
-rw-r--r--settings/accounts/ui/mastodon.qml19
-rw-r--r--settings/settings.pro4
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