From b177884567c798c79cbdb784415912f2efa6cbd6 Mon Sep 17 00:00:00 2001 From: molan-git <59296158+molan-git@users.noreply.github.com> Date: Tue, 12 May 2020 08:17:15 +0200 Subject: [PATCH 1/3] Update harbour-tooter-zh_CN.ts --- translations/harbour-tooter-zh_CN.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts index 04ddc89..d25e9f9 100644 --- a/translations/harbour-tooter-zh_CN.ts +++ b/translations/harbour-tooter-zh_CN.ts @@ -128,7 +128,7 @@ Federated - 联合的 + 联合 @@ -292,18 +292,18 @@ Use Transifex to help with app translation to your language - + 使用 Transifex 以帮助翻译软件为你的语言 Development and translations - + 开发及翻译 Toot boosted - 推起的 + 推起 favourited @@ -311,7 +311,7 @@ followed you - 关注你的 + 关注你 From c8ad3f02cc12da45fd3c6b5c73f1306622551452 Mon Sep 17 00:00:00 2001 From: molan-git Date: Sun, 24 May 2020 19:54:46 +0200 Subject: [PATCH 2/3] sentBanner Adds a confirmation banner when sending a Toot --- harbour-tooter.pro | 233 ++++++++++--------- qml/pages/Conversation.qml | 22 +- qml/pages/MainPage.qml | 2 +- qml/pages/components/InfoBanner.qml | 62 +++++ qml/pages/components/InfoBanner.qml.autosave | 61 +++++ qml/pages/components/VisualContainer.qml | 1 + translations/harbour-tooter-de.ts | 8 +- translations/harbour-tooter-el.ts | 8 +- translations/harbour-tooter-es.ts | 8 +- translations/harbour-tooter-fi.ts | 8 +- translations/harbour-tooter-fr.ts | 8 +- translations/harbour-tooter-it.ts | 28 +-- translations/harbour-tooter-nl.ts | 8 +- translations/harbour-tooter-nl_BE.ts | 8 +- translations/harbour-tooter-oc.ts | 8 +- translations/harbour-tooter-pl.ts | 8 +- translations/harbour-tooter-ru.ts | 8 +- translations/harbour-tooter-sr.ts | 8 +- translations/harbour-tooter-sv.ts | 8 +- translations/harbour-tooter-zh_CN.ts | 8 +- translations/harbour-tooter.ts | 8 +- 21 files changed, 325 insertions(+), 196 deletions(-) create mode 100644 qml/pages/components/InfoBanner.qml create mode 100644 qml/pages/components/InfoBanner.qml.autosave diff --git a/harbour-tooter.pro b/harbour-tooter.pro index 6a1b13c..026fe41 100644 --- a/harbour-tooter.pro +++ b/harbour-tooter.pro @@ -1,116 +1,117 @@ -# NOTICE: -# -# Application name defined in TARGET has a corresponding QML filename. -# If name defined in TARGET is changed, the following needs to be done -# to match new name: -# - corresponding QML filename must be changed -# - desktop icon filename must be changed -# - desktop filename must be changed -# - icon definition filename in desktop file must be changed -# - translation filenames have to be changed - -# The name of your application -TARGET = harbour-tooter - -CONFIG += sailfishapp - -QT += network dbus sql -CONFIG += link_pkgconfig -PKGCONFIG += sailfishapp -PKGCONFIG += \ - nemonotifications-qt5 - -DEFINES += "APPVERSION=\\\"$${SPECVERSION}\\\"" -DEFINES += "APPNAME=\\\"$${TARGET}\\\"" - -!exists( src/dbusAdaptor.h ) { - system(qdbusxml2cpp config/ba.dysko.harbour.tooter.xml -i dbus.h -a src/dbusAdaptor) -} - -config.path = /usr/share/$${TARGET}/config/ -config.files = config/icon-lock-harbour-tooter.png - -notification_categories.path = /usr/share/lipstick/notificationcategories -notification_categories.files = config/x-harbour.tooter.activity.* - -dbus_services.path = /usr/share/dbus-1/services/ -dbus_services.files = config/ba.dysko.harbour.tooter.service - -interfaces.path = /usr/share/dbus-1/interfaces/ -interfaces.files = config/ba.dysko.harbour.tooter.xml - -SOURCES += src/harbour-tooter.cpp -SOURCES += src/imageuploader.cpp -SOURCES += src/filedownloader.cpp -SOURCES += src/notifications.cpp -SOURCES += src/dbusAdaptor.cpp -SOURCES += src/dbus.cpp - -HEADERS += src/imageuploader.h -HEADERS += src/filedownloader.h -HEADERS += src/notifications.h -HEADERS += src/dbusAdaptor.h -HEADERS += src/dbus.h - -DISTFILES += qml/harbour-tooter.qml \ - qml/pages/components/VisualContainer.qml \ - qml/pages/components/MiniStatus.qml \ - qml/pages/components/MiniHeader.qml \ - qml/pages/components/ItemUser.qml \ - qml/pages/components/MyList.qml \ - qml/pages/components/Navigation.qml \ - qml/pages/components/ProfileHeader.qml \ - qml/pages/components/MediaBlock.qml \ - qml/pages/components/MyImage.qml \ - qml/pages/components/ImageFullScreen.qml \ - qml/cover/CoverPage.qml \ - qml/pages/MainPage.qml \ - qml/pages/LoginPage.qml \ - qml/pages/Conversation.qml \ - qml/pages/components/Toot.qml \ - qml/pages/Browser.qml \ - qml/pages/Profile.qml \ - qml/pages/Settings.qml \ - qml/lib/API.js \ - qml/images/notification.svg \ - qml/images/verified.svg \ - qml/images/boosted.svg \ - qml/images/tooter.svg \ - qml/images/emojiselect.svg \ - qml/images/icon-m-profile.svg \ - qml/images/icon-l-profile.svg \ - qml/lib/Mastodon.js \ - qml/lib/Worker.js \ - config/icon-lock-harbour-tooter.png \ - config/x-harbour.tooter.activity.conf \ - rpm/harbour-tooter.changes \ - rpm/harbour-tooter.changes.run.in \ - rpm/harbour-tooter.spec \ - rpm/harbour-tooter.yaml \ - translations/*.ts \ - harbour-tooter.desktop - -SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172 - -# to disable building translations every time, comment out the -# following CONFIG line -CONFIG += sailfishapp_i18n - -# German translation is enabled as an example. If you aren't -# planning to localize your app, remember to comment out the -# following TRANSLATIONS line. And also do not forget to -# modify the localized app name in the the .desktop file. -TRANSLATIONS += translations/harbour-tooter-de.ts -TRANSLATIONS += translations/harbour-tooter-el.ts -TRANSLATIONS += translations/harbour-tooter-es.ts -TRANSLATIONS += translations/harbour-tooter-fi.ts -TRANSLATIONS += translations/harbour-tooter-fr.ts -TRANSLATIONS += translations/harbour-tooter-nl.ts -TRANSLATIONS += translations/harbour-tooter-nl_BE.ts -TRANSLATIONS += translations/harbour-tooter-oc.ts -TRANSLATIONS += translations/harbour-tooter-pl.ts -TRANSLATIONS += translations/harbour-tooter-ru.ts -TRANSLATIONS += translations/harbour-tooter-sr.ts -TRANSLATIONS += translations/harbour-tooter-sv.ts -TRANSLATIONS += translations/harbour-tooter-zh_CN.ts -TRANSLATIONS += translations/harbour-tooter-it.ts +# NOTICE: +# +# Application name defined in TARGET has a corresponding QML filename. +# If name defined in TARGET is changed, the following needs to be done +# to match new name: +# - corresponding QML filename must be changed +# - desktop icon filename must be changed +# - desktop filename must be changed +# - icon definition filename in desktop file must be changed +# - translation filenames have to be changed + +# The name of your application +TARGET = harbour-tooter + +CONFIG += sailfishapp + +QT += network dbus sql +CONFIG += link_pkgconfig +PKGCONFIG += sailfishapp +PKGCONFIG += \ + nemonotifications-qt5 + +DEFINES += "APPVERSION=\\\"$${SPECVERSION}\\\"" +DEFINES += "APPNAME=\\\"$${TARGET}\\\"" + +!exists( src/dbusAdaptor.h ) { + system(qdbusxml2cpp config/ba.dysko.harbour.tooter.xml -i dbus.h -a src/dbusAdaptor) +} + +config.path = /usr/share/$${TARGET}/config/ +config.files = config/icon-lock-harbour-tooter.png + +notification_categories.path = /usr/share/lipstick/notificationcategories +notification_categories.files = config/x-harbour.tooter.activity.* + +dbus_services.path = /usr/share/dbus-1/services/ +dbus_services.files = config/ba.dysko.harbour.tooter.service + +interfaces.path = /usr/share/dbus-1/interfaces/ +interfaces.files = config/ba.dysko.harbour.tooter.xml + +SOURCES += src/harbour-tooter.cpp +SOURCES += src/imageuploader.cpp +SOURCES += src/filedownloader.cpp +SOURCES += src/notifications.cpp +SOURCES += src/dbusAdaptor.cpp +SOURCES += src/dbus.cpp + +HEADERS += src/imageuploader.h +HEADERS += src/filedownloader.h +HEADERS += src/notifications.h +HEADERS += src/dbusAdaptor.h +HEADERS += src/dbus.h + +DISTFILES += qml/harbour-tooter.qml \ + qml/pages/components/InfoBanner.qml \ + qml/pages/components/VisualContainer.qml \ + qml/pages/components/MiniStatus.qml \ + qml/pages/components/MiniHeader.qml \ + qml/pages/components/ItemUser.qml \ + qml/pages/components/MyList.qml \ + qml/pages/components/Navigation.qml \ + qml/pages/components/ProfileHeader.qml \ + qml/pages/components/MediaBlock.qml \ + qml/pages/components/MyImage.qml \ + qml/pages/components/ImageFullScreen.qml \ + qml/cover/CoverPage.qml \ + qml/pages/MainPage.qml \ + qml/pages/LoginPage.qml \ + qml/pages/Conversation.qml \ + qml/pages/components/Toot.qml \ + qml/pages/Browser.qml \ + qml/pages/Profile.qml \ + qml/pages/Settings.qml \ + qml/lib/API.js \ + qml/images/notification.svg \ + qml/images/verified.svg \ + qml/images/boosted.svg \ + qml/images/tooter.svg \ + qml/images/emojiselect.svg \ + qml/images/icon-m-profile.svg \ + qml/images/icon-l-profile.svg \ + qml/lib/Mastodon.js \ + qml/lib/Worker.js \ + config/icon-lock-harbour-tooter.png \ + config/x-harbour.tooter.activity.conf \ + rpm/harbour-tooter.changes \ + rpm/harbour-tooter.changes.run.in \ + rpm/harbour-tooter.spec \ + rpm/harbour-tooter.yaml \ + translations/*.ts \ + harbour-tooter.desktop + +SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172 + +# to disable building translations every time, comment out the +# following CONFIG line +CONFIG += sailfishapp_i18n + +# German translation is enabled as an example. If you aren't +# planning to localize your app, remember to comment out the +# following TRANSLATIONS line. And also do not forget to +# modify the localized app name in the the .desktop file. +TRANSLATIONS += translations/harbour-tooter-de.ts +TRANSLATIONS += translations/harbour-tooter-el.ts +TRANSLATIONS += translations/harbour-tooter-es.ts +TRANSLATIONS += translations/harbour-tooter-fi.ts +TRANSLATIONS += translations/harbour-tooter-fr.ts +TRANSLATIONS += translations/harbour-tooter-nl.ts +TRANSLATIONS += translations/harbour-tooter-nl_BE.ts +TRANSLATIONS += translations/harbour-tooter-oc.ts +TRANSLATIONS += translations/harbour-tooter-pl.ts +TRANSLATIONS += translations/harbour-tooter-ru.ts +TRANSLATIONS += translations/harbour-tooter-sr.ts +TRANSLATIONS += translations/harbour-tooter-sv.ts +TRANSLATIONS += translations/harbour-tooter-zh_CN.ts +TRANSLATIONS += translations/harbour-tooter-it.ts diff --git a/qml/pages/Conversation.qml b/qml/pages/Conversation.qml index 3fed799..2aac1ad 100644 --- a/qml/pages/Conversation.qml +++ b/qml/pages/Conversation.qml @@ -4,9 +4,11 @@ import harbour.tooter.Uploader 1.0 import "../lib/API.js" as Logic import "./components/" + Page { id: conversationPage - property string type + property string headerTitle: "" + property string type property alias title: header.title property alias description: header.description property alias avatar: header.image @@ -40,6 +42,10 @@ Page { } } + InfoBanner { + id: sentBanner + } + ListModel { id: mediaModel onCountChanged: { @@ -62,7 +68,7 @@ Page { SilicaListView { id: conversationList header: PageHeader { - title: qsTr("Conversation") + title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml } clip: true anchors { @@ -208,7 +214,6 @@ Page { || description.charAt( 0) == '#') ? description + ' ' : '' height: Math.max(270, Math.min(900, implicitHeight)) - //height: implicitHeight horizontalAlignment: Text.AlignLeft placeholderText: qsTr("What's on your mind?") font.pixelSize: Theme.fontSizeSmall @@ -304,7 +309,6 @@ Page { } } IconButton { - id: btnContentWarning anchors { top: toot.bottom @@ -426,11 +430,11 @@ Page { msg.params['spoiler_text'] = warningContent.text } - worker.sendMessage(msg) - warningContent.text = "" - toot.text = "" - mediaModel.clear() - pageStack.pop() + worker.sendMessage(msg) + warningContent.text = "" + toot.text = "" + mediaModel.clear() + sentBanner.showText(qsTr("Toot sent!")) } } diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml index e676870..463b305 100644 --- a/qml/pages/MainPage.qml +++ b/qml/pages/MainPage.qml @@ -246,7 +246,7 @@ Page { visible: !isPortrait ? true : !infoPanel.open icon.source: "image://theme/icon-l-add" onClicked: { - pageStack.push(Qt.resolvedUrl("Conversation.qml"), {title: qsTr("New Toot"), type: "new"}) + pageStack.push(Qt.resolvedUrl("Conversation.qml"), {headerTitle: qsTr("New Toot"), type: "new"}) } } diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml new file mode 100644 index 0000000..3696c59 --- /dev/null +++ b/qml/pages/components/InfoBanner.qml @@ -0,0 +1,62 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 + + +DockedPanel { + id: root + z: 100; + width: parent.width //- Theme.paddingLarge*4 + //x: Theme.paddingLarge*2 + height: content.height + dock: Dock.Bottom + + Rectangle { + id: content + width: root.width + height: infoLabel.height + 4*Theme.paddingMedium + //anchors.topMargin: 20 + color: Theme.highlightBackgroundColor + opacity: 1.0 + + Label { + id: infoLabel + text : "" + color: Theme.primaryColor + font.family: Theme.fontFamilyHeading + font.pixelSize: Theme.fontSizeMedium + //font.weight: Font.Bold + width: parent.width + wrapMode: Text.WrapAnywhere + anchors { + left: parent.left + leftMargin: Theme.horizontalPageMargin + right: parent.right + rightMargin: Theme.horizontalPageMargin + verticalCenter: parent.verticalCenter + } + } + MouseArea { + anchors.fill: parent + onClicked: { + root.hide() + autoClose.stop() + } + } + } + + function showText(text) { + infoLabel.text = text + root.show() + autoClose.start() + } + + Timer { + id: autoClose + interval: 6000 + running: false + onTriggered: { + root.hide() + stop() + } + } +} diff --git a/qml/pages/components/InfoBanner.qml.autosave b/qml/pages/components/InfoBanner.qml.autosave new file mode 100644 index 0000000..7921d05 --- /dev/null +++ b/qml/pages/components/InfoBanner.qml.autosave @@ -0,0 +1,61 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 + + +DockedPanel { + id: root + z: 100; + width: parent.width + height: content.height + dock: Dock.Bottom + + Rectangle { + id: content + width: root.width + height: infoLabel.height + 4*Theme.paddingMedium + //anchors.topMargin: 20 + color: Theme.highlightBackgroundColor + opacity: 1.0 + + Label { + id: infoLabel + text : "" + color: Theme.primaryColor + font.family: Theme.fontFamilyHeading + font.pixelSize: Theme.fontSizeMedium + //font.weight: Font.Bold + width: parent.width + wrapMode: Text.WrapAnywhere + anchors { + left: parent.left + leftMargin: Theme.horizontalPageMargin + right: parent.right + rightMargin: Theme.ho rizontalPageMargin + verticalCenter: parent.verticalCenter + } + } + MouseArea { + anchors.fill: parent + onClicked: { + root.hide() + autoClose.stop() + } + } + } + + function showText(text) { + infoLabel.text = text + root.show() + autoClose.start() + } + + Timer { + id: autoClose + interval: 6000 + running: false + onTriggered: { + root.hide() + stop() + } + } +} diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml index 072f816..d3a06e2 100644 --- a/qml/pages/components/VisualContainer.qml +++ b/qml/pages/components/VisualContainer.qml @@ -277,6 +277,7 @@ BackgroundItem { if (typeof mdl !== "undefined") m.append(mdl.get(index)) pageStack.push(Qt.resolvedUrl("../Conversation.qml"), { + headerTitle: "Conversation", toot_id: status_id, title: account_display_name, description: '@'+account_acct, diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts index d2a2c44..210e07b 100644 --- a/translations/harbour-tooter-de.ts +++ b/translations/harbour-tooter-de.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Konversation - Delete Löschen @@ -62,6 +58,10 @@ What's on your mind? Was gibt's Neues? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts index 6f47211..c926c14 100644 --- a/translations/harbour-tooter-el.ts +++ b/translations/harbour-tooter-el.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Συνομιλία - Delete Διαγραφή @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts index fe77cd8..c52d603 100644 --- a/translations/harbour-tooter-es.ts +++ b/translations/harbour-tooter-es.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Conversación - Delete Borrar @@ -62,6 +58,10 @@ What's on your mind? ¿En qué estás pensando? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-fi.ts b/translations/harbour-tooter-fi.ts index f1444ea..a1ec939 100644 --- a/translations/harbour-tooter-fi.ts +++ b/translations/harbour-tooter-fi.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - - Delete @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts index 341f2a4..b3835ab 100644 --- a/translations/harbour-tooter-fr.ts +++ b/translations/harbour-tooter-fr.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Conversation - Delete Supprimer @@ -62,6 +58,10 @@ What's on your mind? Qu'avez-vous en tête? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts index 6689a88..e62798d 100644 --- a/translations/harbour-tooter-it.ts +++ b/translations/harbour-tooter-it.ts @@ -28,52 +28,52 @@ Conversation - - Conversation - Conversazione - - - + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + + Toot sent! + + + + Emojis Emojis - + Tap to insert Tap per inserire diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts index 6ff67ed..768c5a8 100644 --- a/translations/harbour-tooter-nl.ts +++ b/translations/harbour-tooter-nl.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Gesprek - Delete Verwijderen @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts index cf8d937..035f8b9 100644 --- a/translations/harbour-tooter-nl_BE.ts +++ b/translations/harbour-tooter-nl_BE.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Gesprek - Delete Verwijderen @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts index 2bb86d9..cf6f401 100644 --- a/translations/harbour-tooter-oc.ts +++ b/translations/harbour-tooter-oc.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Discutida - Delete Escafar @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts index 952b1b2..7e97caa 100644 --- a/translations/harbour-tooter-pl.ts +++ b/translations/harbour-tooter-pl.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Konwersacja - Delete Usuń @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts index 277a582..724ec09 100644 --- a/translations/harbour-tooter-ru.ts +++ b/translations/harbour-tooter-ru.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Беседа - Delete Удалить @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts index 3091e3e..6080c74 100644 --- a/translations/harbour-tooter-sr.ts +++ b/translations/harbour-tooter-sr.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Разговор - Delete Обриши @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts index 43b1866..3e411bf 100644 --- a/translations/harbour-tooter-sv.ts +++ b/translations/harbour-tooter-sv.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Konversation - Delete Radera @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts index d25e9f9..fa8b314 100644 --- a/translations/harbour-tooter-zh_CN.ts +++ b/translations/harbour-tooter-zh_CN.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - 对话 - Delete 删除 @@ -62,6 +58,10 @@ What's on your mind? 有何想法? + + Toot sent! + + ImageFullScreen diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts index b119e7e..bf8ce75 100644 --- a/translations/harbour-tooter.ts +++ b/translations/harbour-tooter.ts @@ -22,10 +22,6 @@ Conversation - - Conversation - Conversation - Delete Delete @@ -62,6 +58,10 @@ What's on your mind? + + Toot sent! + + ImageFullScreen From 41041a77aa35a92f0df906078c70b3660b1166f3 Mon Sep 17 00:00:00 2001 From: molan-git Date: Mon, 25 May 2020 17:54:02 +0200 Subject: [PATCH 3/3] ui-improvements New image/video viewer Send-message Profile background images --- qml/lib/Worker.js | 6 +- qml/pages/Conversation.qml | 16 ++++- qml/pages/LoginPage.qml | 10 +-- qml/pages/MainPage.qml | 4 +- qml/pages/Profile.qml | 13 ++-- qml/pages/components/ImageFullScreen.qml | 52 +++++++++------- qml/pages/components/InfoBanner.qml | 11 ++-- qml/pages/components/InfoBanner.qml.autosave | 61 ------------------ qml/pages/components/MediaBlock.qml | 2 - qml/pages/components/MiniHeader.qml | 1 - qml/pages/components/Navigation.qml | 2 - qml/pages/components/ProfileHeader.qml | 19 +++--- qml/pages/components/VisualContainer.qml | 26 ++++---- translations/harbour-tooter-de.ts | 8 ++- translations/harbour-tooter-el.ts | 6 +- translations/harbour-tooter-es.ts | 6 +- translations/harbour-tooter-fi.ts | 4 ++ translations/harbour-tooter-fr.ts | 8 ++- translations/harbour-tooter-it.ts | 65 +++++++++++--------- translations/harbour-tooter-nl.ts | 6 +- translations/harbour-tooter-nl_BE.ts | 6 +- translations/harbour-tooter-oc.ts | 6 +- translations/harbour-tooter-pl.ts | 6 +- translations/harbour-tooter-ru.ts | 6 +- translations/harbour-tooter-sr.ts | 6 +- translations/harbour-tooter-sv.ts | 6 +- translations/harbour-tooter-zh_CN.ts | 6 +- translations/harbour-tooter.ts | 6 +- 28 files changed, 197 insertions(+), 177 deletions(-) delete mode 100644 qml/pages/components/InfoBanner.qml.autosave diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js index 15c13fd..8b53e8c 100644 --- a/qml/lib/Worker.js +++ b/qml/lib/Worker.js @@ -132,11 +132,13 @@ function parseAccounts(collection, prefix, data){ res[prefix + 'account_username'] = data["username"] res[prefix + 'account_acct'] = data["acct"] res[prefix + 'account_display_name'] = data["display_name"] + res[prefix + 'account_discoverable'] = data["discoverable"] res[prefix + 'account_locked'] = data["locked"] res[prefix + 'account_created_at'] = data["created_at"] res[prefix + 'account_avatar'] = data["avatar"] + res[prefix + 'account_header'] = data["header"] - // /console.log(JSON.stringify(res)) + // console.log(JSON.stringify(res)) return (res); } @@ -226,6 +228,7 @@ function parseToot (data){ item['highlight'] = false item['status_id'] = data["id"] item['status_uri'] = data["uri"] + item['status_url'] = data["url"] item['status_in_reply_to_id'] = data["in_reply_to_id"] item['status_in_reply_to_account_id'] = data["in_reply_to_account_id"] item['status_reblog'] = data["reblog"] ? true : false @@ -236,6 +239,7 @@ function parseToot (data){ item['favourites_count'] = data["favourites_count"] item['reblogged'] = data["reblogged"] item['favourited'] = data["favourited"] + item['bookmarked'] = data["bookmarked"] item['status_sensitive'] = data["sensitive"] item['status_spoiler_text'] = data["spoiler_text"] item['status_visibility'] = data["visibility"] diff --git a/qml/pages/Conversation.qml b/qml/pages/Conversation.qml index 2aac1ad..0fb4c91 100644 --- a/qml/pages/Conversation.qml +++ b/qml/pages/Conversation.qml @@ -15,6 +15,7 @@ Page { property string suggestedUser: "" property ListModel suggestedModel property string toot_id: "" + property string toot_url: "" property int tootMaxChar: 500; property ListModel mdl allowedOrientations: Orientation.All @@ -96,6 +97,18 @@ Page { } } } + PullDownMenu { + visible: type == "reply" && toot_url != "" + /* MenuItem { + text: qsTr("Open in Browser") + onClicked: Qt.openUrlExternally(toot_url); + } */ + // ! url isn't always fetched. Needs a solution. + MenuItem { + text: qsTr("Copy Link to Clipboard") + onClicked: Clipboard.text = toot_url; + } + } } Rectangle { id: predictionList @@ -110,7 +123,6 @@ Page { anchors.fill: parent model: suggestedModel clip: true - delegate: ItemUser { onClicked: { var start = toot.cursorPosition @@ -433,7 +445,7 @@ Page { worker.sendMessage(msg) warningContent.text = "" toot.text = "" - mediaModel.clear() + mediaModel.clear(); sentBanner.showText(qsTr("Toot sent!")) } } diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml index c3874fb..b1d2064 100644 --- a/qml/pages/LoginPage.qml +++ b/qml/pages/LoginPage.qml @@ -34,15 +34,11 @@ import Sailfish.Silica 1.0 import "../lib/API.js" as Logic - Page { id: loginPage - // The effective value will be restricted by ApplicationWindow.allowedOrientations allowedOrientations: Orientation.All - - SilicaFlickable { anchors.fill: parent contentHeight: column.height + Theme.paddingLarge @@ -52,8 +48,9 @@ Page { Column { id: column width: parent.width - - PageHeader { title: qsTr("Login") } + PageHeader { + title: qsTr("Login") + } SectionHeader { text: qsTr("Instance") @@ -83,7 +80,6 @@ Page { conf.instance = instance.text; conf.login = false; - /*conf['login'] = false; conf['mastodon_client_id'] = data['mastodon_client_id']; conf['mastodon_client_secret'] = data['mastodon_client_secret']; diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml index 463b305..e273c23 100644 --- a/qml/pages/MainPage.qml +++ b/qml/pages/MainPage.qml @@ -57,6 +57,7 @@ Page { } } } + VisualItemModel { id: visualModel MyList{ @@ -188,7 +189,8 @@ Page { "display_name": model.account_display_name, "username": model.account_acct, "user_id": model.account_id, - "profileImage": model.account_avatar + "profileImage": model.account_avatar, + "profileBackground": model.account_header }) } } diff --git a/qml/pages/Profile.qml b/qml/pages/Profile.qml index 6d56f44..3f39db7 100644 --- a/qml/pages/Profile.qml +++ b/qml/pages/Profile.qml @@ -16,7 +16,7 @@ Page { property int favourites_count; property int reblogs_count; property int count_moments; - property string profile_background: ""; + property string profileBackground: ""; property string note: ""; property string url: ""; @@ -42,6 +42,7 @@ Page { username = messageObject.data.acct display_name = messageObject.data.display_name profileImage = messageObject.data.avatar_static + profileBackground = messageObject.data.header_static var msg = { 'action' : "accounts/relationships/", @@ -135,7 +136,6 @@ Page { } - MyList { id: list header: ProfileHeader { @@ -143,6 +143,7 @@ Page { title: display_name description: username image: profileImage + bg: profileBackground } anchors { @@ -159,7 +160,6 @@ Page { conf: Logic.conf } - ExpandingSectionGroup { id: expander //currentIndex: 0 @@ -275,10 +275,8 @@ Page { })); send(link) - } else if (test.length === 4 && test[3][0] === "@" ) { - tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2]) - slideshow.positionViewAtIndex(4, ListView.SnapToItem) - navigation.navigateTo('search') + // function still missing for user accounts + // } else if (test.length === 4 && test[3][0] === "@" ) { } else { Qt.openUrlExternally(link); @@ -290,7 +288,6 @@ Page { spacing: Theme.paddingMedium anchors.horizontalCenter: parent.horizontalCenter Button { - id: btnUrl text: qsTr("Open Profile in Browser") onClicked: { Qt.openUrlExternally(url); diff --git a/qml/pages/components/ImageFullScreen.qml b/qml/pages/components/ImageFullScreen.qml index dba23a8..5384804 100644 --- a/qml/pages/components/ImageFullScreen.qml +++ b/qml/pages/components/ImageFullScreen.qml @@ -2,7 +2,7 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 import QtMultimedia 5.0 -Page { +FullscreenContentPage { id: imagePage property string type: "" property string previewURL: "" @@ -22,6 +22,26 @@ Page { videoFlickable.visible = true; } } + + Item { + id: overlay + z: 100 + property bool active: true + enabled: active + anchors.fill: parent + opacity: active ? 1.0 : 0.0 + Behavior on opacity { FadeAnimator {}} + IconButton { + y: Theme.paddingLarge + anchors { + right: parent.right + rightMargin: Theme.horizontalPageMargin + } + icon.source: "image://theme/icon-m-dismiss" + onClicked: pageStack.pop() + } + } + Flickable { id: videoFlickable visible: false @@ -49,7 +69,6 @@ Page { case MediaPlayer.EndOfMedia: console.log("EndOfMedia") return; - } } @@ -68,7 +87,6 @@ Page { } } - onPositionChanged: function(){ //console.log(duration) //console.log(bufferProgress) @@ -81,15 +99,17 @@ Page { } } + onStopped: function(){ play() } + IconButton { id: playerIcon anchors.left: parent.left anchors.bottom: parent.bottom anchors.leftMargin: Theme.paddingLarge - anchors.bottomMargin: Theme.paddingMedium + anchors.bottomMargin: Theme.paddingLarge*1.5 icon.source: "image://theme/icon-m-play" onClicked: function() { if (video.playbackState === MediaPlayer.PlayingState) @@ -104,10 +124,9 @@ Page { id: playerProgress anchors.left: playerIcon.right anchors.right: videoDlBtn.left - anchors.verticalCenter: playerIcon.verticalCenter anchors.leftMargin: 0 - anchors.bottomMargin: Theme.paddingMedium + anchors.bottomMargin: Theme.paddingLarge*1.5 } IconButton { id: videoDlBtn @@ -115,9 +134,9 @@ Page { anchors.right: parent.right anchors.bottom: parent.bottom anchors.rightMargin: Theme.paddingLarge - anchors.bottomMargin: Theme.paddingMedium - //width: Theme.iconSizeMedium+Theme.paddingMedium*2 - icon.source: "image://theme/icon-m-cloud-download" + anchors.bottomMargin: Theme.paddingLarge*1.5 + icon.source: "image://theme/icon-m-device-download" + icon.opacity: 0.0 onClicked: { var filename = mediaURL.split("/"); FileDownloader.downloadFile(mediaURL, filename[filename.length-1]); @@ -135,7 +154,7 @@ Page { anchors.centerIn: parent id: videoError width: parent.width - 2*Theme.paddingMedium - wrapMode: Text.WordWrap + wrapMode: Text.Wrap height: contentHeight visible: false; font.pixelSize: Theme.fontSizeSmall; @@ -165,7 +184,6 @@ Page { clip: true onHeightChanged: if (imagePreview.status === Image.Ready) imagePreview.fitToScreen(); - Item { id: imageContainer width: Math.max(imagePreview.width * imagePreview.scale, imageFlickable.width) @@ -173,22 +191,18 @@ Page { Image { id: imagePreview - property real prevScale - function fitToScreen() { scale = Math.min(imageFlickable.width / width, imageFlickable.height / height, 1) pinchArea.minScale = scale prevScale = scale } - anchors.centerIn: parent fillMode: Image.PreserveAspectFit cache: true asynchronous: true sourceSize.height: 1000; smooth: false - onStatusChanged: { if (status == Image.Ready) { fitToScreen() @@ -224,7 +238,6 @@ Page { opacity: 0.3 property real minScale: 1.0 property real maxScale: 3.0 - anchors.fill: parent enabled: imagePreview.status === Image.Ready pinch.target: imagePreview @@ -267,11 +280,9 @@ Page { Component { id: loadingIndicator - Item { height: childrenRect.height width: imagePage.width - ProgressCircle { id: imageLoadingIndicator anchors.horizontalCenter: parent.horizontalCenter @@ -293,9 +304,8 @@ Page { anchors.right: parent.right anchors.bottom: parent.bottom anchors.rightMargin: Theme.paddingLarge - anchors.bottomMargin: Theme.paddingMedium - //width: Theme.iconSizeMedium+Theme.paddingMedium*2 - icon.source: "image://theme/icon-m-cloud-download" + anchors.bottomMargin: Theme.paddingLarge*1.5 + icon.source: "image://theme/icon-m-device-download" onClicked: { var filename = mediaURL.split("/"); FileDownloader.downloadFile(mediaURL, filename[filename.length-1]); diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml index 3696c59..a9a0148 100644 --- a/qml/pages/components/InfoBanner.qml +++ b/qml/pages/components/InfoBanner.qml @@ -4,16 +4,15 @@ import Sailfish.Silica 1.0 DockedPanel { id: root - z: 100; - width: parent.width //- Theme.paddingLarge*4 - //x: Theme.paddingLarge*2 + z: 100 + width: parent.width height: content.height - dock: Dock.Bottom + dock: Dock.Top Rectangle { id: content width: root.width - height: infoLabel.height + 4*Theme.paddingMedium + height: infoLabel.height + 5*Theme.paddingMedium //anchors.topMargin: 20 color: Theme.highlightBackgroundColor opacity: 1.0 @@ -29,7 +28,7 @@ DockedPanel { wrapMode: Text.WrapAnywhere anchors { left: parent.left - leftMargin: Theme.horizontalPageMargin + leftMargin: Theme.horizontalPageMargin*2 right: parent.right rightMargin: Theme.horizontalPageMargin verticalCenter: parent.verticalCenter diff --git a/qml/pages/components/InfoBanner.qml.autosave b/qml/pages/components/InfoBanner.qml.autosave deleted file mode 100644 index 7921d05..0000000 --- a/qml/pages/components/InfoBanner.qml.autosave +++ /dev/null @@ -1,61 +0,0 @@ -import QtQuick 2.0 -import Sailfish.Silica 1.0 - - -DockedPanel { - id: root - z: 100; - width: parent.width - height: content.height - dock: Dock.Bottom - - Rectangle { - id: content - width: root.width - height: infoLabel.height + 4*Theme.paddingMedium - //anchors.topMargin: 20 - color: Theme.highlightBackgroundColor - opacity: 1.0 - - Label { - id: infoLabel - text : "" - color: Theme.primaryColor - font.family: Theme.fontFamilyHeading - font.pixelSize: Theme.fontSizeMedium - //font.weight: Font.Bold - width: parent.width - wrapMode: Text.WrapAnywhere - anchors { - left: parent.left - leftMargin: Theme.horizontalPageMargin - right: parent.right - rightMargin: Theme.ho rizontalPageMargin - verticalCenter: parent.verticalCenter - } - } - MouseArea { - anchors.fill: parent - onClicked: { - root.hide() - autoClose.stop() - } - } - } - - function showText(text) { - infoLabel.text = text - root.show() - autoClose.start() - } - - Timer { - id: autoClose - interval: 6000 - running: false - onTriggered: { - root.hide() - stop() - } - } -} diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml index e31af8d..069f954 100644 --- a/qml/pages/components/MediaBlock.qml +++ b/qml/pages/components/MediaBlock.qml @@ -74,8 +74,6 @@ Item { } } - - MyImage { id: placeholder1 width: 2 diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml index 6a9f6f9..06c420a 100644 --- a/qml/pages/components/MiniHeader.qml +++ b/qml/pages/components/MiniHeader.qml @@ -41,7 +41,6 @@ Item { : Theme.primaryColor) } - Label { id: lblScreenName anchors { diff --git a/qml/pages/components/Navigation.qml b/qml/pages/components/Navigation.qml index 30e5e81..b054e76 100644 --- a/qml/pages/components/Navigation.qml +++ b/qml/pages/components/Navigation.qml @@ -169,7 +169,5 @@ SilicaGridView { } - - VerticalScrollDecorator {} } diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml index c1b53ae..f2a4ddf 100644 --- a/qml/pages/components/ProfileHeader.qml +++ b/qml/pages/components/ProfileHeader.qml @@ -10,21 +10,22 @@ Item { property string bg: ""; width: parent.width height: icon.height + Theme.paddingLarge*2 - /*Image { - anchors.fill: parent - asynchronous: true - fillMode: Image.PreserveAspectCrop - source: bg - opacity: 0.3 - }*/ + Rectangle { + id: bgImage anchors.fill: parent opacity: 0.2 gradient: Gradient { GradientStop { position: 0.0; color: Theme.highlightBackgroundColor } - GradientStop { position: 1.0; color: Theme.highlightBackgroundColor } + GradientStop { position: 1.0; color: Theme.highlightBackgroundColor } + } + Image { + anchors.fill: bgImage + asynchronous: true + fillMode: Image.PreserveAspectCrop + source: bg + opacity: 0.8 } - } Image { id: icon diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml index d3a06e2..d05f36a 100644 --- a/qml/pages/components/VisualContainer.qml +++ b/qml/pages/components/VisualContainer.qml @@ -3,7 +3,6 @@ import Sailfish.Silica 1.0 import "../../lib/API.js" as Logic BackgroundItem { - id: delegate signal send (string notice) signal navigateTo(string link) @@ -28,6 +27,7 @@ BackgroundItem { topMargin: Theme.paddingMedium } } + Image { id: avatar anchors { @@ -50,7 +50,6 @@ BackgroundItem { ? Theme.highlightColor : Theme.primaryColor) } - MouseArea { anchors.fill: parent onClicked: { @@ -58,12 +57,12 @@ BackgroundItem { "display_name": model.account_display_name, "username": model.account_acct, "user_id": model.account_id, - "profileImage": model.account_avatar + "profileImage": model.account_avatar, + "profileBackground": model.account_header }) } } - Image { id: iconTR anchors { @@ -75,7 +74,7 @@ BackgroundItem { width: Theme.iconSizeExtraSmall height: width source: "image://theme/icon-s-retweet" - } + } Rectangle { color: Theme.highlightDimmerColor width: Theme.iconSizeSmall @@ -137,14 +136,19 @@ BackgroundItem { tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2]) slideshow.positionViewAtIndex(4, ListView.SnapToItem) navigation.navigateTo('search') - + // Original component + /* pageStack.push(Qt.resolvedUrl("../Profile.qml"), { + "name": "", + "username": test[3].substring(1)+"@"+test[2], + "profileImage": "" + }) */ } else { Qt.openUrlExternally(link); } } text: content.replace(new RegExp(" Toot sent! - + Toot gesendet! + + + Copy Link to Clipboard + Link kopieren ImageFullScreen Error loading - Fehler beim Laden + Ladefehler diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts index c926c14..df485eb 100644 --- a/translations/harbour-tooter-el.ts +++ b/translations/harbour-tooter-el.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Σφάλμα φόρτωσης + diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts index c52d603..195b8f5 100644 --- a/translations/harbour-tooter-es.ts +++ b/translations/harbour-tooter-es.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Error al cargar + diff --git a/translations/harbour-tooter-fi.ts b/translations/harbour-tooter-fi.ts index a1ec939..50a5f73 100644 --- a/translations/harbour-tooter-fi.ts +++ b/translations/harbour-tooter-fi.ts @@ -62,6 +62,10 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts index b3835ab..baafe35 100644 --- a/translations/harbour-tooter-fr.ts +++ b/translations/harbour-tooter-fr.ts @@ -60,14 +60,18 @@ Toot sent! - + Pouet envoyé ! + + + Copy Link to Clipboard + Copier le lien ImageFullScreen Error loading - Erreur de chargement + diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts index e62798d..5b5be12 100644 --- a/translations/harbour-tooter-it.ts +++ b/translations/harbour-tooter-it.ts @@ -28,52 +28,57 @@ Conversation - + + Copy Link to Clipboard + Copia link + + + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + Toot sent! - + Toot è stato pubblicato! - + Emojis Emojis - + Tap to insert Tap per inserire @@ -81,9 +86,9 @@ ImageFullScreen - + Error loading - Errore caricamento + Errore durante caricamento @@ -97,27 +102,27 @@ LoginPage - + Login Accesso - + Instance Istanza - + Enter a valid Mastodon instance URL Inserire URL di una istanza Mastodon valida - + Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly. Mastodon è un servizio di rete sociale in software libero, costituito in una federazione d'istanze. Mastodon fa parte del più ampio Fediverso, permettendo ai suoi utenti di interagire anche con utenti su diverse piattaforme aperte che supportano lo stesso protocollo. - + Reload Ricarica @@ -125,37 +130,37 @@ MainPage - + Home Home - + Notifications Notifiche - + Local Locale - + Federated Federazione - + Search Cerca - + @user or #term @utente o #termine - + New Toot Nuovo toot @@ -269,7 +274,7 @@ Biografia - + Open Profile in Browser Aprire profile nel browser @@ -388,22 +393,22 @@ VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts index 768c5a8..9c3e4b0 100644 --- a/translations/harbour-tooter-nl.ts +++ b/translations/harbour-tooter-nl.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Fout bij laden + diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts index 035f8b9..25d9369 100644 --- a/translations/harbour-tooter-nl_BE.ts +++ b/translations/harbour-tooter-nl_BE.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Fout bij laden + diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts index cf6f401..3319228 100644 --- a/translations/harbour-tooter-oc.ts +++ b/translations/harbour-tooter-oc.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Error en cargar + diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts index 7e97caa..4d7fe81 100644 --- a/translations/harbour-tooter-pl.ts +++ b/translations/harbour-tooter-pl.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Błąd ładowania + diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts index 724ec09..d47095f 100644 --- a/translations/harbour-tooter-ru.ts +++ b/translations/harbour-tooter-ru.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Ошибка при загрузке + diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts index 6080c74..52a0d2c 100644 --- a/translations/harbour-tooter-sr.ts +++ b/translations/harbour-tooter-sr.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Greška u učitavanju + diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts index 3e411bf..5cd3f54 100644 --- a/translations/harbour-tooter-sv.ts +++ b/translations/harbour-tooter-sv.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - Problem att ladda + diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts index fa8b314..b92289e 100644 --- a/translations/harbour-tooter-zh_CN.ts +++ b/translations/harbour-tooter-zh_CN.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + 复制链接到剪切板 + ImageFullScreen Error loading - 加载错误 + diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts index bf8ce75..0bf8406 100644 --- a/translations/harbour-tooter.ts +++ b/translations/harbour-tooter.ts @@ -62,12 +62,16 @@ Toot sent! + + Copy Link to Clipboard + + ImageFullScreen Error loading - +