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 @@
- 联合的
+ 联合
@@ -292,18 +292,18 @@
-
+ 使用 Transifex 以帮助翻译软件为你的语言
-
+ 开发及翻译
Toot
- 推起的
+ 推起
@@ -311,7 +311,7 @@
- 关注你的
+ 关注你
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
-
-
- Konversation
-
Löschen
@@ -62,6 +58,10 @@
Was gibt's Neues?
+
+
+
+
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
-
-
- Συνομιλία
-
Διαγραφή
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Conversación
-
Borrar
@@ -62,6 +58,10 @@
¿En qué estás pensando?
+
+
+
+
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
-
-
-
-
@@ -62,6 +58,10 @@
+
+
+
+
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
-
Supprimer
@@ -62,6 +58,10 @@
Qu'avez-vous en tête?
+
+
+
+
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
-
-
- Conversazione
-
-
-
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
+
+
+
+
+
Emojis
-
+
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
-
-
- Gesprek
-
Verwijderen
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Gesprek
-
Verwijderen
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Discutida
-
Escafar
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Konwersacja
-
Usuń
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Беседа
-
Удалить
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Разговор
-
Обриши
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- Konversation
-
Radera
@@ -62,6 +58,10 @@
+
+
+
+
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
-
-
- 对话
-
删除
@@ -62,6 +58,10 @@
有何想法?
+
+
+
+
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
-
Delete
@@ -62,6 +58,10 @@
+
+
+
+
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 gesendet!
+
+
+
+ Link kopieren
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- Σφάλμα φόρτωσης
+
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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
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 @@
-
+ Pouet envoyé !
+
+
+
+ Copier le lien
ImageFullScreen
- 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
-
+
+
+ Copia link
+
+
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
-
+ Toot è stato pubblicato!
-
+
Emojis
-
+
Tap per inserire
@@ -81,9 +86,9 @@
ImageFullScreen
-
+
- Errore caricamento
+ Errore durante caricamento
@@ -97,27 +102,27 @@
LoginPage
-
+
Accesso
-
+
Istanza
-
+
Inserire URL di una istanza Mastodon valida
-
+
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.
-
+
Ricarica
@@ -125,37 +130,37 @@
MainPage
-
+
Home
-
+
Notifiche
-
+
Locale
-
+
Federazione
-
+
Cerca
-
+
@utente o #termine
-
+
Nuovo toot
@@ -269,7 +274,7 @@
Biografia
-
+
Aprire profile nel browser
@@ -388,22 +393,22 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- Ошибка при загрузке
+
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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+
+
ImageFullScreen
- 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 @@
+
+
+ 复制链接到剪切板
+
ImageFullScreen
- 加载错误
+
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 @@
+
+
+
+
ImageFullScreen
-
+