From f91782c71ca174f50e34f5803228687dbbced03b Mon Sep 17 00:00:00 2001
From: dashinfantry <45334556+dashinfantry@users.noreply.github.com>
Date: Tue, 26 May 2020 14:12:09 +0800
Subject: [PATCH 01/70] Update harbour-tooterb-zh_CN.ts
---
translations/harbour-tooterb-zh_CN.ts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/translations/harbour-tooterb-zh_CN.ts b/translations/harbour-tooterb-zh_CN.ts
index b92289e..57ee00e 100644
--- a/translations/harbour-tooterb-zh_CN.ts
+++ b/translations/harbour-tooterb-zh_CN.ts
@@ -60,7 +60,7 @@
-
+ 已发送嘟嘟!
@@ -71,7 +71,7 @@
ImageFullScreen
-
+ 加载错误
@@ -288,11 +288,11 @@
-
+ 加载嘟嘟图片
-
+ 翻译
From fd2f317f254ecb1e16f9ecbef0fddc45c389b240 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 29 May 2020 20:05:05 +0200
Subject: [PATCH 02/70] Add / improve UI elements
- new ProfilePage expander
- flexible UI elements for various screensizes
- various UI changes
- code refactoring
---
harbour-tooter.desktop | 5 -
harbour-tooter.pro | 8 +-
qml/cover/CoverPage.qml | 4 +-
qml/harbour-tooter.qml | 71 ++--
qml/lib/Mastodon.js | 16 +-
...{Conversation.qml => ConversationPage.qml} | 314 ++++++---------
qml/pages/LoginPage.qml | 32 +-
qml/pages/MainPage.qml | 53 +--
qml/pages/Profile.qml | 306 --------------
qml/pages/ProfilePage.qml | 374 ++++++++++++++++++
qml/pages/{Settings.qml => SettingsPage.qml} | 22 +-
qml/pages/components/EmojiSelect.qml | 165 ++++++++
qml/pages/components/ImageFullScreen.qml | 70 ++--
qml/pages/components/InfoBanner.qml | 3 +-
qml/pages/components/ItemUser.qml | 10 +-
qml/pages/components/MediaBlock.qml | 5 +-
qml/pages/components/MiniHeader.qml | 4 +-
qml/pages/components/MiniStatus.qml | 5 +-
qml/pages/components/MyImage.qml | 4 +-
qml/pages/components/MyList.qml | 42 +-
qml/pages/components/Navigation.qml | 17 +-
qml/pages/components/ProfileHeader.qml | 13 +-
qml/pages/components/Toot.qml | 44 +--
qml/pages/components/VisualContainer.qml | 27 +-
translations/harbour-tooter.ts | 33 +-
25 files changed, 868 insertions(+), 779 deletions(-)
rename qml/pages/{Conversation.qml => ConversationPage.qml} (56%)
delete mode 100644 qml/pages/Profile.qml
create mode 100644 qml/pages/ProfilePage.qml
rename qml/pages/{Settings.qml => SettingsPage.qml} (97%)
create mode 100644 qml/pages/components/EmojiSelect.qml
diff --git a/harbour-tooter.desktop b/harbour-tooter.desktop
index 0488e61..213b20f 100644
--- a/harbour-tooter.desktop
+++ b/harbour-tooter.desktop
@@ -4,8 +4,3 @@ X-Nemo-Application-Type=silica-qt5
Icon=harbour-tooter
Exec=harbour-tooter
Name=Tooter
-# translation example:
-# your app name in German locale (de)
-#
-# Remember to comment out the following line, if you do not want to use
-# a different app name in German locale (de).
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index 026fe41..5242229 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -53,6 +53,9 @@ HEADERS += src/dbusAdaptor.h
HEADERS += src/dbus.h
DISTFILES += qml/harbour-tooter.qml \
+ qml/pages/ConversationPage.qml \
+ qml/pages/ProfilePage.qml \
+ qml/pages/SettingsPage.qml \
qml/pages/components/InfoBanner.qml \
qml/pages/components/VisualContainer.qml \
qml/pages/components/MiniStatus.qml \
@@ -67,11 +70,8 @@ DISTFILES += qml/harbour-tooter.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 \
@@ -95,7 +95,7 @@ SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
# to disable building translations every time, comment out the
# following CONFIG line
-CONFIG += sailfishapp_i18n
+# CONFIG += sailfishapp_i18n
# German translation is enabled as an example. If you aren't
# planning to localize your app, remember to comment out the
diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml
index 770124c..4080b51 100644
--- a/qml/cover/CoverPage.qml
+++ b/qml/cover/CoverPage.qml
@@ -30,9 +30,9 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
-
import "../lib/API.js" as Logic
+
CoverBackground {
onStatusChanged: {
switch (status ){
@@ -135,5 +135,5 @@ CoverBackground {
notificationsLbl.text = notificationsNum;
Logic.conf.notificationLastID = notificationLastID;
}
-}
+}
diff --git a/qml/harbour-tooter.qml b/qml/harbour-tooter.qml
index 7b23d5e..60b34c8 100644
--- a/qml/harbour-tooter.qml
+++ b/qml/harbour-tooter.qml
@@ -33,41 +33,39 @@ import Sailfish.Silica 1.0
import "pages"
import "./lib/API.js" as Logic
-ApplicationWindow
-{
+ApplicationWindow {
id: appWindow
- //initialPage: Component { FirstPage { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
allowedOrientations: defaultAllowedOrientations
Component.onCompleted: {
- var obj = {};
- Logic.mediator.installTo(obj);
- obj.subscribe('confLoaded', function(){
+ var obj = {}
+ Logic.mediator.installTo(obj)
+ obj.subscribe('confLoaded', function() {
console.log('confLoaded');
//console.log(JSON.stringify(Logic.conf))
if (!Logic.conf['notificationLastID'])
- Logic.conf['notificationLastID'] = 0;
+ Logic.conf['notificationLastID'] = 0
+
if (Logic.conf['instance']) {
- Logic.api = new Logic.MastodonAPI({ instance: Logic.conf['instance'], api_user_token: "" });
+ Logic.api = new Logic.MastodonAPI({
+ "instance": Logic.conf['instance'],
+ "api_user_token": ""
+ })
}
+
if (Logic.conf['login']) {
- //Logic.conf['notificationLastID'] = 0
- Logic.api.setConfig("api_user_token", Logic.conf['api_user_token'])
- //accounts/verify_credentials
- Logic.api.get('instance', [], function(data) {
- console.log(JSON.stringify(data))
- pageStack.push(Qt.resolvedUrl("./pages/MainPage.qml"), {})
- });
-
- //
- //
- //pageStack.push(Qt.resolvedUrl("./pages/Conversation.qml"), {})
+ //Logic.conf['notificationLastID'] = 0
+ Logic.api.setConfig("api_user_token", Logic.conf['api_user_token'])
+ //accounts/verify_credentials
+ Logic.api.get('instance', [], function(data) {
+ console.log(JSON.stringify(data))
+ pageStack.push(Qt.resolvedUrl("./pages/MainPage.qml"), {})
+ })
+ //pageStack.push(Qt.resolvedUrl("./pages/Conversation.qml"), {})
} else {
- pageStack.push(Qt.resolvedUrl("./pages/LoginPage.qml"), {})
+ pageStack.push(Qt.resolvedUrl("./pages/LoginPage.qml"), {})
}
-
-
- });
+ })
Logic.init()
}
@@ -75,19 +73,18 @@ ApplicationWindow
//Logic.conf.notificationLastID = 0;
Logic.saveData()
}
- Connections
- {
- target: Dbus
- onViewtoot:
- {
- console.log(key, "dbus onViewtoot")
- }
- onActivateapp:
- {
- console.log ("dbus activate app")
- pageStack.pop(pageStack.find( function(page){ return (page._depth === 0) }))
- activate()
- }
+ Connections {
+ target: Dbus
+ onViewtoot: {
+ console.log(key, "dbus onViewtoot")
}
-}
+ onActivateapp: {
+ console.log ("dbus activate app")
+ pageStack.pop(pageStack.find( function(page) {
+ return (page._depth === 0)
+ }))
+ activate()
+ }
+ }
+}
diff --git a/qml/lib/Mastodon.js b/qml/lib/Mastodon.js
index 8a8e4c6..03cfb17 100644
--- a/qml/lib/Mastodon.js
+++ b/qml/lib/Mastodon.js
@@ -56,8 +56,8 @@ var MastodonAPI = function(config) {
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() { // Call a function when the state changes.
- if (http.readyState == 4) {
- if (http.status == 200) {
+ if (http.readyState === 4) {
+ if (http.status === 200) {
console.log("Successful GET API request to " +apiBase+endpoint);
callback(JSON.parse(http.response),http.status)
} else {
@@ -91,8 +91,8 @@ var MastodonAPI = function(config) {
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() { // Call a function when the state changes.
- if (http.readyState == 4) {
- if (http.status == 200) {
+ if (http.readyState === 4) {
+ if (http.status === 200) {
console.log("Successful POST API request to " +apiBase+endpoint);
callback(JSON.parse(http.response),http.status)
} else {
@@ -180,8 +180,8 @@ var MastodonAPI = function(config) {
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.onreadystatechange = function() { // Call a function when the state changes.
- if (http.readyState == 4) {
- if (http.status == 200) {
+ if (http.readyState === 4) {
+ if (http.status === 200) {
console.log("Registered Application: " + http.response);
callback(http.response)
} else {
@@ -221,8 +221,8 @@ var MastodonAPI = function(config) {
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.onreadystatechange = function() { // Call a function when the state changes.
- if (http.readyState == 4) {
- if (http.status == 200) {
+ if (http.readyState === 4) {
+ if (http.status === 200) {
console.log("Got Token: " + http.response);
callback(http.response)
} else {
diff --git a/qml/pages/Conversation.qml b/qml/pages/ConversationPage.qml
similarity index 56%
rename from qml/pages/Conversation.qml
rename to qml/pages/ConversationPage.qml
index 0fb4c91..c39f9d3 100644
--- a/qml/pages/Conversation.qml
+++ b/qml/pages/ConversationPage.qml
@@ -9,9 +9,9 @@ Page {
id: conversationPage
property string headerTitle: ""
property string type
- property alias title: header.title
- property alias description: header.description
- property alias avatar: header.image
+ property alias title: header.title
+ property alias description: header.description
+ property alias avatar: header.image
property string suggestedUser: ""
property ListModel suggestedModel
property string toot_id: ""
@@ -66,6 +66,7 @@ Page {
id: header
visible: false
}
+
SilicaListView {
id: conversationList
header: PageHeader {
@@ -97,6 +98,7 @@ Page {
}
}
}
+
PullDownMenu {
visible: type == "reply" && toot_url != ""
/* MenuItem {
@@ -110,19 +112,24 @@ Page {
}
}
}
+
Rectangle {
id: predictionList
visible: false
anchors.bottom: panel.top
anchors.left: parent.left
anchors.right: panel.right
- height: suggestedModel.count > 6 ? Theme.itemSizeMedium * 6 : Theme.itemSizeMedium * suggestedModel.count
+ anchors.top: parent.top
+ height: implicitHeight
+ //height: suggestedModel.count > 6 ? Theme.itemSizeMedium * 6 : Theme.itemSizeMedium * suggestedModel.count
color: Theme.highlightDimmerColor
SilicaListView {
anchors.fill: parent
model: suggestedModel
clip: true
+ quickScroll: false
+ VerticalScrollDecorator {}
delegate: ItemUser {
onClicked: {
var start = toot.cursorPosition
@@ -149,19 +156,19 @@ Page {
DockedPanel {
id: panel
- open: true
- onExpandedChanged: {
- if (!expanded) {
- show()
- }
- }
-
+ open: true
+ //onExpandedChanged: {
+ // if (!expanded) {
+ // show()
+ // }
+ //}
width: parent.width
- height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
+ height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
+ btnContentWarning.height + Theme.paddingMedium
- + (warningContent.visible ? warningContent.height : 0)
- dock: Dock.Bottom
- Rectangle {
+ + (warningContent.visible ? warningContent.height : 0)
+ dock: Dock.Bottom
+
+ Rectangle {
width: parent.width
height: progressBar.height
color: Theme.highlightBackgroundColor
@@ -172,15 +179,16 @@ Page {
top: parent.top
}
}
+
Rectangle {
id: progressBar
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
- height: Theme.itemSizeSmall * 0.05
+ height: Theme.itemSizeSmall * 0.05
color: Theme.highlightBackgroundColor
opacity: 0.7
anchors {
left: parent.left
- top: parent.top
+ top: parent.top
}
}
@@ -189,7 +197,7 @@ Page {
visible: false
height: visible ? implicitHeight : 0
anchors {
- top: parent.top
+ top: parent.top
topMargin: Theme.paddingMedium
left: parent.left
right: parent.right
@@ -201,10 +209,9 @@ Page {
placeholderColor: palette.highlightColor
color: palette.highlightColor
horizontalAlignment: Text.AlignLeft
- EnterKey.onClicked: {
- //tweet()
- }
+ EnterKey.onClicked: {}
}
+
TextInput {
id: textOperations
visible: false
@@ -221,17 +228,19 @@ Page {
}
autoScrollEnabled: true
labelVisible: false
- //focus: true
- text: description !== "" && (description.charAt(0) == '@'
+ text: description !== "" && (description.charAt(0) === '@'
|| description.charAt(
- 0) == '#') ? description + ' ' : ''
- height: Math.max(270, Math.min(900, implicitHeight))
+ 0) === '#') ? description + ' ' : ''
+ height: if (type !== "reply") {
+ Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
+ }
+ else {
+ Math.max(conversationPage.height / 4, Math.min(conversationPage.height * 0.65, implicitHeight))
+ }
horizontalAlignment: Text.AlignLeft
placeholderText: qsTr("What's on your mind?")
font.pixelSize: Theme.fontSizeSmall
- EnterKey.onClicked: {
- //tweet()
- }
+ EnterKey.onClicked: {}
onTextChanged: {
textOperations.text = toot.text
textOperations.cursorPosition = toot.cursorPosition
@@ -247,45 +256,46 @@ Page {
}
}
}
+
IconButton {
id: btnSmileys
- property string selection
+ property string selection
onSelectionChanged: {
- console.log(selection)
- }
-
+ console.log(selection)
+ }
anchors {
top: warningContent.bottom
bottom: bottom.top
right: parent.right
rightMargin: Theme.paddingSmall
}
- opacity: 0.8
- icon.source: "../../qml/images/emojiselect.svg" + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
- onClicked: pageStack.push(firstWizardPage)
+ opacity: 0.6
+ icon.source: "../../qml/images/emojiselect.svg"
+ onClicked: pageStack.push(emojiSelect)
}
+
SilicaGridView {
id: uploadedImages
width: parent.width
anchors.top: bottom.toot
anchors.bottom: parent.bottom
- height: mediaModel.count ? Theme.itemSizeSmall : 0
- model: mediaModel
+ height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
+ model: mediaModel
cellWidth: uploadedImages.width / 4
- cellHeight: Theme.itemSizeSmall
+ cellHeight: Theme.itemSizeExtraLarge
delegate: BackgroundItem {
id: myDelegate
width: uploadedImages.cellWidth
height: uploadedImages.cellHeight
RemorseItem {
- id: remorse
+ id: remorse
}
+
Image {
anchors.fill: parent
fillMode: Image.PreserveAspectCrop
source: model.preview_url
}
-
onClicked: {
var idx = index
console.log(idx)
@@ -303,7 +313,6 @@ Page {
duration: 800
}
}
-
remove: Transition {
NumberAnimation {
property: "opacity"
@@ -320,6 +329,7 @@ Page {
}
}
}
+
IconButton {
id: btnContentWarning
anchors {
@@ -332,6 +342,7 @@ Page {
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
onClicked: warningContent.visible = !warningContent.visible
}
+
IconButton {
id: btnAddImage
enabled: mediaModel.count < 4
@@ -357,21 +368,18 @@ Page {
})
}
}
+
ImageUploader {
id: imageUploader
-
onProgressChanged: {
console.log("progress " + progress)
uploadProgress.width = parent.width * progress
}
-
onSuccess: {
uploadProgress.width = 0
console.log(replyData)
-
mediaModel.append(JSON.parse(replyData))
}
-
onFailure: {
uploadProgress.width = 0
btnAddImage.enabled = true
@@ -379,15 +387,16 @@ Page {
console.log(statusText)
}
}
+
ComboBox {
- id: privacy
+ id: privacy
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
left: btnAddImage.right
- right: btnSend.left
- }
- menu: ContextMenu {
+ right: btnSend.left
+ }
+ menu: ContextMenu {
MenuItem {
text: qsTr("Public")
}
@@ -421,7 +430,6 @@ Page {
console.log(mediaModel.get(k).id)
media_ids.push(mediaModel.get(k).id)
}
-
var msg = {
"action": 'statuses',
"method": 'POST',
@@ -445,7 +453,7 @@ Page {
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
- mediaModel.clear();
+ mediaModel.clear()
sentBanner.showText(qsTr("Toot sent!"))
}
}
@@ -453,11 +461,12 @@ Page {
Rectangle {
id: uploadProgress
color: Theme.highlightBackgroundColor
- anchors.bottom: parent.bottom
+ anchors.bottom: parent.bottom
anchors.left: parent.left
- height: 3
+ height: Theme.itemSizeSmall * 0.05
}
}
+
Component.onCompleted: {
toot.cursorPosition = toot.text.length
if (mdl.count > 0) {
@@ -490,157 +499,64 @@ Page {
"conf": Logic.conf
})
}
- Component {
- id: firstWizardPage
- Dialog {
- id: emoticonsDialog
- canAccept: false //selector.currentIndex >= 0
+ BackgroundItem {
+ id: showPanel
+ visible: !panel.open
+ height: Theme.paddingMedium
+ width: parent.width
+ opacity: enabled ? 1.0 : 0.0
+ Behavior on opacity { FadeAnimator {} }
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ bottom: parent.bottom
+ }
- //acceptDestination: conversationPage
- onAcceptPendingChanged: {
- if (acceptPending) {
+ MouseArea {
+ anchors.fill: parent
+ onClicked: panel.open = !panel.open
+ }
- // Tell the destination page what the selected category is
- // acceptDestinationInstance.category = selector.value
- }
- }
+ Rectangle {
+ width: parent.width
+ height: progressBarShowPanel.height
+ color: Theme.highlightBackgroundColor
+ opacity: 0.2
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ }
+ }
- SilicaGridView {
- id: gridView
- anchors.fill: parent
- cellWidth: gridView.width / 6
- cellHeight: cellWidth
- header: PageHeader {
- title: qsTr("Emojis")
- description: qsTr("Tap to insert")
- }
- model: ListModel {
- ListElement { section: "smileys"; glyph: "😁" }
- ListElement { section: "smileys"; glyph: "😂" }
- ListElement { section: "smileys"; glyph: "😃" }
- ListElement { section: "smileys"; glyph: "😄" }
- ListElement { section: "smileys"; glyph: "😅" }
- ListElement { section: "smileys"; glyph: "😆" }
- ListElement { section: "smileys"; glyph: "😉" }
- ListElement { section: "smileys"; glyph: "😊" }
- ListElement { section: "smileys"; glyph: "😋" }
- ListElement { section: "smileys"; glyph: "😌" }
- ListElement { section: "smileys"; glyph: "😍" }
- ListElement { section: "smileys"; glyph: "😏" }
- ListElement { section: "smileys"; glyph: "😒" }
- ListElement { section: "smileys"; glyph: "😓" }
- ListElement { section: "smileys"; glyph: "😔" }
- ListElement { section: "smileys"; glyph: "😖" }
- ListElement { section: "smileys"; glyph: "😘" }
- ListElement { section: "smileys"; glyph: "😚" }
- ListElement { section: "smileys"; glyph: "😜" }
- ListElement { section: "smileys"; glyph: "😝" }
- ListElement { section: "smileys"; glyph: "😞" }
- ListElement { section: "smileys"; glyph: "😠" }
- ListElement { section: "smileys"; glyph: "😡" }
- ListElement { section: "smileys"; glyph: "😢" }
- ListElement { section: "smileys"; glyph: "😣" }
- ListElement { section: "smileys"; glyph: "😤" }
- ListElement { section: "smileys"; glyph: "😥" }
- ListElement { section: "smileys"; glyph: "😨" }
- ListElement { section: "smileys"; glyph: "😩" }
- ListElement { section: "smileys"; glyph: "😪" }
- ListElement { section: "smileys"; glyph: "😫" }
- ListElement { section: "smileys"; glyph: "😭" }
- ListElement { section: "smileys"; glyph: "😰" }
- ListElement { section: "smileys"; glyph: "😱" }
- ListElement { section: "smileys"; glyph: "😲" }
- ListElement { section: "smileys"; glyph: "😳" }
- ListElement { section: "smileys"; glyph: "😵" }
- ListElement { section: "smileys"; glyph: "😷" }
- ListElement { section: "smileys"; glyph: "😸" }
- ListElement { section: "smileys"; glyph: "😹" }
- ListElement { section: "smileys"; glyph: "😺" }
- ListElement { section: "smileys"; glyph: "😻" }
- ListElement { section: "smileys"; glyph: "😼" }
- ListElement { section: "smileys"; glyph: "😽" }
- ListElement { section: "smileys"; glyph: "😾" }
- ListElement { section: "smileys"; glyph: "😿" }
- ListElement { section: "smileys"; glyph: "🙀" }
- ListElement { section: "smileys"; glyph: "🙅" }
- ListElement { section: "smileys"; glyph: "🙆" }
- ListElement { section: "smileys"; glyph: "🙇" }
- ListElement { section: "smileys"; glyph: "🙈" }
- ListElement { section: "smileys"; glyph: "🙉" }
- ListElement { section: "smileys"; glyph: "🙊" }
- ListElement { section: "smileys"; glyph: "🙋" }
- ListElement { section: "smileys"; glyph: "🙌" }
- ListElement { section: "smileys"; glyph: "🙍" }
- ListElement { section: "smileys"; glyph: "🙎" }
- ListElement { section: "smileys"; glyph: "🙏" }
+ Rectangle {
+ color: Theme.highlightBackgroundColor
+ opacity: 0.2
+ height: showPanel.height
+ width: showPanel.width
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ top: parent.top
+ bottom: parent.bottom
+ }
+ }
- ListElement { section: "Transport and map"; glyph: "🚀" }
- ListElement { section: "Transport and map"; glyph: "🚃" }
- ListElement { section: "Transport and map"; glyph: "🚀" }
- ListElement { section: "Transport and map"; glyph: "🚄" }
- ListElement { section: "Transport and map"; glyph: "🚅" }
- ListElement { section: "Transport and map"; glyph: "🚇" }
- ListElement { section: "Transport and map"; glyph: "🚉" }
- ListElement { section: "Transport and map"; glyph: "🚌" }
- ListElement { section: "Transport and map"; glyph: "🚏" }
- ListElement { section: "Transport and map"; glyph: "🚑" }
- ListElement { section: "Transport and map"; glyph: "🚒" }
- ListElement { section: "Transport and map"; glyph: "🚓" }
- ListElement { section: "Transport and map"; glyph: "🚕" }
- ListElement { section: "Transport and map"; glyph: "🚗" }
- ListElement { section: "Transport and map"; glyph: "🚙" }
- ListElement { section: "Transport and map"; glyph: "🚚" }
- ListElement { section: "Transport and map"; glyph: "🚢" }
- ListElement { section: "Transport and map"; glyph: "🚨" }
- ListElement { section: "Transport and map"; glyph: "🚩" }
- ListElement { section: "Transport and map"; glyph: "🚪" }
- ListElement { section: "Transport and map"; glyph: "🚫" }
- ListElement { section: "Transport and map"; glyph: "🚬" }
- ListElement { section: "Transport and map"; glyph: "🚭" }
- ListElement { section: "Transport and map"; glyph: "🚲" }
- ListElement { section: "Transport and map"; glyph: "🚶" }
- ListElement { section: "Transport and map"; glyph: "🚹" }
- ListElement { section: "Transport and map"; glyph: "🚺" }
- ListElement { section: "Transport and map"; glyph: "🚻" }
- ListElement { section: "Transport and map"; glyph: "🚼" }
- ListElement { section: "Transport and map"; glyph: "🚽" }
- ListElement { section: "Transport and map"; glyph: "🚾" }
- ListElement { section: "Transport and map"; glyph: "🛀" }
+ Rectangle {
+ id: progressBarShowPanel
+ width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
+ height: Theme.itemSizeSmall * 0.05
+ color: Theme.highlightBackgroundColor
+ opacity: 0.7
+ anchors {
+ left: parent.left
+ top: parent.top
+ }
+ }
- ListElement { section: "Horoscope Signs"; glyph: "♈" }
- ListElement { section: "Horoscope Signs"; glyph: "♉" }
- ListElement { section: "Horoscope Signs"; glyph: "♊" }
- ListElement { section: "Horoscope Signs"; glyph: "♋" }
- ListElement { section: "Horoscope Signs"; glyph: "♌" }
- ListElement { section: "Horoscope Signs"; glyph: "♍" }
- ListElement { section: "Horoscope Signs"; glyph: "♎" }
- ListElement { section: "Horoscope Signs"; glyph: "♏" }
- ListElement { section: "Horoscope Signs"; glyph: "♐" }
- ListElement { section: "Horoscope Signs"; glyph: "♑" }
- ListElement { section: "Horoscope Signs"; glyph: "♒" }
- ListElement { section: "Horoscope Signs"; glyph: "♓" }
- }
- delegate: BackgroundItem {
- width: gridView.cellWidth
- height: gridView.cellHeight
- Label {
- anchors.centerIn: parent
- color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
- font.pixelSize: Theme.fontSizeLarge
- text: glyph
- }
- onClicked: {
- var cursorPosition = toot.cursorPosition
- toot.text = toot.text.substring(
- 0, cursorPosition) + model.glyph + toot.text.substring(
- cursorPosition)
- toot.cursorPosition = cursorPosition + model.glyph.length
- emoticonsDialog.canAccept = true
- emoticonsDialog.accept()
- }
- }
- }
- }
+ }
+
+ EmojiSelect {
+ id: emojiSelect
}
+
}
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index b1d2064..7751cdf 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -1,33 +1,3 @@
-/*
- Copyright (C) 2013 Jolla Ltd.
- Contact: Thomas Perl
- All rights reserved.
-
- You may use this file under the terms of BSD license as follows:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Jolla Ltd nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
import QtQuick 2.0
import QtWebKit 3.0
import Sailfish.Silica 1.0
@@ -192,5 +162,5 @@ Page {
}
}
}
-}
+}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index e273c23..9dcff9a 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -1,33 +1,3 @@
-/*
- Copyright (C) 2013 Jolla Ltd.
- Contact: Thomas Perl
- All rights reserved.
-
- You may use this file under the terms of BSD license as follows:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Jolla Ltd nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
import QtQuick 2.0
import Sailfish.Silica 1.0
import "../lib/API.js" as Logic
@@ -37,7 +7,7 @@ import "./components/"
Page {
id: mainPage
property bool isFirstPage: true
- property bool isTablet: true; //Screen.sizeCategory >= Screen.Large
+ property bool isTablet: true //Screen.sizeCategory >= Screen.Large
// The effective value will be restricted by ApplicationWindow.allowedOrientations
allowedOrientations: Orientation.All
@@ -185,7 +155,7 @@ Page {
delegate: ItemUser {
onClicked: {
- pageStack.push(Qt.resolvedUrl("Profile.qml"), {
+ pageStack.push(Qt.resolvedUrl("ProfilePage.qml"), {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
@@ -207,7 +177,6 @@ Page {
}
-
SlideshowView {
id: slideshow
width: parent.width
@@ -233,6 +202,11 @@ Page {
}
IconButton {
+ id: newTweet
+ width: Theme.iconSizeLarge
+ height: width
+ visible: !isPortrait ? true : !infoPanel.open
+ icon.source: "image://theme/icon-l-add"
anchors {
right: (mainPage.isPortrait ? parent.right : infoPanel.left)
bottom: (mainPage.isPortrait ? infoPanel.top : parent.bottom)
@@ -241,14 +215,11 @@ Page {
bottom: Theme.paddingLarge
}
}
-
- id: newTweet
- width: Theme.iconSizeLarge
- height: width
- visible: !isPortrait ? true : !infoPanel.open
- icon.source: "image://theme/icon-l-add"
onClicked: {
- pageStack.push(Qt.resolvedUrl("Conversation.qml"), {headerTitle: qsTr("New Toot"), type: "new"})
+ pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
+ headerTitle: qsTr("New Toot"),
+ type: "new"
+ })
}
}
@@ -274,5 +245,5 @@ Page {
Component.onCompleted: {
console.log("aaa")
}
-}
+}
diff --git a/qml/pages/Profile.qml b/qml/pages/Profile.qml
deleted file mode 100644
index 3f39db7..0000000
--- a/qml/pages/Profile.qml
+++ /dev/null
@@ -1,306 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import "../lib/API.js" as Logic
-import "./components/"
-import QtGraphicalEffects 1.0
-
-Page {
- property ListModel tweets;
- property string display_name : "";
- property string username : "";
- property string profileImage : "";
- property int user_id;
- property int statuses_count;
- property int following_count;
- property int followers_count;
- property int favourites_count;
- property int reblogs_count;
- property int count_moments;
- property string profileBackground: "";
- property string note: "";
- property string url: "";
-
- property bool locked : false;
- property date created_at;
- property bool following : false;
- property bool requested : false;
- property bool followed_by : false;
- property bool blocking : false;
- property bool muting : false;
- property bool domain_blocking : false;
-
-
- WorkerScript {
- id: worker
- source: "../lib/Worker.js"
- onMessage: {
- console.log(JSON.stringify(messageObject))
- if(messageObject.action.indexOf("accounts/search") > -1 ){
- user_id = messageObject.data.id
- followers_count = messageObject.data.followers_count
- following_count = messageObject.data.following_count
- 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/",
- 'params' : [ {name: "id", data: user_id}],
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- list.loadData("prepend")
- }
-
- if(messageObject.action === "accounts/relationships/"){
- console.log(JSON.stringify(messageObject))
- following= messageObject.data.following
- requested= messageObject.data.requested
- followed_by= messageObject.data.followed_by
- blocking= messageObject.data.blocking
- muting= messageObject.data.muting
- domain_blocking= messageObject.data.domain_blocking
- }
- switch (messageObject.key) {
- case 'followers_count':
- followers_count = messageObject.data
- break;
- case 'following_count':
- following_count = messageObject.data
- break;
- case 'acct':
- // line below was commented out, reason unknown
- // username = messageObject.data
- break;
- case 'locked':
- locked = messageObject.data
- break;
- case 'created_at':
- created_at = messageObject.data
- break;
- case 'statuses_count':
- statuses_count = messageObject.data
- break;
- case 'note':
- note = messageObject.data
- break;
- case 'url':
- url = messageObject.data
- break;
- case 'following':
- following = messageObject.data
- followers_count = followers_count + (following ? 1 : - 1)
- break;
- case 'muting':
- muting = messageObject.data
- break;
- case 'muting':
- muting = messageObject.data
- break;
- case 'blocking':
- blocking = messageObject.data
- followers_count = followers_count + (blocking ? -1 : 0)
- break;
- case 'followed_by':
- followed_by = messageObject.data
- break;
- }
- }
- }
- // The effective value will be restricted by ApplicationWindow.allowedOrientations
- allowedOrientations: Orientation.All
- Component.onCompleted: {
- var msg;
-
- if (user_id) {
- msg = {
- 'action' : "accounts/relationships/",
- 'params' : [ {name: "id", data: user_id}],
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- msg = {
- 'action' : "accounts/"+user_id,
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- } else {
- var instance = Logic.conf['instance'].split("//")
- msg = {
- 'action' : "accounts/search?limit=1&q="+username.replace("@"+instance[1], ""),
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- }
- }
-
-
- MyList {
- id: list
- header: ProfileHeader {
- id: header
- title: display_name
- description: username
- image: profileImage
- bg: profileBackground
- }
-
- anchors {
- top: parent.top
- bottom: expander.top
- left: parent.left
- right: parent.right
- }
- clip: true
-
- mdl: ListModel {}
- type: "accounts/"+user_id+"/statuses"
- vars: {}
- conf: Logic.conf
- }
-
- ExpandingSectionGroup {
- id: expander
- //currentIndex: 0
- anchors {
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
- ExpandingSection {
- title: qsTr("Summary")
- content.sourceComponent: Column {
- spacing: Theme.paddingMedium
- anchors.bottomMargin: Theme.paddingLarge
- DetailItem {
- visible: followers_count ? true : false
- label: qsTr("Followers")
- value: followers_count
- }
- DetailItem {
- visible: following_count ? true : false
- label: qsTr("Following")
- value: (following_count)
- }
- DetailItem {
- visible: statuses_count ? true : false
- label: qsTr("Statuses")
- value: (statuses_count)
- }
- DetailItem {
- visible: favourites_count ? true : false
- label: qsTr("Favourites")
- value: (favourites_count)
- }
-
- Column {
- spacing: Theme.paddingMedium
- anchors.horizontalCenter: parent.horizontalCenter
- Button {
- id: btnFollow
- text: (following ? qsTr("Unfollow") : (requested ? qsTr("Follow request sent!") : qsTr("Follow")))
- onClicked: {
- var msg = {
- 'method' : 'POST',
- 'params' : [],
- 'action' : "accounts/" + user_id + (following ? '/unfollow':'/follow'),
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- }
- }
- Button {
- id: btnMute
- text: (muting ? qsTr("Unmute") : qsTr("Mute"))
- onClicked: {
- var msg = {
- 'method' : 'POST',
- 'params' : [],
- 'action' : "accounts/" + user_id + (muting ? '/unmute':'/mute'),
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- }
- }
- Button {
- id: btnBlock
- text: (blocking ? qsTr("Unblock") : qsTr("Block") )
- onClicked: {
- var msg = {
- 'method' : 'POST',
- 'params' : [],
- 'action' : "accounts/" + user_id + (blocking ? '/unblock':'/block'),
- 'conf' : Logic.conf
- };
- worker.sendMessage(msg);
- }
- }
- }
- Label {
- text: " "
- }
- }
-
- }
- ExpandingSection {
- title: qsTr("Bio")
- content.sourceComponent: Column {
- spacing: Theme.paddingMedium
- anchors.bottomMargin: Theme.paddingLarge
- Text {
- x: Theme.horizontalPageMargin
- width: parent.width - ( 2 * Theme.horizontalPageMargin )
- id: txtnote
- text: note
- font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.secondaryColor
- linkColor: Theme.secondaryHighlightColor
- wrapMode: Text.Wrap
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
- onLinkActivated: {
- var test = link.split("/")
- console.log(link)
- console.log(JSON.stringify(test))
- console.log(JSON.stringify(test.length))
-
- if (test.length === 5 && (test[3] === "tags" || test[3] === "tag") ) {
- pageStack.pop(pageStack.find(function(page) {
- var check = page.isFirstPage === true;
- if (check)
- page.onLinkActivated(link)
- return check;
- }));
- send(link)
-
- // function still missing for user accounts
- // } else if (test.length === 4 && test[3][0] === "@" ) {
-
- } else {
- Qt.openUrlExternally(link);
- }
- }
-
- }
- Column {
- spacing: Theme.paddingMedium
- anchors.horizontalCenter: parent.horizontalCenter
- Button {
- text: qsTr("Open Profile in Browser")
- onClicked: {
- Qt.openUrlExternally(url);
- }
- }
- }
- Label {
- text: " "
- }
- }
- }
- }
-
-
-
-}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
new file mode 100644
index 0000000..0247b72
--- /dev/null
+++ b/qml/pages/ProfilePage.qml
@@ -0,0 +1,374 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import "../lib/API.js" as Logic
+import "./components/"
+import QtGraphicalEffects 1.0
+
+
+Page {
+ id: profilePage
+ property ListModel tweets
+ property string display_name: ""
+ property string username: ""
+ property string profileImage: ""
+ property int user_id
+ property int statuses_count
+ property int following_count
+ property int followers_count
+ property int favourites_count
+ property int reblogs_count
+ property int count_moments
+ property string profileBackground: ""
+ property string note: ""
+ property string url: ""
+ property bool locked: false
+ property date created_at
+ property bool following: false
+ property bool requested: false
+ property bool followed_by: false
+ property bool blocking: false
+ property bool muting: false
+ property bool domain_blocking: false
+
+ WorkerScript {
+ id: worker
+ source: "../lib/Worker.js"
+ onMessage: {
+ console.log(JSON.stringify(messageObject))
+ if(messageObject.action.indexOf("accounts/search") > -1 ){
+ user_id = messageObject.data.id
+ followers_count = messageObject.data.followers_count
+ following_count = messageObject.data.following_count
+ 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/",
+ 'params' : [ {name: "id", data: user_id}],
+ 'conf' : Logic.conf
+ };
+ worker.sendMessage(msg);
+ list.loadData("prepend")
+ }
+
+ if(messageObject.action === "accounts/relationships/"){
+ console.log(JSON.stringify(messageObject))
+ following= messageObject.data.following
+ requested= messageObject.data.requested
+ followed_by= messageObject.data.followed_by
+ blocking= messageObject.data.blocking
+ muting= messageObject.data.muting
+ domain_blocking= messageObject.data.domain_blocking
+ }
+ switch (messageObject.key) {
+ case 'followers_count':
+ followers_count = messageObject.data
+ break;
+ case 'following_count':
+ following_count = messageObject.data
+ break;
+ case 'acct':
+ // line below was commented out, reason unknown
+ // username = messageObject.data
+ break;
+ case 'locked':
+ locked = messageObject.data
+ break;
+ case 'created_at':
+ created_at = messageObject.data
+ break;
+ case 'statuses_count':
+ statuses_count = messageObject.data
+ break;
+ case 'note':
+ note = messageObject.data
+ break;
+ case 'url':
+ url = messageObject.data
+ break;
+ case 'following':
+ following = messageObject.data
+ followers_count = followers_count + (following ? 1 : - 1)
+ break;
+ case 'muting':
+ muting = messageObject.data
+ break;
+ case 'blocking':
+ blocking = messageObject.data
+ followers_count = followers_count + (blocking ? -1 : 0)
+ break;
+ case 'followed_by':
+ followed_by = messageObject.data
+ break;
+ }
+ }
+ }
+ // The effective value will be restricted by ApplicationWindow.allowedOrientations
+ allowedOrientations: Orientation.All
+ Component.onCompleted: {
+ var msg
+
+ if (user_id) {
+ msg = {
+ 'action' : "accounts/relationships/",
+ 'params' : [ {name: "id", data: user_id}],
+ 'conf' : Logic.conf
+ }
+ worker.sendMessage(msg)
+ msg = {
+ 'action' : "accounts/"+user_id,
+ 'conf' : Logic.conf
+ }
+ worker.sendMessage(msg)
+ } else {
+ var instance = Logic.conf['instance'].split("//")
+ msg = {
+ 'action' : "accounts/search?limit=1&q="+username.replace("@"+instance[1], ""),
+ 'conf' : Logic.conf
+ }
+ worker.sendMessage(msg)
+ }
+ }
+
+ MyList {
+ id: list
+ header: ProfileHeader {
+ id: profileHeader
+ title: display_name
+ description: username
+ image: profileImage
+ bg: profileBackground
+ }
+ anchors {
+ top: parent.top
+ bottom: expander.top
+ left: parent.left
+ right: parent.right
+ }
+ clip: true
+ mdl: ListModel {}
+ type: "accounts/"+user_id+"/statuses"
+ vars: {}
+ conf: Logic.conf
+ }
+
+ // ProfilePage ExpandingSection
+ ExpandingSectionGroup {
+ id: expander
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+ }
+ ExpandingSection {
+ id: expandingSection1
+ title: qsTr("About")
+ content.sourceComponent: Column {
+ height: Math.min(txtContainer, parent.height*0.7)
+ spacing: Theme.paddingSmall
+ anchors.bottomMargin: Theme.paddingLarge
+
+ Rectangle {
+ id: txtContainer
+ width: expander.width
+ height: Math.min(txtNote.height, parent.height*0.488)
+ color: "transparent"
+ visible: {
+ if ((note.text === "") && (note.text === "") ) {
+ false
+ } else {
+ true
+ }
+ }
+ SilicaListView {
+ id: txtFlickable
+ anchors.fill: txtContainer
+ clip: true
+ quickScroll: false
+ VerticalScrollDecorator { flickable: txtNote }
+
+ Text {
+ id: txtNote
+ text: note
+ textFormat: Text.StyledText
+ wrapMode: Text.Wrap
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.secondaryColor
+ linkColor: Theme.highlightColor
+ width: parent.width - ( 2 * Theme.horizontalPageMargin )
+ anchors.horizontalCenter: parent.horizontalCenter
+ onLinkActivated: {
+ var test = link.split("/")
+ console.log(link)
+ console.log(JSON.stringify(test))
+ console.log(JSON.stringify(test.length))
+ if (test.length === 5 && (test[3] === "tags" || test[3] === "tag") ) {
+ pageStack.pop(pageStack.find(function(page) {
+ var check = page.isFirstPage === true;
+ if (check)
+ page.onLinkActivated(link)
+ return check;
+ }));
+ send(link)
+ /* Function still missing for user accounts */
+ // } else if (test.length === 4 && test[3][0] === "@" ) {
+ } else {
+ Qt.openUrlExternally(link);
+ }
+ }
+ }
+ }
+ }
+
+ Row {
+ id: statsRow
+ spacing: Theme.paddingLarge
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.leftMargin: Theme.paddingLarge
+ anchors.rightMargin: Theme.paddingLarge
+ Text {
+ id: txtFollowers
+ visible: followers_count ? true : false
+ text: followers_count+" "+qsTr("Followers")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: txtFollowing
+ visible: following_count ? true : false
+ text: following_count+" "+qsTr("Following")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: txtStatuses
+ visible: statuses_count ? true : false
+ text: statuses_count+" "+qsTr("Statuses")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ }
+ /*Text {
+ id: txtFavourites
+ visible: favourites_count ? true : false
+ text: favourites_count+" "+qsTr("Favourites")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ } */
+ }
+
+ Label {
+ id: separatorLabel1
+ x: Theme.horizontalPageMargin
+ width: parent.width - ( 2 * Theme.horizontalPageMargin )
+ font.pixelSize: Theme.fontSizeExtraSmall
+ wrapMode: Text.Wrap
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ ButtonLayout {
+ id: btnLayout
+ Button {
+ id: btnMention
+ preferredWidth: Theme.buttonWidthSmall
+ text: "Mention"
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
+ headerTitle: "Mention",
+ description: "@"+username,
+ type: "new"
+ })
+ }
+ }
+
+ Button {
+ id: btnFollow
+ preferredWidth: Theme.buttonWidthSmall
+ text: (following ? qsTr("Unfollow") : (requested ? qsTr("Requested") : qsTr("Follow")))
+ color: (following ? highlightColor : (requested ? palette.errorColor : palette.primaryColor))
+ onClicked: {
+ var msg = {
+ 'method' : 'POST',
+ 'params' : [],
+ 'action' : "accounts/" + user_id + (following ? '/unfollow':'/follow'),
+ 'conf' : Logic.conf
+ };
+ worker.sendMessage(msg);
+ // to-do: create notification banner "Follow request sent!"
+ }
+ }
+ Button {
+ id: btnMute
+ preferredWidth: Theme.buttonWidthSmall
+ text: (muting ? qsTr("Unmute") : qsTr("Mute"))
+ color: (muting ? highlightColor : palette.primaryColor)
+ onClicked: {
+ var msg = {
+ 'method' : 'POST',
+ 'params' : [],
+ 'action' : "accounts/" + user_id + (muting ? '/unmute':'/mute'),
+ 'conf' : Logic.conf
+ };
+ worker.sendMessage(msg);
+ }
+ }
+ Button {
+ id: btnBlock
+ preferredWidth: Theme.buttonWidthSmall
+ text: (blocking ? qsTr("Unblock") : qsTr("Block") )
+ color: (blocking ? palette.errorColor : palette.primaryColor)
+ onClicked: {
+ var msg = {
+ 'method' : 'POST',
+ 'params' : [],
+ 'action' : "accounts/" + user_id + (blocking ? '/unblock':'/block'),
+ 'conf' : Logic.conf
+ };
+ worker.sendMessage(msg);
+ }
+ }
+ }
+
+ Separator {
+ id: btnSeparator
+ width: parent.width
+ height: Theme.paddingMedium
+ color: Theme.primaryColor
+ opacity: 0.0
+ horizontalAlignment: Qt.AlignHCenter
+ }
+
+ Button {
+ id: btnBrowser
+ text: qsTr("Open in Browser")
+ preferredWidth: Theme.buttonWidthMedium
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+ onClicked: {
+ Qt.openUrlExternally(url);
+ }
+ }
+
+ Label {
+ id: separatorLabel2
+ x: Theme.horizontalPageMargin
+ width: parent.width - ( 2 * Theme.horizontalPageMargin )
+ font.pixelSize: Theme.fontSizeExtraSmall
+ wrapMode: Text.Wrap
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/qml/pages/Settings.qml b/qml/pages/SettingsPage.qml
similarity index 97%
rename from qml/pages/Settings.qml
rename to qml/pages/SettingsPage.qml
index 00d6874..d844bff 100644
--- a/qml/pages/Settings.qml
+++ b/qml/pages/SettingsPage.qml
@@ -1,16 +1,15 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
-
import "../lib/API.js" as Logic
+
Page {
+ id: settingsPage
SilicaFlickable {
anchors.fill: parent
contentHeight: column.height + Theme.paddingLarge
contentWidth: parent.width
RemorsePopup { id: remorsePopup }
-
-
VerticalScrollDecorator {}
Column {
id: column
@@ -22,13 +21,12 @@ Page {
Column {
// No spacing in this column
width: parent.width
+
IconTextSwitch {
id: removeAccount
text: Logic.conf['login'] ? qsTr("Remove Account") : qsTr("Add Account")
description: Logic.conf['login'] ? qsTr("Deauthorize this app and remove your account") : qsTr("Authorize this app to access your Mastodon account")
icon.source: Logic.conf['login'] ? "image://theme/icon-m-contact" : "image://theme/icon-m-add"
-
-
onCheckedChanged: {
remorsePopup.execute(removeAccount.text, function() {
busy = true;
@@ -42,18 +40,17 @@ Page {
pageStack.push(Qt.resolvedUrl("LoginPage.qml"))
})
}
-
/* busy = true;
checked = false;
timer1.start()
-
- }*/
+ }*/
Timer {
id: timer1
interval: 4700
onTriggered: parent.busy = false
}
}
+
IconTextSwitch {
//enabled: false
checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
@@ -64,6 +61,7 @@ Page {
Logic.conf['loadImages'] = checked
}
}
+
IconTextSwitch {
text: qsTr("Translate")
description: qsTr("Use Transifex to help with app translation to your language")
@@ -81,6 +79,7 @@ Page {
}
}
}
+
SectionHeader {
text: qsTr("Credits")
}
@@ -109,8 +108,8 @@ Page {
ListElement {
name: "Molan"
desc: qsTr("Development and translations")
- mastodon: ""
- mail: "mol_an@sunrise.ch"
+ mastodon: "molan@fosstodon.org"
+ mail: ""
}
ListElement {
name: "Quentin PAGÈS / Quenti ♏"
@@ -159,7 +158,7 @@ Page {
onClicked: {
if (model.mastodon !== ""){
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
- pageStack.push(Qt.resolvedUrl("Conversation.qml"), {
+ pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
toot_id: 0,
title: model.name,
description: '@'+model.mastodon,
@@ -198,4 +197,5 @@ Page {
}
}
}
+
}
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
new file mode 100644
index 0000000..ce8548e
--- /dev/null
+++ b/qml/pages/components/EmojiSelect.qml
@@ -0,0 +1,165 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+
+Component {
+ id: emojiComponent
+ Dialog {
+ id: emoticonsDialog
+ canAccept: false //selector.currentIndex >= 0
+ onAcceptPendingChanged: {
+ if (acceptPending) {
+ // Tell the destination page what the selected category is
+ // acceptDestinationInstance.category = selector.value
+ }
+ }
+ SilicaGridView {
+ id: gridView
+ anchors.fill: parent
+ //anchors.rightMargin: Theme.paddingLarge
+ //anchors.leftMargin: Theme.paddingLarge
+ cellWidth: gridView.width / 6
+ cellHeight: cellWidth
+ VerticalScrollDecorator {flickable: listEmojis }
+ header: PageHeader {
+ title: qsTr("Emojis")
+ description: qsTr("Tap to insert")
+ }
+ model: ListModel {
+ id: listEmojis
+ ListElement { section: "smileys"; glyph: "😁" }
+ ListElement { section: "smileys"; glyph: "😂" }
+ ListElement { section: "smileys"; glyph: "😃" }
+ ListElement { section: "smileys"; glyph: "😄" }
+ ListElement { section: "smileys"; glyph: "😅" }
+ ListElement { section: "smileys"; glyph: "😆" }
+ ListElement { section: "smileys"; glyph: "😉" }
+ ListElement { section: "smileys"; glyph: "😊" }
+ ListElement { section: "smileys"; glyph: "😋" }
+ ListElement { section: "smileys"; glyph: "😎" }
+ ListElement { section: "smileys"; glyph: "😌" }
+ ListElement { section: "smileys"; glyph: "😍" }
+ ListElement { section: "smileys"; glyph: "😘" }
+ ListElement { section: "smileys"; glyph: "😏" }
+ ListElement { section: "smileys"; glyph: "😒" }
+ ListElement { section: "smileys"; glyph: "😓" }
+ ListElement { section: "smileys"; glyph: "😔" }
+ ListElement { section: "smileys"; glyph: "😖" }
+ ListElement { section: "smileys"; glyph: "😚" }
+ ListElement { section: "smileys"; glyph: "😜" }
+ ListElement { section: "smileys"; glyph: "😝" }
+ ListElement { section: "smileys"; glyph: "😞" }
+ ListElement { section: "smileys"; glyph: "😠" }
+ ListElement { section: "smileys"; glyph: "😡" }
+ ListElement { section: "smileys"; glyph: "😢" }
+ ListElement { section: "smileys"; glyph: "😣" }
+ ListElement { section: "smileys"; glyph: "😤" }
+ ListElement { section: "smileys"; glyph: "😥" }
+ ListElement { section: "smileys"; glyph: "😨" }
+ ListElement { section: "smileys"; glyph: "😩" }
+ ListElement { section: "smileys"; glyph: "😪" }
+ ListElement { section: "smileys"; glyph: "😫" }
+ ListElement { section: "smileys"; glyph: "😭" }
+ ListElement { section: "smileys"; glyph: "😰" }
+ ListElement { section: "smileys"; glyph: "😱" }
+ ListElement { section: "smileys"; glyph: "😲" }
+ ListElement { section: "smileys"; glyph: "😳" }
+ ListElement { section: "smileys"; glyph: "😵" }
+ ListElement { section: "smileys"; glyph: "😷" }
+ ListElement { section: "smileys"; glyph: "😸" }
+ ListElement { section: "smileys"; glyph: "😹" }
+ ListElement { section: "smileys"; glyph: "😺" }
+ ListElement { section: "smileys"; glyph: "😻" }
+ ListElement { section: "smileys"; glyph: "😼" }
+ ListElement { section: "smileys"; glyph: "😽" }
+ ListElement { section: "smileys"; glyph: "😾" }
+ ListElement { section: "smileys"; glyph: "😿" }
+ ListElement { section: "smileys"; glyph: "🙀" }
+
+ ListElement { section: "People and Fantasy"; glyph: "🙅" }
+ ListElement { section: "People and Fantasy"; glyph: "🙆" }
+ ListElement { section: "People and Fantasy"; glyph: "🙇" }
+ ListElement { section: "People and Fantasy"; glyph: "🙈" }
+ ListElement { section: "People and Fantasy"; glyph: "🙉" }
+ ListElement { section: "People and Fantasy"; glyph: "🙊" }
+ ListElement { section: "People and Fantasy"; glyph: "🙋" }
+ ListElement { section: "People and Fantasy"; glyph: "🙍" }
+ ListElement { section: "People and Fantasy"; glyph: "🙎" }
+ ListElement { section: "People and Fantasy"; glyph: "👍" }
+ ListElement { section: "People and Fantasy"; glyph: "👎" }
+ ListElement { section: "People and Fantasy"; glyph: "🙌" }
+ ListElement { section: "People and Fantasy"; glyph: "✊" }
+ ListElement { section: "People and Fantasy"; glyph: "💪" }
+ ListElement { section: "People and Fantasy"; glyph: "👉" }
+ ListElement { section: "People and Fantasy"; glyph: "🙏" }
+
+ ListElement { section: "Transport and Map"; glyph: "🚀" }
+ ListElement { section: "Transport and Map"; glyph: "🚃" }
+ ListElement { section: "Transport and Map"; glyph: "🚀" }
+ ListElement { section: "Transport and Map"; glyph: "🚄" }
+ ListElement { section: "Transport and Map"; glyph: "🚅" }
+ ListElement { section: "Transport and Map"; glyph: "🚇" }
+ ListElement { section: "Transport and Map"; glyph: "🚉" }
+ ListElement { section: "Transport and Map"; glyph: "🚌" }
+ ListElement { section: "Transport and Map"; glyph: "🚏" }
+ ListElement { section: "Transport and Map"; glyph: "🚑" }
+ ListElement { section: "Transport and Map"; glyph: "🚒" }
+ ListElement { section: "Transport and Map"; glyph: "🚓" }
+ ListElement { section: "Transport and Map"; glyph: "🚕" }
+ ListElement { section: "Transport and Map"; glyph: "🚗" }
+ ListElement { section: "Transport and Map"; glyph: "🚙" }
+ ListElement { section: "Transport and Map"; glyph: "🚚" }
+ ListElement { section: "Transport and Map"; glyph: "🚢" }
+ ListElement { section: "Transport and Map"; glyph: "🚨" }
+ ListElement { section: "Transport and Map"; glyph: "🚩" }
+ ListElement { section: "Transport and Map"; glyph: "🚪" }
+ ListElement { section: "Transport and Map"; glyph: "🚫" }
+ ListElement { section: "Transport and Map"; glyph: "🚬" }
+ ListElement { section: "Transport and Map"; glyph: "🚭" }
+ ListElement { section: "Transport and Map"; glyph: "🚲" }
+ ListElement { section: "Transport and Map"; glyph: "🚶" }
+ ListElement { section: "Transport and Map"; glyph: "🚹" }
+ ListElement { section: "Transport and Map"; glyph: "🚺" }
+ ListElement { section: "Transport and Map"; glyph: "🚻" }
+ ListElement { section: "Transport and Map"; glyph: "🚼" }
+ ListElement { section: "Transport and Map"; glyph: "🚽" }
+ ListElement { section: "Transport and Map"; glyph: "🚾" }
+ ListElement { section: "Transport and Map"; glyph: "🛀" }
+
+ ListElement { section: "Horoscope Signs"; glyph: "♈" }
+ ListElement { section: "Horoscope Signs"; glyph: "♉" }
+ ListElement { section: "Horoscope Signs"; glyph: "♊" }
+ ListElement { section: "Horoscope Signs"; glyph: "♋" }
+ ListElement { section: "Horoscope Signs"; glyph: "♌" }
+ ListElement { section: "Horoscope Signs"; glyph: "♍" }
+ ListElement { section: "Horoscope Signs"; glyph: "♎" }
+ ListElement { section: "Horoscope Signs"; glyph: "♏" }
+ ListElement { section: "Horoscope Signs"; glyph: "♐" }
+ ListElement { section: "Horoscope Signs"; glyph: "♑" }
+ ListElement { section: "Horoscope Signs"; glyph: "♒" }
+ ListElement { section: "Horoscope Signs"; glyph: "♓" }
+ }
+ delegate: BackgroundItem {
+ width: gridView.cellWidth
+ height: gridView.cellHeight
+ Label {
+ anchors.centerIn: parent
+ color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
+ font.pixelSize: Theme.fontSizeLarge
+ text: glyph
+ }
+ onClicked: {
+ var cursorPosition = toot.cursorPosition
+ toot.text = toot.text.substring(
+ 0, cursorPosition) + model.glyph + toot.text.substring(
+ cursorPosition)
+ toot.cursorPosition = cursorPosition + model.glyph.length
+ emoticonsDialog.canAccept = true
+ emoticonsDialog.accept()
+ }
+ }
+ }
+ }
+
+}
+
diff --git a/qml/pages/components/ImageFullScreen.qml b/qml/pages/components/ImageFullScreen.qml
index 5384804..f27da61 100644
--- a/qml/pages/components/ImageFullScreen.qml
+++ b/qml/pages/components/ImageFullScreen.qml
@@ -2,11 +2,13 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
import QtMultimedia 5.0
+
FullscreenContentPage {
- id: imagePage
property string type: ""
property string previewURL: ""
property string mediaURL: ""
+
+ id: imagePage
allowedOrientations: Orientation.All
Component.onCompleted: function(){
console.log(type)
@@ -14,31 +16,12 @@ FullscreenContentPage {
console.log(mediaURL)
if (type != 'gifv' && type != 'video') {
imagePreview.source = mediaURL
- imageFlickable.visible = true;
+ imageFlickable.visible = true
} else {
video.source = mediaURL
video.fillMode = VideoOutput.PreserveAspectFit
video.play()
- 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()
+ videoFlickable.visible = true
}
}
@@ -46,14 +29,17 @@ FullscreenContentPage {
id: videoFlickable
visible: false
anchors.fill: parent
- contentWidth: imageContainer.width; contentHeight: imageContainer.height
+ contentWidth: imageContainer.width
+ contentHeight: imageContainer.height
clip: true
+
Image {
id: videoPreview
fillMode: Image.PreserveAspectFit
anchors.fill: parent
source: previewURL
}
+
Video {
id: video
anchors.fill: parent
@@ -82,7 +68,7 @@ FullscreenContentPage {
playerIcon.icon.source = "image://theme/icon-m-play"
return;
case MediaPlayer.StoppedState:
- playerIcon.icon.source = "image://theme/icon-m-stop"
+ playerIcon.icon.source = "image://theme/icon-m-reload"
return;
}
}
@@ -97,11 +83,10 @@ FullscreenContentPage {
playerProgress.minimumValue = 0
playerProgress.value = position
}
-
}
onStopped: function(){
- play()
+ stop()
}
IconButton {
@@ -128,20 +113,20 @@ FullscreenContentPage {
anchors.leftMargin: 0
anchors.bottomMargin: Theme.paddingLarge*1.5
}
+
IconButton {
id: videoDlBtn
- visible: true
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.rightMargin: Theme.paddingLarge
anchors.bottomMargin: Theme.paddingLarge*1.5
- icon.source: "image://theme/icon-m-device-download"
- icon.opacity: 0.0
+ icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
var filename = mediaURL.split("/");
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
}
}
+
Rectangle {
visible: videoError.text != ""
anchors.left: parent.left
@@ -163,7 +148,6 @@ FullscreenContentPage {
}
}
-
MouseArea {
anchors.fill: parent
onClicked: function() {
@@ -180,7 +164,8 @@ FullscreenContentPage {
id: imageFlickable
visible: false
anchors.fill: parent
- contentWidth: imageContainer.width; contentHeight: imageContainer.height
+ contentWidth: imageContainer.width
+ contentHeight: imageContainer.height
clip: true
onHeightChanged: if (imagePreview.status === Image.Ready) imagePreview.fitToScreen();
@@ -201,8 +186,8 @@ FullscreenContentPage {
fillMode: Image.PreserveAspectFit
cache: true
asynchronous: true
- sourceSize.height: 1000;
- smooth: false
+ sourceSize.height: 2000;
+ smooth: true // might slower performance
onStatusChanged: {
if (status == Image.Ready) {
fitToScreen()
@@ -255,6 +240,7 @@ FullscreenContentPage {
bounceBackAnimation.start()
}
}
+
NumberAnimation {
id: bounceBackAnimation
target: imagePreview
@@ -280,17 +266,22 @@ FullscreenContentPage {
Component {
id: loadingIndicator
+
Item {
height: childrenRect.height
width: imagePage.width
+
ProgressCircle {
id: imageLoadingIndicator
+ progressColor: inAlternateCycle ? Theme.highlightColor : Theme.highlightDimmerColor
+ backgroundColor: inAlternateCycle ? Theme.highlightDimmerColor : Theme.highlightColor
anchors.horizontalCenter: parent.horizontalCenter
progressValue: imagePreview.progress
}
}
}
}
+
Component {
id: failedLoading
Text {
@@ -299,17 +290,26 @@ FullscreenContentPage {
color: Theme.highlightColor
}
}
+
+ IconButton {
+ y: Theme.paddingLarge
+ anchors.right: parent.right
+ anchors.rightMargin: Theme.horizontalPageMargin
+ icon.source: "image://theme/icon-m-dismiss"
+ onClicked: pageStack.pop()
+ }
+
IconButton {
- visible: true
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.rightMargin: Theme.paddingLarge
anchors.bottomMargin: Theme.paddingLarge*1.5
- icon.source: "image://theme/icon-m-device-download"
+ icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
var filename = mediaURL.split("/");
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
}
}
+
VerticalScrollDecorator { flickable: imageFlickable }
}
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index a9a0148..923face 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -51,11 +51,12 @@ DockedPanel {
Timer {
id: autoClose
- interval: 6000
+ interval: 4500
running: false
onTriggered: {
root.hide()
stop()
}
}
+
}
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 809c97e..56e11b3 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -32,14 +32,16 @@ BackgroundItem {
}
MouseArea {
anchors.fill: parent
- onClicked: pageStack.push(Qt.resolvedUrl("./../Profile.qml"), {
+ onClicked: pageStack.push(Qt.resolvedUrl("./../ProfilePage.qml"), {
"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
})
}
}
+
Column {
anchors.left: avatar.right
anchors.leftMargin: Theme.paddingLarge
@@ -63,6 +65,8 @@ 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
})
+
}
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 069f954..2a7717c 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -146,8 +146,5 @@ Item {
}
}
}
+
}
-
-
-
-
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index 06c420a..6922f39 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -1,8 +1,9 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
+
Item {
- id: miniheader
+ id: miniHeader
height: lblName.height
width: parent.width
@@ -67,4 +68,5 @@ Item {
rightMargin: Theme.horizontalPageMargin
}
}
+
}
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index f7a57d0..4dd559b 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -1,8 +1,9 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
+
Item {
- id: ministatus
+ id: miniStatus
visible: true
height: icon.height+Theme.paddingMedium
width: parent.width
@@ -42,7 +43,7 @@ Item {
action = qsTr('followed you');
break;
default:
- ministatus.visible = false
+ miniStatus.visible = false
action = type;
}
return typeof reblog_account_username !== "undefined" ? '@' + reblog_account_username + ' ' + action : ''
diff --git a/qml/pages/components/MyImage.qml b/qml/pages/components/MyImage.qml
index 13cd278..0e0775f 100644
--- a/qml/pages/components/MyImage.qml
+++ b/qml/pages/components/MyImage.qml
@@ -2,7 +2,9 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
import QtMultimedia 5.0
+
Item {
+ id: myImage
property string type : ""
property string previewURL: ""
property string mediaURL: ""
@@ -37,8 +39,6 @@ Item {
progressRec.width = 0;
}
}
-
-
MouseArea {
anchors.fill: parent
onClicked: {
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index b2f0626..135df3c 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -3,9 +3,10 @@ import Sailfish.Silica 1.0
import "../../lib/API.js" as Logic
import "."
+
SilicaListView {
id: myList
- property string type;
+ property string type
property string title
property string vwPlaceholderText: qsTr("Loading")
property string vwPlaceholderHint: qsTr("please wait...")
@@ -13,21 +14,19 @@ SilicaListView {
property ListModel mdl: []
property variant params: []
property var locale: Qt.locale()
- property bool autoLoadMore : true;
- property bool loadStarted : false;
- property int scrollOffset;
+ property bool autoLoadMore: true
+ property bool loadStarted: false
+ property int scrollOffset
property string action: ""
property variant vars
property variant conf
- property bool notifier : false;
+ property bool notifier: false
model: mdl
signal notify (string what, int num)
onNotify: {
console.log(what + " - " + num)
}
-
-
signal openDrawer (bool setDrawer)
onOpenDrawer: {
//console.log("Open drawer: " + setDrawer)
@@ -37,7 +36,6 @@ SilicaListView {
console.log("LIST send signal emitted with notice: " + notice)
}
-
BusyIndicator {
size: BusyIndicatorSize.Large
running: myList.model.count === 0 && !viewPlaceHolder.visible
@@ -49,8 +47,6 @@ SilicaListView {
description: myList.description
}
-
-
ViewPlaceholder {
id: viewPlaceHolder
enabled: model.count === 0
@@ -62,10 +58,16 @@ SilicaListView {
MenuItem {
text: qsTr("Settings")
onClicked: {
- pageStack.push(Qt.resolvedUrl("../Settings.qml"), {})
+ pageStack.push(Qt.resolvedUrl("../SettingsPage.qml"), {})
}
}
-
+ /* MenuItem {
+ text: qsTr("Open in Browser")
+ visible: profile_url != ""
+ onClicked: {
+ Clipboard.text = profile_url
+ }
+ } */
MenuItem {
text: qsTr("Load more")
onClicked: {
@@ -95,10 +97,9 @@ SilicaListView {
}
onCountChanged: {
- loadStarted = false;
+ loadStarted = false
/*contentY = scrollOffset
console.log("CountChanged!")*/
-
}
footer: Item{
@@ -122,17 +123,16 @@ SilicaListView {
}
}
onContentYChanged: {
-
if (Math.abs(contentY - scrollOffset) > Theme.itemSizeMedium) {
openDrawer(contentY - scrollOffset > 0 ? false : true )
scrollOffset = contentY
}
-
if(contentY+height > footerItem.y && !loadStarted && autoLoadMore){
loadData("append")
- loadStarted = true;
+ loadStarted = true
}
}
+
VerticalScrollDecorator {}
WorkerScript {
@@ -161,16 +161,16 @@ SilicaListView {
}
}
function loadData(mode){
- var p = [];
+ var p = []
if (params.length)
for(var i = 0; i 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (type.length ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
Image {
id: iconRT
y: Theme.paddingLarge
- anchors {
- right: avatar.right
- }
+ anchors.right: avatar.right
visible: type.length
width: Theme.iconSizeExtraSmall
height: width
source: "../../images/boosted.svg"
}
+
Label {
id: lblRtByName
visible: type.length
- anchors {
- left: lblName.left
- bottom: iconRT.bottom
- }
+ anchors.left: lblName.left
+ anchors.bottom: iconRT.bottom
text: {
var action;
switch(type){
@@ -45,10 +43,10 @@ BackgroundItem {
}
return '@' + retweetScreenName + ' ' + action
}
-
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.secondaryColor
}
+
Image {
id: avatar
x: Theme.horizontalPageMargin
@@ -62,28 +60,28 @@ BackgroundItem {
MouseArea {
anchors.fill: parent
onClicked: {
- pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
+ pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
"display_name": account_display_name,
"username": account_username,
"profileImage": account_avatar
})
}
-
}
}
+
Label {
id: lblName
+ text: account_display_name
+ font.weight: Font.Bold
+ font.pixelSize: Theme.fontSizeSmall
+ color: (pressed ? Theme.highlightColor : Theme.primaryColor)
anchors {
top: avatar.top
topMargin: 0
left: avatar.right
leftMargin: Theme.paddingMedium
}
- text: account_display_name
- font.weight: Font.Bold
- font.pixelSize: Theme.fontSizeSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
}
Image {
@@ -103,7 +101,6 @@ BackgroundItem {
: Theme.primaryColor)
}
-
Label {
id: lblScreenName
anchors {
@@ -117,6 +114,7 @@ BackgroundItem {
font.pixelSize: Theme.fontSizeExtraSmall
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
}
+
Label {
function timestamp() {
var txt = Format.formatDate(created_at, Formatter.Timepoint)
@@ -135,7 +133,7 @@ BackgroundItem {
}
}
- Label {
+ Text {
id: lblText
anchors {
left: lblName.left
@@ -154,20 +152,16 @@ BackgroundItem {
"profileImage": ""
})
} else if (link[0] === "#") {
-
pageStack.pop(pageStack.find(function(page) {
var check = page.isFirstPage === true;
if (check)
page.onLinkActivated(link)
return check;
}));
-
send(link)
} else {
Qt.openUrlExternally(link);
}
-
-
}
text: content
textFormat: Text.RichText
@@ -178,10 +172,12 @@ BackgroundItem {
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
}
onClicked: {
- pageStack.push(Qt.resolvedUrl("../Conversation.qml"), {
+ pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
+ headerTitle: "Conversation",
toot_id: id,
- title: account_display_name,
- description: '@'+account_username,
+ toot_url: status_url,
+ //title: account_display_name,
+ description: '@'+account_acc,
avatar: account_avatar,
type: "reply"
})
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index d05f36a..8765456 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -2,12 +2,13 @@ import QtQuick 2.2
import Sailfish.Silica 1.0
import "../../lib/API.js" as Logic
+
BackgroundItem {
id: delegate
signal send (string notice)
signal navigateTo(string link)
width: parent.width
- height: mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (ministatus.visible ? ministatus.height : 0)
+ height: mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
Rectangle {
x: 0;
y: 0;
@@ -15,11 +16,11 @@ BackgroundItem {
width: parent.width
height: parent.height
opacity: 0.3
- color: Theme.highlightBackgroundColor;
+ color: Theme.highlightBackgroundColor
}
MiniStatus {
- id: ministatus
+ id: miniStatus
anchors {
leftMargin: Theme.horizontalPageMargin
rightMargin: Theme.horizontalPageMargin
@@ -31,8 +32,8 @@ BackgroundItem {
Image {
id: avatar
anchors {
- top: ministatus.visible ? ministatus.bottom : parent.top
- topMargin: ministatus.visible ? Theme.paddingMedium : Theme.paddingLarge
+ top: miniStatus.visible ? miniStatus.bottom : parent.top
+ topMargin: miniStatus.visible ? Theme.paddingMedium : Theme.paddingLarge
left: parent.left
leftMargin: Theme.horizontalPageMargin
}
@@ -50,10 +51,11 @@ BackgroundItem {
? Theme.highlightColor
: Theme.primaryColor)
}
+
MouseArea {
anchors.fill: parent
onClicked: {
- pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
+ pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
@@ -63,6 +65,7 @@ BackgroundItem {
}
}
+
Image {
id: iconTR
anchors {
@@ -74,7 +77,8 @@ BackgroundItem {
width: Theme.iconSizeExtraSmall
height: width
source: "image://theme/icon-s-retweet"
- }
+ }
+
Rectangle {
color: Theme.highlightDimmerColor
width: Theme.iconSizeSmall
@@ -98,6 +102,7 @@ BackgroundItem {
}
}
}
+
MiniHeader {
id: miniHeader
anchors {
@@ -106,6 +111,7 @@ BackgroundItem {
right: parent.right
}
}
+
Text {
id: lblContent
anchors {
@@ -176,6 +182,7 @@ BackgroundItem {
wrapMode: Text.Wrap
text: model.status_spoiler_text
}
+
MouseArea {
anchors.fill: parent
onClicked: parent.visible = false;
@@ -225,6 +232,7 @@ BackgroundItem {
height: width
source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
}
+
Label {
anchors {
left: icRT.right
@@ -236,6 +244,7 @@ BackgroundItem {
color: !model.reblogged ? Theme.highlightColor : Theme.primaryColor
}
}
+
MenuItem {
enabled: model.type !== "follow"
text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
@@ -251,6 +260,7 @@ BackgroundItem {
model.favourites_count = !status ? model.favourites_count+1 : (model.favourites_count > 0 ? model.favourites_count-1 : model.favourites_count);
model.favourited = !model.favourited
}
+
Image {
id: icFA
anchors {
@@ -262,6 +272,7 @@ BackgroundItem {
height: width
source: "image://theme/icon-s-favorite?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
}
+
Label {
anchors {
left: icFA.right
@@ -279,7 +290,7 @@ BackgroundItem {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
m.append(mdl.get(index))
- pageStack.push(Qt.resolvedUrl("../Conversation.qml"), {
+ pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
headerTitle: "Conversation",
toot_id: status_id,
toot_url: status_url,
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 0bf8406..7e229a9 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -23,21 +23,21 @@
Conversation
-
- Delete
-
-
-
- Emojis
-
-
-
- Tap to insert
+
+
+
+
+
+
+
+
+
+
@@ -54,16 +54,19 @@
-
-
-
-
+
+
+ EmojiPage
-
+
+
+
+
+
From dbe0f0eea1463c0b9c7af8680a2a1834b331303b Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 30 May 2020 12:27:18 +0200
Subject: [PATCH 03/70] Update README.md
---
README.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index ca54a60..515aab5 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,19 @@
# Tooter [Fork]
## About
-Tooter is Mastodon client for Sailfish OS. It is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication.
+Tooter is Mastodon client for Sailfish OS.
-This fork is being used to further develop and maintain the Tooter app by dysko (https://github.com/dysk0/harbour-tooter). The development branch 'upstream' is being used for merge pull requests to the original repository. Releases by dysko can be found on the Jolla store and on https://openrepos.net/content/dysko/tooter
+This fork is being used to further develop and maintain the Tooter app by dysko (https://github.com/dysk0/harbour-tooter). The development branch *upstream* is being used for merge pull requests to the original project.
-Releases from this forked repository (branch 'master') can be found here: https://openrepos.net/content/molan/tooter-v-fork.
+* Releases by dysko can be found on the Jolla store and on https://openrepos.net/content/dysko/tooter
+* Releases from this forked repository (branch *master*) can be found here: https://openrepos.net/content/molan/tooter-v-fork.
## Build
Clone / download this repository and import it in your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
## Repository branches:
- master: default (Beta release version, harbour-tooterb)
-- upstream: commits for Tooter release (harbour-tooter)
+- upstream: used for merge pull requests to upstream (harbour-tooter)
## Contributions
Contributions to this project are very welcome, since there are still many things which can be done for Tooter.
From f22923a2037f0dc46b8f207a2665cdb829a04113 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 30 May 2020 12:28:39 +0200
Subject: [PATCH 04/70] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 515aab5..ffd9064 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ Clone / download this repository and import it in your SailfishOS IDE using the
## Repository branches:
- master: default (Beta release version, harbour-tooterb)
-- upstream: used for merge pull requests to upstream (harbour-tooter)
+- upstream: used to send changes to upstream repository (harbour-tooter)
## Contributions
Contributions to this project are very welcome, since there are still many things which can be done for Tooter.
From d93efc09ea1b3b2976dc9edd45724edebd53d652 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 30 May 2020 12:31:36 +0200
Subject: [PATCH 05/70] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index ffd9064..f662218 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,12 @@
# Tooter [Fork]
## About
-Tooter is Mastodon client for Sailfish OS.
+Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
-This fork is being used to further develop and maintain the Tooter app by dysko (https://github.com/dysk0/harbour-tooter). The development branch *upstream* is being used for merge pull requests to the original project.
+This fork is being used to further develop and maintain the Tooter app by dysko ([harbour-tooter](https://github.com/dysk0/harbour-tooter)). The development branch *upstream* is being used for merge pull requests to the original project.
-* Releases by dysko can be found on the Jolla store and on https://openrepos.net/content/dysko/tooter
-* Releases from this forked repository (branch *master*) can be found here: https://openrepos.net/content/molan/tooter-v-fork.
+* Releases by dysko can be found on the Jolla store and on [OpenRepos.net](https://openrepos.net/content/dysko/tooter)
+* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v-fork).
## Build
Clone / download this repository and import it in your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
From 759cca8bb3225b7df4ee6f24cff9578945a56a02 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 30 May 2020 12:33:10 +0200
Subject: [PATCH 06/70] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index f662218..658d58c 100644
--- a/README.md
+++ b/README.md
@@ -6,14 +6,14 @@ Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
This fork is being used to further develop and maintain the Tooter app by dysko ([harbour-tooter](https://github.com/dysk0/harbour-tooter)). The development branch *upstream* is being used for merge pull requests to the original project.
* Releases by dysko can be found on the Jolla store and on [OpenRepos.net](https://openrepos.net/content/dysko/tooter)
-* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v-fork).
+* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v-fork)
## Build
Clone / download this repository and import it in your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
## Repository branches:
-- master: default (Beta release version, harbour-tooterb)
-- upstream: used to send changes to upstream repository (harbour-tooter)
+* master: default (Beta release version, harbour-tooterb)
+* upstream: used to send changes to upstream repository (harbour-tooter)
## Contributions
Contributions to this project are very welcome, since there are still many things which can be done for Tooter.
From 16e211ddb971d6d4c5a1e09d1f4ed26bbe6e1175 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 3 Jun 2020 07:34:33 +0200
Subject: [PATCH 07/70] ui-improvements
- open profile picture
- improved media viewer
- improved user suggestion
- better responsive UI design
- code refactoring
- updated settings page
---
harbour-tooter.pro | 3 +-
qml/cover/CoverPage.qml | 9 +-
qml/harbour-tooter.qml | 2 +-
qml/lib/Mastodon.js | 4 +-
qml/lib/Worker.js | 8 +-
qml/pages/ConversationPage.qml | 89 ++++---
qml/pages/MainPage.qml | 21 +-
qml/pages/ProfilePage.qml | 33 ++-
qml/pages/SettingsPage.qml | 192 ++++++++++-----
qml/pages/components/EmojiSelect.qml | 21 +-
qml/pages/components/InfoBanner.qml | 15 +-
qml/pages/components/ItemUser.qml | 6 +-
qml/pages/components/MediaBlock.qml | 7 +-
...mageFullScreen.qml => MediaFullScreen.qml} | 230 +++++++++---------
qml/pages/components/MiniHeader.qml | 16 +-
qml/pages/components/MiniStatus.qml | 11 +-
qml/pages/components/MyImage.qml | 36 ++-
qml/pages/components/MyList.qml | 8 +-
qml/pages/components/Navigation.qml | 92 +++----
qml/pages/components/ProfileHeader.qml | 57 +++--
qml/pages/components/ProfileImage.qml | 27 ++
qml/pages/components/Toot.qml | 6 +-
src/notifications.h | 2 +-
23 files changed, 525 insertions(+), 370 deletions(-)
rename qml/pages/components/{ImageFullScreen.qml => MediaFullScreen.qml} (64%)
create mode 100644 qml/pages/components/ProfileImage.qml
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index 5242229..a7c61ae 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -57,6 +57,8 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/ProfilePage.qml \
qml/pages/SettingsPage.qml \
qml/pages/components/InfoBanner.qml \
+ qml/pages/components/MediaFullScreen.qml \
+ qml/pages/components/ProfileImage.qml \
qml/pages/components/VisualContainer.qml \
qml/pages/components/MiniStatus.qml \
qml/pages/components/MiniHeader.qml \
@@ -66,7 +68,6 @@ DISTFILES += qml/harbour-tooter.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 \
diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml
index 4080b51..63b9d01 100644
--- a/qml/cover/CoverPage.qml
+++ b/qml/cover/CoverPage.qml
@@ -57,7 +57,6 @@ CoverBackground {
horizontalAlignment: Image.AlignLeft
verticalAlignment: Image.AlignBottom
fillMode: Image.PreserveAspectFit
-
source: "../images/tooter.svg"
}
Timer {
@@ -78,6 +77,7 @@ CoverBackground {
}
source: "image://theme/icon-s-alarm?" + Theme.highlightColor
}
+
Label {
id: notificationsLbl
anchors {
@@ -112,8 +112,11 @@ CoverBackground {
CoverAction {
iconSource: "image://theme/icon-cover-new"
onTriggered: {
- pageStack.push(Qt.resolvedUrl("./../pages/Conversation.qml"), {})
- appWindow.activate();
+ pageStack.push(Qt.resolvedUrl("./../pages/ConversationPage.qml"), {
+ headerTitle: qsTr("New Toot"),
+ type: "new"
+ })
+ appWindow.activate()
}
}
}
diff --git a/qml/harbour-tooter.qml b/qml/harbour-tooter.qml
index 60b34c8..b0f9abd 100644
--- a/qml/harbour-tooter.qml
+++ b/qml/harbour-tooter.qml
@@ -47,7 +47,7 @@ ApplicationWindow {
Logic.conf['notificationLastID'] = 0
if (Logic.conf['instance']) {
- Logic.api = new Logic.MastodonAPI({
+ Logic.api = Logic.mastodonAPI({
"instance": Logic.conf['instance'],
"api_user_token": ""
})
diff --git a/qml/lib/Mastodon.js b/qml/lib/Mastodon.js
index 03cfb17..55265be 100644
--- a/qml/lib/Mastodon.js
+++ b/qml/lib/Mastodon.js
@@ -3,7 +3,7 @@
// do whatever you want with it
// but please don't hurt it (and keep this header)
-var MastodonAPI = function(config) {
+var mastodonAPI = function(config) {
var apiBase = config.instance + "/api/v1/";
return {
setConfig: function (key, value) {
@@ -236,7 +236,7 @@ var MastodonAPI = function(config) {
};
// node.js
-if (typeof module !== 'undefined') { module.exports = MastodonAPI; };
+if (typeof module !== 'undefined') { module.exports = mastodonAPI; };
String.prototype.replaceAll = function(search, replacement) {
var target = this;
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 8b53e8c..19469c6 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -22,7 +22,7 @@ WorkerScript.onMessage = function(msg) {
if (typeof msg.conf['loadImages'] !== "undefined")
loadImages = msg.conf['loadImages']
- var API = MastodonAPI({ instance: msg.conf.instance, api_user_token: msg.conf.api_user_token});
+ var API = mastodonAPI({ instance: msg.conf.instance, api_user_token: msg.conf.api_user_token});
if (msg.method === "POST"){
API.post(msg.action, msg.params, function(data) {
if (msg.bgAction){
@@ -91,7 +91,7 @@ WorkerScript.onMessage = function(msg) {
addDataToModel (msg.model, "append", items);
items = [];
- } else if (data[i].hasOwnProperty("content")){
+ } else if (data[i].hasOwnProperty("content")){
//console.log("Is toot... parsing...")
item = parseToot(data[i]);
item['id'] = item['status_id']
@@ -298,13 +298,13 @@ function addEmojis(item, data){
var emoji, i;
for (i = 0; i < data["emojis"].length; i++){
emoji = data["emojis"][i];
- item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
+ item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
//console.log(JSON.stringify(data["emojis"][i]))
}
if (data["reblog"])
for (i = 0; i < data["reblog"]["emojis"].length; i++){
emoji = data["reblog"]["emojis"][i];
- item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
+ item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
}
return item;
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index c39f9d3..611329f 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -43,10 +43,6 @@ Page {
}
}
- InfoBanner {
- id: sentBanner
- }
-
ListModel {
id: mediaModel
onCountChanged: {
@@ -73,12 +69,14 @@ Page {
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
}
clip: true
- anchors {
- top: parent.top
- bottom: panel.top
- left: parent.left
- right: parent.right
- }
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: if (panel.open == true) {
+ panel.top
+ } else {
+ hiddenPanel.top
+ }
model: mdl
section {
property: 'section'
@@ -100,12 +98,7 @@ 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.
+ visible: type === "reply" && toot_url !== ""
MenuItem {
text: qsTr("Copy Link to Clipboard")
onClicked: Clipboard.text = toot_url;
@@ -121,16 +114,17 @@ Page {
anchors.right: panel.right
anchors.top: parent.top
height: implicitHeight
- //height: suggestedModel.count > 6 ? Theme.itemSizeMedium * 6 : Theme.itemSizeMedium * suggestedModel.count
color: Theme.highlightDimmerColor
SilicaListView {
+ rotation: 180
anchors.fill: parent
model: suggestedModel
clip: true
quickScroll: false
VerticalScrollDecorator {}
delegate: ItemUser {
+ rotation: 180
onClicked: {
var start = toot.cursorPosition
while (toot.text[start] !== "@" && start > 0) {
@@ -149,24 +143,20 @@ Page {
}
}
onCountChanged: {
- positionViewAtIndex(suggestedModel.count - 1, ListView.End)
+ positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
}
}
}
DockedPanel {
id: panel
- open: true
- //onExpandedChanged: {
- // if (!expanded) {
- // show()
- // }
- //}
width: parent.width
height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
+ btnContentWarning.height + Theme.paddingMedium
+ (warningContent.visible ? warningContent.height : 0)
dock: Dock.Bottom
+ open: true
+ animationDuration: 200
Rectangle {
width: parent.width
@@ -260,8 +250,12 @@ Page {
IconButton {
id: btnSmileys
property string selection
- onSelectionChanged: {
- console.log(selection)
+ opacity: 0.7
+ icon {
+ color: Theme.highlightColor
+ width: Theme.iconSizeSmallPlus
+ fillMode: Image.PreserveAspectFit
+ source: "../../qml/images/emojiselect.svg"
}
anchors {
top: warningContent.bottom
@@ -269,8 +263,9 @@ Page {
right: parent.right
rightMargin: Theme.paddingSmall
}
- opacity: 0.6
- icon.source: "../../qml/images/emojiselect.svg"
+ onSelectionChanged: {
+ console.log(selection)
+ }
onClicked: pageStack.push(emojiSelect)
}
@@ -501,12 +496,12 @@ Page {
}
BackgroundItem {
- id: showPanel
+ id: hiddenPanel
visible: !panel.open
- height: Theme.paddingMedium
+ height: Theme.paddingLarge * 0.5
width: parent.width
- opacity: enabled ? 1.0 : 0.0
- Behavior on opacity { FadeAnimator {} }
+ opacity: enabled ? 0.6 : 0.0
+ Behavior on opacity { FadeAnimator { duration: 400 } }
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
@@ -518,8 +513,18 @@ Page {
}
Rectangle {
+ id: hiddenPanelBackground
width: parent.width
- height: progressBarShowPanel.height
+ height: parent.height
+ color: Theme.highlightBackgroundColor
+ opacity: 0.4
+ anchors.fill: parent
+ }
+
+ Rectangle {
+ id: progressBarBackground
+ width: parent.width
+ height: progressBarHiddenPanel.height
color: Theme.highlightBackgroundColor
opacity: 0.2
anchors {
@@ -530,19 +535,7 @@ Page {
}
Rectangle {
- color: Theme.highlightBackgroundColor
- opacity: 0.2
- height: showPanel.height
- width: showPanel.width
- anchors {
- horizontalCenter: parent.horizontalCenter
- top: parent.top
- bottom: parent.bottom
- }
- }
-
- Rectangle {
- id: progressBarShowPanel
+ id: progressBarHiddenPanel
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
height: Theme.itemSizeSmall * 0.05
color: Theme.highlightBackgroundColor
@@ -559,4 +552,8 @@ Page {
id: emojiSelect
}
+ InfoBanner {
+ id: sentBanner
+ }
+
}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 9dcff9a..b254496 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -6,6 +6,7 @@ import "./components/"
Page {
id: mainPage
+
property bool isFirstPage: true
property bool isTablet: true //Screen.sizeCategory >= Screen.Large
@@ -39,6 +40,7 @@ Page {
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
}
+
MyList{
id: tlNotifications;
title: qsTr("Notifications")
@@ -49,6 +51,7 @@ Page {
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
}
+
MyList{
id: tlLocal;
title: qsTr("Local")
@@ -59,6 +62,7 @@ Page {
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
}
+
MyList{
id: tlPublic;
title: qsTr("Federated")
@@ -68,6 +72,7 @@ Page {
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
}
+
Item {
id: tlSearch;
width: parent.itemWidth
@@ -84,6 +89,7 @@ Page {
id: loader
anchors.fill: parent
}
+
Column {
id: headerContainer
width: tlSearch.width
@@ -103,6 +109,7 @@ Page {
}
}
}
+
Component {
id: loading
BusyIndicator {
@@ -111,6 +118,7 @@ Page {
running: true
}
}
+
Component {
id: tagListComponent
MyList {
@@ -135,6 +143,7 @@ Page {
}
}
}
+
Component {
id: userListComponent
MyList {
@@ -172,9 +181,7 @@ Page {
}
}
}
-
}
-
}
SlideshowView {
@@ -187,12 +194,9 @@ Page {
onCurrentIndexChanged: {
navigation.slideshowIndexChanged(currentIndex)
}
-
anchors {
fill: parent
- leftMargin: 0
top: parent.top
- topMargin: 0
rightMargin: mainPage.isPortrait ? 0 : infoPanel.visibleSize
bottomMargin: mainPage.isPortrait ? infoPanel.visibleSize : 0
}
@@ -209,11 +213,9 @@ Page {
icon.source: "image://theme/icon-l-add"
anchors {
right: (mainPage.isPortrait ? parent.right : infoPanel.left)
+ rightMargin: Theme.paddingLarge
bottom: (mainPage.isPortrait ? infoPanel.top : parent.bottom)
- margins: {
- left: Theme.paddingLarge
- bottom: Theme.paddingLarge
- }
+ bottomMargin: Theme.paddingLarge
}
onClicked: {
pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
@@ -242,6 +244,7 @@ Page {
Qt.openUrlExternally(href);
}
}
+
Component.onCompleted: {
console.log("aaa")
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index 0247b72..a0316e4 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -7,6 +7,7 @@ import QtGraphicalEffects 1.0
Page {
id: profilePage
+
property ListModel tweets
property string display_name: ""
property string username: ""
@@ -141,27 +142,28 @@ Page {
image: profileImage
bg: profileBackground
}
- anchors {
- top: parent.top
- bottom: expander.top
- left: parent.left
- right: parent.right
- }
clip: true
mdl: ListModel {}
type: "accounts/"+user_id+"/statuses"
vars: {}
conf: Logic.conf
+ anchors {
+ top: parent.top
+ bottom: profileExpander.top
+ left: parent.left
+ right: parent.right
+ }
}
// ProfilePage ExpandingSection
ExpandingSectionGroup {
- id: expander
+ id: profileExpander
anchors {
bottom: parent.bottom
left: parent.left
right: parent.right
}
+
ExpandingSection {
id: expandingSection1
title: qsTr("About")
@@ -172,22 +174,23 @@ Page {
Rectangle {
id: txtContainer
- width: expander.width
+ width: parent.width
height: Math.min(txtNote.height, parent.height*0.488)
color: "transparent"
visible: {
- if ((note.text === "") && (note.text === "") ) {
+ if ((note.text === "") || (note.text === "") ) {
false
} else {
true
}
}
+
SilicaListView {
id: txtFlickable
- anchors.fill: txtContainer
+ anchors.fill: parent
clip: true
quickScroll: false
- VerticalScrollDecorator { flickable: txtNote }
+ VerticalScrollDecorator {}
Text {
id: txtNote
@@ -228,6 +231,7 @@ Page {
anchors.horizontalCenter: parent.horizontalCenter
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
+
Text {
id: txtFollowers
visible: followers_count ? true : false
@@ -236,6 +240,7 @@ Page {
color: Theme.highlightColor
wrapMode: Text.Wrap
}
+
Text {
id: txtFollowing
visible: following_count ? true : false
@@ -244,6 +249,7 @@ Page {
color: Theme.highlightColor
wrapMode: Text.Wrap
}
+
Text {
id: txtStatuses
visible: statuses_count ? true : false
@@ -252,6 +258,7 @@ Page {
color: Theme.highlightColor
wrapMode: Text.Wrap
}
+
/*Text {
id: txtFavourites
visible: favourites_count ? true : false
@@ -304,11 +311,12 @@ Page {
// to-do: create notification banner "Follow request sent!"
}
}
+
Button {
id: btnMute
preferredWidth: Theme.buttonWidthSmall
text: (muting ? qsTr("Unmute") : qsTr("Mute"))
- color: (muting ? highlightColor : palette.primaryColor)
+ color: (muting ? palette.errorColor : palette.primaryColor)
onClicked: {
var msg = {
'method' : 'POST',
@@ -319,6 +327,7 @@ Page {
worker.sendMessage(msg);
}
}
+
Button {
id: btnBlock
preferredWidth: Theme.buttonWidthSmall
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index d844bff..cf13abd 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -5,81 +5,137 @@ import "../lib/API.js" as Logic
Page {
id: settingsPage
+ allowedOrientations: Orientation.All
+
SilicaFlickable {
- anchors.fill: parent
contentHeight: column.height + Theme.paddingLarge
contentWidth: parent.width
+ anchors.fill: parent
+
RemorsePopup { id: remorsePopup }
+
VerticalScrollDecorator {}
+
Column {
id: column
- spacing: Theme.paddingSmall
+ spacing: Theme.paddingMedium
width: parent.width
+
PageHeader {
title: qsTr("Settings")
}
- Column {
- // No spacing in this column
+
+ SectionHeader { text: "Options"}
+
+ IconTextSwitch {
+ text: qsTr("Load Images in Toots")
+ description: qsTr("Disable this option if you want to preserve your data connection")
+ icon.source: "image://theme/icon-m-image"
+ enabled: true
+ checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
+ onClicked: {
+ Logic.conf['loadImages'] = checked
+ }
+ }
+
+ IconTextSwitch {
+ text: qsTr("Use smaller Font Size in Toots")
+ description: qsTr("Enable this option if you prefer to use a smaller font size in displayed Toots")
+ icon.source: "image://theme/icon-m-font-size"
+ enabled: false
+ //checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
+ //onClicked: {
+ // Logic.conf['loadImages'] = checked
+ //}
+ }
+
+ SectionHeader { text: "Account"}
+
+ Item {
+ id: removeAccount
width: parent.width
-
- IconTextSwitch {
- id: removeAccount
- text: Logic.conf['login'] ? qsTr("Remove Account") : qsTr("Add Account")
- description: Logic.conf['login'] ? qsTr("Deauthorize this app and remove your account") : qsTr("Authorize this app to access your Mastodon account")
- icon.source: Logic.conf['login'] ? "image://theme/icon-m-contact" : "image://theme/icon-m-add"
- onCheckedChanged: {
- remorsePopup.execute(removeAccount.text, function() {
- busy = true;
- checked = false;
- timer1.start();
- if (Logic.conf['login']) {
- Logic.conf['login'] = false
- Logic.conf['instance'] = null;
- Logic.conf['api_user_token'] = null;
- }
- pageStack.push(Qt.resolvedUrl("LoginPage.qml"))
- })
- }
- /* busy = true;
- checked = false;
- timer1.start()
- }*/
- Timer {
- id: timer1
- interval: 4700
- onTriggered: parent.busy = false
- }
+ height: txtRemoveAccount.height + btnRemoveAccount.height + Theme.paddingLarge
+ anchors {
+ left: parent.left
+ leftMargin: Theme.paddingLarge
+ right: parent.right
+ rightMargin: Theme.paddingLarge
}
- IconTextSwitch {
- //enabled: false
- checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
- text: qsTr("Load images in toots")
- description: qsTr("Disable this option if you want to preserve your data connection")
- icon.source: "image://theme/icon-m-image"
- onClicked: {
- Logic.conf['loadImages'] = checked
- }
+ Icon {
+ id: icnRemoveAccount
+ color: Theme.secondaryColor
+ width: Theme.iconSizeMedium
+ fillMode: Image.PreserveAspectFit
+ source: Logic.conf['login'] ? "image://theme/icon-m-contact" : "image://theme/icon-m-add"
+ anchors.right: parent.right
}
- IconTextSwitch {
- text: qsTr("Translate")
- description: qsTr("Use Transifex to help with app translation to your language")
- icon.source: "image://theme/icon-m-font-size"
- onCheckedChanged: {
- busy = true;
- checked = false;
- Qt.openUrlExternally("https://www.transifex.com/dysko/tooter/");
- timer2.start()
+ Column {
+ id: clnRemoveAccount
+ spacing: Theme.paddingMedium
+ anchors {
+ left: parent.left
+ right: icnRemoveAccount.left
}
- Timer {
- id: timer2
- interval: 4700
- onTriggered: parent.busy = false
+
+ Button {
+ id: btnRemoveAccount
+ text: Logic.conf['login'] ? qsTr("Remove Account") : qsTr("Add Account")
+ anchors.horizontalCenter: parent.horizontalCenter
+ onClicked: {
+ remorsePopup.execute(btnRemoveAccount.text, function() {
+ if (Logic.conf['login']) {
+ Logic.conf['login'] = false
+ Logic.conf['instance'] = null;
+ Logic.conf['api_user_token'] = null;
+ }
+ pageStack.push(Qt.resolvedUrl("LoginPage.qml"))
+ })
+ }
+
+ Timer {
+ id: timer1
+ interval: 4700
+ onTriggered: parent.busy = false
+ }
+ }
+
+ Label {
+ id: txtRemoveAccount
+ text: Logic.conf['login'] ? qsTr("Deauthorize this app from using your account and remove account data from phone") : qsTr("Authorize this app to access your Mastodon account")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ wrapMode: Text.Wrap
+ color: Theme.secondaryColor
+ anchors {
+ left: parent.left
+ leftMargin: Theme.paddingLarge * 1.9
+ right: parent.right
+ rightMargin: Theme.paddingLarge * 1.2
+ }
}
}
}
+ /* SectionHeader { text: "Support"}
+
+ IconTextSwitch {
+ text: qsTr("Translate")
+ description: qsTr("Use Transifex to help with app translation to your language")
+ icon.source: "image://theme/icon-m-font-size"
+ onCheckedChanged: {
+ busy = true;
+ checked = false;
+ Qt.openUrlExternally("https://www.transifex.com/dysko/tooter/");
+ timer2.start()
+ }
+ Timer {
+ id: timer2
+ interval: 4700
+ onTriggered: parent.busy = false
+ }
+ } */
+
SectionHeader {
text: qsTr("Credits")
}
@@ -89,52 +145,61 @@ Page {
anchors {
left: parent.left
right: parent.right
- rightMargin: Theme.horizontalPageMargin
+ rightMargin: Theme.paddingLarge
}
+
Repeater {
model: ListModel {
+
ListElement {
name: "Duško Angirević"
desc: qsTr("UI/UX design and development")
mastodon: "dysko@mastodon.social"
mail: ""
}
+
ListElement {
name: "Miodrag Nikolić"
desc: qsTr("Visual identity")
mastodon: ""
mail: "micotakis@gmail.com"
}
+
ListElement {
name: "Molan"
desc: qsTr("Development and translations")
mastodon: "molan@fosstodon.org"
mail: ""
}
+
ListElement {
name: "Quentin PAGÈS / Quenti ♏"
desc: qsTr("Occitan & French translation")
mastodon: "Quenti@framapiaf.org"
mail: ""
}
+
ListElement {
name: "Luchy Kon / dashinfantry"
desc: qsTr("Chinese translation")
mastodon: ""
mail: "dashinfantry@gmail.com"
}
+
ListElement {
name: "André Koot"
desc: qsTr("Dutch translation")
mastodon: "meneer@mastodon.social"
mail: "https://twitter.com/meneer"
}
+
ListElement {
name: "CarmenFdez"
desc: qsTr("Spanish translation")
mastodon: ""
mail: ""
}
+
ListElement {
name: "Mohamed-Touhami MAHDI"
desc: qsTr("Added README file")
@@ -146,31 +211,29 @@ Page {
Item {
width: parent.width
height: Theme.itemSizeMedium
+
IconButton {
id: btn
+ icon.source: "image://theme/" + (model.mastodon !== "" ? "icon-m-outline-chat" : "icon-m-mail") + "?" + (pressed
+ ? Theme.highlightColor : Theme.primaryColor)
anchors {
verticalCenter: parent.verticalCenter
right: parent.right
}
- icon.source: "image://theme/" + (model.mastodon !== "" ? "icon-m-contact" : "icon-m-mail") + "?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
onClicked: {
if (model.mastodon !== ""){
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
- toot_id: 0,
- title: model.name,
+ headerTitle: "Mention",
description: '@'+model.mastodon,
- avatar: "",
- mdl: m,
- type: "reply"
+ type: "new"
})
} else {
Qt.openUrlExternally("mailto:"+model.mail);
}
}
}
+
Column {
anchors {
verticalCenter: parent.verticalCenter
@@ -183,9 +246,10 @@ Page {
Label {
id: lblName
text: model.name
- color: Theme.secondaryColor
+ color: Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
}
+
Label {
text: model.desc
color: Theme.secondaryHighlightColor
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index ce8548e..3e4f8fa 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -4,6 +4,7 @@ import Sailfish.Silica 1.0
Component {
id: emojiComponent
+
Dialog {
id: emoticonsDialog
canAccept: false //selector.currentIndex >= 0
@@ -13,20 +14,17 @@ Component {
// acceptDestinationInstance.category = selector.value
}
}
+
SilicaGridView {
id: gridView
- anchors.fill: parent
- //anchors.rightMargin: Theme.paddingLarge
- //anchors.leftMargin: Theme.paddingLarge
- cellWidth: gridView.width / 6
- cellHeight: cellWidth
- VerticalScrollDecorator {flickable: listEmojis }
header: PageHeader {
title: qsTr("Emojis")
description: qsTr("Tap to insert")
}
+ cellWidth: gridView.width / 6
+ cellHeight: cellWidth
+ anchors.fill: parent
model: ListModel {
- id: listEmojis
ListElement { section: "smileys"; glyph: "😁" }
ListElement { section: "smileys"; glyph: "😂" }
ListElement { section: "smileys"; glyph: "😃" }
@@ -142,11 +140,12 @@ Component {
delegate: BackgroundItem {
width: gridView.cellWidth
height: gridView.cellHeight
+
Label {
- anchors.centerIn: parent
- color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
- font.pixelSize: Theme.fontSizeLarge
text: glyph
+ font.pixelSize: Theme.fontSizeLarge
+ color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
+ anchors.centerIn: parent
}
onClicked: {
var cursorPosition = toot.cursorPosition
@@ -158,6 +157,8 @@ Component {
emoticonsDialog.accept()
}
}
+
+ VerticalScrollDecorator {flickable: listEmojis }
}
}
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index 923face..a6a444e 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -4,28 +4,24 @@ import Sailfish.Silica 1.0
DockedPanel {
id: root
- z: 100
+ dock: Dock.Top
width: parent.width
height: content.height
- dock: Dock.Top
Rectangle {
id: content
- width: root.width
- height: infoLabel.height + 5*Theme.paddingMedium
- //anchors.topMargin: 20
color: Theme.highlightBackgroundColor
- opacity: 1.0
+ width: root.width
+ height: infoLabel.height + 3*Theme.paddingMedium
Label {
id: infoLabel
text : ""
- color: Theme.primaryColor
font.family: Theme.fontFamilyHeading
font.pixelSize: Theme.fontSizeMedium
- //font.weight: Font.Bold
- width: parent.width
+ color: Theme.highlightColor
wrapMode: Text.WrapAnywhere
+ width: parent.width
anchors {
left: parent.left
leftMargin: Theme.horizontalPageMargin*2
@@ -34,6 +30,7 @@ DockedPanel {
verticalCenter: parent.verticalCenter
}
}
+
MouseArea {
anchors.fill: parent
onClicked: {
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 56e11b3..d1df686 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -4,9 +4,11 @@ import Sailfish.Silica 1.0
BackgroundItem {
id: delegate
+
signal openUser (string notice)
- height: Theme.itemSizeMedium
+
width: parent.width
+ height: Theme.itemSizeMedium
Rectangle {
id: avatar
@@ -23,6 +25,7 @@ BackgroundItem {
anchors.fill: parent
source: model.account_avatar
}
+
BusyIndicator {
size: BusyIndicatorSize.Small
opacity: img.status === Image.Ready ? 0.0 : 1.0
@@ -30,6 +33,7 @@ BackgroundItem {
running: avatar.status !== Image.Ready;
anchors.centerIn: parent
}
+
MouseArea {
anchors.fill: parent
onClicked: pageStack.push(Qt.resolvedUrl("./../ProfilePage.qml"), {
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 2a7717c..bf3c047 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -4,10 +4,12 @@ import QtMultimedia 5.0
Item {
+ id: holder
+
property ListModel model
property double wRatio : 16/9
property double hRatio : 9/16
- id: holder
+
width: width
height: height
Component.onCompleted: {
@@ -92,6 +94,7 @@ Item {
}
}
}
+
MyImage {
id: placeholder2
width: 2
@@ -110,6 +113,7 @@ Item {
}
}
}
+
MyImage {
id: placeholder3
width: 2
@@ -128,6 +132,7 @@ Item {
}
}
}
+
MyImage {
id: placeholder4
width: 2
diff --git a/qml/pages/components/ImageFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
similarity index 64%
rename from qml/pages/components/ImageFullScreen.qml
rename to qml/pages/components/MediaFullScreen.qml
index f27da61..3378cac 100644
--- a/qml/pages/components/ImageFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -4,12 +4,13 @@ import QtMultimedia 5.0
FullscreenContentPage {
+ id: mediaPage
+ allowedOrientations: Orientation.All
+
property string type: ""
property string previewURL: ""
property string mediaURL: ""
- id: imagePage
- allowedOrientations: Orientation.All
Component.onCompleted: function(){
console.log(type)
console.log(previewURL)
@@ -29,8 +30,6 @@ FullscreenContentPage {
id: videoFlickable
visible: false
anchors.fill: parent
- contentWidth: imageContainer.width
- contentHeight: imageContainer.height
clip: true
Image {
@@ -57,7 +56,6 @@ FullscreenContentPage {
return;
}
}
-
onPlaybackStateChanged: {
console.log(playbackState)
switch (playbackState){
@@ -72,7 +70,6 @@ FullscreenContentPage {
return;
}
}
-
onPositionChanged: function(){
//console.log(duration)
//console.log(bufferProgress)
@@ -84,17 +81,18 @@ FullscreenContentPage {
playerProgress.value = position
}
}
-
onStopped: function(){
stop()
}
IconButton {
id: playerIcon
- anchors.left: parent.left
- anchors.bottom: parent.bottom
- anchors.leftMargin: Theme.paddingLarge
- anchors.bottomMargin: Theme.paddingLarge*1.5
+ anchors {
+ left: parent.left
+ bottom: parent.bottom
+ leftMargin: Theme.horizontalPageMargin
+ bottomMargin: Theme.horizontalPageMargin
+ }
icon.source: "image://theme/icon-m-play"
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState)
@@ -105,56 +103,47 @@ FullscreenContentPage {
}
ProgressBar {
- indeterminate: true
id: playerProgress
- anchors.left: playerIcon.right
- anchors.right: videoDlBtn.left
- anchors.verticalCenter: playerIcon.verticalCenter
- anchors.leftMargin: 0
- anchors.bottomMargin: Theme.paddingLarge*1.5
- }
-
- IconButton {
- id: videoDlBtn
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- anchors.rightMargin: Theme.paddingLarge
- anchors.bottomMargin: Theme.paddingLarge*1.5
- icon.source: "image://theme/icon-m-cloud-download"
- onClicked: {
- var filename = mediaURL.split("/");
- FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
+ indeterminate: true
+ width: 400
+ anchors {
+ verticalCenter: playerIcon.verticalCenter
+ left: playerIcon.right
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
+ bottomMargin: Theme.horizontalPageMargin
}
- }
- Rectangle {
- visible: videoError.text != ""
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- color: Theme.highlightDimmerColor
- height: videoError.height + 2*Theme.paddingMedium
- width: parent.width
- Label {
- anchors.centerIn: parent
- id: videoError
- width: parent.width - 2*Theme.paddingMedium
- wrapMode: Text.Wrap
- height: contentHeight
- visible: false;
- font.pixelSize: Theme.fontSizeSmall;
- text: video.errorString
- color: Theme.highlightColor
+ Rectangle {
+ visible: videoError.text != ""
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ color: Theme.highlightDimmerColor
+ height: videoError.height + 2*Theme.paddingMedium
+ width: parent.width
+
+ Label {
+ id: videoError
+ visible: false
+ text: video.errorString
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ width: parent.width - 2*Theme.paddingMedium
+ height: contentHeight
+ anchors.centerIn: parent
+ }
}
- }
- MouseArea {
- anchors.fill: parent
- onClicked: function() {
- if (video.playbackState === MediaPlayer.PlayingState)
- video.pause()
- else
- video.play()
+ MouseArea {
+ anchors.fill: parent
+ onClicked: function() {
+ if (video.playbackState === MediaPlayer.PlayingState)
+ video.pause()
+ else
+ video.play()
+ }
}
}
}
@@ -163,11 +152,12 @@ FullscreenContentPage {
Flickable {
id: imageFlickable
visible: false
- anchors.fill: parent
- contentWidth: imageContainer.width
- contentHeight: imageContainer.height
+ contentWidth: imageContainer.width; contentHeight: imageContainer.height
clip: true
- onHeightChanged: if (imagePreview.status === Image.Ready) imagePreview.fitToScreen();
+ anchors.fill: parent
+ onHeightChanged: if (imagePreview.status === Image.Ready) {
+ imagePreview.fitToScreen()
+ }
Item {
id: imageContainer
@@ -176,18 +166,21 @@ FullscreenContentPage {
Image {
id: imagePreview
+
property real prevScale
+
function fitToScreen() {
- scale = Math.min(imageFlickable.width / width, imageFlickable.height / height, 1)
+ scale = Math.min(imageFlickable.width / width, imageFlickable.height / height, imageFlickable.width, imageFlickable.height)
pinchArea.minScale = scale
prevScale = scale
}
- anchors.centerIn: parent
+
fillMode: Image.PreserveAspectFit
cache: true
asynchronous: true
- sourceSize.height: 2000;
- smooth: true // might slower performance
+ sourceSize.width: mediaPage.width
+ smooth: false
+ anchors.centerIn: parent
onStatusChanged: {
if (status == Image.Ready) {
fitToScreen()
@@ -195,15 +188,6 @@ FullscreenContentPage {
}
}
- NumberAnimation {
- id: loadedAnimation
- target: imagePreview
- property: "opacity"
- duration: 250
- from: 0; to: 1
- easing.type: Easing.InOutQuad
- }
-
onScaleChanged: {
if ((width * scale) > imageFlickable.width) {
var xoff = (imageFlickable.width / 2 + imageFlickable.contentX) * scale / prevScale;
@@ -215,19 +199,30 @@ FullscreenContentPage {
}
prevScale = scale
}
+
+ NumberAnimation {
+ id: loadedAnimation
+ target: imagePreview
+ property: "opacity"
+ duration: 250
+ from: 0; to: 1
+ easing.type: Easing.InOutQuad
+ }
}
}
PinchArea {
id: pinchArea
opacity: 0.3
+
property real minScale: 1.0
property real maxScale: 3.0
+
anchors.fill: parent
enabled: imagePreview.status === Image.Ready
pinch.target: imagePreview
pinch.minimumScale: minScale * 0.5 // This is to create "bounce back effect"
- pinch.maximumScale: maxScale * 1.5 // when over zoomed
+ pinch.maximumScale: maxScale * 1.5 // when over zoomed}
onPinchFinished: {
imageFlickable.returnToBounds()
@@ -249,67 +244,74 @@ FullscreenContentPage {
from: imagePreview.scale
}
}
- }
- Loader {
- anchors.centerIn: parent
- sourceComponent: {
- switch (imagePreview.status) {
- case Image.Loading:
- return loadingIndicator
- case Image.Error:
- return failedLoading
- default:
- return undefined
+ Loader {
+ anchors.centerIn: parent
+ sourceComponent: {
+ switch (imagePreview.status) {
+ case Image.Loading:
+ return loadingIndicator
+ case Image.Error:
+ return failedLoading
+ default:
+ return undefined
+ }
}
- }
- Component {
- id: loadingIndicator
+ Component {
+ id: loadingIndicator
+ Item {
+ width: mediaPage.width
+ height: childrenRect.height
- Item {
- height: childrenRect.height
- width: imagePage.width
+ ProgressCircle {
+ id: imageLoadingIndicator
+ progressValue: imagePreview.progress
+ progressColor: inAlternateCycle ? Theme.highlightColor : Theme.highlightDimmerColor
+ backgroundColor: inAlternateCycle ? Theme.highlightDimmerColor : Theme.highlightColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
- ProgressCircle {
- id: imageLoadingIndicator
- progressColor: inAlternateCycle ? Theme.highlightColor : Theme.highlightDimmerColor
- backgroundColor: inAlternateCycle ? Theme.highlightDimmerColor : Theme.highlightColor
- anchors.horizontalCenter: parent.horizontalCenter
- progressValue: imagePreview.progress
+ Component {
+ id: failedLoading
+ Text {
+ text: qsTr("Error loading")
+ font.pixelSize: Theme.fontSizeSmall;
+ color: Theme.highlightColor
}
}
}
- }
- Component {
- id: failedLoading
- Text {
- font.pixelSize: Theme.fontSizeSmall;
- text: qsTr("Error loading")
- color: Theme.highlightColor
- }
+ VerticalScrollDecorator { flickable: imageFlickable }
}
IconButton {
- y: Theme.paddingLarge
- anchors.right: parent.right
- anchors.rightMargin: Theme.horizontalPageMargin
+ id: dismissBtn
icon.source: "image://theme/icon-m-dismiss"
+ anchors {
+ top: parent.top
+ topMargin: Theme.horizontalPageMargin
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ }
onClicked: pageStack.pop()
}
IconButton {
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- anchors.rightMargin: Theme.paddingLarge
- anchors.bottomMargin: Theme.paddingLarge*1.5
+ id: mediaDlBtn
+ anchors {
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ bottom: parent.bottom
+ bottomMargin: Theme.horizontalPageMargin
+ }
icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
var filename = mediaURL.split("/");
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
}
}
-
- VerticalScrollDecorator { flickable: imageFlickable }
}
+
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index 6922f39..af5c608 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -37,26 +37,24 @@ Item {
width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
opacity: 0.8
height: width
- source: "image://theme/icon-s-secure?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
+ source: "image://theme/icon-s-secure?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
}
Label {
id: lblScreenName
+ truncationMode: TruncationMode.Fade
+ text: '@'+account_username
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
anchors {
left: iconVerified.right
right: lblDate.left
leftMargin: Theme.paddingMedium
baseline: lblName.baseline
}
- truncationMode: TruncationMode.Fade
- text: '@'+account_username
- font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
}
- Label {
+ Label {
id: lblDate
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
@@ -64,8 +62,8 @@ Item {
horizontalAlignment: Text.AlignRight
anchors {
right: parent.right
- baseline: lblName.baseline
rightMargin: Theme.horizontalPageMargin
+ baseline: lblName.baseline
}
}
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index 4dd559b..a38dfca 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -9,6 +9,10 @@ Item {
width: parent.width
Image {
id: icon
+ visible: type.length
+ width: Theme.iconSizeExtraSmall
+ height: width
+ source: typeof typeIcon !== "undefined" ? typeIcon : ""
anchors {
top: parent.top
topMargin: Theme.paddingMedium
@@ -16,12 +20,8 @@ Item {
left: parent.left
leftMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium - width
}
- visible: type.length
- width: Theme.iconSizeExtraSmall
- height: width
- source: typeof typeIcon !== "undefined" ? typeIcon : ""
-
}
+
Label {
id: lblRtByName
visible: type.length
@@ -48,7 +48,6 @@ Item {
}
return typeof reblog_account_username !== "undefined" ? '@' + reblog_account_username + ' ' + action : ''
}
-
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
}
diff --git a/qml/pages/components/MyImage.qml b/qml/pages/components/MyImage.qml
index 0e0775f..8e0be74 100644
--- a/qml/pages/components/MyImage.qml
+++ b/qml/pages/components/MyImage.qml
@@ -5,33 +5,38 @@ import QtMultimedia 5.0
Item {
id: myImage
+
property string type : ""
property string previewURL: ""
property string mediaURL: ""
+
Rectangle {
opacity: 0.2
- anchors.fill: parent
color: Theme.highlightDimmerColor
+ anchors.fill: parent
}
+
Image {
- anchors.centerIn: parent
source: "image://theme/icon-m-image"
+ anchors.centerIn: parent
}
+
Rectangle {
id: progressRec
- anchors.bottom: parent.bottom
width: 0
height: Theme.paddingSmall
color: Theme.highlightBackgroundColor
+ anchors.bottom: parent.bottom
}
+
Image {
id: img
- anchors.fill: parent
- fillMode: Image.PreserveAspectCrop
asynchronous: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
source: previewURL
+ fillMode: Image.PreserveAspectCrop
+ anchors.fill: parent
onProgressChanged: {
if (progress != 1)
progressRec.width = parent.width * progress
@@ -39,35 +44,48 @@ Item {
progressRec.width = 0;
}
}
+
MouseArea {
anchors.fill: parent
onClicked: {
- pageStack.push(Qt.resolvedUrl("./ImageFullScreen.qml"), {"previewURL": previewURL, "mediaURL": mediaURL, "type": type})
+ pageStack.push(Qt.resolvedUrl("./MediaFullScreen.qml"), {
+ "previewURL": previewURL,
+ "mediaURL": mediaURL,
+ "type": type
+ })
}
}
+
Image {
+ id: videoIcon
visible: type === "video" || type === "gifv"
- anchors.centerIn: parent
source: "image://theme/icon-l-play"
+ anchors.centerIn: parent
}
+
BusyIndicator {
+ id: mediaLoader
size: BusyIndicatorSize.Large
running: img.status !== Image.Ready
opacity: img.status === Image.Ready ? 0.0 : 1.0
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
}
+
Rectangle {
- anchors.fill: parent
+ id: mediaWarning
color: Theme.highlightDimmerColor
visible: typeof status_sensitive != 'undefined' && status_sensitive ? true : false
+ anchors.fill: parent
+
Image {
source: "image://theme/icon-l-attention?"+Theme.highlightColor
anchors.centerIn: parent
}
+
MouseArea {
anchors.fill: parent
- onClicked: parent.visible = false;
+ onClicked: parent.visible = false
}
}
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index 135df3c..d3dc318 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -61,13 +61,7 @@ SilicaListView {
pageStack.push(Qt.resolvedUrl("../SettingsPage.qml"), {})
}
}
- /* MenuItem {
- text: qsTr("Open in Browser")
- visible: profile_url != ""
- onClicked: {
- Clipboard.text = profile_url
- }
- } */
+
MenuItem {
text: qsTr("Load more")
onClicked: {
diff --git a/qml/pages/components/Navigation.qml b/qml/pages/components/Navigation.qml
index 1d721b1..c4af981 100644
--- a/qml/pages/components/Navigation.qml
+++ b/qml/pages/components/Navigation.qml
@@ -4,13 +4,16 @@ import QtGraphicalEffects 1.0
SilicaGridView {
+ id: gridView
+
+ property bool isPortrait: false
signal slideshowShow(int vIndex)
signal slideshowIndexChanged(int vIndex)
+
onSlideshowIndexChanged: {
navigateTo(vIndex)
}
- id: gridView
- property bool isPortrait: false
+
ListModel {
id: listModel
ListElement {
@@ -20,12 +23,14 @@ SilicaGridView {
active: true
unread: false
}
+
ListElement {
icon: "image://theme/icon-m-alarm"
slug: "notifications"
name: "Notifications"
active: false
}
+
ListElement {
icon: "image://theme/icon-m-whereami"
slug: "local"
@@ -33,6 +38,7 @@ SilicaGridView {
active: false
unread: false
}
+
ListElement {
icon: "image://theme/icon-m-website"
slug: "federated"
@@ -40,6 +46,7 @@ SilicaGridView {
active: false
unread: false
}
+
ListElement {
icon: "image://theme/icon-m-search"
slug: "search"
@@ -49,15 +56,13 @@ SilicaGridView {
}
}
model: listModel
- anchors.fill: parent
currentIndex: -1
-
cellWidth: isPortrait ? gridView.width : gridView.width / model.count
cellHeight: isPortrait ? gridView.height/model.count : gridView.height
-
+ anchors.fill: parent
delegate: BackgroundItem {
- clip: true
id: rectangle
+ clip: true
width: gridView.cellWidth
height: gridView.cellHeight
GridView.onAdd: AddAnimation {
@@ -66,88 +71,93 @@ SilicaGridView {
GridView.onRemove: RemoveAnimation {
target: rectangle
}
+
GlassItem {
id: effect
visible: !isPortrait && unread
+ dimmed: true
+ color: Theme.highlightColor
width: Theme.itemSizeMedium
height: Theme.itemSizeMedium
- dimmed: true
- anchors.bottom: parent.bottom
- anchors.bottomMargin: -height/2
- anchors.horizontalCenter: parent.horizontalCenter
- color: Theme.highlightColor
+ anchors {
+ bottom: parent.bottom
+ bottomMargin: -height/2
+ horizontalCenter: parent.horizontalCenter
+ }
}
+
GlassItem {
id: effect2
visible: isPortrait && unread
+ dimmed: false
+ color: Theme.highlightColor
width: Theme.itemSizeMedium
height: Theme.itemSizeMedium
- dimmed: false
- anchors.right: parent.right;
- anchors.rightMargin: -height/2;
- anchors.verticalCenter: parent.verticalCenter
- color: Theme.highlightColor
+ anchors {
+ right: parent.right
+ rightMargin: -height/2
+ verticalCenter: parent.verticalCenter
+ }
}
+
OpacityRampEffect {
sourceItem: label
offset: 0.5
}
+
ColorOverlay {
- anchors.fill: image
- source: image
- color: (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
- }
+ source: image
+ color: (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
+ anchors.fill: image
+ }
+
Image {
id: image
+ visible: false
+ source: model.icon // +'?'+ (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
sourceSize.width: Theme.iconSizeMedium
sourceSize.height: Theme.iconSizeMedium
- source: model.icon// +'?'+ (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
anchors.centerIn: parent
- visible: false
- // smooth: true
}
Text {
- anchors.bottom: parent.bottom
- anchors.bottomMargin: Theme.paddingSmall
- anchors.left: parent.left
- anchors.right: parent.right
- horizontalAlignment: Text.AlignHCenter
visible: false
text: model.name
font.pixelSize: Theme.fontSizeExtraSmall/2
color: (highlighted
? Theme.highlightColor
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
+ horizontalAlignment: Text.AlignHCenter
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ bottomMargin: Theme.paddingSmall
+ }
}
Label {
id: label
visible: false
- anchors {
- bottom: parent.bottom
- }
- horizontalAlignment : Text.AlignHCente
- width: parent.width
color: (highlighted ? Theme.highlightColor : Theme.secondaryHighlightColor)
-
text: {
return model.name.toUpperCase();
}
-
- font {
- pixelSize: Theme.fontSizeExtraSmall
- family: Theme.fontFamilyHeading
- }
+ font.pixelSize: Theme.fontSizeExtraSmall
+ font.family: Theme.fontFamilyHeading
+ width: parent.width
+ horizontalAlignment : Text.AlignHCenter
+ anchors.bottom: parent.bottom
}
+
onClicked: {
slideshowShow(index)
console.log(index)
navigateTo(model.slug)
effect.state = "right"
}
-
}
+
function navigateTo(slug){
for(var i = 0; i < listModel.count; i++){
if (listModel.get(i).slug === slug || i===slug)
@@ -156,9 +166,9 @@ SilicaGridView {
listModel.setProperty(i, 'active', false);
}
console.log(slug)
-
}
VerticalScrollDecorator {}
+
}
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index a4fd987..af2126d 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -4,48 +4,69 @@ import Sailfish.Silica 1.0
Item {
id: profileHeader
+
property int value: 0
property string title: ""
property string description: ""
property string image: ""
property string bg: ""
+
width: parent.width
height: icon.height + Theme.paddingLarge*2
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 }
}
+ anchors.fill: parent
+
Image {
- anchors.fill: bgImage
asynchronous: true
fillMode: Image.PreserveAspectCrop
source: bg
opacity: 0.8
+ anchors.fill: parent
}
}
+
Image {
id: icon
+ asynchronous: true
+ source:
+ if (icon.status === Image.Error)
+ source = "../../images/icon-l-profile.svg?" + (pressed
+ ? Theme.highlightColor
+ : Theme.primaryColor)
+ else image
+ width: description === "" ? Theme.iconSizeMedium : Theme.iconSizeLarge
+ height: width
anchors {
left: parent.left
leftMargin: Theme.paddingLarge
top: parent.top
topMargin: Theme.paddingLarge
}
- asynchronous: true
- width: description === "" ? Theme.iconSizeMedium : Theme.iconSizeLarge
- height: width
- source:
- if (icon.status === Image.Error)
- source = "../../images/icon-l-profile.svg?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
- else image
+
+ Button {
+ id: imageButton
+ opacity: 0
+ width: Theme.iconSizeExtraLarge * 1.2
+ anchors {
+ top: parent.top
+ left: parent.left
+ bottom: parent.bottom
+ }
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("ProfileImage.qml"), {
+ "image": image
+ })
+ }
+ }
}
+
Column {
anchors {
left: icon.right
@@ -54,6 +75,7 @@ Item {
rightMargin: Theme.paddingLarge
verticalCenter: parent.verticalCenter
}
+
Label {
id: ttl
text:
@@ -61,23 +83,24 @@ Item {
description.split('@')[0]
}
else title
- height: contentHeight
- color: Theme.highlightColor
font.pixelSize: Theme.fontSizeLarge
font.family: Theme.fontFamilyHeading
- horizontalAlignment: Text.AlignRight
+ color: Theme.highlightColor
truncationMode: TruncationMode.Fade
width: parent.width
+ height: contentHeight
+ horizontalAlignment: Text.AlignRight
}
+
Label {
- height: description === "" ? 0 : contentHeight
text: "@"+description
- color: Theme.secondaryHighlightColor
font.pixelSize: Theme.fontSizeSmall
font.family: Theme.fontFamilyHeading
- horizontalAlignment: Text.AlignRight
+ color: Theme.secondaryHighlightColor
truncationMode: TruncationMode.Fade
width: parent.width
+ height: description === "" ? 0 : contentHeight
+ horizontalAlignment: Text.AlignRight
}
}
diff --git a/qml/pages/components/ProfileImage.qml b/qml/pages/components/ProfileImage.qml
new file mode 100644
index 0000000..38fdde0
--- /dev/null
+++ b/qml/pages/components/ProfileImage.qml
@@ -0,0 +1,27 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+FullscreenContentPage {
+ id: profileImage
+ allowedOrientations: Orientation.All
+
+ property string image: ""
+
+ Image {
+ source: image
+ fillMode: Image.PreserveAspectFit
+ anchors.fill: parent
+ }
+
+ IconButton {
+ icon.source: "image://theme/icon-m-dismiss"
+ anchors {
+ top: profileImage.top
+ topMargin: Theme.horizontalPageMargin
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ }
+ onClicked: pageStack.pop()
+ }
+
+}
diff --git a/qml/pages/components/Toot.qml b/qml/pages/components/Toot.qml
index fbd9190..43de76b 100644
--- a/qml/pages/components/Toot.qml
+++ b/qml/pages/components/Toot.qml
@@ -26,6 +26,8 @@ BackgroundItem {
visible: type.length
anchors.left: lblName.left
anchors.bottom: iconRT.bottom
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.secondaryColor
text: {
var action;
switch(type){
@@ -43,8 +45,6 @@ BackgroundItem {
}
return '@' + retweetScreenName + ' ' + action
}
- font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.secondaryColor
}
Image {
@@ -116,12 +116,12 @@ BackgroundItem {
}
Label {
+ id: lblDate
function timestamp() {
var txt = Format.formatDate(created_at, Formatter.Timepoint)
var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
return (elapsed ? elapsed : txt )
}
- id: lblDate
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
font.pixelSize: Theme.fontSizeExtraSmall
diff --git a/src/notifications.h b/src/notifications.h
index b22486a..524da9e 100644
--- a/src/notifications.h
+++ b/src/notifications.h
@@ -17,7 +17,7 @@ class Notifications : public QObject
{
Q_OBJECT
public:
- explicit Notifications(QObject *parent = 0);
+ explicit Notifications(QObject *parent = nullptr);
Q_INVOKABLE void notify(QString appName, QString summary, QString body, bool preview, QString ts, QString issuekey);
};
From eac5aac326bd5bad0a50bb15bf61ce21c48c30be Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 3 Jun 2020 11:52:07 +0200
Subject: [PATCH 08/70] ui-improvements-fixes
Fixes new UI elements
New responsive UI items
---
qml/pages/ConversationPage.qml | 25 ++++++++++++++--------
qml/pages/ProfilePage.qml | 9 ++++++--
qml/pages/SettingsPage.qml | 12 +----------
qml/pages/components/MediaFullScreen.qml | 27 ++++++++++++------------
qml/pages/components/VisualContainer.qml | 4 ++--
5 files changed, 40 insertions(+), 37 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 611329f..8e6d197 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -7,6 +7,7 @@ import "./components/"
Page {
id: conversationPage
+
property string headerTitle: ""
property string type
property alias title: header.title
@@ -18,6 +19,7 @@ Page {
property string toot_url: ""
property int tootMaxChar: 500;
property ListModel mdl
+
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
console.log(suggestedUser)
@@ -101,7 +103,7 @@ Page {
visible: type === "reply" && toot_url !== ""
MenuItem {
text: qsTr("Copy Link to Clipboard")
- onClicked: Clipboard.text = toot_url;
+ onClicked: Clipboard.text = toot_url
}
}
}
@@ -109,16 +111,21 @@ Page {
Rectangle {
id: predictionList
visible: false
- anchors.bottom: panel.top
- anchors.left: parent.left
- anchors.right: panel.right
- anchors.top: parent.top
- height: implicitHeight
- color: Theme.highlightDimmerColor
+ color: Theme.highlightDimmerColor
+ height: parent.height - panel.height - (Theme.paddingLarge * 4.5)
+ anchors {
+ left: panel.left
+ right: panel.right
+ bottom: if (panel.open == true) {
+ panel.top
+ } else {
+ hiddenPanel.top
+ }
+ }
- SilicaListView {
+ SilicaListView {
rotation: 180
- anchors.fill: parent
+ anchors.fill: parent
model: suggestedModel
clip: true
quickScroll: false
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index a0316e4..d0aa2d8 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -175,7 +175,7 @@ Page {
Rectangle {
id: txtContainer
width: parent.width
- height: Math.min(txtNote.height, parent.height*0.488)
+ height: Math.min(txtNote.height, parent.height*0.5)
color: "transparent"
visible: {
if ((note.text === "") || (note.text === "") ) {
@@ -185,9 +185,13 @@ Page {
}
}
- SilicaListView {
+ SilicaFlickable {
id: txtFlickable
anchors.fill: parent
+ contentWidth: parent.width
+ contentHeight: txtNote.height
+ anchors.topMargin: Theme.paddingMedium
+ anchors.bottomMargin: Theme.paddingMedium
clip: true
quickScroll: false
VerticalScrollDecorator {}
@@ -229,6 +233,7 @@ Page {
id: statsRow
spacing: Theme.paddingLarge
anchors.horizontalCenter: parent.horizontalCenter
+ anchors.topMargin: Theme.paddingMedium
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index cf13abd..3eec6a6 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -38,17 +38,6 @@ Page {
}
}
- IconTextSwitch {
- text: qsTr("Use smaller Font Size in Toots")
- description: qsTr("Enable this option if you prefer to use a smaller font size in displayed Toots")
- icon.source: "image://theme/icon-m-font-size"
- enabled: false
- //checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
- //onClicked: {
- // Logic.conf['loadImages'] = checked
- //}
- }
-
SectionHeader { text: "Account"}
Item {
@@ -82,6 +71,7 @@ Page {
Button {
id: btnRemoveAccount
text: Logic.conf['login'] ? qsTr("Remove Account") : qsTr("Add Account")
+ width: Theme.buttonWidthMedium
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
remorsePopup.execute(btnRemoveAccount.text, function() {
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index 3378cac..b19f5e0 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -114,6 +114,16 @@ FullscreenContentPage {
bottomMargin: Theme.horizontalPageMargin
}
+ MouseArea {
+ anchors.fill: parent
+ onClicked: function() {
+ if (video.playbackState === MediaPlayer.PlayingState)
+ video.pause()
+ else
+ video.play()
+ }
+ }
+
Rectangle {
visible: videoError.text != ""
anchors.left: parent.left
@@ -136,15 +146,6 @@ FullscreenContentPage {
}
}
- MouseArea {
- anchors.fill: parent
- onClicked: function() {
- if (video.playbackState === MediaPlayer.PlayingState)
- video.pause()
- else
- video.play()
- }
- }
}
}
}
@@ -152,7 +153,8 @@ FullscreenContentPage {
Flickable {
id: imageFlickable
visible: false
- contentWidth: imageContainer.width; contentHeight: imageContainer.height
+ contentWidth: imageContainer.width
+ contentHeight: imageContainer.height
clip: true
anchors.fill: parent
onHeightChanged: if (imagePreview.status === Image.Ready) {
@@ -178,8 +180,8 @@ FullscreenContentPage {
fillMode: Image.PreserveAspectFit
cache: true
asynchronous: true
- sourceSize.width: mediaPage.width
- smooth: false
+ sourceSize.width: mediaPage.width
+ smooth: true
anchors.centerIn: parent
onStatusChanged: {
if (status == Image.Ready) {
@@ -197,7 +199,6 @@ FullscreenContentPage {
var yoff = (imageFlickable.height / 2 + imageFlickable.contentY) * scale / prevScale;
imageFlickable.contentY = yoff - imageFlickable.height / 2
}
- prevScale = scale
}
NumberAnimation {
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 8765456..8c2f3ed 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -153,7 +153,7 @@ BackgroundItem {
}
}
text: content.replace(new RegExp("
Date: Thu, 4 Jun 2020 11:17:06 +0200
Subject: [PATCH 09/70] issue #38 fix + ui-improvements
---
qml/pages/MainPage.qml | 10 +-
qml/pages/ProfilePage.qml | 94 ++++++-------
qml/pages/SettingsPage.qml | 41 +++---
qml/pages/components/InfoBanner.qml | 6 +-
qml/pages/components/MediaFullScreen.qml | 163 ++++++++++++-----------
qml/pages/components/MyList.qml | 6 +-
qml/pages/components/Toot.qml | 45 ++++---
qml/pages/components/VisualContainer.qml | 106 ++++++++-------
8 files changed, 234 insertions(+), 237 deletions(-)
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index b254496..f275b8d 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -74,11 +74,13 @@ Page {
}
Item {
- id: tlSearch;
+ id: tlSearch
+
+ property ListModel mdl: ListModel {}
+ property string search
+
width: parent.itemWidth
height: parent.itemHeight
- property ListModel mdl: ListModel {}
- property string search;
onSearchChanged: {
console.log(search)
loader.sourceComponent = loading
@@ -241,7 +243,7 @@ Page {
navigation.navigateTo('search')
} else {
- Qt.openUrlExternally(href);
+ Qt.openUrlExternally(href)
}
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index d0aa2d8..b6e9d78 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -1,8 +1,8 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
+import QtGraphicalEffects 1.0
import "../lib/API.js" as Logic
import "./components/"
-import QtGraphicalEffects 1.0
Page {
@@ -12,6 +12,9 @@ Page {
property string display_name: ""
property string username: ""
property string profileImage: ""
+ property string profileBackground: ""
+ property string note: ""
+ property string url: ""
property int user_id
property int statuses_count
property int following_count
@@ -19,17 +22,14 @@ Page {
property int favourites_count
property int reblogs_count
property int count_moments
- property string profileBackground: ""
- property string note: ""
- property string url: ""
property bool locked: false
- property date created_at
property bool following: false
property bool requested: false
property bool followed_by: false
property bool blocking: false
property bool muting: false
property bool domain_blocking: false
+ property date created_at
WorkerScript {
id: worker
@@ -106,6 +106,7 @@ Page {
}
}
}
+
// The effective value will be restricted by ApplicationWindow.allowedOrientations
allowedOrientations: Orientation.All
Component.onCompleted: {
@@ -155,8 +156,7 @@ Page {
}
}
- // ProfilePage ExpandingSection
- ExpandingSectionGroup {
+ ExpandingSectionGroup { // ProfilePage ExpandingSection
id: profileExpander
anchors {
bottom: parent.bottom
@@ -168,17 +168,16 @@ Page {
id: expandingSection1
title: qsTr("About")
content.sourceComponent: Column {
- height: Math.min(txtContainer, parent.height*0.7)
- spacing: Theme.paddingSmall
- anchors.bottomMargin: Theme.paddingLarge
+ height: Math.min( txtContainer, parent.height * 0.7 )
+ spacing: Theme.paddingLarge
- Rectangle {
+ Item {
id: txtContainer
width: parent.width
- height: Math.min(txtNote.height, parent.height*0.5)
- color: "transparent"
+ height: Math.min( txtNote.height, parent.height * 0.55 )
+ //color: "transparent"
visible: {
- if ((note.text === "") || (note.text === "") ) {
+ if ((note.text === "") || ( note.text === "" )) {
false
} else {
true
@@ -187,23 +186,21 @@ Page {
SilicaFlickable {
id: txtFlickable
- anchors.fill: parent
contentWidth: parent.width
contentHeight: txtNote.height
- anchors.topMargin: Theme.paddingMedium
- anchors.bottomMargin: Theme.paddingMedium
+ anchors.fill: parent
clip: true
- quickScroll: false
+
VerticalScrollDecorator {}
- Text {
+ Label {
id: txtNote
text: note
textFormat: Text.StyledText
- wrapMode: Text.Wrap
- font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.secondaryColor
+ font.pixelSize: Theme.fontSizeExtraSmall
linkColor: Theme.highlightColor
+ wrapMode: Text.Wrap
width: parent.width - ( 2 * Theme.horizontalPageMargin )
anchors.horizontalCenter: parent.horizontalCenter
onLinkActivated: {
@@ -219,8 +216,13 @@ Page {
return check;
}));
send(link)
- /* Function still missing for user accounts */
- // } else if (test.length === 4 && test[3][0] === "@" ) {
+ } else if (test.length === 4 && test[3][0] === "@" ) {
+ pageStack.pop(pageStack.find(function(page) {
+ var check = page.isFirstPage === true;
+ if (check)
+ page.onLinkActivated(link)
+ return check;
+ }));
} else {
Qt.openUrlExternally(link);
}
@@ -229,11 +231,14 @@ Page {
}
}
+ Item { // dummy item for spacing
+ height: Theme.paddingSmall
+ }
+
Row {
id: statsRow
spacing: Theme.paddingLarge
anchors.horizontalCenter: parent.horizontalCenter
- anchors.topMargin: Theme.paddingMedium
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
@@ -274,15 +279,8 @@ Page {
} */
}
- Label {
- id: separatorLabel1
- x: Theme.horizontalPageMargin
- width: parent.width - ( 2 * Theme.horizontalPageMargin )
- font.pixelSize: Theme.fontSizeExtraSmall
- wrapMode: Text.Wrap
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
+ Item { // dummy item for spacing
+ height: Theme.paddingSmall
}
ButtonLayout {
@@ -350,39 +348,23 @@ Page {
}
}
- Separator {
- id: btnSeparator
- width: parent.width
- height: Theme.paddingMedium
- color: Theme.primaryColor
- opacity: 0.0
- horizontalAlignment: Qt.AlignHCenter
- }
-
Button {
id: btnBrowser
text: qsTr("Open in Browser")
preferredWidth: Theme.buttonWidthMedium
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
+ anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
- Qt.openUrlExternally(url);
+ Qt.openUrlExternally(url)
}
}
- Label {
- id: separatorLabel2
- x: Theme.horizontalPageMargin
- width: parent.width - ( 2 * Theme.horizontalPageMargin )
- font.pixelSize: Theme.fontSizeExtraSmall
- wrapMode: Text.Wrap
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
+ Rectangle { // dummy item for spacing
+ height: Theme.paddingSmall
+ width: parent.width
+ opacity: 0
}
-
}
}
}
+
}
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index 3eec6a6..70a6dd6 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -25,7 +25,7 @@ Page {
title: qsTr("Settings")
}
- SectionHeader { text: "Options"}
+ SectionHeader { text: qsTr("Options")}
IconTextSwitch {
text: qsTr("Load Images in Toots")
@@ -38,7 +38,7 @@ Page {
}
}
- SectionHeader { text: "Account"}
+ SectionHeader { text: qsTr("Account")}
Item {
id: removeAccount
@@ -53,7 +53,7 @@ Page {
Icon {
id: icnRemoveAccount
- color: Theme.secondaryColor
+ color: Theme.highlightColor
width: Theme.iconSizeMedium
fillMode: Image.PreserveAspectFit
source: Logic.conf['login'] ? "image://theme/icon-m-contact" : "image://theme/icon-m-add"
@@ -96,7 +96,7 @@ Page {
text: Logic.conf['login'] ? qsTr("Deauthorize this app from using your account and remove account data from phone") : qsTr("Authorize this app to access your Mastodon account")
font.pixelSize: Theme.fontSizeExtraSmall
wrapMode: Text.Wrap
- color: Theme.secondaryColor
+ color: Theme.highlightColor
anchors {
left: parent.left
leftMargin: Theme.paddingLarge * 1.9
@@ -107,24 +107,25 @@ Page {
}
}
- /* SectionHeader { text: "Support"}
+ SectionHeader {
+ text: qsTr("Translate")
+ }
- IconTextSwitch {
- text: qsTr("Translate")
- description: qsTr("Use Transifex to help with app translation to your language")
- icon.source: "image://theme/icon-m-font-size"
- onCheckedChanged: {
- busy = true;
- checked = false;
- Qt.openUrlExternally("https://www.transifex.com/dysko/tooter/");
- timer2.start()
+ LinkedLabel {
+ text: qsTr("Use Transifex to help with app translation to your language.")
+ textFormat: Text.StyledText
+ color: Theme.highlightColor
+ linkColor: Theme.primaryColor
+ font.family: Theme.fontFamilyHeading
+ font.pixelSize: Theme.fontSizeExtraSmall
+ wrapMode: Text.Wrap
+ anchors {
+ left: parent.left
+ leftMargin: Theme.horizontalPageMargin
+ right: parent.right
+ rightMargin: Theme.paddingLarge
}
- Timer {
- id: timer2
- interval: 4700
- onTriggered: parent.busy = false
- }
- } */
+ }
SectionHeader {
text: qsTr("Credits")
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index a6a444e..8d33b9a 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -3,7 +3,7 @@ import Sailfish.Silica 1.0
DockedPanel {
- id: root
+ id: root
dock: Dock.Top
width: parent.width
height: content.height
@@ -12,14 +12,14 @@ DockedPanel {
id: content
color: Theme.highlightBackgroundColor
width: root.width
- height: infoLabel.height + 3*Theme.paddingMedium
+ height: infoLabel.height + 2 * Theme.paddingMedium
Label {
id: infoLabel
text : ""
font.family: Theme.fontFamilyHeading
font.pixelSize: Theme.fontSizeMedium
- color: Theme.highlightColor
+ color: Theme.primaryColor
wrapMode: Text.WrapAnywhere
width: parent.width
anchors {
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index b19f5e0..fda8df1 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -30,6 +30,8 @@ FullscreenContentPage {
id: videoFlickable
visible: false
anchors.fill: parent
+ contentWidth: imageContainer.width
+ contentHeight: imageContainer.height
clip: true
Image {
@@ -113,43 +115,44 @@ FullscreenContentPage {
rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
bottomMargin: Theme.horizontalPageMargin
}
-
- MouseArea {
- anchors.fill: parent
- onClicked: function() {
- if (video.playbackState === MediaPlayer.PlayingState)
- video.pause()
- else
- video.play()
- }
- }
-
- Rectangle {
- visible: videoError.text != ""
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- color: Theme.highlightDimmerColor
- height: videoError.height + 2*Theme.paddingMedium
- width: parent.width
-
- Label {
- id: videoError
- visible: false
- text: video.errorString
- font.pixelSize: Theme.fontSizeSmall
- color: Theme.highlightColor
- wrapMode: Text.Wrap
- width: parent.width - 2*Theme.paddingMedium
- height: contentHeight
- anchors.centerIn: parent
- }
- }
-
}
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: function() {
+ if (video.playbackState === MediaPlayer.PlayingState)
+ video.pause()
+ else
+ video.play()
+ }
+ }
+
+ Rectangle {
+ visible: videoError.text != ""
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ color: Theme.highlightDimmerColor
+ height: videoError.height + 2*Theme.paddingMedium
+ width: parent.width
+
+ Label {
+ id: videoError
+ visible: false
+ text: video.errorString
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.highlightColor
+ wrapMode: Text.Wrap
+ width: parent.width - 2*Theme.paddingMedium
+ height: contentHeight
+ anchors.centerIn: parent
+ }
+ }
+
}
}
+
Flickable {
id: imageFlickable
visible: false
@@ -158,7 +161,7 @@ FullscreenContentPage {
clip: true
anchors.fill: parent
onHeightChanged: if (imagePreview.status === Image.Ready) {
- imagePreview.fitToScreen()
+ imagePreview.fitToScreen();
}
Item {
@@ -190,6 +193,15 @@ FullscreenContentPage {
}
}
+ NumberAnimation {
+ id: loadedAnimation
+ target: imagePreview
+ property: "opacity"
+ duration: 250
+ from: 0; to: 1
+ easing.type: Easing.InOutQuad
+ }
+
onScaleChanged: {
if ((width * scale) > imageFlickable.width) {
var xoff = (imageFlickable.width / 2 + imageFlickable.contentX) * scale / prevScale;
@@ -199,15 +211,7 @@ FullscreenContentPage {
var yoff = (imageFlickable.height / 2 + imageFlickable.contentY) * scale / prevScale;
imageFlickable.contentY = yoff - imageFlickable.height / 2
}
- }
-
- NumberAnimation {
- id: loadedAnimation
- target: imagePreview
- property: "opacity"
- duration: 250
- from: 0; to: 1
- easing.type: Easing.InOutQuad
+ prevScale = scale
}
}
}
@@ -245,47 +249,45 @@ FullscreenContentPage {
from: imagePreview.scale
}
}
+ }
- Loader {
- anchors.centerIn: parent
- sourceComponent: {
- switch (imagePreview.status) {
- case Image.Loading:
- return loadingIndicator
- case Image.Error:
- return failedLoading
- default:
- return undefined
- }
- }
-
- Component {
- id: loadingIndicator
- Item {
- width: mediaPage.width
- height: childrenRect.height
-
- ProgressCircle {
- id: imageLoadingIndicator
- progressValue: imagePreview.progress
- progressColor: inAlternateCycle ? Theme.highlightColor : Theme.highlightDimmerColor
- backgroundColor: inAlternateCycle ? Theme.highlightDimmerColor : Theme.highlightColor
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
-
- Component {
- id: failedLoading
- Text {
- text: qsTr("Error loading")
- font.pixelSize: Theme.fontSizeSmall;
- color: Theme.highlightColor
- }
+ Loader {
+ anchors.centerIn: parent
+ sourceComponent: {
+ switch (imagePreview.status) {
+ case Image.Loading:
+ return loadingIndicator
+ case Image.Error:
+ return failedLoading
+ default:
+ return undefined
}
}
- VerticalScrollDecorator { flickable: imageFlickable }
+ Component {
+ id: loadingIndicator
+ Item {
+ width: mediaPage.width
+ height: childrenRect.height
+
+ ProgressCircle {
+ id: imageLoadingIndicator
+ progressValue: imagePreview.progress
+ progressColor: inAlternateCycle ? Theme.highlightColor : Theme.highlightDimmerColor
+ backgroundColor: inAlternateCycle ? Theme.highlightDimmerColor : Theme.highlightColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+ }
+
+ Component {
+ id: failedLoading
+ Text {
+ text: qsTr("Error loading")
+ font.pixelSize: Theme.fontSizeSmall;
+ color: Theme.highlightColor
+ }
}
IconButton {
@@ -314,5 +316,6 @@ FullscreenContentPage {
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
}
}
+ VerticalScrollDecorator { flickable: imageFlickable }
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index d3dc318..adad1ea 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -6,6 +6,7 @@ import "."
SilicaListView {
id: myList
+
property string type
property string title
property string vwPlaceholderText: qsTr("Loading")
@@ -22,6 +23,7 @@ SilicaListView {
property variant conf
property bool notifier: false
model: mdl
+
signal notify (string what, int num)
onNotify: {
console.log(what + " - " + num)
@@ -109,6 +111,7 @@ SilicaListView {
loadData("append")
}
}
+
BusyIndicator {
size: BusyIndicatorSize.Small
running: loadStarted;
@@ -116,6 +119,7 @@ SilicaListView {
anchors.horizontalCenter: parent.horizontalCenter
}
}
+
onContentYChanged: {
if (Math.abs(contentY - scrollOffset) > Theme.itemSizeMedium) {
openDrawer(contentY - scrollOffset > 0 ? false : true )
@@ -139,7 +143,6 @@ SilicaListView {
if (messageObject.fireNotification && notifier){
Logic.notifier(messageObject.data)
}
-
}
}
@@ -154,6 +157,7 @@ SilicaListView {
loadData("prepend")
}
}
+
function loadData(mode){
var p = []
if (params.length)
diff --git a/qml/pages/components/Toot.qml b/qml/pages/components/Toot.qml
index 43de76b..5a705e1 100644
--- a/qml/pages/components/Toot.qml
+++ b/qml/pages/components/Toot.qml
@@ -11,6 +11,7 @@ BackgroundItem {
//property string text: "0"
width: parent.width
height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (type.length ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
+
Image {
id: iconRT
y: Theme.paddingLarge
@@ -67,7 +68,6 @@ BackgroundItem {
})
}
}
-
}
Label {
@@ -86,33 +86,33 @@ BackgroundItem {
Image {
id: iconVerified
+ visible: account_locked
y: Theme.paddingLarge
+ opacity: 0.8
+ source: "image://theme/icon-s-secure?" + (pressed
+ ? Theme.highlightColor
+ : Theme.primaryColor)
+ width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
+ height: width
anchors {
left: lblName.right
leftMargin: Theme.paddingSmall
verticalCenter: lblName.verticalCenter
}
- visible: account_locked
- width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
- opacity: 0.8
- height: width
- source: "image://theme/icon-s-secure?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
}
Label {
id: lblScreenName
+ truncationMode: TruncationMode.Fade
+ text: '@'+account_username
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
anchors {
left: iconVerified.right
right: lblDate.left
leftMargin: Theme.paddingMedium
baseline: lblName.baseline
}
- truncationMode: TruncationMode.Fade
- text: '@'+account_username
- font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
}
Label {
@@ -122,9 +122,9 @@ BackgroundItem {
var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
return (elapsed ? elapsed : txt )
}
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
font.pixelSize: Theme.fontSizeExtraSmall
+ color: (pressed ? Theme.highlightColor : Theme.primaryColor)
horizontalAlignment: Text.AlignRight
anchors {
right: parent.right
@@ -135,13 +135,6 @@ BackgroundItem {
Text {
id: lblText
- anchors {
- left: lblName.left
- right: parent.right
- top: lblScreenName.bottom
- topMargin: Theme.paddingSmall
- rightMargin: Theme.paddingLarge
- }
height: content.length ? paintedHeight : 0
onLinkActivated: {
console.log(link)
@@ -165,12 +158,20 @@ BackgroundItem {
}
text: content
textFormat: Text.RichText
+ font.pixelSize: Theme.fontSizeSmall
+ color: (pressed ? Theme.highlightColor : Theme.primaryColor)
linkColor : Theme.highlightColor
wrapMode: Text.Wrap
maximumLineCount: 6
- font.pixelSize: Theme.fontSizeSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
+ anchors {
+ left: lblName.left
+ right: parent.right
+ top: lblScreenName.bottom
+ topMargin: Theme.paddingSmall
+ rightMargin: Theme.paddingLarge
+ }
}
+
onClicked: {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
headerTitle: "Conversation",
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 8c2f3ed..5382131 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -5,13 +5,16 @@ import "../../lib/API.js" as Logic
BackgroundItem {
id: delegate
+
signal send (string notice)
signal navigateTo(string link)
+
width: parent.width
height: mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
+
Rectangle {
- x: 0;
- y: 0;
+ x: 0
+ y: 0
visible: status_visibility == 'direct'
width: parent.width
height: parent.height
@@ -31,20 +34,20 @@ BackgroundItem {
Image {
id: avatar
+ visible: true
+ opacity: status === Image.Ready ? 1.0 : 0.0
+ Behavior on opacity { FadeAnimator {} }
+ asynchronous: true
+ smooth: true
+ source: account_avatar
+ width: Theme.iconSizeMedium
+ height: width
anchors {
top: miniStatus.visible ? miniStatus.bottom : parent.top
topMargin: miniStatus.visible ? Theme.paddingMedium : Theme.paddingLarge
left: parent.left
leftMargin: Theme.horizontalPageMargin
}
- opacity: status === Image.Ready ? 1.0 : 0.0
- Behavior on opacity { FadeAnimator {} }
- asynchronous: true
- width: Theme.iconSizeMedium
- height: width
- smooth: true
- source: account_avatar
- visible: true
onStatusChanged: {
if (avatar.status === Image.Error)
source = "../../images/icon-m-profile.svg?" + (pressed
@@ -63,20 +66,19 @@ BackgroundItem {
"profileBackground": model.account_header
})
}
-
}
Image {
id: iconTR
+ visible: typeof status_reblogged !== "undefined" && status_reblogged
+ width: Theme.iconSizeExtraSmall
+ height: width
+ source: "image://theme/icon-s-retweet"
anchors {
top: avatar.bottom
topMargin: Theme.paddingMedium
left: avatar.left
}
- visible: typeof status_reblogged !== "undefined" && status_reblogged
- width: Theme.iconSizeExtraSmall
- height: width
- source: "image://theme/icon-s-retweet"
}
Rectangle {
@@ -90,15 +92,16 @@ BackgroundItem {
left: parent.left
leftMargin: -width/3
}
+
Image {
asynchronous: true
- width: Theme.iconSizeSmall
- height: width
smooth: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
source: typeof reblog_account_avatar !== "undefined" ? reblog_account_avatar : ''
visible: typeof status_reblog !== "undefined" && status_reblog
+ width: Theme.iconSizeSmall
+ height: width
}
}
}
@@ -114,6 +117,13 @@ BackgroundItem {
Text {
id: lblContent
+ text: content.replace(new RegExp(" paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
anchors {
left: miniHeader.left
leftMargin: Theme.paddingMedium
@@ -123,7 +133,6 @@ BackgroundItem {
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
}
- height: content.length ? (contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
onLinkActivated: {
var test = link.split("/")
console.log(link)
@@ -139,34 +148,32 @@ BackgroundItem {
}));
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')
- // Original component
- /* pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
- "name": "",
- "username": test[3].substring(1)+"@"+test[2],
- "profileImage": ""
- }) */
+ pageStack.pop(pageStack.find(function(page) {
+ var check = page.isFirstPage === true;
+ if (check)
+ page.onLinkActivated(link)
+ return check;
+ }));
} else {
Qt.openUrlExternally(link);
}
}
- text: content.replace(new RegExp(" 0
+ anchors.fill: parent
+
Label {
id: contentWarningLabel
+ text: model.status_spoiler_text
font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ truncationMode: TruncationMode.Fade
+ wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
+ width: parent.width
anchors {
topMargin: Theme.paddingSmall
left: parent.left
@@ -176,16 +183,11 @@ BackgroundItem {
rightMargin: Theme.paddingMedium
bottomMargin: Theme.paddingSmall
}
- width: parent.width
- truncationMode: TruncationMode.Fade
- color: Theme.highlightColor
- wrapMode: Text.Wrap
- text: model.status_spoiler_text
}
MouseArea {
anchors.fill: parent
- onClicked: parent.visible = false;
+ onClicked: parent.visible = false
}
}
@@ -193,6 +195,8 @@ BackgroundItem {
MediaBlock {
id: media
+ model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
+ height: Theme.iconSizeExtraLarge * 2
anchors {
left: lblContent.left
right: lblContent.right
@@ -200,12 +204,11 @@ BackgroundItem {
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
}
- model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
- height: Theme.iconSizeExtraLarge * 2
}
ContextMenu {
id: mnu
+
MenuItem {
enabled: model.type !== "follow"
text: typeof model.reblogged !== "undefined" && model.reblogged ? qsTr("Unboost") : qsTr("Boost")
@@ -221,27 +224,28 @@ BackgroundItem {
model.reblogs_count = !status ? model.reblogs_count+1 : (model.reblogs_count > 0 ? model.reblogs_count-1 : model.reblogs_count);
model.reblogged = !model.reblogged
}
+
Image {
id: icRT
+ source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
+ width: Theme.iconSizeExtraSmall
+ height: width
anchors {
leftMargin: Theme.horizontalPageMargin
left: parent.left
verticalCenter: parent.verticalCenter
}
- width: Theme.iconSizeExtraSmall
- height: width
- source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
}
Label {
+ text: reblogs_count
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: !model.reblogged ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icRT.right
leftMargin: Theme.paddingMedium
verticalCenter: parent.verticalCenter
}
- text: reblogs_count
- font.pixelSize: Theme.fontSizeExtraSmall
- color: !model.reblogged ? Theme.highlightColor : Theme.primaryColor
}
}
@@ -274,14 +278,14 @@ BackgroundItem {
}
Label {
+ text: favourites_count
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: !model.favourited ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icFA.right
leftMargin: Theme.paddingMedium
verticalCenter: parent.verticalCenter
}
- text: favourites_count
- font.pixelSize: Theme.fontSizeExtraSmall
- color: !model.favourited ? Theme.highlightColor : Theme.primaryColor
}
}
}
From 99b070124b3a0df48e03a47bfcad42e7fb284525 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 4 Jun 2020 19:44:12 +0200
Subject: [PATCH 10/70] small ui-adjustments
---
qml/lib/API.js | 2 -
qml/pages/ConversationPage.qml | 2 +-
qml/pages/LoginPage.qml | 3 +-
qml/pages/MainPage.qml | 14 +++----
qml/pages/ProfilePage.qml | 3 +-
qml/pages/SettingsPage.qml | 5 +--
qml/pages/components/MyList.qml | 1 +
qml/pages/components/VisualContainer.qml | 48 ++++++++++++++++++++++--
8 files changed, 58 insertions(+), 20 deletions(-)
diff --git a/qml/lib/API.js b/qml/lib/API.js
index 3dce882..ea84804 100644
--- a/qml/lib/API.js
+++ b/qml/lib/API.js
@@ -88,7 +88,6 @@ var tootParser = function(data){
ret.display_name = data.account.display_name
ret.avatar_static = data.account.avatar_static
-
ret.favourited = data.favourited ? true : false
ret.favourites_count = data.favourites_count ? data.favourites_count : 0
@@ -100,7 +99,6 @@ var tootParser = function(data){
ret.sensitive = data.sensitive ? true : false
ret.visibility = data.visibility ? data.visibility : false
-
console.log(ret)
}
var test = 1;
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 8e6d197..db97654 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -259,7 +259,7 @@ Page {
property string selection
opacity: 0.7
icon {
- color: Theme.highlightColor
+ color: Theme.secondaryColor
width: Theme.iconSizeSmallPlus
fillMode: Image.PreserveAspectFit
source: "../../qml/images/emojiselect.svg"
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index 7751cdf..b35ad7a 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -31,14 +31,13 @@ Page {
focus: true
label: qsTr("Enter a valid Mastodon instance URL")
text: "https://"
- placeholderText: "https://mastodon.social"
width: parent.width
validator: RegExpValidator { regExp: /^(ftp|http|https):\/\/[^ "]+$/ }
EnterKey.enabled: instance.acceptableInput;
EnterKey.highlighted: instance.acceptableInput;
EnterKey.iconSource: "image://theme/icon-m-accept"
EnterKey.onClicked: {
- Logic.api = new Logic.MastodonAPI({ instance: instance.text, api_user_token: "" });
+ Logic.api = Logic.mastodonAPI({ instance: instance.text, api_user_token: "" });
Logic.api.registerApplication("Tooter",
'http://localhost/harbour-tooter', // redirect uri, we will need this later on
["read", "write", "follow"], //scopes
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index f275b8d..acd1a89 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -32,7 +32,7 @@ Page {
VisualItemModel {
id: visualModel
MyList{
- id: tlHome;
+ id: tlHome
title: qsTr("Home")
type: "timelines/home"
mdl: Logic.modelTLhome
@@ -42,35 +42,35 @@ Page {
}
MyList{
- id: tlNotifications;
+ id: tlNotifications
title: qsTr("Notifications")
type: "notifications"
notifier: true
mdl: Logic.modelTLnotifications
width: parent.itemWidth
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: infoPanel.open = setDrawer
}
MyList{
- id: tlLocal;
+ id: tlLocal
title: qsTr("Local")
type: "timelines/public?local=true"
//params: ["local", true]
mdl: Logic.modelTLlocal
width: parent.itemWidth
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: infoPanel.open = setDrawer
}
MyList{
- id: tlPublic;
+ id: tlPublic
title: qsTr("Federated")
type: "timelines/public"
mdl: Logic.modelTLpublic
width: parent.itemWidth
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: infoPanel.open = setDrawer
}
Item {
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index b6e9d78..e2318af 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -15,7 +15,7 @@ Page {
property string profileBackground: ""
property string note: ""
property string url: ""
- property int user_id
+ property string user_id: ""
property int statuses_count
property int following_count
property int followers_count
@@ -175,7 +175,6 @@ Page {
id: txtContainer
width: parent.width
height: Math.min( txtNote.height, parent.height * 0.55 )
- //color: "transparent"
visible: {
if ((note.text === "") || ( note.text === "" )) {
false
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index 70a6dd6..876929c 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -46,7 +46,7 @@ Page {
height: txtRemoveAccount.height + btnRemoveAccount.height + Theme.paddingLarge
anchors {
left: parent.left
- leftMargin: Theme.paddingLarge
+ leftMargin: Theme.horizontalPageMargin
right: parent.right
rightMargin: Theme.paddingLarge
}
@@ -99,9 +99,8 @@ Page {
color: Theme.highlightColor
anchors {
left: parent.left
- leftMargin: Theme.paddingLarge * 1.9
right: parent.right
- rightMargin: Theme.paddingLarge * 1.2
+ rightMargin: Theme.paddingLarge + icnRemoveAccount
}
}
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index adad1ea..e3b1d14 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -22,6 +22,7 @@ SilicaListView {
property variant vars
property variant conf
property bool notifier: false
+
model: mdl
signal notify (string what, int num)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 5382131..b86e715 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -13,6 +13,7 @@ BackgroundItem {
height: mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
Rectangle {
+ id: bgDirect
x: 0
y: 0
visible: status_visibility == 'direct'
@@ -22,6 +23,20 @@ BackgroundItem {
color: Theme.highlightBackgroundColor
}
+ /* Rectangle {
+ id: bgDelegate
+ x: 0
+ y: 0
+ visible: status_visibility !== 'direct'
+ width: parent.width
+ height: parent.height
+ opacity: 0.15
+ gradient: Gradient {
+ GradientStop { position: 0.7; color: "transparent" }
+ GradientStop { position: 1.0; color: Theme.highlightDimmerColor }
+ }
+ } */
+
MiniStatus {
id: miniStatus
anchors {
@@ -117,13 +132,16 @@ BackgroundItem {
Text {
id: lblContent
+ visible: model.type !== "follow"
text: content.replace(new RegExp(" paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
+ height: if (model.type === "follow") {
+ Theme.paddingLarge
+ } else content.length ? (contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
anchors {
left: miniHeader.left
leftMargin: Theme.paddingMedium
@@ -210,7 +228,7 @@ BackgroundItem {
id: mnu
MenuItem {
- enabled: model.type !== "follow"
+ visible: model.type !== "follow"
text: typeof model.reblogged !== "undefined" && model.reblogged ? qsTr("Unboost") : qsTr("Boost")
onClicked: {
var status = typeof model.reblogged !== "undefined" && model.reblogged
@@ -250,7 +268,7 @@ BackgroundItem {
}
MenuItem {
- enabled: model.type !== "follow"
+ visible: model.type !== "follow"
text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
onClicked: {
var status = typeof model.favourited !== "undefined" && model.favourited
@@ -288,6 +306,30 @@ BackgroundItem {
}
}
}
+
+ MenuItem {
+ visible: model.type === "follow"
+ text: qsTr("Mention")
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
+ headerTitle: "Mention",
+ description: "@"+reblog_account_acct,
+ type: "new"
+ })
+ }
+
+ Image {
+ id: icMT
+ anchors {
+ leftMargin: Theme.horizontalPageMargin
+ left: parent.left
+ verticalCenter: parent.verticalCenter
+ }
+ width: Theme.iconSizeExtraSmall
+ height: width
+ source: "image://theme/icon-s-chat?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
+ }
+ }
}
onClicked: {
From 5f4dae2a2ddd42aca31cd4ae05d8096e8a08f1ca Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 5 Jun 2020 18:38:15 +0200
Subject: [PATCH 11/70] added icon-s-following
- added custom follower icon for miniHeader
- theme coloring for miniHeader icons
- removed unused icons
- changed icon name emojis
---
harbour-tooter.pro | 6 +--
qml/images/boosted.svg | 16 --------
.../{emojiselect.svg => icon-m-emoji.svg} | 0
qml/images/icon-s-following.svg | 12 ++++++
qml/images/notification.svg | 39 -------------------
qml/images/verified.svg | 26 -------------
qml/lib/Worker.js | 2 +-
qml/pages/ConversationPage.qml | 2 +-
qml/pages/MainPage.qml | 2 +-
qml/pages/components/MiniHeader.qml | 4 +-
qml/pages/components/MiniStatus.qml | 3 +-
qml/pages/components/MyList.qml | 29 +++++++-------
12 files changed, 37 insertions(+), 104 deletions(-)
delete mode 100644 qml/images/boosted.svg
rename qml/images/{emojiselect.svg => icon-m-emoji.svg} (100%)
create mode 100644 qml/images/icon-s-following.svg
delete mode 100644 qml/images/notification.svg
delete mode 100644 qml/images/verified.svg
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index a7c61ae..fc04db3 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -74,11 +74,9 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/components/Toot.qml \
qml/pages/Browser.qml \
qml/lib/API.js \
- qml/images/notification.svg \
- qml/images/verified.svg \
- qml/images/boosted.svg \
+ qml/images/icon-s-following \
qml/images/tooter.svg \
- qml/images/emojiselect.svg \
+ qml/images/icon-m-emoji.svg \
qml/images/icon-m-profile.svg \
qml/images/icon-l-profile.svg \
qml/lib/Mastodon.js \
diff --git a/qml/images/boosted.svg b/qml/images/boosted.svg
deleted file mode 100644
index 468e2da..0000000
--- a/qml/images/boosted.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
diff --git a/qml/images/emojiselect.svg b/qml/images/icon-m-emoji.svg
similarity index 100%
rename from qml/images/emojiselect.svg
rename to qml/images/icon-m-emoji.svg
diff --git a/qml/images/icon-s-following.svg b/qml/images/icon-s-following.svg
new file mode 100644
index 0000000..ebcf5ee
--- /dev/null
+++ b/qml/images/icon-s-following.svg
@@ -0,0 +1,12 @@
+
diff --git a/qml/images/notification.svg b/qml/images/notification.svg
deleted file mode 100644
index 56f1b35..0000000
--- a/qml/images/notification.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
diff --git a/qml/images/verified.svg b/qml/images/verified.svg
deleted file mode 100644
index 65d529b..0000000
--- a/qml/images/verified.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 19469c6..0317523 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -190,7 +190,7 @@ function parseNotification(data){
item = parseAccounts(item, "", data["account"])
item = parseAccounts(item, "reblog_", data["account"])
item['content'] = data['account']['note']
- item['typeIcon'] = "image://theme/icon-s-installed"
+ item['typeIcon'] = "../../images/icon-s-following.svg"
item['attachments'] = []
break;
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index db97654..fb57082 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -262,7 +262,7 @@ Page {
color: Theme.secondaryColor
width: Theme.iconSizeSmallPlus
fillMode: Image.PreserveAspectFit
- source: "../../qml/images/emojiselect.svg"
+ source: "../../qml/images/icon-m-emoji.svg"
}
anchors {
top: warningContent.bottom
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index acd1a89..c809e19 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -208,7 +208,7 @@ Page {
}
IconButton {
- id: newTweet
+ id: newToot
width: Theme.iconSizeLarge
height: width
visible: !isPortrait ? true : !infoPanel.open
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index af5c608..0b52e44 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -26,7 +26,7 @@ Item {
}
Image {
- id: iconVerified
+ id: iconLocked
y: Theme.paddingLarge
anchors {
left: lblName.right
@@ -47,7 +47,7 @@ Item {
font.pixelSize: Theme.fontSizeExtraSmall
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
anchors {
- left: iconVerified.right
+ left: iconLocked.right
right: lblDate.left
leftMargin: Theme.paddingMedium
baseline: lblName.baseline
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index a38dfca..d9dc96c 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -7,9 +7,10 @@ Item {
visible: true
height: icon.height+Theme.paddingMedium
width: parent.width
- Image {
+ Icon {
id: icon
visible: type.length
+ color: Theme.highlightColor
width: Theme.iconSizeExtraSmall
height: width
source: typeof typeIcon !== "undefined" ? typeIcon : ""
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index e3b1d14..ce8f5e6 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -39,17 +39,18 @@ SilicaListView {
console.log("LIST send signal emitted with notice: " + notice)
}
- BusyIndicator {
- size: BusyIndicatorSize.Large
- running: myList.model.count === 0 && !viewPlaceHolder.visible
- anchors.centerIn: parent
- }
header: PageHeader {
title: myList.title
description: myList.description
}
+ BusyIndicator {
+ size: BusyIndicatorSize.Large
+ running: myList.model.count === 0 && !viewPlaceHolder.visible
+ anchors.centerIn: parent
+ }
+
ViewPlaceholder {
id: viewPlaceHolder
enabled: model.count === 0
@@ -65,6 +66,16 @@ SilicaListView {
}
}
+ MenuItem {
+ text: qsTr("New Toot")
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
+ //headerTitle: "New Toot",
+ type: "new"
+ })
+ }
+ }
+
MenuItem {
text: qsTr("Load more")
onClicked: {
@@ -72,14 +83,6 @@ SilicaListView {
}
}
}
- clip: true
- section {
- property: 'section'
- delegate: SectionHeader {
- height: Theme.itemSizeExtraSmall
- text: Format.formatDate(section, Formatter.DateMedium)
- }
- }
delegate: VisualContainer {
} //Toot {}
From 9fb1efc189830af7db028091d97c956e887fe4ca Mon Sep 17 00:00:00 2001
From: molan-git
Date: Sat, 6 Jun 2020 23:17:27 +0200
Subject: [PATCH 12/70] improved notifications UI
notifications (mentions, favs, reblogs) are distinguished by different looks (initial commits)
---
qml/pages/ConversationPage.qml | 6 ++--
qml/pages/components/VisualContainer.qml | 43 +++++++++++++++++++++---
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index fb57082..221ae56 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -17,7 +17,7 @@ Page {
property ListModel suggestedModel
property string toot_id: ""
property string toot_url: ""
- property int tootMaxChar: 500;
+ property int tootMaxChar: 500
property ListModel mdl
allowedOrientations: Orientation.All
@@ -65,8 +65,8 @@ Page {
visible: false
}
- SilicaListView {
- id: conversationList
+ SilicaListView {
+ id: myList
header: PageHeader {
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
}
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index b86e715..b82044e 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -10,8 +10,9 @@ BackgroundItem {
signal navigateTo(string link)
width: parent.width
- height: mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
-
+ height: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
+ mnu.height + miniHeader.height + Theme.paddingLarge + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
+ } else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
Rectangle {
id: bgDirect
x: 0
@@ -37,6 +38,20 @@ BackgroundItem {
}
} */
+ Rectangle {
+ id: bgDelegate
+ x: 0
+ y: 0
+ visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
+ width: parent.width
+ height: parent.height
+ opacity: 0.5
+ gradient: Gradient {
+ GradientStop { position: -0.5; color: "transparent" }
+ GradientStop { position: 0.4; color: Theme.highlightDimmerColor }
+ }
+ }
+
MiniStatus {
id: miniStatus
anchors {
@@ -83,6 +98,13 @@ BackgroundItem {
}
}
+ Rectangle {
+ visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
+ opacity: 0.5
+ color: Theme.highlightDimmerColor
+ anchors.fill: avatar
+ }
+
Image {
id: iconTR
visible: typeof status_reblogged !== "undefined" && status_reblogged
@@ -109,6 +131,7 @@ BackgroundItem {
}
Image {
+ id: reblogAvatar
asynchronous: true
smooth: true
opacity: status === Image.Ready ? 1.0 : 0.0
@@ -118,6 +141,13 @@ BackgroundItem {
width: Theme.iconSizeSmall
height: width
}
+
+ Rectangle {
+ visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
+ opacity: 0.5
+ color: Theme.highlightDimmerColor
+ anchors.fill: reblogAvatar
+ }
}
}
@@ -136,9 +166,13 @@ BackgroundItem {
text: content.replace(new RegExp(" paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
@@ -213,6 +247,7 @@ BackgroundItem {
MediaBlock {
id: media
+ visible: myList.type !== "notifications" && ( model.type !== "favourite" || model.type !== "reblog" )
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: Theme.iconSizeExtraLarge * 2
anchors {
From d0125d86acc486d43198132480730e47142d4a63 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 8 Jun 2020 17:34:32 +0200
Subject: [PATCH 13/70] improved notifications UI
- small changes / additions
---
harbour-tooter.pro | 2 +-
qml/cover/CoverPage.qml | 20 +++++----
qml/images/{tooter.svg => tooter-cover.svg} | 0
qml/pages/components/MediaFullScreen.qml | 23 +++++-----
qml/pages/components/VisualContainer.qml | 50 ++++++++++++++++++---
5 files changed, 68 insertions(+), 27 deletions(-)
rename qml/images/{tooter.svg => tooter-cover.svg} (100%)
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index fc04db3..bd4e9d9 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -53,6 +53,7 @@ HEADERS += src/dbusAdaptor.h
HEADERS += src/dbus.h
DISTFILES += qml/harbour-tooter.qml \
+ qml/images/tooter-cover.svg \
qml/pages/ConversationPage.qml \
qml/pages/ProfilePage.qml \
qml/pages/SettingsPage.qml \
@@ -75,7 +76,6 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/Browser.qml \
qml/lib/API.js \
qml/images/icon-s-following \
- qml/images/tooter.svg \
qml/images/icon-m-emoji.svg \
qml/images/icon-m-profile.svg \
qml/images/icon-l-profile.svg \
diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml
index 63b9d01..70879fc 100644
--- a/qml/cover/CoverPage.qml
+++ b/qml/cover/CoverPage.qml
@@ -46,19 +46,21 @@ CoverBackground {
break;
}
}
+
Image {
id: bg
+ source: "../images/tooter-cover.svg"
+ horizontalAlignment: Image.AlignLeft
+ verticalAlignment: Image.AlignBottom
+ fillMode: Image.PreserveAspectFit
anchors {
bottom : parent.bottom
left: parent.left
right: parent.right
top: parent.top
}
- horizontalAlignment: Image.AlignLeft
- verticalAlignment: Image.AlignBottom
- fillMode: Image.PreserveAspectFit
- source: "../images/tooter.svg"
}
+
Timer {
id: timer
interval: 60*1000
@@ -69,34 +71,34 @@ CoverBackground {
Image {
id: iconNot
+ source: "image://theme/icon-s-alarm?" + Theme.highlightColor
anchors {
left: parent.left
top: parent.top
leftMargin: Theme.paddingLarge
topMargin: Theme.paddingLarge
}
- source: "image://theme/icon-s-alarm?" + Theme.highlightColor
}
Label {
id: notificationsLbl
+ text: " "
+ color: Theme.highlightColor
anchors {
left: iconNot.right
leftMargin: Theme.paddingMedium
verticalCenter: iconNot.verticalCenter
}
- text: " "
- color: Theme.highlightColor
}
Label {
+ text: "Tooter"
+ color: Theme.secondaryColor
anchors {
right: parent.right
rightMargin: Theme.paddingLarge
verticalCenter: iconNot.verticalCenter
}
- text: "Tooter"
- color: Theme.primaryColor
}
signal activateapp(string person, string notice)
diff --git a/qml/images/tooter.svg b/qml/images/tooter-cover.svg
similarity index 100%
rename from qml/images/tooter.svg
rename to qml/images/tooter-cover.svg
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index fda8df1..cd182f1 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -5,12 +5,12 @@ import QtMultimedia 5.0
FullscreenContentPage {
id: mediaPage
- allowedOrientations: Orientation.All
property string type: ""
property string previewURL: ""
property string mediaURL: ""
+ allowedOrientations: Orientation.All
Component.onCompleted: function(){
console.log(type)
console.log(previewURL)
@@ -27,12 +27,12 @@ FullscreenContentPage {
}
Flickable {
- id: videoFlickable
+ id: videoFlickable
visible: false
- anchors.fill: parent
+ clip: true
contentWidth: imageContainer.width
contentHeight: imageContainer.height
- clip: true
+ anchors.fill: parent
Image {
id: videoPreview
@@ -45,7 +45,7 @@ FullscreenContentPage {
id: video
anchors.fill: parent
onErrorStringChanged: function(){
- videoError.visible = true;
+ videoError.visible = true
}
onStatusChanged: {
console.log(status)
@@ -83,19 +83,22 @@ FullscreenContentPage {
playerProgress.value = position
}
}
- onStopped: function(){
- stop()
+ onStopped: function() {
+ if (video.duration < 30000)
+ video.play()
+ else
+ video.stop()
}
IconButton {
id: playerIcon
+ icon.source: "image://theme/icon-m-play"
anchors {
left: parent.left
bottom: parent.bottom
leftMargin: Theme.horizontalPageMargin
bottomMargin: Theme.horizontalPageMargin
}
- icon.source: "image://theme/icon-m-play"
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState)
video.pause()
@@ -161,7 +164,7 @@ FullscreenContentPage {
clip: true
anchors.fill: parent
onHeightChanged: if (imagePreview.status === Image.Ready) {
- imagePreview.fitToScreen();
+ imagePreview.fitToScreen()
}
Item {
@@ -218,11 +221,11 @@ FullscreenContentPage {
PinchArea {
id: pinchArea
- opacity: 0.3
property real minScale: 1.0
property real maxScale: 3.0
+ opacity: 0.3
anchors.fill: parent
enabled: imagePreview.status === Image.Ready
pinch.target: imagePreview
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index b82044e..d023566 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -12,7 +12,7 @@ BackgroundItem {
width: parent.width
height: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
mnu.height + miniHeader.height + Theme.paddingLarge + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
- } else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
+ } else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0) + (iconDirectMsg.visible ? iconDirectMsg.height : 0)
Rectangle {
id: bgDirect
x: 0
@@ -39,7 +39,7 @@ BackgroundItem {
} */
Rectangle {
- id: bgDelegate
+ id: bgNotifications
x: 0
y: 0
visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
@@ -118,7 +118,22 @@ BackgroundItem {
}
}
+ Image {
+ id: iconDirectMsg
+ visible: status_visibility == 'direct'
+ width: Theme.iconSizeMedium
+ height: width
+ source: "image://theme/icon-m-mail"
+ anchors {
+ horizontalCenter: avatar.horizontalCenter
+ top: avatar.bottom
+ topMargin: Theme.paddingMedium
+ left: avatar.left
+ }
+ }
+
Rectangle {
+ id: bgReblogAvatar
color: Theme.highlightDimmerColor
width: Theme.iconSizeSmall
height: width
@@ -141,14 +156,35 @@ BackgroundItem {
width: Theme.iconSizeSmall
height: width
}
+ }
- Rectangle {
- visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
- opacity: 0.5
- color: Theme.highlightDimmerColor
- anchors.fill: reblogAvatar
+ Rectangle {
+ id: bgBotIcon
+ color: Theme.highlightDimmerColor
+ radius: Theme.paddingSmall
+ width: Theme.iconSizeSmall
+ height: width
+ visible: true //typeof status_reblog !== "undefined" && status_reblog
+ anchors {
+ top: parent.top
+ topMargin: -width/3
+ left: parent.left
+ leftMargin: -width/3
+ }
+
+ Image {
+ id: botIcon
+ asynchronous: true
+ smooth: true
+ opacity: status === Image.Ready ? 1.0 : 0.0
+ Behavior on opacity { FadeAnimator {} }
+ source: "image://theme/icon-s-alarm?" //typeof reblog_account_avatar !== "undefined" ? reblog_account_avatar : ''
+ visible: typeof bot === true //typeof status_reblog !== "undefined" && status_reblog
+ width: Theme.iconSizeSmall
+ height: width
}
}
+
}
MiniHeader {
From 092c7d880f1963b2b60a165eba51f6f123fd017a Mon Sep 17 00:00:00 2001
From: molan-git
Date: Tue, 9 Jun 2020 08:52:22 +0200
Subject: [PATCH 14/70] revert bgBotIcon
---
qml/pages/components/VisualContainer.qml | 30 +-----------------------
1 file changed, 1 insertion(+), 29 deletions(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index d023566..afe3ce9 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -134,7 +134,7 @@ BackgroundItem {
Rectangle {
id: bgReblogAvatar
- color: Theme.highlightDimmerColor
+ color: Theme.secondaryColor
width: Theme.iconSizeSmall
height: width
visible: typeof status_reblog !== "undefined" && status_reblog
@@ -157,34 +157,6 @@ BackgroundItem {
height: width
}
}
-
- Rectangle {
- id: bgBotIcon
- color: Theme.highlightDimmerColor
- radius: Theme.paddingSmall
- width: Theme.iconSizeSmall
- height: width
- visible: true //typeof status_reblog !== "undefined" && status_reblog
- anchors {
- top: parent.top
- topMargin: -width/3
- left: parent.left
- leftMargin: -width/3
- }
-
- Image {
- id: botIcon
- asynchronous: true
- smooth: true
- opacity: status === Image.Ready ? 1.0 : 0.0
- Behavior on opacity { FadeAnimator {} }
- source: "image://theme/icon-s-alarm?" //typeof reblog_account_avatar !== "undefined" ? reblog_account_avatar : ''
- visible: typeof bot === true //typeof status_reblog !== "undefined" && status_reblog
- width: Theme.iconSizeSmall
- height: width
- }
- }
-
}
MiniHeader {
From c22254364e6bc8dc7909b891533d0b8d595bc77d Mon Sep 17 00:00:00 2001
From: molan-git
Date: Tue, 9 Jun 2020 12:05:25 +0200
Subject: [PATCH 15/70] avoid empty search-results
show # results also uf term is entered by user without #
---
qml/pages/MainPage.qml | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index c809e19..408c939 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -84,7 +84,11 @@ Page {
onSearchChanged: {
console.log(search)
loader.sourceComponent = loading
- loader.sourceComponent = search.charAt(0) === "@" ? userListComponent : tagListComponent
+ if (search.charAt(0) === "@") {
+ loader.sourceComponent = userListComponent
+ } else if (search.charAt(0) === "#") {
+ loader.sourceComponen = tagListComponent
+ } else { loader.sourceComponent = worldListComponent}
}
Loader {
@@ -183,6 +187,31 @@ Page {
}
}
}
+
+ Component {
+ id: wordListComponent
+ MyList {
+ id: view3
+ mdl: ListModel {}
+ width: parent.width
+ height: parent.height
+ onOpenDrawer: infoPanel.open = setDrawer
+ anchors.fill: parent
+ currentIndex: -1 // otherwise currentItem will steal focus
+ header: Item {
+ id: header
+ width: headerContainer.width
+ height: headerContainer.height
+ Component.onCompleted: headerContainer.parent = header
+ }
+
+ delegate: VisualContainer
+ Component.onCompleted: {
+ view3.type = "timelines/tag/"+tlSearch.search
+ view3.loadData("append")
+ }
+ }
+ }
}
}
From 6c4e5466c019319edfa96461d376bbf3b7bf8d5c Mon Sep 17 00:00:00 2001
From: molan-git
Date: Tue, 9 Jun 2020 18:46:36 +0200
Subject: [PATCH 16/70] fix copy toot-URL
if the toot url isn't provided (for example in retoots), the toot uri will be used
---
qml/pages/ConversationPage.qml | 30 +++++++++++++++++-------
qml/pages/components/VisualContainer.qml | 1 +
2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index fb57082..841d49d 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -17,8 +17,9 @@ Page {
property ListModel suggestedModel
property string toot_id: ""
property string toot_url: ""
+ property string toot_uri: ""
property int tootMaxChar: 500;
- property ListModel mdl
+ property ListModel mdl
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
@@ -100,13 +101,26 @@ Page {
}
PullDownMenu {
- visible: type === "reply" && toot_url !== ""
- MenuItem {
- text: qsTr("Copy Link to Clipboard")
- onClicked: Clipboard.text = toot_url
- }
- }
- }
+ id: pulleyConversation
+ visible: type === "reply" //&& toot_url !== ""
+ MenuItem {
+ text: qsTr("Copy Link to Clipboard")
+ onClicked: if (toot_url === "") {
+
+ var test = toot_uri.split("/")
+ console.log(toot_uri)
+ console.log(JSON.stringify(test))
+ console.log(JSON.stringify(test.length))
+ if (test.length === 8 && (test[7] === "activity")) {
+ var urialt = toot_uri.replace("activity", "")
+ Clipboard.text = urialt
+ }
+ else Clipboard.text = toot_uri
+
+ } else onClicked: Clipboard.text = toot_url
+ }
+ }
+ }
Rectangle {
id: predictionList
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index b86e715..279635d 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -340,6 +340,7 @@ BackgroundItem {
headerTitle: "Conversation",
toot_id: status_id,
toot_url: status_url,
+ toot_uri: status_uri,
title: account_display_name,
description: '@'+account_acct,
avatar: account_avatar,
From d157c08c34393a72c18e9fb1c55e65cb845ba985 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Tue, 9 Jun 2020 19:14:40 +0200
Subject: [PATCH 17/70] component id fix
---
qml/pages/MainPage.qml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 408c939..1429b5b 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -88,7 +88,7 @@ Page {
loader.sourceComponent = userListComponent
} else if (search.charAt(0) === "#") {
loader.sourceComponen = tagListComponent
- } else { loader.sourceComponent = worldListComponent}
+ } else { loader.sourceComponent = wordListComponent}
}
Loader {
From 7eaad1b867227ac64436e9237ad6dd0994928544 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 10:17:51 +0200
Subject: [PATCH 18/70] small fixes for notification page
---
qml/pages/ConversationPage.qml | 6 ++--
qml/pages/MainPage.qml | 2 +-
qml/pages/components/MiniHeader.qml | 40 +++++++++++++-----------
qml/pages/components/Toot.qml | 4 +--
qml/pages/components/VisualContainer.qml | 25 +++++----------
5 files changed, 35 insertions(+), 42 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index bd5378f..4218bea 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -270,7 +270,9 @@ Page {
IconButton {
id: btnSmileys
+
property string selection
+
opacity: 0.7
icon {
color: Theme.secondaryColor
@@ -284,9 +286,7 @@ Page {
right: parent.right
rightMargin: Theme.paddingSmall
}
- onSelectionChanged: {
- console.log(selection)
- }
+ onSelectionChanged: { console.log(selection) }
onClicked: pageStack.push(emojiSelect)
}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 1429b5b..2ff089f 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -87,7 +87,7 @@ Page {
if (search.charAt(0) === "@") {
loader.sourceComponent = userListComponent
} else if (search.charAt(0) === "#") {
- loader.sourceComponen = tagListComponent
+ loader.sourceComponent = tagListComponent
} else { loader.sourceComponent = wordListComponent}
}
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index 0b52e44..e227fd0 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -9,45 +9,47 @@ Item {
Label {
id: lblName
+ text:
+ if (account_display_name === "") {
+ account_username.split('@')[0]
+ }
+ else account_display_name
+ font.weight: Font.Bold
+ font.pixelSize: Theme.fontSizeSmall
+ color: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
+ (pressed ? Theme.secondaryHighlightColor : (!highlight ? Theme.secondaryColor : Theme.secondaryHighlightColor))
+ } else (pressed ? Theme.highlightColor : (!highlight ? Theme.primaryColor : Theme.secondaryColor))
+ truncationMode: TruncationMode.Fade
+ width: contentWidth > parent.width /2 ? parent.width /2 : contentWidth
anchors {
left: parent.left
leftMargin: Theme.paddingMedium
}
- text:
- if (account_display_name === "") {
- account_username.split('@')[0]
- }
- else account_display_name
- width: contentWidth > parent.width /2 ? parent.width /2 : contentWidth
- truncationMode: TruncationMode.Fade
- font.weight: Font.Bold
- font.pixelSize: Theme.fontSizeSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
}
Image {
- id: iconLocked
+ id: icnLocked
+ visible: account_locked
+ opacity: 0.8
+ source: "image://theme/icon-s-secure?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
+ width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
+ height: width
y: Theme.paddingLarge
anchors {
left: lblName.right
leftMargin: Theme.paddingSmall
verticalCenter: lblName.verticalCenter
}
- visible: account_locked
- width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
- opacity: 0.8
- height: width
- source: "image://theme/icon-s-secure?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
}
Label {
id: lblScreenName
- truncationMode: TruncationMode.Fade
text: '@'+account_username
font.pixelSize: Theme.fontSizeExtraSmall
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
+ truncationMode: TruncationMode.Fade
anchors {
- left: iconLocked.right
+ left: icnLocked.right
right: lblDate.left
leftMargin: Theme.paddingMedium
baseline: lblName.baseline
@@ -56,9 +58,9 @@ Item {
Label {
id: lblDate
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
font.pixelSize: Theme.fontSizeExtraSmall
+ color: (pressed ? Theme.highlightColor : Theme.primaryColor)
horizontalAlignment: Text.AlignRight
anchors {
right: parent.right
diff --git a/qml/pages/components/Toot.qml b/qml/pages/components/Toot.qml
index 5a705e1..6361ab5 100644
--- a/qml/pages/components/Toot.qml
+++ b/qml/pages/components/Toot.qml
@@ -85,7 +85,7 @@ BackgroundItem {
}
Image {
- id: iconVerified
+ id: iconLocked
visible: account_locked
y: Theme.paddingLarge
opacity: 0.8
@@ -108,7 +108,7 @@ BackgroundItem {
font.pixelSize: Theme.fontSizeExtraSmall
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
anchors {
- left: iconVerified.right
+ left: iconLocked.right
right: lblDate.left
leftMargin: Theme.paddingMedium
baseline: lblName.baseline
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 304f299..708c56e 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -13,31 +13,18 @@ BackgroundItem {
height: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
mnu.height + miniHeader.height + Theme.paddingLarge + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
} else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0) + (iconDirectMsg.visible ? iconDirectMsg.height : 0)
+
Rectangle {
id: bgDirect
x: 0
y: 0
- visible: status_visibility == 'direct'
+ visible: status_visibility === "direct"
width: parent.width
height: parent.height
opacity: 0.3
color: Theme.highlightBackgroundColor
}
- /* Rectangle {
- id: bgDelegate
- x: 0
- y: 0
- visible: status_visibility !== 'direct'
- width: parent.width
- height: parent.height
- opacity: 0.15
- gradient: Gradient {
- GradientStop { position: 0.7; color: "transparent" }
- GradientStop { position: 1.0; color: Theme.highlightDimmerColor }
- }
- } */
-
Rectangle {
id: bgNotifications
x: 0
@@ -120,7 +107,7 @@ BackgroundItem {
Image {
id: iconDirectMsg
- visible: status_visibility == 'direct'
+ visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
source: "image://theme/icon-m-mail"
@@ -271,7 +258,9 @@ BackgroundItem {
id: mnu
MenuItem {
+ id: mnuBoost
visible: model.type !== "follow"
+ enabled: status_visibility !== "direct"
text: typeof model.reblogged !== "undefined" && model.reblogged ? qsTr("Unboost") : qsTr("Boost")
onClicked: {
var status = typeof model.reblogged !== "undefined" && model.reblogged
@@ -311,7 +300,8 @@ BackgroundItem {
}
MenuItem {
- visible: model.type !== "follow"
+ id: mnuFavourite
+ visible: model.type !== "follow" || model.status_visibility !== "direct"
text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
onClicked: {
var status = typeof model.favourited !== "undefined" && model.favourited
@@ -351,6 +341,7 @@ BackgroundItem {
}
MenuItem {
+ id: mnuMention
visible: model.type === "follow"
text: qsTr("Mention")
onClicked: {
From 5dad14eafbf063dcca2894db57c119c0039f7bb0 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 11:44:58 +0200
Subject: [PATCH 19/70] ui-improvements
---
qml/pages/components/EmojiSelect.qml | 2 +-
qml/pages/components/MediaFullScreen.qml | 1 +
qml/pages/components/ProfileHeader.qml | 8 ++++----
qml/pages/components/ProfileImage.qml | 5 +++--
qml/pages/components/Toot.qml | 4 ++--
qml/pages/components/VisualContainer.qml | 5 ++++-
6 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index 3e4f8fa..45a6f10 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -162,5 +162,5 @@ Component {
}
}
-}
+}
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index cd182f1..324fa76 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -319,6 +319,7 @@ FullscreenContentPage {
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
}
}
+
VerticalScrollDecorator { flickable: imageFlickable }
}
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index af2126d..e79402a 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,7 @@ Item {
property string bg: ""
width: parent.width
- height: icon.height + Theme.paddingLarge*2
+ height: avatarImage.height + Theme.paddingLarge*2
Rectangle {
id: bgImage
@@ -33,10 +33,10 @@ Item {
}
Image {
- id: icon
+ id: avatarImage
asynchronous: true
source:
- if (icon.status === Image.Error)
+ if (avatarImage.status === Image.Error)
source = "../../images/icon-l-profile.svg?" + (pressed
? Theme.highlightColor
: Theme.primaryColor)
@@ -69,7 +69,7 @@ Item {
Column {
anchors {
- left: icon.right
+ left: avatarImage.right
leftMargin: Theme.paddingLarge
right: parent.right
rightMargin: Theme.paddingLarge
diff --git a/qml/pages/components/ProfileImage.qml b/qml/pages/components/ProfileImage.qml
index 38fdde0..1e000b0 100644
--- a/qml/pages/components/ProfileImage.qml
+++ b/qml/pages/components/ProfileImage.qml
@@ -3,9 +3,10 @@ import Sailfish.Silica 1.0
FullscreenContentPage {
id: profileImage
- allowedOrientations: Orientation.All
- property string image: ""
+ property string image: ""
+
+ allowedOrientations: Orientation.All
Image {
source: image
diff --git a/qml/pages/components/Toot.qml b/qml/pages/components/Toot.qml
index 6361ab5..190cd82 100644
--- a/qml/pages/components/Toot.qml
+++ b/qml/pages/components/Toot.qml
@@ -4,11 +4,11 @@ import QtGraphicalEffects 1.0
BackgroundItem {
+ id: delegate
+
signal send (string notice)
signal navigateTo(string link)
- id: delegate
- //property string text: "0"
width: parent.width
height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (type.length ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 708c56e..2bb06a0 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -22,7 +22,10 @@ BackgroundItem {
width: parent.width
height: parent.height
opacity: 0.3
- color: Theme.highlightBackgroundColor
+ gradient: Gradient {
+ GradientStop { position: -1.5; color: "transparent" }
+ GradientStop { position: 0.6; color: Theme.highlightBackgroundColor }
+ }
}
Rectangle {
From 52c8f549c0b6ab5331a1122066e3e6b4c024345c Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 13:26:16 +0200
Subject: [PATCH 20/70] info labels for profile header
adds info labels to profile header ('Following you' / 'Bot')
---
qml/pages/ProfilePage.qml | 4 ++
qml/pages/components/ProfileHeader.qml | 69 +++++++++++++++++++++++---
2 files changed, 66 insertions(+), 7 deletions(-)
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index e2318af..4478e4c 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -23,6 +23,7 @@ Page {
property int reblogs_count
property int count_moments
property bool locked: false
+ property bool bot: false
property bool following: false
property bool requested: false
property bool followed_by: false
@@ -77,6 +78,9 @@ Page {
case 'locked':
locked = messageObject.data
break;
+ case 'bot':
+ bot = messageObject.data
+ break;
case 'created_at':
created_at = messageObject.data
break;
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index e79402a..a19c5b8 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,9 @@ Item {
property string bg: ""
width: parent.width
- height: avatarImage.height + Theme.paddingLarge*2
+ height: if (following === true || bot === true) {
+ avatarImage.height + Theme.paddingLarge*2 + infoLbl.height + Theme.paddingLarge
+ } else avatarImage.height + Theme.paddingLarge*2
Rectangle {
id: bgImage
@@ -69,6 +71,8 @@ Item {
Column {
anchors {
+ top: parent.top
+ topMargin: Theme.paddingLarge
left: avatarImage.right
leftMargin: Theme.paddingLarge
right: parent.right
@@ -77,12 +81,11 @@ Item {
}
Label {
- id: ttl
- text:
- if (title === "") {
- description.split('@')[0]
- }
- else title
+ id: profileTitle
+ text: if (title === "") {
+ description.split('@')[0]
+ }
+ else title
font.pixelSize: Theme.fontSizeLarge
font.family: Theme.fontFamilyHeading
color: Theme.highlightColor
@@ -93,6 +96,7 @@ Item {
}
Label {
+ id: profileDescription
text: "@"+description
font.pixelSize: Theme.fontSizeSmall
font.family: Theme.fontFamilyHeading
@@ -104,4 +108,55 @@ Item {
}
}
+ Row {
+ id: infoLbl
+ spacing: Theme.paddingLarge
+ layoutDirection: Qt.RightToLeft
+ height: Theme.iconSizeSmall + Theme.paddingSmall
+ anchors {
+ top: avatarImage.bottom
+ topMargin: Theme.paddingLarge
+ left: parent.left
+ leftMargin: Theme.paddingLarge
+ right: parent.right
+ rightMargin: Theme.paddingLarge
+ }
+
+ Rectangle {
+ id: followingBg
+ visible: (following ? true : false)
+ radius: Theme.paddingSmall
+ color: Theme.secondaryHighlightColor
+ width: Theme.buttonWidthExtraSmall
+ height: parent.height
+
+ Label {
+ id: followingLbl
+ text: qsTr("Follows you")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.primaryColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+
+ Rectangle {
+ id: botBg
+ visible: (bot ? true : false)
+ radius: Theme.paddingSmall
+ color: Theme.secondaryHighlightColor
+ width: botLabel.width + 2*Theme.paddingLarge
+ height: parent.height
+
+ Label {
+ id: botLbl
+ text: qsTr("Bot")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.primaryColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+ }
+
}
From 9b5e8e5516cd09ea559467dc74127ffaa2baa248 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 14:33:23 +0200
Subject: [PATCH 21/70] fix anchors profile labels
---
qml/pages/components/ProfileHeader.qml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index a19c5b8..b302072 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -127,7 +127,7 @@ Item {
visible: (following ? true : false)
radius: Theme.paddingSmall
color: Theme.secondaryHighlightColor
- width: Theme.buttonWidthExtraSmall
+ width: followingLbl.width + 2*Theme.paddingLarge
height: parent.height
Label {
@@ -145,7 +145,7 @@ Item {
visible: (bot ? true : false)
radius: Theme.paddingSmall
color: Theme.secondaryHighlightColor
- width: botLabel.width + 2*Theme.paddingLarge
+ width: botLbl.width + 2*Theme.paddingLarge
height: parent.height
Label {
From 3451c5cc8d70059fb2573827bbcef9035c6df19d Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 14:42:00 +0200
Subject: [PATCH 22/70] translations update
---
harbour-tooter.pro | 57 ++--
translations/harbour-tooter-de.ts | 281 ++++++++++---------
translations/harbour-tooter-el.ts | 231 +++++++++-------
translations/harbour-tooter-es.ts | 275 ++++++++++---------
translations/harbour-tooter-fr.ts | 281 ++++++++++---------
translations/harbour-tooter-it.ts | 388 +++++++++++++++------------
translations/harbour-tooter-nl.ts | 231 +++++++++-------
translations/harbour-tooter-nl_BE.ts | 231 +++++++++-------
translations/harbour-tooter-oc.ts | 231 +++++++++-------
translations/harbour-tooter-pl.ts | 203 ++++++++------
translations/harbour-tooter-ru.ts | 231 +++++++++-------
translations/harbour-tooter-sr.ts | 231 +++++++++-------
translations/harbour-tooter-sv.ts | 231 +++++++++-------
translations/harbour-tooter-zh_CN.ts | 287 +++++++++++---------
translations/harbour-tooter.ts | 174 +++++++-----
15 files changed, 1983 insertions(+), 1580 deletions(-)
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index bd4e9d9..a5a786b 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -9,7 +9,6 @@
# - 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
@@ -39,18 +38,18 @@ 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
+SOURCES += src/harbour-tooter.cpp \
+ src/imageuploader.cpp \
+ src/filedownloader.cpp \
+ src/notifications.cpp \
+ src/dbusAdaptor.cpp \
+ src/dbus.cpp
-HEADERS += src/imageuploader.h
-HEADERS += src/filedownloader.h
-HEADERS += src/notifications.h
-HEADERS += src/dbusAdaptor.h
-HEADERS += src/dbus.h
+HEADERS += src/imageuploader.h \
+ src/filedownloader.h \
+ src/notifications.h \
+ src/dbusAdaptor.h \
+ src/dbus.h
DISTFILES += qml/harbour-tooter.qml \
qml/images/tooter-cover.svg \
@@ -94,23 +93,19 @@ SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
# to disable building translations every time, comment out the
# following CONFIG line
-# CONFIG += sailfishapp_i18n
+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
+TRANSLATIONS += translations/harbour-tooter.ts \
+ translations/harbour-tooter-de.ts \
+ translations/harbour-tooter-el.ts \
+ translations/harbour-tooter-es.ts \
+ translations/harbour-tooter-fr.ts \
+ translations/harbour-tooter-it.ts \
+ translations/harbour-tooter-nl.ts \
+ translations/harbour-tooter-nl_BE.ts \
+ translations/harbour-tooter-oc.ts \
+ translations/harbour-tooter-pl.ts \
+ translations/harbour-tooter-ru.ts \
+ translations/harbour-tooter-sr.ts \
+ translations/harbour-tooter-sv.ts \
+ translations/harbour-tooter-zh_CN.ts
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 0f08f63..1b4ceeb 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -21,57 +21,60 @@
- Conversation
+ ConversationPage
-
- Löschen
-
-
-
- Emojis
-
-
-
- Tippen um einzufügen
+
+ Link kopieren
- Inhaltswarnung
-
-
-
- Öffentlich
-
-
-
- Nicht gelistet
-
-
-
- Nur für Folgende
-
-
-
- Direktnachricht
+ Inhaltswarnung
- Was gibt's Neues?
+ Was gibt's Neues?
+
+
+
+ Löschen
+
+
+
+ Öffentlich
+
+
+
+ Nicht gelistet
+
+
+
+ Nur für Folgende
+
+
+
+ Direktnachricht
- Toot gesendet!
-
-
-
- Link kopieren
+ Toot gesendet!
- ImageFullScreen
+ CoverPage
-
- Ladefehler
+
+ Neuer Toot
+
+
+
+ EmojiSelect
+
+
+ Emojis
+
+
+
+ Tippen um einzufügen
@@ -135,6 +138,13 @@
Föderation
+
+ MediaFullScreen
+
+
+ Ladefehler
+
+
MiniStatus
@@ -168,139 +178,154 @@
bitte warten...
+
+
+ Neuer Toot
+
- Profile
+ ProfileHeader
-
- Entfolgen
+
+
-
- Folge-Anfrage gesendet!
+
+
+
+
+ ProfilePage
-
- Folgt
-
-
-
- Stummschalten
-
-
-
- Nicht stummschalten
-
-
-
- Nicht blockieren
-
-
-
- Blockieren
-
-
-
- Beiträge
-
-
-
- Favoriten
-
-
-
- Folgen
-
-
-
- Zusammenfassung
+
+
- Folgende
+ Folgende
-
- Bio
+
+ Folgt
-
- Profil im Browser öffnen
+
+ Beiträge
+
+
+
+ Entfolgen
+
+
+
+
+
+
+
+ Folgen
+
+
+
+ Nicht stummschalten
+
+
+
+ Stummschalten
+
+
+
+ Nicht blockieren
+
+
+
+ Blockieren
+
+
+
+
- Settings
+ SettingsPage
- Einstellungen
+ Einstellungen
-
- Konto entfernen
+
+
-
- Konto hinzufügen
-
-
-
- Konto entfernen und für diese Anwendung deaktivieren
-
-
-
- Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben
+
+
- Diese Option deaktivieren um Datenvolumen zu sparen
+ Diese Option deaktivieren um Datenvolumen zu sparen
-
- Über
+
+
-
- UI/UX-Gestaltung und Entwicklung
+
+ Konto entfernen
-
- Visuelle Identität
+
+ Konto hinzufügen
-
- Französische Übersetzung
+
+
-
- Niederländische Übersetzung
-
-
-
- Spanische Übersetzung
-
-
-
- Erstellung README-Datei
-
-
-
- Chinesische Übersetzung
-
-
-
- Bilder in Toots laden
+
+ Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben
- Übersetzungen
+ Übersetzungen
-
- Transifex benutzen um bei den Übersetzungen mitzuhelfen
+
+
+
+
+
+ Über
+
+
+
+ UI/UX-Gestaltung und Entwicklung
+
+
+
+ Visuelle Identität
- Entwicklung und Übersetzungen
+ Entwicklung und Übersetzungen
+
+
+
+ Französische Übersetzung
+
+
+
+ Chinesische Übersetzung
+
+
+
+ Niederländische Übersetzung
+
+
+
+ Spanische Übersetzung
+
+
+
+ Erstellung README-Datei
@@ -336,5 +361,9 @@
Favorisieren
+
+
+
+
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index df485eb..ca66d27 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Διαγραφή
-
-
-
- Emoji
-
-
-
- Κτυπήστε για εισαγωγή
+
+
+
+
+
+
+
+
+ Διαγραφή
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Νέος
+
+
+
+ EmojiSelect
+
+
+ Emoji
+
+
+
+ Κτυπήστε για εισαγωγή
@@ -135,6 +138,13 @@
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
+
+
+ Νέος
+
- Profile
+ ProfileHeader
-
- Αναίρεση παρακολούθησης
+
+
-
- Η αίτηση παρακολούθησης εστάλη!
+
+
+
+
+ ProfilePage
-
- Σε παρακολούθηση
-
-
-
- Σίγαση
-
-
-
- Αναίρεση σίγασης
-
-
-
- Αναίρεση φραγής
-
-
-
- Φραγή
-
-
-
- Κατάσταση
-
-
-
- Σελιδοδείκτες
-
-
-
- Παρακολούθηση
-
-
-
- Σύνοψη
+
+
- Σας ακολουθούν
+ Σας ακολουθούν
-
+
+ Σε παρακολούθηση
+
+
+
+ Κατάσταση
+
+
+
+ Αναίρεση παρακολούθησης
+
+
+
-
+
+ Παρακολούθηση
+
+
+
+ Αναίρεση σίγασης
+
+
+
+ Σίγαση
+
+
+
+ Αναίρεση φραγής
+
+
+
+ Φραγή
+
+
+
- Settings
+ SettingsPage
- Ρυθμίσεις
+ Ρυθμίσεις
-
- Αφαίρεση λογαριασμού
+
+
-
- Προσθήκη λογαριασμού
-
-
-
- Άρση της αδειοδότησης της εφαρμογής και αφαίρεση του λογαριασμού σας
-
-
-
- Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας
+
+
- Απενεργοποιήστε αυτήν την επιλογή αν θέλετε να διατηρήσετε την σύνδεση των δεδομένων σας
+ Απενεργοποιήστε αυτήν την επιλογή αν θέλετε να διατηρήσετε την σύνδεση των δεδομένων σας
+
+
+
+
+
+
+
+ Αφαίρεση λογαριασμού
+
+
+
+ Προσθήκη λογαριασμού
+
+
+
+
+
+
+
+ Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας
+
+
+
+ Μετάφραση
+
+
+
+
- Ευχαριστίες
+ Ευχαριστίες
- UI/UX σχεδιασμός και ανάπτυξη
+ UI/UX σχεδιασμός και ανάπτυξη
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
-
-
-
-
- Μετάφραση
-
-
-
- Χρησιμοποιήστε το Transifex για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
Σελιδοδείκτης
+
+
+
+
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 195b8f5..b14f69d 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -21,57 +21,60 @@
- Conversation
+ ConversationPage
-
- Borrar
-
-
-
- Emoticonos
-
-
-
- Toca para insertar
+
+
- Escribe aquí tu advertencia
-
-
-
- Público
-
-
-
- Sin federar
-
-
-
- Sólo seguidores
-
-
-
- Directo
+ Escribe aquí tu advertencia
- ¿En qué estás pensando?
+ ¿En qué estás pensando?
+
+
+
+ Borrar
+
+
+
+ Público
+
+
+
+ Sin federar
+
+
+
+ Sólo seguidores
+
+
+
+ Directo
+
+
+ CoverPage
-
-
+
+ Nuevo toot
- ImageFullScreen
+ EmojiSelect
-
-
+
+ Emoticonos
+
+
+
+ Toca para insertar
@@ -135,6 +138,13 @@
Federada
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,139 +178,154 @@
por favor, espera...
+
+
+ Nuevo toot
+
- Profile
+ ProfileHeader
-
- Dejar de seguir
+
+
-
- ¡Solicitud de seguidor enviada!
+
+
+
+
+ ProfilePage
-
- Siguiendo
-
-
-
- Silenciar
-
-
-
- Dejar de silenciar
-
-
-
- Desbloquear
-
-
-
- Bloquear
-
-
-
- Estados
-
-
-
- Favoritos
-
-
-
- Seguir
-
-
-
- Resumen
+
+
- Seguidores
+ Seguidores
-
- Bio
+
+ Siguiendo
-
- Abrir perfil en el navegador
+
+ Estados
+
+
+
+ Dejar de seguir
+
+
+
+
+
+
+
+ Seguir
+
+
+
+ Dejar de silenciar
+
+
+
+ Silenciar
+
+
+
+ Desbloquear
+
+
+
+ Bloquear
+
+
+
+
- Settings
+ SettingsPage
- Ajustes
+ Ajustes
-
- Eliminar cuenta
+
+
-
- Añadir cuenta
-
-
-
- Retira la autorización a esta aplicación y elimina tu cuenta
-
-
-
- Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre
+
+
- Deshabilita esta opción si quieres ahorrar en tu conexión de datos
+ Deshabilita esta opción si quieres ahorrar en tu conexión de datos
-
- Créditos
+
+
-
- Diseño UI/UX y desarrollo
+
+ Eliminar cuenta
-
- Identidad visual
+
+ Añadir cuenta
-
- Traducción al occitano y francés
+
+
-
- Traducción al holandés
-
-
-
- Traducción al español
-
-
-
- Añadido archivo README
-
-
-
- Traducción al chino
-
-
-
- Cargar imágenes en messages
+
+ Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre
- Traducir
+ Traducir
-
- Usar Transifex para ayudar con traducciones
+
+
+
+
+
+ Créditos
+
+
+
+ Diseño UI/UX y desarrollo
+
+
+
+ Identidad visual
- Desarrollo y traducciones
+ Desarrollo y traducciones
+
+
+
+ Traducción al occitano y francés
+
+
+
+ Traducción al chino
+
+
+
+ Traducción al holandés
+
+
+
+ Traducción al español
+
+
+
+ Añadido archivo README
@@ -336,5 +361,9 @@
Marcar como favorito
+
+
+
+
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index baafe35..a92371e 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -21,57 +21,60 @@
- Conversation
+ ConversationPage
-
- Supprimer
-
-
-
- Emojis
-
-
-
- Appuyez pour insérer
+
+ Copier le lien
- Rédigez votre alerte ici
-
-
-
- Public
-
-
-
- Non listé
-
-
-
- Abonné(e)s uniquement
-
-
-
- Direct
+ Rédigez votre alerte ici
- Qu'avez-vous en tête?
+ Qu'avez-vous en tête?
+
+
+
+ Supprimer
+
+
+
+ Public
+
+
+
+ Non listé
+
+
+
+ Abonné(e)s uniquement
+
+
+
+ Direct
- Pouet envoyé !
-
-
-
- Copier le lien
+ Pouet envoyé !
- ImageFullScreen
+ CoverPage
-
-
+
+ Nouveau pouet
+
+
+
+ EmojiSelect
+
+
+ Emojis
+
+
+
+ Appuyez pour insérer
@@ -135,6 +138,13 @@
Fil public global
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,139 +178,154 @@
patientez...
+
+
+ Nouveau pouet
+
- Profile
+ ProfileHeader
-
- Ne plus suivre
+
+
-
- Demande d’abonnement envoyée !
+
+
+
+
+ ProfilePage
-
- Abonnements
-
-
-
- Masquer
-
-
-
- Démasquer
-
-
-
- Débloquer
-
-
-
- Bloquer
-
-
-
- Pouets
-
-
-
- Favoris
-
-
-
- Suivre
-
-
-
- Résumé
+
+
- Abonné(e)s
+ Abonné(e)s
-
- Bio
+
+ Abonnements
-
- Ouvrir dans le navigateur
+
+ Pouets
+
+
+
+ Ne plus suivre
+
+
+
+
+
+
+
+ Suivre
+
+
+
+ Démasquer
+
+
+
+ Masquer
+
+
+
+ Débloquer
+
+
+
+ Bloquer
+
+
+
+
- Settings
+ SettingsPage
- Paramètres
+ Paramètres
-
- Déconnecter votre compte
+
+
-
- Ajouter compte
-
-
-
- Désautoriser cette application et enlever votre compte
-
-
-
- Autoriser l’accès à votre compte pour cette application
+
+
- Désactiver cette option pour économiser des données mobiles
+ Désactiver cette option pour économiser des données mobiles
-
- Développement
+
+
-
- Design UI/UX et développement
+
+ Déconnecter votre compte
-
- Identité visuelle
+
+ Ajouter compte
-
- Traduction français
+
+
-
- Traduction néerlandaise
-
-
-
- Traduction espagnole
-
-
-
- Traduction chinoise
-
-
-
- Fichier README ajouté
-
-
-
- Charger images dans les pouets
+
+ Autoriser l’accès à votre compte pour cette application
- Traduire
+ Traduire
-
- Utiliser Transifex pour aider à traduire cette application
+
+
+
+
+
+ Développement
+
+
+
+ Design UI/UX et développement
+
+
+
+ Identité visuelle
- Développement et traductions
+ Développement et traductions
+
+
+
+ Traduction français
+
+
+
+ Traduction chinoise
+
+
+
+ Traduction néerlandaise
+
+
+
+ Traduction espagnole
+
+
+
+ Fichier README ajouté
@@ -336,5 +361,9 @@
Ajouter aux favoris
+
+
+
+
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 5b5be12..7b1336b 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -4,91 +4,94 @@
API
-
+
ha apprezzato
-
+
ha iniziato a seguirti
-
+
ha condiviso
+
-
ha detto
- Conversation
+ ConversationPage
-
+
- Copia link
+ Copia link
-
+
- Contenuto avviso
+ Contenuto avviso
-
+
- A cosa stai pensando?
+ A cosa stai pensando?
-
+
- Elimina
+ Elimina
-
+
- Pubblico
+ Pubblico
-
+
- Non elencato
+ Non elencato
-
+
- Solo ai seguaci
+ Solo ai seguaci
-
+
- Diretto
+ Diretto
-
+
- Toot è stato pubblicato!
-
-
-
-
- Emojis
-
-
-
-
- Tap per inserire
+ Toot è stato pubblicato!
- ImageFullScreen
+ CoverPage
-
-
- Errore durante caricamento
+
+
+ Nuovo toot
+
+
+
+ EmojiSelect
+
+
+
+ Emojis
+
+
+
+
+ Tap per inserire
@@ -102,27 +105,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
@@ -130,55 +133,63 @@
MainPage
-
+
Home
-
+
Notifiche
-
+
Locale
-
+
Federazione
-
+
Cerca
-
+
@utente o #termine
-
+
Nuovo toot
+
+ MediaFullScreen
+
+
+
+ Errore durante caricamento
+
+
MiniStatus
-
+
ha condiviso
-
+
ha apprezzato
-
+
ha iniziato a seguirti
@@ -186,12 +197,12 @@
MyList
-
+
Caricamento
-
+
Attendere un momento...
@@ -202,190 +213,208 @@
+
+ Nuovo toot
+
+
+
Caricare altri
- Profile
+ ProfileHeader
-
-
- Sintesi
+
+
+
-
-
- Seguaci
-
-
-
-
- Segue
-
-
-
-
- Toots
-
-
-
-
- Apprezzati
-
-
-
-
- Smetti di seguire
-
-
-
-
- Richiesta di seguito inviata!
-
-
-
-
- Segui
-
-
-
-
- Non silenziare
-
-
-
-
- Silenzia
-
-
-
-
- Sblocca
-
-
-
-
- Blocca
-
-
-
-
- Biografia
-
-
-
-
- Aprire profile nel browser
+
+
+
- Settings
+ ProfilePage
-
+
+
+
+
+
+
+
+ Seguaci
+
+
+
+
+ Segue
+
+
+
+
+ Toots
+
+
+
+
+ Smetti di seguire
+
+
+
+
+
+
+
+
+
+ Segui
+
+
+
+
+ Non silenziare
+
+
+
+
+ Silenzia
+
+
+
+
+ Sblocca
+
+
+
+
+ Blocca
+
+
+
+
+
+
+
+
+ SettingsPage
+
+
- Impostazione
+
-
-
- Rimozione del account
+
+
+
-
-
- Aggiungi account
+
+
+
-
-
- Annullare l'autorizzazione dell'app e rimuovere l'account
-
-
-
-
- Autorizzare l'app all'utilizzo del conto Mastodon
-
-
-
-
- Caricare immagini nei toots
-
-
-
+
- Disabilitare questa opzione per conservare connessione dati
+ Disabilitare questa opzione per conservare connessione dati
-
+
+
+
+
+
+
+
+ Rimozione del account
+
+
+
+
+ Aggiungi account
+
+
+
+
+
+
+
+
+
+ Autorizzare l'app all'utilizzo del conto Mastodon
+
+
+
- Tradurre
+ Tradurre
-
-
- Utilizzare Transifex per aiutare nella traduzione dell'app
+
+
+
-
+
- Sviluppo
+ Sviluppo
-
+
- Design UI/UX e sviluppo
+ Design UI/UX e sviluppo
-
+
- Identità visiva
+ Identità visiva
-
+
- Sviluppo e traduzioni
+ Sviluppo e traduzioni
-
+
- Traduzione francese e occitanica
+ Traduzione francese e occitanica
-
+
- Traduzione cinese
+ Traduzione cinese
-
+
- Traduzione olandese
+ Traduzione olandese
-
+
- Traduzione spagnola
+ Traduzione spagnola
-
+
- Aggiunto file README
+ Aggiunto file README
Toot
-
+
ha condiviso
-
+
ha apprezzato
-
+
ha iniziato a seguirti
@@ -393,24 +422,29 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
+
+
+
+
+
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 9c3e4b0..1dc2c52 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Verwijderen
-
-
-
- Emojis
-
-
-
- Tikken om in te voegen
+
+
+
+
+
+
+
+
+ Verwijderen
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Nieuwe Toot
+
+
+
+ EmojiSelect
+
+
+ Emojis
+
+
+
+ Tikken om in te voegen
@@ -135,6 +138,13 @@
Gefedereerd
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
even geduld…
+
+
+ Nieuwe Toot
+
- Profile
+ ProfileHeader
-
- Ontvolgen
+
+
-
- Volgverzoek verstuurd!
+
+
+
+
+ ProfilePage
-
- Volgend
-
-
-
- Dempen
-
-
-
- Ontdempen
-
-
-
- Deblokkeren
-
-
-
- Blokkeren
-
-
-
- Statussen
-
-
-
- Favorieten
-
-
-
- Volgen
-
-
-
- Samenvatting
+
+
- Volgers
+ Volgers
-
+
+ Volgend
+
+
+
+ Statussen
+
+
+
+ Ontvolgen
+
+
+
-
+
+ Volgen
+
+
+
+ Ontdempen
+
+
+
+ Dempen
+
+
+
+ Deblokkeren
+
+
+
+ Blokkeren
+
+
+
- Settings
+ SettingsPage
- Instellingen
+ Instellingen
-
- Verwijderen account
+
+
-
- Toevoegen account
-
-
-
- Trek autorisaties van deze app in en verwijder je account
-
-
-
- Autoriseer deze app om je Mastodon namens jou te gebruiken
+
+
- Schakel deze optie uit als je je dataverbinding wilt behouden
+ Schakel deze optie uit als je je dataverbinding wilt behouden
+
+
+
+
+
+
+
+ Verwijderen account
+
+
+
+ Toevoegen account
+
+
+
+
+
+
+
+ Autoriseer deze app om je Mastodon namens jou te gebruiken
+
+
+
+ Vertalen
+
+
+
+
- Credits
+ Credits
- UI/UX ontwerp en ontwikkeling
+ UI/UX ontwerp en ontwikkeling
+
+
+ Ontwikkeling en vertalingen
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Laden afbeeldingen in toots
-
-
-
- Vertalen
-
-
-
- Gebruik Transifex om deze app te helpen vertalen in jouw taal
-
-
-
- Ontwikkeling en vertalingen
-
Toot
@@ -336,5 +361,9 @@
Markeren als favoriet
+
+
+
+
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 25d9369..001ba1e 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Verwijderen
-
-
-
- Emoji’s
-
-
-
- Tikt voor in te voegen
+
+
+
+
+
+
+
+
+ Verwijderen
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Nieuwen toot
+
+
+
+ EmojiSelect
+
+
+ Emoji’s
+
+
+
+ Tikt voor in te voegen
@@ -135,6 +138,13 @@
Gefedereerd
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
efkens geduld…
+
+
+ Nieuwen toot
+
- Profile
+ ProfileHeader
-
- Ontvolgen
+
+
-
- Volgverzoek verzonden!
+
+
+
+
+ ProfilePage
-
- Volgend
-
-
-
- Dempen
-
-
-
- Ontdempen
-
-
-
- Deblokkeren
-
-
-
- Blokkeren
-
-
-
- Statussen
-
-
-
- Duimen
-
-
-
- Volgen
-
-
-
- Samenvatting
+
+
- Volgers
+ Volgers
-
+
+ Volgend
+
+
+
+ Statussen
+
+
+
+ Ontvolgen
+
+
+
-
+
+ Volgen
+
+
+
+ Ontdempen
+
+
+
+ Dempen
+
+
+
+ Deblokkeren
+
+
+
+ Blokkeren
+
+
+
- Settings
+ SettingsPage
- Instellingen
+ Instellingen
-
- Account verwijderen
+
+
-
- Account toevoegen
-
-
-
- Trekt autorisaties van dezen app in en verwijdert uwen account
-
-
-
- Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken
+
+
- Schakelt dees optie uit als ge uw verbinding wilt behouden
+ Schakelt dees optie uit als ge uw verbinding wilt behouden
+
+
+
+
+
+
+
+ Account verwijderen
+
+
+
+ Account toevoegen
+
+
+
+
+
+
+
+ Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken
+
+
+
+ Vertalen
+
+
+
+
- Credits
+ Credits
- UI/UX-ontwerp en -ontwikkeling
+ UI/UX-ontwerp en -ontwikkeling
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Afbeeldingen in toots laden
-
-
-
- Vertalen
-
-
-
- Gebruikt Transifex voor te helpen met dezen app in uw taal te vertalen
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
Duim toevoegen
+
+
+
+
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 3319228..3788b91 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Escafar
-
-
-
- Emojis
-
-
-
- Tustejar per inserir
+
+
+
+
+
+
+
+
+ Escafar
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Nòu Tut
+
+
+
+ EmojiSelect
+
+
+ Emojis
+
+
+
+ Tustejar per inserir
@@ -135,6 +138,13 @@
Federat
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
esperatz....
+
+
+ Nòu Tut
+
- Profile
+ ProfileHeader
-
- Quitar de seguir
+
+
-
- Demanda de seguir enviada !
+
+
+
+
+ ProfilePage
-
- Abonaments
-
-
-
- Amagar
-
-
-
- Mostrar
-
-
-
- Desblocar
-
-
-
- Blocar
-
-
-
- Estatuts
-
-
-
- Favorits
-
-
-
- Seguir
-
-
-
- Resumit
+
+
- Seguidors
+ Seguidors
-
+
+ Abonaments
+
+
+
+ Estatuts
+
+
+
+ Quitar de seguir
+
+
+
-
+
+ Seguir
+
+
+
+ Mostrar
+
+
+
+ Amagar
+
+
+
+ Desblocar
+
+
+
+ Blocar
+
+
+
- Settings
+ SettingsPage
- Parmètres
+ Parmètres
-
- Levar un compte
+
+
-
- Ajustar un compte
-
-
-
- Revocar l’aplicacion e levar vòstre compte
-
-
-
- Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos
+
+
- Desactivar aquesta opcion per estalviar vòstra connexion de donadas
+ Desactivar aquesta opcion per estalviar vòstra connexion de donadas
+
+
+
+
+
+
+
+ Levar un compte
+
+
+
+ Ajustar un compte
+
+
+
+
+
+
+
+ Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos
+
+
+
+ Traduire
+
+
+
+
- Crèdits
+ Crèdits
- UI/UX design e desvlopament
+ UI/UX design e desvlopament
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Cargar los imatges dels tuts
-
-
-
- Traduire
-
-
-
- Utilizar Transifex per ajudar a traduire l’aplicacion dins vòstra lenga
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
Ajustar als favorits
+
+
+
+
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 4d7fe81..525a8ea 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Usuń
-
-
-
- Emoji
-
-
-
- Dotknij aby wstawić
+
+
+
+
+
+
+
+
+ Usuń
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Nowy wpis
+
+
+
+ EmojiSelect
+
+
+ Emoji
+
+
+
+ Dotknij aby wstawić
@@ -135,6 +138,13 @@
Globalne
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,72 +178,95 @@
proszę czekać…
+
+
+ Nowy wpis
+
- Profile
+ ProfileHeader
-
- Przestań śledzić
+
+
-
- Wysłano prośbę o możliwość śledzenia!
+
+
+
+
+ ProfilePage
-
- Śledzisz
-
-
-
- Wycisz
-
-
-
- Unmute
-
-
-
- Unblock
-
-
-
- Block
-
-
-
- Statuses
-
-
-
- Favourites
-
-
-
- Follow
-
-
-
- Summary
+
+
- Followers
+ Followers
-
+
+ Śledzisz
+
+
+
+ Statuses
+
+
+
+ Przestań śledzić
+
+
+
-
+
+ Follow
+
+
+
+ Unmute
+
+
+
+ Wycisz
+
+
+
+ Unblock
+
+
+
+ Block
+
+
+
- Settings
+ SettingsPage
Ustawienia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -243,7 +276,7 @@
-
+
@@ -251,7 +284,11 @@
-
+
+
+
+
+
@@ -266,10 +303,18 @@
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index d47095f..2fb00f3 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Удалить
-
-
-
- Cмайликов
-
-
-
- Нажмите, чтобы вставить
+
+
+
+
+
+
+
+
+ Удалить
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Новый
+
+
+
+ EmojiSelect
+
+
+ Cмайликов
+
+
+
+ Нажмите, чтобы вставить
@@ -135,6 +138,13 @@
Федеративные
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
Пожалуйста, подождите...
+
+
+ Новый
+
- Profile
+ ProfileHeader
-
- Отписаться
+
+
-
- Следуйте запрошенному запросу!
+
+
+
+
+ ProfilePage
-
- Следующий
-
-
-
- Безгласный
-
-
-
- Нет безгласный
-
-
-
- Открыть
-
-
-
- Блокировать
-
-
-
- Статусы
-
-
-
- Избранные
-
-
-
- Следить
-
-
-
- Резюме
+
+
- Читают
+ Читают
-
+
+ Следующий
+
+
+
+ Статусы
+
+
+
+ Отписаться
+
+
+
-
+
+ Следить
+
+
+
+ Нет безгласный
+
+
+
+ Безгласный
+
+
+
+ Открыть
+
+
+
+ Блокировать
+
+
+
- Settings
+ SettingsPage
- Настройки
+ Настройки
-
- Удалить учетную запись
+
+
-
- Добавить аккаунт
-
-
-
- удалить учетную запись с устройства
-
-
-
- Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени
+
+
- Отключите эту опцию, если вы хотите сохранить подключение к данным
+ Отключите эту опцию, если вы хотите сохранить подключение к данным
+
+
+
+
+
+
+
+ Удалить учетную запись
+
+
+
+ Добавить аккаунт
+
+
+
+
+
+
+
+ Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени
+
+
+
+ Переведите
+
+
+
+
- Зачет
+ Зачет
- Дизайн и разработка UI / UX
+ Дизайн и разработка UI / UX
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Загружать изображения
-
-
-
- Переведите
-
-
-
- Используйте Transifex, чтобы помочь с переводом приложения на ваш язык
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
Избранные
+
+
+
+
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index 52a0d2c..c9f1e30 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Обриши
-
-
-
- Емотикони
-
-
-
- Тапни за убацивање
+
+
+
+
+
+
+
+
+ Обриши
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Novi toot
+
+
+
+ EmojiSelect
+
+
+ Емотикони
+
+
+
+ Тапни за убацивање
@@ -135,6 +138,13 @@
Федеративна
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
молимо вас, сачекајте...
+
+
+ Novi toot
+
- Profile
+ ProfileHeader
-
- Одпрати
+
+
-
- Захтјев за праћењем поднесен!
+
+
+
+
+ ProfilePage
-
- Пратите
-
-
-
- Утишај
-
-
-
- Укини утишање
-
-
-
- Одблокирати
-
-
-
- Блокирати
-
-
-
- Статуси
-
-
-
- Омиљени
-
-
-
- Прати
-
-
-
- Детаљи
+
+
- Пратиоци
+ Пратиоци
-
+
+ Пратите
+
+
+
+ Статуси
+
+
+
+ Одпрати
+
+
+
-
+
+ Прати
+
+
+
+ Укини утишање
+
+
+
+ Утишај
+
+
+
+ Одблокирати
+
+
+
+ Блокирати
+
+
+
- Settings
+ SettingsPage
- Подешавања
+ Подешавања
-
- Уклони налог
+
+
-
- Додај налог
-
-
-
- Укините дозволе за кориштење и уклоните налог с телефона
-
-
-
- Дозволите овој апликацији да користи ваш Mastodon налог
+
+
- Искључите ову опцију уколико желите да уштедите на преносу података
+ Искључите ову опцију уколико желите да уштедите на преносу података
+
+
+
+
+
+
+
+ Уклони налог
+
+
+
+ Додај налог
+
+
+
+
+
+
+
+ Дозволите овој апликацији да користи ваш Mastodon налог
+
+
+
+ Преведи
+
+
+
+
- Спомен плоча
+ Спомен плоча
- интерфејс дизајн и развој
+ интерфејс дизајн и развој
+
+
+
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Прикажи слике у објавама
-
-
-
- Преведи
-
-
-
- Користите Transifex и помозите у преводу апликације на други језик
-
-
-
-
-
Toot
@@ -336,5 +361,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 5cd3f54..dc0146c 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -21,23 +21,23 @@
- Conversation
+ ConversationPage
-
- Radera
-
-
-
- Emojis
-
-
-
- Tryck för att infoga
+
+
+
+
+
+
+
+
+ Radera
+
@@ -54,24 +54,27 @@
-
-
-
-
-
-
-
-
- ImageFullScreen
+ CoverPage
-
-
+
+ Ny toot
+
+
+
+ EmojiSelect
+
+
+ Emojis
+
+
+
+ Tryck för att infoga
@@ -135,6 +138,13 @@
Förenade
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,108 +178,143 @@
Vänligen vänta...
+
+
+ Ny toot
+
- Profile
+ ProfileHeader
-
- Sluta följa
+
+
-
- Följarförfrågan har skickats!
+
+
+
+
+ ProfilePage
-
- Följer
-
-
-
- Tysta
-
-
-
- Avtysta
-
-
-
- Avblockera
-
-
-
- Blockera
-
-
-
- Statusar
-
-
-
- Favoriter
-
-
-
- Följ
-
-
-
- Översikt
+
+
- Följare
+ Följare
-
+
+ Följer
+
+
+
+ Statusar
+
+
+
+ Sluta följa
+
+
+
-
+
+ Följ
+
+
+
+ Avtysta
+
+
+
+ Tysta
+
+
+
+ Avblockera
+
+
+
+ Blockera
+
+
+
- Settings
+ SettingsPage
- Inställningar
+ Inställningar
-
- Radera konto
+
+
-
- Lägg till konto
-
-
-
- Avauktorisera denna app och radera ditt konto
-
-
-
- Godkänn denna app att använda ditt Mastodon-konto på dina vägnar
+
+
- Inaktivera det här alternativet om du vill behålla din dataanslutning
+ Inaktivera det här alternativet om du vill behålla din dataanslutning
+
+
+
+
+
+
+
+ Radera konto
+
+
+
+ Lägg till konto
+
+
+
+
+
+
+
+ Godkänn denna app att använda ditt Mastodon-konto på dina vägnar
+
+
+
+ Översätt
+
+
+
+
- Erkännanden
+ Erkännanden
- UI/UX design och utveckling
+ UI/UX design och utveckling
+
+
+ Använd Transifex för att hjälpa med app-översättningar till ditt språk
+
+
+
+
+
@@ -282,26 +327,6 @@
-
-
-
-
-
-
- Ladda bilder i toots
-
-
-
- Översätt
-
-
-
-
-
-
-
- Använd Transifex för att hjälpa med app-översättningar till ditt språk
-
Toot
@@ -336,5 +361,9 @@
Favorisera
+
+
+
+
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index b92289e..1852563 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -21,57 +21,60 @@
- Conversation
+ ConversationPage
-
- 删除
-
-
-
- 表情
-
-
-
- 点击以插入
+
+ 复制链接到剪切板
- 在此编写你的警告信息
-
-
-
- 公共区域
-
-
-
- 不公开
-
-
-
- 仅关注者
-
-
-
- 私信
+ 在此编写你的警告信息
- 有何想法?
+ 有何想法?
+
+
+
+ 删除
+
+
+
+ 公共区域
+
+
+
+ 不公开
+
+
+
+ 仅关注者
+
+
+
+ 私信
+
+
+ CoverPage
-
- 复制链接到剪切板
+
+ 新嘟嘟
- ImageFullScreen
+ EmojiSelect
-
-
+
+ 表情
+
+
+
+ 点击以插入
@@ -135,6 +138,13 @@
联合
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -168,139 +178,154 @@
稍等片刻......
+
+
+ 新嘟嘟
+
- Profile
+ ProfileHeader
-
- 取消关注
+
+
-
- 已寄出关注请求!
+
+
+
+
+ ProfilePage
-
- 关注中
-
-
-
- 静音
-
-
-
- 未静音
-
-
-
- 解除封锁
-
-
-
- 封锁
-
-
-
- 状态
-
-
-
- 收藏
-
-
-
- 关注
-
-
-
- 摘要
+
+
- 关注者
+ 关注者
-
- 简介
+
+ 关注中
-
- 在浏览器打开个人简介
+
+ 状态
+
+
+
+ 取消关注
+
+
+
+
+
+
+
+ 关注
+
+
+
+ 未静音
+
+
+
+ 静音
+
+
+
+ 解除封锁
+
+
+
+ 封锁
+
+
+
+
- Settings
+ SettingsPage
- 设置
+ 设置
-
- 移除账号
+
+
-
- 添加账号
-
-
-
- 取消授权此软件并移除你的账号
-
-
-
- 授权此软件使用你的 Mastodon 账号
+
+
- 如果你想保护你的数据连接,请禁用此选项
+ 如果你想保护你的数据连接,请禁用此选项
-
- 信誉
-
-
-
- UI/UX设计及开发
-
-
-
- 视觉识别
-
-
-
- 奥克西坦语及法语翻译
-
-
-
- 尼德兰语翻译
-
-
-
- 西班牙语翻译
-
-
-
- 添加 README 文件
-
-
-
- 汉语翻译
-
-
-
+
+
+
+ 移除账号
+
+
+
+ 添加账号
+
+
+
+
+
+
+
+ 授权此软件使用你的 Mastodon 账号
+
-
- 使用 Transifex 以帮助翻译软件为你的语言
+
+
+
+
+
+ 信誉
+
+
+
+ UI/UX设计及开发
+
+
+
+ 视觉识别
- 开发及翻译
+ 开发及翻译
+
+
+
+ 奥克西坦语及法语翻译
+
+
+
+ 汉语翻译
+
+
+
+ 尼德兰语翻译
+
+
+
+ 西班牙语翻译
+
+
+
+ 添加 README 文件
@@ -336,5 +361,9 @@
关注
+
+
+
+
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 7e229a9..ec96332 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -21,7 +21,7 @@
- Conversation
+ ConversationPage
@@ -60,7 +60,14 @@
- EmojiPage
+ CoverPage
+
+
+
+
+
+
+ EmojiSelect
@@ -70,13 +77,6 @@
-
- ImageFullScreen
-
-
-
-
-
ImageUploader
@@ -138,6 +138,13 @@
+
+ MediaFullScreen
+
+
+
+
+
MiniStatus
@@ -171,72 +178,95 @@
+
+
+
+
- Profile
+ ProfileHeader
-
- Unfollow
+
+
-
- Follow request sent!
+
+
+
+
+ ProfilePage
-
- Following
-
-
-
- Mute
-
-
-
- Unmute
-
-
-
- Unblock
-
-
-
- Block
-
-
-
- Statuses
-
-
-
- Favourites
-
-
-
- Follow
-
-
-
- Summary
+
+
- Followers
+ Followers
-
+
+ Following
+
+
+
+ Statuses
+
+
+
+ Unfollow
+
+
+
-
+
+ Follow
+
+
+
+ Unmute
+
+
+
+ Mute
+
+
+
+ Unblock
+
+
+
+ Block
+
+
+
- Settings
+ SettingsPage
Settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -246,7 +276,7 @@
-
+
@@ -254,7 +284,11 @@
-
+
+
+
+
+
@@ -269,10 +303,18 @@
+
+
+
+
+
+
+
+
@@ -285,26 +327,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Toot
@@ -339,5 +361,9 @@
+
+
+
+
From 6eaca0ab1e07e32b30f867e6ed65d86b92587db1 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 15:16:00 +0200
Subject: [PATCH 23/70] update translations
---
qml/pages/components/ProfileHeader.qml | 5 +-
translations/harbour-tooter-de.ts | 98 +++----
translations/harbour-tooter-es.ts | 90 +++----
translations/harbour-tooter-fi.ts | 340 -------------------------
translations/harbour-tooter-fr.ts | 98 +++----
translations/harbour-tooter-it.ts | 98 +++----
translations/harbour-tooter-zh_CN.ts | 84 +++---
translations/harbour-tooter.ts | 118 ++++-----
8 files changed, 295 insertions(+), 636 deletions(-)
delete mode 100644 translations/harbour-tooter-fi.ts
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index a19c5b8..4f50c5e 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -127,7 +127,7 @@ Item {
visible: (following ? true : false)
radius: Theme.paddingSmall
color: Theme.secondaryHighlightColor
- width: Theme.buttonWidthExtraSmall
+ width: followingLbl.width + 2*Theme.paddingLarge
height: parent.height
Label {
@@ -145,7 +145,7 @@ Item {
visible: (bot ? true : false)
radius: Theme.paddingSmall
color: Theme.secondaryHighlightColor
- width: botLabel.width + 2*Theme.paddingLarge
+ width: botLbl.width + 2*Theme.paddingLarge
height: parent.height
Label {
@@ -158,5 +158,4 @@ Item {
}
}
}
-
}
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 1b4ceeb..507cee7 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -24,57 +24,57 @@
ConversationPage
- Link kopieren
+ Link kopieren
- Inhaltswarnung
+ Inhaltswarnung
- Was gibt's Neues?
+ Was gibt's Neues?
- Löschen
+ Löschen
- Öffentlich
+ Öffentlich
- Nicht gelistet
+ Nicht gelistet
- Nur für Folgende
+ Nur für Folgende
- Direktnachricht
+ Direktnachricht
- Toot gesendet!
+ Toot gesendet!
CoverPage
- Neuer Toot
+ Neuer Toot
EmojiSelect
- Emojis
+ Emojis
- Tippen um einzufügen
+ Tippen um einzufügen
@@ -142,7 +142,7 @@
MediaFullScreen
- Ladefehler
+ Ladefehler
@@ -180,152 +180,152 @@
- Neuer Toot
+ Neuer Toot
ProfileHeader
-
+ Folgt dir
-
+ Bot
ProfilePage
-
+ Details
- Folgende
+ Folgende
- Folgt
+ Folgt
- Beiträge
+ Beiträge
- Entfolgen
+ Entfolgen
-
+ Angefragt
- Folgen
+ Folgen
- Nicht stummschalten
+ Nicht stumm schalten
- Stummschalten
+ Stumm schalten
- Nicht blockieren
+ Nicht blockieren
- Blockieren
+ Blockieren
-
+ Im Browser öffnen
SettingsPage
- Einstellungen
+ Einstellungen
-
+ Optionen
-
+ Bilder in Toots laden
- Diese Option deaktivieren um Datenvolumen zu sparen
+ Diese Option deaktivieren um Datenvolumen zu sparen
-
+ Konto
- Konto entfernen
+ Konto entfernen
- Konto hinzufügen
+ Konto hinzufügen
-
+ Konto entfernen und für diese Anwendung deaktivieren
- Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben
+ Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben
- Übersetzungen
+ Übersetzungen
-
+ <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> benutzen um bei den Übersetzungen mitzuhelfen.
- Über
+ Über
- UI/UX-Gestaltung und Entwicklung
+ UI/UX-Gestaltung und Entwicklung
- Visuelle Identität
+ Visuelle Identität
- Entwicklung und Übersetzungen
+ Entwicklung und Übersetzungen
- Französische Übersetzung
+ Französische Übersetzung
- Chinesische Übersetzung
+ Chinesische Übersetzung
- Niederländische Übersetzung
+ Niederländische Übersetzung
- Spanische Übersetzung
+ Spanische Übersetzung
- Erstellung README-Datei
+ Erstellung README-Datei
@@ -363,7 +363,7 @@
-
+ Erwähnen
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index b14f69d..7071824 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -24,57 +24,57 @@
ConversationPage
-
+ Copiar enlace al portapapeles
- Escribe aquí tu advertencia
+ Escribe aquí tu advertencia
- ¿En qué estás pensando?
+ ¿En qué estás pensando?
- Borrar
+ Borrar
- Público
+ Público
- Sin federar
+ Sin federar
- Sólo seguidores
+ Sólo seguidores
- Directo
+ Directo
-
+ ¡Toot enviado!
CoverPage
- Nuevo toot
+ Nuevo toot
EmojiSelect
- Emoticonos
+ Emoticonos
- Toca para insertar
+ Toca para insertar
@@ -142,7 +142,7 @@
MediaFullScreen
-
+ Error al cargar
@@ -180,7 +180,7 @@
- Nuevo toot
+ Nuevo toot
@@ -191,7 +191,7 @@
-
+ Bot
@@ -202,19 +202,19 @@
- Seguidores
+ Seguidores
- Siguiendo
+ Siguiendo
- Estados
+ Estados
- Dejar de seguir
+ Dejar de seguir
@@ -222,110 +222,110 @@
- Seguir
+ Seguir
- Dejar de silenciar
+ Dejar de silenciar
- Silenciar
+ Silenciar
- Desbloquear
+ Desbloquear
- Bloquear
+ Bloquear
-
+ Abrir en el navegador
SettingsPage
- Ajustes
+ Ajustes
-
+ Opciones
-
+ Cargar imágenes en messages
- Deshabilita esta opción si quieres ahorrar en tu conexión de datos
+ Deshabilita esta opción si quieres ahorrar en tu conexión de datos
-
+ Cuenta
- Eliminar cuenta
+ Eliminar cuenta
- Añadir cuenta
+ Añadir cuenta
-
+ Retira la autorización a esta aplicación y elimina tu cuenta
- Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre
+ Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre
- Traducir
+ Traducir
-
+ Usar <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> para ayudar con traducciones
- Créditos
+ Créditos
- Diseño UI/UX y desarrollo
+ Diseño UI/UX y desarrollo
- Identidad visual
+ Identidad visual
- Desarrollo y traducciones
+ Desarrollo y traducciones
- Traducción al occitano y francés
+ Traducción al occitano y francés
- Traducción al chino
+ Traducción al chino
- Traducción al holandés
+ Traducción al holandés
- Traducción al español
+ Traducción al español
- Añadido archivo README
+ Añadido archivo README
diff --git a/translations/harbour-tooter-fi.ts b/translations/harbour-tooter-fi.ts
deleted file mode 100644
index 50a5f73..0000000
--- a/translations/harbour-tooter-fi.ts
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
- API
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Conversation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ImageFullScreen
-
-
-
-
-
-
- ImageUploader
-
-
-
-
-
-
- LoginPage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MainPage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MiniStatus
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MyList
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Profile
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Settings
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Toot
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VisualContainer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index a92371e..26b00e7 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -24,57 +24,57 @@
ConversationPage
- Copier le lien
+ Copier le lien
- Rédigez votre alerte ici
+ Rédigez votre alerte ici
- Qu'avez-vous en tête?
+ Qu'avez-vous en tête?
- Supprimer
+ Supprimer
- Public
+ Public
- Non listé
+ Non listé
- Abonné(e)s uniquement
+ Abonné(e)s uniquement
- Direct
+ Direct
- Pouet envoyé !
+ Pouet envoyé !
CoverPage
- Nouveau pouet
+ Nouveau pouet
EmojiSelect
- Emojis
+ Emojis
- Appuyez pour insérer
+ Appuyez pour insérer
@@ -142,7 +142,7 @@
MediaFullScreen
-
+ Erreur au chargement
@@ -180,152 +180,152 @@
- Nouveau pouet
+ Nouveau pouet
ProfileHeader
-
+ Vous suit
-
+ Bot
ProfilePage
-
+ Détails
- Abonné(e)s
+ Abonné(e)s
- Abonnements
+ Abonnements
- Pouets
+ Pouets
- Ne plus suivre
+ Ne plus suivre
-
+ Demandé
- Suivre
+ Suivre
- Démasquer
+ Démasquer
- Masquer
+ Masquer
- Débloquer
+ Débloquer
- Bloquer
+ Bloquer
-
+ Ouvrir dans le navigateur
SettingsPage
- Paramètres
+ Paramètres
-
+ Options
-
+ Charger images dans les pouets
- Désactiver cette option pour économiser des données mobiles
+ Désactiver cette option pour économiser des données mobiles
-
+ Compte
- Déconnecter votre compte
+ Déconnecter votre compte
- Ajouter compte
+ Ajouter compte
-
+ Désautoriser cette application et enlever votre compte
- Autoriser l’accès à votre compte pour cette application
+ Autoriser l’accès à votre compte pour cette application
- Traduire
+ Traduire
-
+ Utiliser <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> pour aider à traduire cette application.
- Développement
+ Développement
- Design UI/UX et développement
+ Design UI/UX et développement
- Identité visuelle
+ Identité visuelle
- Développement et traductions
+ Développement et traductions
- Traduction français
+ Traduction français
- Traduction chinoise
+ Traduction chinoise
- Traduction néerlandaise
+ Traduction néerlandaise
- Traduction espagnole
+ Traduction espagnole
- Fichier README ajouté
+ Fichier README ajouté
@@ -363,7 +363,7 @@
-
+ Mentionner
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 7b1336b..47a3b60 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -30,47 +30,47 @@
- Copia link
+ Copia link
- Contenuto avviso
+ Contenuto avviso
- A cosa stai pensando?
+ A cosa stai pensando?
- Elimina
+ Elimina
- Pubblico
+ Pubblico
- Non elencato
+ Non elencato
- Solo ai seguaci
+ Solo ai seguaci
- Diretto
+ Diretto
- Toot è stato pubblicato!
+ Toot è stato pubblicato!
@@ -78,7 +78,7 @@
- Nuovo toot
+ Nuovo toot
@@ -86,12 +86,12 @@
- Emojis
+ Emojis
- Tap per inserire
+ Tap per inserire
@@ -173,7 +173,7 @@
- Errore durante caricamento
+ Errore durante caricamento
@@ -214,7 +214,7 @@
- Nuovo toot
+ Nuovo toot
@@ -227,12 +227,12 @@
-
+ Ti segue
-
+ Bot
@@ -240,62 +240,62 @@
-
+ Dettagli
- Seguaci
+ Seguaci
- Segue
+ Segue
- Toots
+ Toots
- Smetti di seguire
+ Smetti di seguire
-
+ Richiesto
- Segui
+ Segui
- Non silenziare
+ Non silenziare
- Silenzia
+ Silenzia
- Sblocca
+ Sblocca
- Blocca
+ Blocca
-
+ Aprire nel browser
@@ -303,102 +303,102 @@
-
+ Impostazioni
-
+ Opzioni
-
+ Caricare immagini nei toots
- Disabilitare questa opzione per conservare connessione dati
+ Disabilitare questa opzione per conservare connessione dati
-
+ Account
- Rimozione del account
+ Rimozione del account
- Aggiungi account
+ Aggiungi account
-
+ Annullare l'autorizzazione dell'app e rimuovere l'account
- Autorizzare l'app all'utilizzo del conto Mastodon
+ Autorizzare l'app all'utilizzo del conto Mastodon
- Tradurre
+ Tradurre
-
+ Utilizzare <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> per aiutare nella traduzione dell'app.
- Sviluppo
+ Sviluppo
- Design UI/UX e sviluppo
+ Design UI/UX e sviluppo
- Identità visiva
+ Identità visiva
- Sviluppo e traduzioni
+ Sviluppo e traduzioni
- Traduzione francese e occitanica
+ Traduzione francese e occitanica
- Traduzione cinese
+ Traduzione cinese
- Traduzione olandese
+ Traduzione olandese
- Traduzione spagnola
+ Traduzione spagnola
- Aggiunto file README
+ Aggiunto file README
@@ -444,7 +444,7 @@
-
+ Menzionare
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 1852563..15e9e78 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -24,57 +24,57 @@
ConversationPage
- 复制链接到剪切板
+ 复制链接到剪切板
- 在此编写你的警告信息
+ 在此编写你的警告信息
- 有何想法?
+ 有何想法?
- 删除
+ 删除
- 公共区域
+ 公共区域
- 不公开
+ 不公开
- 仅关注者
+ 仅关注者
- 私信
+ 私信
-
+ 已发送嘟嘟!
CoverPage
- 新嘟嘟
+ 新嘟嘟
EmojiSelect
- 表情
+ 表情
- 点击以插入
+ 点击以插入
@@ -142,7 +142,7 @@
MediaFullScreen
-
+ 加载错误
@@ -180,7 +180,7 @@
- 新嘟嘟
+ 新嘟嘟
@@ -202,19 +202,19 @@
- 关注者
+ 关注者
- 关注中
+ 关注中
- 状态
+ 状态
- 取消关注
+ 取消关注
@@ -222,34 +222,34 @@
- 关注
+ 关注
- 未静音
+ 未静音
- 静音
+ 静音
- 解除封锁
+ 解除封锁
- 封锁
+ 封锁
-
+ 在浏览器打开个人简介
SettingsPage
- 设置
+ 设置
@@ -257,31 +257,31 @@
-
+ 加载嘟嘟图片
- 如果你想保护你的数据连接,请禁用此选项
+ 如果你想保护你的数据连接,请禁用此选项
-
+ 账号
- 移除账号
+ 移除账号
- 添加账号
+ 添加账号
-
+ 取消授权此软件并移除你的账号
- 授权此软件使用你的 Mastodon 账号
+ 授权此软件使用你的 Mastodon 账号
@@ -289,43 +289,43 @@
-
+ 使用 <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> 以帮助翻译软件为你的语言.
- 信誉
+ 信誉
- UI/UX设计及开发
+ UI/UX设计及开发
- 视觉识别
+ 视觉识别
- 开发及翻译
+ 开发及翻译
- 奥克西坦语及法语翻译
+ 奥克西坦语及法语翻译
- 汉语翻译
+ 汉语翻译
- 尼德兰语翻译
+ 尼德兰语翻译
- 西班牙语翻译
+ 西班牙语翻译
- 添加 README 文件
+ 添加 README 文件
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index ec96332..629a6de 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -1,6 +1,6 @@
-
+
API
@@ -24,57 +24,57 @@
ConversationPage
-
+ Copy Link to Clipboard
-
+ Write your warning here
-
+ What's on your mind?
-
+ Delete
-
+ Public
-
+ Unlisted
-
+ Followers-only
-
+ Direct
-
+ Toot sent!
CoverPage
-
+ New Toot
EmojiSelect
-
+ Emojis
-
+ Tap to insert
@@ -88,23 +88,23 @@
LoginPage
-
+ Login
-
+ Instance
-
+ Enter a valid Mastodon instance URL
-
+ 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.
-
+ Reload
@@ -142,7 +142,7 @@
MediaFullScreen
-
+ Error loading
@@ -180,152 +180,152 @@
-
+ New Toot
ProfileHeader
-
+ Follows you
-
+ Bot
ProfilePage
-
+ About
- Followers
+ Followers
- Following
+ Following
- Statuses
+ Statuses
- Unfollow
+ Unfollow
-
+ Requested
- Follow
+ Follow
- Unmute
+ Unmute
- Mute
+ Mute
- Unblock
+ Unblock
- Block
+ Block
-
+ Open in Browser
SettingsPage
- Settings
+ Settings
-
+ Options
-
+ Load Images in Toots
-
+ Disable this option if you want to preserve your data connection
-
+ Account
-
+ Remove Account
-
+ Add Account
-
+ Deauthorize this app from using your account and remove account data from phone
-
+ Authorize this app to access your Mastodon account
-
+ Translate
-
+ Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language.
-
+ Credits
-
+ UI/UX design and development
-
+ Visual identity
-
+ Development and translations
-
+ Occitan & French translation
-
+ Chinese translation
-
+ Dutch translation
-
+ Spanish translation
-
+ Added README file
@@ -347,23 +347,23 @@
VisualContainer
-
+ Unboost
-
+ Boost
-
+ Unfavourite
-
+ Favourite
-
+ Mention
From e9c332941a94c6d8fc1f2ea79f66f3ec683e3bbe Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 16:11:42 +0200
Subject: [PATCH 24/70] translation updates
---
qml/pages/ProfilePage.qml | 42 ++++++++++---
qml/pages/SettingsPage.qml | 4 +-
translations/harbour-tooter-de.ts | 28 +++++++--
translations/harbour-tooter-el.ts | 78 ++++++++++++++---------
translations/harbour-tooter-es.ts | 30 +++++++--
translations/harbour-tooter-fr.ts | 28 +++++++--
translations/harbour-tooter-it.ts | 68 +++++++++++++-------
translations/harbour-tooter-nl.ts | 94 +++++++++++++++++-----------
translations/harbour-tooter-nl_BE.ts | 80 ++++++++++++++---------
translations/harbour-tooter-oc.ts | 80 ++++++++++++++---------
translations/harbour-tooter-pl.ts | 62 +++++++++++-------
translations/harbour-tooter-ru.ts | 78 ++++++++++++++---------
translations/harbour-tooter-sr.ts | 78 ++++++++++++++---------
translations/harbour-tooter-sv.ts | 82 +++++++++++++++---------
translations/harbour-tooter-zh_CN.ts | 28 +++++++--
translations/harbour-tooter.ts | 28 +++++++--
16 files changed, 598 insertions(+), 290 deletions(-)
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index 4478e4c..e5ce206 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -170,7 +170,9 @@ Page {
ExpandingSection {
id: expandingSection1
- title: qsTr("About")
+ title:
+ //: If there's no good translation for "About", use "Details" (in details about profile).
+ qsTr("About")
content.sourceComponent: Column {
height: Math.min( txtContainer, parent.height * 0.7 )
spacing: Theme.paddingLarge
@@ -248,7 +250,9 @@ Page {
Text {
id: txtFollowers
visible: followers_count ? true : false
- text: followers_count+" "+qsTr("Followers")
+ text: followers_count+" "+
+ //: Will show as: "35 Followers"
+ qsTr("Followers")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
wrapMode: Text.Wrap
@@ -257,7 +261,9 @@ Page {
Text {
id: txtFollowing
visible: following_count ? true : false
- text: following_count+" "+qsTr("Following")
+ text: following_count+" "+
+ //: Will show as: "23 Following"
+ qsTr("Following")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
wrapMode: Text.Wrap
@@ -266,7 +272,9 @@ Page {
Text {
id: txtStatuses
visible: statuses_count ? true : false
- text: statuses_count+" "+qsTr("Statuses")
+ text: statuses_count+" "+
+ //: Will show as: "115 Statuses"
+ qsTr("Statuses")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
wrapMode: Text.Wrap
@@ -275,7 +283,9 @@ Page {
/*Text {
id: txtFavourites
visible: favourites_count ? true : false
- text: favourites_count+" "+qsTr("Favourites")
+ text: favourites_count+" "+
+ //: Will show as: "56 Favourites"
+ qsTr("Favourites")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
wrapMode: Text.Wrap
@@ -294,7 +304,7 @@ Page {
text: "Mention"
onClicked: {
pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
- headerTitle: "Mention",
+ headerTitle: qsTr("Mention"),
description: "@"+username,
type: "new"
})
@@ -304,7 +314,13 @@ Page {
Button {
id: btnFollow
preferredWidth: Theme.buttonWidthSmall
- text: (following ? qsTr("Unfollow") : (requested ? qsTr("Requested") : qsTr("Follow")))
+ text: (following ?
+ //: Is a button. Keep it as short as possible.
+ qsTr("Unfollow") : (requested ?
+ //: Is a button. Keep it as short as possible.
+ qsTr("Requested") :
+ //: Is a button. Keep it as short as possible.
+ qsTr("Follow")))
color: (following ? highlightColor : (requested ? palette.errorColor : palette.primaryColor))
onClicked: {
var msg = {
@@ -321,7 +337,11 @@ Page {
Button {
id: btnMute
preferredWidth: Theme.buttonWidthSmall
- text: (muting ? qsTr("Unmute") : qsTr("Mute"))
+ text: (muting ?
+ //: Is a button. Keep it as short as possible.
+ qsTr("Unmute") :
+ //: Is a button. Keep it as short as possible.
+ qsTr("Mute"))
color: (muting ? palette.errorColor : palette.primaryColor)
onClicked: {
var msg = {
@@ -337,7 +357,11 @@ Page {
Button {
id: btnBlock
preferredWidth: Theme.buttonWidthSmall
- text: (blocking ? qsTr("Unblock") : qsTr("Block") )
+ text: (blocking ?
+ //: Is a button. Keep it as short as possible.
+ qsTr("Unblock") :
+ //: Is a button. Keep it as short as possible.
+ qsTr("Block") )
color: (blocking ? palette.errorColor : palette.primaryColor)
onClicked: {
var msg = {
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index 876929c..adb844d 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -111,7 +111,9 @@ Page {
}
LinkedLabel {
- text: qsTr("Use Transifex to help with app translation to your language.")
+ id: translateLbl
+ //: Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ text: qsTr("Use")+" "+"Transifex"+" "+qsTr("to help with app translation to your language.")
textFormat: Text.StyledText
color: Theme.highlightColor
linkColor: Theme.primaryColor
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 507cee7..05e7430 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -198,52 +198,67 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
Details
+ Will show as: "35 Followers"
Folgende
+ Will show as: "23 Following"
Folgt
+ Will show as: "115 Statuses"
Beiträge
+ Is a button. Keep it as short as possible.
Entfolgen
+ Is a button. Keep it as short as possible.
Angefragt
+ Is a button. Keep it as short as possible.
Folgen
+ Is a button. Keep it as short as possible.
Nicht stumm schalten
+ Is a button. Keep it as short as possible.
Stumm schalten
+ Is a button. Keep it as short as possible.
Nicht blockieren
+ Is a button. Keep it as short as possible.
Blockieren
Im Browser öffnen
+
+
+ Erwähnen
+
SettingsPage
@@ -287,10 +302,6 @@
Übersetzungen
-
-
- <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> benutzen um bei den Übersetzungen mitzuhelfen.
-
Über
@@ -327,6 +338,15 @@
Erstellung README-Datei
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Benutze
+
+
+
+ um bei den Übersetzungen mitzuhelfen.
+
Toot
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index ca66d27..2a21994 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -36,7 +36,7 @@
- Διαγραφή
+ Διαγραφή
@@ -63,18 +63,18 @@
CoverPage
- Νέος
+ Νέος
EmojiSelect
- Emoji
+ Emoji
- Κτυπήστε για εισαγωγή
+ Κτυπήστε για εισαγωγή
@@ -131,7 +131,7 @@
-
+ Τοπικός
@@ -180,7 +180,7 @@
- Νέος
+ Νέος
@@ -198,58 +198,73 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Σας ακολουθούν
+ Will show as: "35 Followers"
+ Σας ακολουθούν
- Σε παρακολούθηση
+ Will show as: "23 Following"
+ Σε παρακολούθηση
- Κατάσταση
+ Will show as: "115 Statuses"
+ Κατάσταση
- Αναίρεση παρακολούθησης
+ Is a button. Keep it as short as possible.
+ Αναίρεση παρακολούθησης
+ Is a button. Keep it as short as possible.
- Παρακολούθηση
+ Is a button. Keep it as short as possible.
+ Παρακολούθηση
- Αναίρεση σίγασης
+ Is a button. Keep it as short as possible.
+ Αναίρεση σίγασης
- Σίγαση
+ Is a button. Keep it as short as possible.
+ Σίγαση
- Αναίρεση φραγής
+ Is a button. Keep it as short as possible.
+ Αναίρεση φραγής
- Φραγή
+ Is a button. Keep it as short as possible.
+ Φραγή
+
+
+
+
SettingsPage
- Ρυθμίσεις
+ Ρυθμίσεις
@@ -261,43 +276,39 @@
- Απενεργοποιήστε αυτήν την επιλογή αν θέλετε να διατηρήσετε την σύνδεση των δεδομένων σας
+ Απενεργοποιήστε αυτήν την επιλογή αν θέλετε να διατηρήσετε την σύνδεση των δεδομένων σας
-
+ λογαριασμού
- Αφαίρεση λογαριασμού
+ Αφαίρεση λογαριασμού
- Προσθήκη λογαριασμού
+ Προσθήκη λογαριασμού
-
+ Άρση της αδειοδότησης της εφαρμογής και αφαίρεση του λογαριασμού σας
- Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας
+ Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας
- Μετάφραση
-
-
-
-
+ Μετάφραση
- Ευχαριστίες
+ Ευχαριστίες
- UI/UX σχεδιασμός και ανάπτυξη
+ UI/UX σχεδιασμός και ανάπτυξη
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Χρησιμοποιήστε το
+
+
+
+ για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας.
+
Toot
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 7071824..af93f43 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -198,52 +198,67 @@
ProfilePage
-
+ If there's no good translation for "About", use "Details" (in details about profile).
+ Detalles
+ Will show as: "35 Followers"
Seguidores
+ Will show as: "23 Following"
Siguiendo
+ Will show as: "115 Statuses"
Estados
+ Is a button. Keep it as short as possible.
Dejar de seguir
+ Is a button. Keep it as short as possible.
+ Is a button. Keep it as short as possible.
Seguir
+ Is a button. Keep it as short as possible.
Dejar de silenciar
+ Is a button. Keep it as short as possible.
Silenciar
+ Is a button. Keep it as short as possible.
Desbloquear
+ Is a button. Keep it as short as possible.
Bloquear
Abrir en el navegador
+
+
+
+
SettingsPage
@@ -287,10 +302,6 @@
Traducir
-
-
- Usar <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> para ayudar con traducciones
-
Créditos
@@ -327,6 +338,15 @@
Añadido archivo README
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Usar
+
+
+
+ para ayudar con traducciones.
+
Toot
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 26b00e7..3f560f4 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -198,52 +198,67 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
Détails
+ Will show as: "35 Followers"
Abonné(e)s
+ Will show as: "23 Following"
Abonnements
+ Will show as: "115 Statuses"
Pouets
+ Is a button. Keep it as short as possible.
Ne plus suivre
+ Is a button. Keep it as short as possible.
Demandé
+ Is a button. Keep it as short as possible.
Suivre
+ Is a button. Keep it as short as possible.
Démasquer
+ Is a button. Keep it as short as possible.
Masquer
+ Is a button. Keep it as short as possible.
Débloquer
+ Is a button. Keep it as short as possible.
Bloquer
Ouvrir dans le navigateur
+
+
+ Mentionner
+
SettingsPage
@@ -287,10 +302,6 @@
Traduire
-
-
- Utiliser <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> pour aider à traduire cette application.
-
Développement
@@ -327,6 +338,15 @@
Fichier README ajouté
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Utiliser
+
+
+
+ pour aider à traduire cette application.
+
Toot
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 47a3b60..8cb29ba 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -238,62 +238,78 @@
ProfilePage
-
+
+ If there's no good translation for "About", use "Details" (in details about profile).
Dettagli
-
+
+ Will show as: "35 Followers"
Seguaci
-
+
+ Will show as: "23 Following"
Segue
-
+
+ Will show as: "115 Statuses"
Toots
+
+ Menzionare
+
+
+
+ Is a button. Keep it as short as possible.
Smetti di seguire
-
+
+ Is a button. Keep it as short as possible.
Richiesto
-
+
+ Is a button. Keep it as short as possible.
Segui
-
+
+ Is a button. Keep it as short as possible.
Non silenziare
-
+
+ Is a button. Keep it as short as possible.
Silenzia
-
+
+ Is a button. Keep it as short as possible.
Sblocca
-
+
+ Is a button. Keep it as short as possible.
Blocca
-
+
Aprire nel browser
@@ -351,52 +367,58 @@
Tradurre
-
-
- Utilizzare <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> per aiutare nella traduzione dell'app.
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Utilizzare
-
+
+
+ per aiutare nella traduzione dell'app.
+
+
+
Sviluppo
-
+
Design UI/UX e sviluppo
-
+
Identità visiva
-
+
Sviluppo e traduzioni
-
+
Traduzione francese e occitanica
-
+
Traduzione cinese
-
+
Traduzione olandese
-
+
Traduzione spagnola
-
+
Aggiunto file README
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 1dc2c52..abf442d 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -24,7 +24,7 @@
ConversationPage
-
+ Linkadres kopiëren
@@ -36,7 +36,7 @@
- Verwijderen
+ Verwijderen
@@ -63,18 +63,18 @@
CoverPage
- Nieuwe Toot
+ Nieuwe Toot
EmojiSelect
- Emojis
+ Emojis
- Tikken om in te voegen
+ Tikken om in te voegen
@@ -180,7 +180,7 @@
- Nieuwe Toot
+ Nieuwe Toot
@@ -191,113 +191,124 @@
-
+ Bot
ProfilePage
-
+ If there's no good translation for "About", use "Details" (in details about profile).
+ Gegevens
- Volgers
+ Will show as: "35 Followers"
+ Volgers
- Volgend
+ Will show as: "23 Following"
+ Volgend
- Statussen
+ Will show as: "115 Statuses"
+ Statussen
- Ontvolgen
+ Is a button. Keep it as short as possible.
+ Ontvolgen
-
+ Is a button. Keep it as short as possible.
+ Gevraagd
- Volgen
+ Is a button. Keep it as short as possible.
+ Volgen
- Ontdempen
+ Is a button. Keep it as short as possible.
+ Ontdempen
- Dempen
+ Is a button. Keep it as short as possible.
+ Dempen
- Deblokkeren
+ Is a button. Keep it as short as possible.
+ Deblokkeren
- Blokkeren
+ Is a button. Keep it as short as possible.
+ Blokkeren
-
+ Open een Browser
+
+
+
+ Vermelden
SettingsPage
- Instellingen
+ Instellingen
-
+ Opties
-
+ Laden afbeeldingen in toots
- Schakel deze optie uit als je je dataverbinding wilt behouden
+ Schakel deze optie uit als je je dataverbinding wilt behouden
-
+ Account
- Verwijderen account
+ Verwijderen account
- Toevoegen account
+ Toevoegen account
-
+ Trek autorisaties van deze app in en verwijder je account
- Autoriseer deze app om je Mastodon namens jou te gebruiken
+ Autoriseer deze app om je Mastodon namens jou te gebruiken
- Vertalen
-
-
-
-
+ Vertalen
- Credits
+ Credits
- UI/UX ontwerp en ontwikkeling
+ UI/UX ontwerp en ontwikkeling
@@ -305,7 +316,7 @@
- Ontwikkeling en vertalingen
+ Ontwikkeling en vertalingen
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Gebruik
+
+
+
+ om deze app te helpen vertalen in jouw taal.
+
Toot
@@ -363,7 +383,7 @@
-
+ Vermelden
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 001ba1e..d333bb8 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -36,7 +36,7 @@
- Verwijderen
+ Verwijderen
@@ -63,18 +63,18 @@
CoverPage
- Nieuwen toot
+ Nieuwen toot
EmojiSelect
- Emoji’s
+ Emoji’s
- Tikt voor in te voegen
+ Tikt voor in te voegen
@@ -180,7 +180,7 @@
- Nieuwen toot
+ Nieuwen toot
@@ -191,65 +191,80 @@
-
+ Bot
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Volgers
+ Will show as: "35 Followers"
+ Volgers
- Volgend
+ Will show as: "23 Following"
+ Volgend
- Statussen
+ Will show as: "115 Statuses"
+ Statussen
- Ontvolgen
+ Is a button. Keep it as short as possible.
+ Ontvolgen
+ Is a button. Keep it as short as possible.
- Volgen
+ Is a button. Keep it as short as possible.
+ Volgen
- Ontdempen
+ Is a button. Keep it as short as possible.
+ Ontdempen
- Dempen
+ Is a button. Keep it as short as possible.
+ Dempen
- Deblokkeren
+ Is a button. Keep it as short as possible.
+ Deblokkeren
- Blokkeren
+ Is a button. Keep it as short as possible.
+ Blokkeren
+
+
+
+
SettingsPage
- Instellingen
+ Instellingen
@@ -257,47 +272,43 @@
-
+ Afbeeldingen in toots laden
- Schakelt dees optie uit als ge uw verbinding wilt behouden
+ Schakelt dees optie uit als ge uw verbinding wilt behouden
-
+ Account
- Account verwijderen
+ Account verwijderen
- Account toevoegen
+ Account toevoegen
-
+ Trekt autorisaties van dezen app in en verwijdert uwen account
- Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken
+ Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken
- Vertalen
-
-
-
-
+ Vertalen
- Credits
+ Credits
- UI/UX-ontwerp en -ontwikkeling
+ UI/UX-ontwerp en -ontwikkeling
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Gebruikt
+
+
+
+ voor te helpen met dezen app in uw taal te vertalen.
+
Toot
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 3788b91..2748d68 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -36,7 +36,7 @@
- Escafar
+ Escafar
@@ -63,18 +63,18 @@
CoverPage
- Nòu Tut
+ Nòu Tut
EmojiSelect
- Emojis
+ Emojis
- Tustejar per inserir
+ Tustejar per inserir
@@ -180,7 +180,7 @@
- Nòu Tut
+ Nòu Tut
@@ -191,65 +191,80 @@
-
+ Bot
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Seguidors
+ Will show as: "35 Followers"
+ Seguidors
- Abonaments
+ Will show as: "23 Following"
+ Abonaments
- Estatuts
+ Will show as: "115 Statuses"
+ Estatuts
- Quitar de seguir
+ Is a button. Keep it as short as possible.
+ Quitar de seguir
+ Is a button. Keep it as short as possible.
- Seguir
+ Is a button. Keep it as short as possible.
+ Seguir
- Mostrar
+ Is a button. Keep it as short as possible.
+ Mostrar
- Amagar
+ Is a button. Keep it as short as possible.
+ Amagar
- Desblocar
+ Is a button. Keep it as short as possible.
+ Desblocar
- Blocar
+ Is a button. Keep it as short as possible.
+ Blocar
+
+
+
+
SettingsPage
- Parmètres
+ Parmètres
@@ -257,47 +272,43 @@
-
+ Cargar los imatges dels tuts
- Desactivar aquesta opcion per estalviar vòstra connexion de donadas
+ Desactivar aquesta opcion per estalviar vòstra connexion de donadas
-
+ Compte
- Levar un compte
+ Levar un compte
- Ajustar un compte
+ Ajustar un compte
-
+ Revocar l’aplicacion e levar vòstre compte
- Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos
+ Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos
- Traduire
-
-
-
-
+ Traduire
- Crèdits
+ Crèdits
- UI/UX design e desvlopament
+ UI/UX design e desvlopament
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Utilizar
+
+
+
+ per ajudar a traduire l’aplicacion dins vòstra lenga.
+
Toot
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 525a8ea..5a17753 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -5,7 +5,7 @@
API
- dodał(a) do ulubionych
+ dodał(a) do ulubionych
@@ -36,7 +36,7 @@
- Usuń
+ Usuń
@@ -63,18 +63,18 @@
CoverPage
- Nowy wpis
+ Nowy wpis
EmojiSelect
- Emoji
+ Emoji
- Dotknij aby wstawić
+ Dotknij aby wstawić
@@ -180,7 +180,7 @@
- Nowy wpis
+ Nowy wpis
@@ -191,65 +191,80 @@
-
+ Bot
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Followers
+ Will show as: "35 Followers"
+
- Śledzisz
+ Will show as: "23 Following"
+ Śledzisz
- Statuses
+ Will show as: "115 Statuses"
+
- Przestań śledzić
+ Is a button. Keep it as short as possible.
+ Przestań śledzić
+ Is a button. Keep it as short as possible.
- Follow
+ Is a button. Keep it as short as possible.
+
- Unmute
+ Is a button. Keep it as short as possible.
+
- Wycisz
+ Is a button. Keep it as short as possible.
+ Wycisz
- Unblock
+ Is a button. Keep it as short as possible.
+
- Block
+ Is a button. Keep it as short as possible.
+
+
+
+
+
SettingsPage
- Ustawienia
+ Ustawienia
@@ -287,10 +302,6 @@
-
-
-
-
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+
+
+
+
+
+
Toot
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 2fb00f3..8e5fc39 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -36,7 +36,7 @@
- Удалить
+ Удалить
@@ -63,18 +63,18 @@
CoverPage
- Новый
+ Новый
EmojiSelect
- Cмайликов
+ Cмайликов
- Нажмите, чтобы вставить
+ Нажмите, чтобы вставить
@@ -180,7 +180,7 @@
- Новый
+ Новый
@@ -198,58 +198,73 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Читают
+ Will show as: "35 Followers"
+ Читают
- Следующий
+ Will show as: "23 Following"
+ Следующий
- Статусы
+ Will show as: "115 Statuses"
+ Статусы
- Отписаться
+ Is a button. Keep it as short as possible.
+ Отписаться
+ Is a button. Keep it as short as possible.
- Следить
+ Is a button. Keep it as short as possible.
+ Следить
- Нет безгласный
+ Is a button. Keep it as short as possible.
+ Нет безгласный
- Безгласный
+ Is a button. Keep it as short as possible.
+ Безгласный
- Открыть
+ Is a button. Keep it as short as possible.
+ Открыть
- Блокировать
+ Is a button. Keep it as short as possible.
+ Блокировать
+
+
+
+
SettingsPage
- Настройки
+ Настройки
@@ -257,47 +272,43 @@
-
+ Загружать изображения
- Отключите эту опцию, если вы хотите сохранить подключение к данным
+ Отключите эту опцию, если вы хотите сохранить подключение к данным
-
+ Aккаунт
- Удалить учетную запись
+ Удалить учетную запись
- Добавить аккаунт
+ Добавить аккаунт
-
+ удалить учетную запись с устройства
- Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени
+ Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени
- Переведите
-
-
-
-
+ Переведите
- Зачет
+ Зачет
- Дизайн и разработка UI / UX
+ Дизайн и разработка UI / UX
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Используйте
+
+
+
+ чтобы помочь с переводом приложения на ваш язык.
+
Toot
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index c9f1e30..d0eb23a 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -36,7 +36,7 @@
- Обриши
+ Обриши
@@ -63,18 +63,18 @@
CoverPage
- Novi toot
+ Novi toot
EmojiSelect
- Емотикони
+ Емотикони
- Тапни за убацивање
+ Тапни за убацивање
@@ -180,7 +180,7 @@
- Novi toot
+ Novi toot
@@ -198,58 +198,73 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Пратиоци
+ Will show as: "35 Followers"
+ Пратиоци
- Пратите
+ Will show as: "23 Following"
+ Пратите
- Статуси
+ Will show as: "115 Statuses"
+ Статуси
- Одпрати
+ Is a button. Keep it as short as possible.
+ Одпрати
+ Is a button. Keep it as short as possible.
- Прати
+ Is a button. Keep it as short as possible.
+ Прати
- Укини утишање
+ Is a button. Keep it as short as possible.
+ Укини утишање
- Утишај
+ Is a button. Keep it as short as possible.
+ Утишај
- Одблокирати
+ Is a button. Keep it as short as possible.
+ Одблокирати
- Блокирати
+ Is a button. Keep it as short as possible.
+ Блокирати
+
+
+
+
SettingsPage
- Подешавања
+ Подешавања
@@ -257,47 +272,43 @@
-
+ Прикажи слике у објавама
- Искључите ову опцију уколико желите да уштедите на преносу података
+ Искључите ову опцију уколико желите да уштедите на преносу података
-
+ Hалог
- Уклони налог
+ Уклони налог
- Додај налог
+ Додај налог
-
+ Укините дозволе за кориштење и уклоните налог с телефона
- Дозволите овој апликацији да користи ваш Mastodon налог
+ Дозволите овој апликацији да користи ваш Mastodon налог
- Преведи
-
-
-
-
+ Преведи
- Спомен плоча
+ Спомен плоча
- интерфејс дизајн и развој
+ интерфејс дизајн и развој
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Користите
+
+
+
+ и помозите у преводу апликације на други језик.
+
Toot
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index dc0146c..ccfc0f8 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -36,7 +36,7 @@
- Radera
+ Radera
@@ -63,18 +63,18 @@
CoverPage
- Ny toot
+ Ny toot
EmojiSelect
- Emojis
+ Emojis
- Tryck för att infoga
+ Tryck för att infoga
@@ -180,7 +180,7 @@
- Ny toot
+ Ny toot
@@ -191,65 +191,80 @@
-
+ Bot
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
- Följare
+ Will show as: "35 Followers"
+ Följare
- Följer
+ Will show as: "23 Following"
+ Följer
- Statusar
+ Will show as: "115 Statuses"
+ Statusar
- Sluta följa
+ Is a button. Keep it as short as possible.
+ Sluta följa
+ Is a button. Keep it as short as possible.
- Följ
+ Is a button. Keep it as short as possible.
+ Följ
- Avtysta
+ Is a button. Keep it as short as possible.
+ Avtysta
- Tysta
+ Is a button. Keep it as short as possible.
+ Tysta
- Avblockera
+ Is a button. Keep it as short as possible.
+ Avblockera
- Blockera
+ Is a button. Keep it as short as possible.
+ Blockera
+
+
+
+
SettingsPage
- Inställningar
+ Inställningar
@@ -257,47 +272,43 @@
-
+ Ladda bilder i toots
- Inaktivera det här alternativet om du vill behålla din dataanslutning
+ Inaktivera det här alternativet om du vill behålla din dataanslutning
-
+ Konto
- Radera konto
+ Radera konto
- Lägg till konto
+ Lägg till konto
-
+ Avauktorisera denna app och radera ditt konto
- Godkänn denna app att använda ditt Mastodon-konto på dina vägnar
+ Godkänn denna app att använda ditt Mastodon-konto på dina vägnar
- Översätt
-
-
-
-
+ Översätt
- Erkännanden
+ Erkännanden
- UI/UX design och utveckling
+ UI/UX design och utveckling
@@ -305,7 +316,7 @@
- Använd Transifex för att hjälpa med app-översättningar till ditt språk
+
@@ -327,6 +338,15 @@
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Använd
+
+
+
+ för att hjälpa med app-översättningar till ditt språk.
+
Toot
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 15e9e78..b2c834b 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -198,52 +198,67 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
+ Will show as: "35 Followers"
关注者
+ Will show as: "23 Following"
关注中
+ Will show as: "115 Statuses"
状态
+ Is a button. Keep it as short as possible.
取消关注
+ Is a button. Keep it as short as possible.
+ Is a button. Keep it as short as possible.
关注
+ Is a button. Keep it as short as possible.
未静音
+ Is a button. Keep it as short as possible.
静音
+ Is a button. Keep it as short as possible.
解除封锁
+ Is a button. Keep it as short as possible.
封锁
在浏览器打开个人简介
+
+
+
+
SettingsPage
@@ -287,10 +302,6 @@
-
-
- 使用 <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> 以帮助翻译软件为你的语言.
-
信誉
@@ -327,6 +338,15 @@
添加 README 文件
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+
+
+
+
+
+
Toot
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 629a6de..81c2b3a 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -198,52 +198,67 @@
ProfilePage
+ If there's no good translation for "About", use "Details" (in details about profile).
About
+ Will show as: "35 Followers"
Followers
+ Will show as: "23 Following"
Following
+ Will show as: "115 Statuses"
Statuses
+ Is a button. Keep it as short as possible.
Unfollow
+ Is a button. Keep it as short as possible.
Requested
+ Is a button. Keep it as short as possible.
Follow
+ Is a button. Keep it as short as possible.
Unmute
+ Is a button. Keep it as short as possible.
Mute
+ Is a button. Keep it as short as possible.
Unblock
+ Is a button. Keep it as short as possible.
Block
Open in Browser
+
+
+ Mention
+
SettingsPage
@@ -287,10 +302,6 @@
Translate
-
-
- Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language.
-
Credits
@@ -327,6 +338,15 @@
Added README file
+
+
+ Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
+ Use
+
+
+
+ to help with app translation to your language.
+
Toot
From 6f9ed5a8467f3588aea6dce9851b92d3d6d87b87 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 16:20:54 +0200
Subject: [PATCH 25/70] remove WIP feature
---
qml/pages/components/ProfileHeader.qml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index b302072..20c93d9 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,7 @@ Item {
property string bg: ""
width: parent.width
- height: if (following === true || bot === true) {
+ height: if (bot === true) {
avatarImage.height + Theme.paddingLarge*2 + infoLbl.height + Theme.paddingLarge
} else avatarImage.height + Theme.paddingLarge*2
@@ -122,7 +122,7 @@ Item {
rightMargin: Theme.paddingLarge
}
- Rectangle {
+ /* Rectangle {
id: followingBg
visible: (following ? true : false)
radius: Theme.paddingSmall
@@ -138,7 +138,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
}
- }
+ } */
Rectangle {
id: botBg
From 70a75abb0c18bc6207877df46bcfed87c0e093b2 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Wed, 10 Jun 2020 16:44:10 +0200
Subject: [PATCH 26/70] Delete harbour-tooterb-fi.ts
---
translations/harbour-tooterb-fi.ts | 340 -----------------------------
1 file changed, 340 deletions(-)
delete mode 100644 translations/harbour-tooterb-fi.ts
diff --git a/translations/harbour-tooterb-fi.ts b/translations/harbour-tooterb-fi.ts
deleted file mode 100644
index 50a5f73..0000000
--- a/translations/harbour-tooterb-fi.ts
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
- API
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Conversation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ImageFullScreen
-
-
-
-
-
-
- ImageUploader
-
-
-
-
-
-
- LoginPage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MainPage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MiniStatus
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MyList
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Profile
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Settings
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Toot
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VisualContainer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From 22f7cd5f2104722ec907a3518e44a4cca8fb0b80 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 17:32:11 +0200
Subject: [PATCH 27/70] version 1.0.5
---
qml/cover/CoverPage.qml | 2 +-
qml/images/tooter-cover.svg | 71 ++++++++++++++-------------
qml/images/tooterb.svg | 38 --------------
rpm/harbour-tooterb.changes | 16 ++++++
rpm/harbour-tooterb.spec | 4 +-
rpm/harbour-tooterb.yaml | 4 +-
translations/harbour-tooterb-de.ts | 4 --
translations/harbour-tooterb-el.ts | 4 --
translations/harbour-tooterb-es.ts | 4 --
translations/harbour-tooterb-fr.ts | 4 --
translations/harbour-tooterb-it.ts | 17 +++----
translations/harbour-tooterb-nl.ts | 4 --
translations/harbour-tooterb-nl_BE.ts | 4 --
translations/harbour-tooterb-oc.ts | 4 --
translations/harbour-tooterb-pl.ts | 4 --
translations/harbour-tooterb-ru.ts | 4 --
translations/harbour-tooterb-sr.ts | 4 --
translations/harbour-tooterb-sv.ts | 4 --
translations/harbour-tooterb-zh_CN.ts | 4 --
translations/harbour-tooterb.ts | 4 --
20 files changed, 65 insertions(+), 139 deletions(-)
delete mode 100644 qml/images/tooterb.svg
diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml
index f5bc10c..bc5c38f 100644
--- a/qml/cover/CoverPage.qml
+++ b/qml/cover/CoverPage.qml
@@ -49,7 +49,7 @@ CoverBackground {
Image {
id: bg
- source: "../images/tooterb-cover.svg"
+ source: "../images/tooter-cover.svg"
horizontalAlignment: Image.AlignLeft
verticalAlignment: Image.AlignBottom
fillMode: Image.PreserveAspectFit
diff --git a/qml/images/tooter-cover.svg b/qml/images/tooter-cover.svg
index 62c8550..8af076f 100644
--- a/qml/images/tooter-cover.svg
+++ b/qml/images/tooter-cover.svg
@@ -1,33 +1,38 @@
-
-
-
-
+
+
+
diff --git a/qml/images/tooterb.svg b/qml/images/tooterb.svg
deleted file mode 100644
index 8af076f..0000000
--- a/qml/images/tooterb.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index a42114a..2a0b841 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,19 @@
+*Wed Jun 11 2020 molan 1.0.5-0
+- fixed: show search results without entering # before term
+- fixed: non-clickable user mentions in Toots
+- fixed: Copy link to clipboard in Conversations
+- Notifications Page: Reworked UI and context menus for notifications
+- Profile Page: Open fullscreen profile image
+- Profile Page: Show bot label
+- Profile Page: New expander for Profile details
+- Conversation Page: Possibility to hide and reopen Toot text field
+- Conversation Page: Improved display of uploaded images
+- Media Page: Adjust size of images to screen width or height
+- Media Page: Only automatically restart videos if shorter than 30 seconds
+- new Settings Page
+- bigger custom emojis in Toots
+- overall improvement of UI
+
*Mon May 25 2020 molan 1.0.4-3
- Show user profile background image (if available)
- New Sailfish 3-styled image/video viewer page (WIP)
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index 60fef1f..d5b840d 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -13,8 +13,8 @@ Name: harbour-tooterb
%{!?qtc_make:%define qtc_make make}
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
-Version: 1.0.4
-Release: 3
+Version: 1.0.5
+Release: 0
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index 5e38bbb..c1c753c 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
-Version: 1.0.4
-Release: 3
+Version: 1.0.5
+Release: 0
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
diff --git a/translations/harbour-tooterb-de.ts b/translations/harbour-tooterb-de.ts
index 05e7430..63930d6 100644
--- a/translations/harbour-tooterb-de.ts
+++ b/translations/harbour-tooterb-de.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Folgt dir
-
Bot
diff --git a/translations/harbour-tooterb-el.ts b/translations/harbour-tooterb-el.ts
index 22d4b69..a5e1201 100644
--- a/translations/harbour-tooterb-el.ts
+++ b/translations/harbour-tooterb-el.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooterb-es.ts b/translations/harbour-tooterb-es.ts
index af93f43..75ca954 100644
--- a/translations/harbour-tooterb-es.ts
+++ b/translations/harbour-tooterb-es.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-fr.ts b/translations/harbour-tooterb-fr.ts
index 3f560f4..10f6ce9 100644
--- a/translations/harbour-tooterb-fr.ts
+++ b/translations/harbour-tooterb-fr.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Vous suit
-
Bot
diff --git a/translations/harbour-tooterb-it.ts b/translations/harbour-tooterb-it.ts
index 0cfe0ae..167738b 100644
--- a/translations/harbour-tooterb-it.ts
+++ b/translations/harbour-tooterb-it.ts
@@ -224,11 +224,6 @@
ProfileHeader
-
-
-
- Ti segue
-
@@ -444,27 +439,27 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
- s
-
+
+
Annulla apprezzamento
-
+
Apprezzato
-
+
Menzionare
diff --git a/translations/harbour-tooterb-nl.ts b/translations/harbour-tooterb-nl.ts
index abf442d..6879a00 100644
--- a/translations/harbour-tooterb-nl.ts
+++ b/translations/harbour-tooterb-nl.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-nl_BE.ts b/translations/harbour-tooterb-nl_BE.ts
index d333bb8..712bc42 100644
--- a/translations/harbour-tooterb-nl_BE.ts
+++ b/translations/harbour-tooterb-nl_BE.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-oc.ts b/translations/harbour-tooterb-oc.ts
index 2748d68..4912f6c 100644
--- a/translations/harbour-tooterb-oc.ts
+++ b/translations/harbour-tooterb-oc.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-pl.ts b/translations/harbour-tooterb-pl.ts
index 5a17753..b2fbbb9 100644
--- a/translations/harbour-tooterb-pl.ts
+++ b/translations/harbour-tooterb-pl.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-ru.ts b/translations/harbour-tooterb-ru.ts
index 8e5fc39..50a075a 100644
--- a/translations/harbour-tooterb-ru.ts
+++ b/translations/harbour-tooterb-ru.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooterb-sr.ts b/translations/harbour-tooterb-sr.ts
index d0eb23a..471c224 100644
--- a/translations/harbour-tooterb-sr.ts
+++ b/translations/harbour-tooterb-sr.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooterb-sv.ts b/translations/harbour-tooterb-sv.ts
index ccfc0f8..394ddbf 100644
--- a/translations/harbour-tooterb-sv.ts
+++ b/translations/harbour-tooterb-sv.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooterb-zh_CN.ts b/translations/harbour-tooterb-zh_CN.ts
index b2c834b..fb93b97 100644
--- a/translations/harbour-tooterb-zh_CN.ts
+++ b/translations/harbour-tooterb-zh_CN.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooterb.ts b/translations/harbour-tooterb.ts
index 81c2b3a..2a521e4 100644
--- a/translations/harbour-tooterb.ts
+++ b/translations/harbour-tooterb.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Follows you
-
Bot
From d53d5c7af3febe5fce3b6f531eed41c2d14c8c0e Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 17:50:00 +0200
Subject: [PATCH 28/70] small fixes
---
qml/pages/ConversationPage.qml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 4218bea..a85b305 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -19,6 +19,7 @@ Page {
property string toot_url: ""
property string toot_uri: ""
property int tootMaxChar: 500;
+ property bool bot: false
property ListModel mdl
allowedOrientations: Orientation.All
@@ -102,7 +103,7 @@ Page {
PullDownMenu {
id: pulleyConversation
- visible: type === "reply" //&& toot_url !== ""
+ visible: type === "reply"
MenuItem {
text: qsTr("Copy Link to Clipboard")
onClicked: if (toot_url === "") {
From 4bb3f1ca6b8101c87be224dd597cd73b8df00e4a Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 17:58:47 +0200
Subject: [PATCH 29/70] Update harbour-tooterb-it.ts
---
translations/harbour-tooterb-it.ts | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/translations/harbour-tooterb-it.ts b/translations/harbour-tooterb-it.ts
index 167738b..6089ce2 100644
--- a/translations/harbour-tooterb-it.ts
+++ b/translations/harbour-tooterb-it.ts
@@ -28,47 +28,47 @@
ConversationPage
-
+
Copia link
-
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
Toot è stato pubblicato!
From 18dfe817ad3cee17e7716a3ac032914b23dc1536 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 18:02:57 +0200
Subject: [PATCH 30/70] version 1.0.5
---
harbour-tooterb.desktop | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/harbour-tooterb.desktop b/harbour-tooterb.desktop
index b0fdfb7..6511311 100644
--- a/harbour-tooterb.desktop
+++ b/harbour-tooterb.desktop
@@ -1,6 +1,6 @@
[Desktop Entry]
Type=Application
X-Nemo-Application-Type=silica-qt5
-Icon=harbour-tooter
-Exec=harbour-tooter
-Name=Tooter β
\ No newline at end of file
+Icon=harbour-tooterb
+Exec=harbour-tooterb
+Name=Tooter β
From 7be98df0fe430854fd06167ff4e1d1c1d95cf030 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Wed, 10 Jun 2020 18:47:57 +0200
Subject: [PATCH 31/70] Update Transifex link
Transifex Link for Tooter-B
---
qml/pages/SettingsPage.qml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index adb844d..4b05ea9 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -113,7 +113,7 @@ Page {
LinkedLabel {
id: translateLbl
//: Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
- text: qsTr("Use")+" "+"Transifex"+" "+qsTr("to help with app translation to your language.")
+ text: qsTr("Use")+" "+"Transifex"+" "+qsTr("to help with app translation to your language.")
textFormat: Text.StyledText
color: Theme.highlightColor
linkColor: Theme.primaryColor
From 7859ed948d4b24cf67668e04ac5bf43588d2a51e Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Wed, 10 Jun 2020 18:53:00 +0200
Subject: [PATCH 32/70] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 658d58c..2134e03 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Tooter [Fork]
+# Tooter β [Fork]
## About
Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
@@ -6,7 +6,7 @@ Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
This fork is being used to further develop and maintain the Tooter app by dysko ([harbour-tooter](https://github.com/dysk0/harbour-tooter)). The development branch *upstream* is being used for merge pull requests to the original project.
* Releases by dysko can be found on the Jolla store and on [OpenRepos.net](https://openrepos.net/content/dysko/tooter)
-* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v-fork)
+* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v)
## Build
Clone / download this repository and import it in your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
From e9c1c3814185c11a4e2e73db3df90284874624da Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 11 Jun 2020 14:11:39 +0200
Subject: [PATCH 33/70] fix contextMnu
---
qml/harbour-tooter.qml | 31 ++++-----
qml/pages/ConversationPage.qml | 42 ++++++------
qml/pages/LoginPage.qml | 82 ++++++++++++------------
qml/pages/components/InfoBanner.qml | 4 +-
qml/pages/components/MediaFullScreen.qml | 2 +-
qml/pages/components/ProfileHeader.qml | 2 +-
qml/pages/components/ProfileImage.qml | 2 +-
qml/pages/components/VisualContainer.qml | 18 +++---
8 files changed, 92 insertions(+), 91 deletions(-)
diff --git a/qml/harbour-tooter.qml b/qml/harbour-tooter.qml
index b0f9abd..b50b096 100644
--- a/qml/harbour-tooter.qml
+++ b/qml/harbour-tooter.qml
@@ -35,8 +35,8 @@ import "./lib/API.js" as Logic
ApplicationWindow {
id: appWindow
- cover: Qt.resolvedUrl("cover/CoverPage.qml")
allowedOrientations: defaultAllowedOrientations
+ cover: Qt.resolvedUrl("cover/CoverPage.qml")
Component.onCompleted: {
var obj = {}
Logic.mediator.installTo(obj)
@@ -44,26 +44,26 @@ ApplicationWindow {
console.log('confLoaded');
//console.log(JSON.stringify(Logic.conf))
if (!Logic.conf['notificationLastID'])
- Logic.conf['notificationLastID'] = 0
+ Logic.conf['notificationLastID'] = 0
if (Logic.conf['instance']) {
- Logic.api = Logic.mastodonAPI({
- "instance": Logic.conf['instance'],
- "api_user_token": ""
- })
+ Logic.api = Logic.mastodonAPI({
+ "instance": Logic.conf['instance'],
+ "api_user_token": ""
+ })
}
if (Logic.conf['login']) {
- //Logic.conf['notificationLastID'] = 0
- Logic.api.setConfig("api_user_token", Logic.conf['api_user_token'])
- //accounts/verify_credentials
- Logic.api.get('instance', [], function(data) {
- console.log(JSON.stringify(data))
- pageStack.push(Qt.resolvedUrl("./pages/MainPage.qml"), {})
- })
- //pageStack.push(Qt.resolvedUrl("./pages/Conversation.qml"), {})
+ //Logic.conf['notificationLastID'] = 0
+ Logic.api.setConfig("api_user_token", Logic.conf['api_user_token'])
+ //accounts/verify_credentials
+ Logic.api.get('instance', [], function(data) {
+ console.log(JSON.stringify(data))
+ pageStack.push(Qt.resolvedUrl("./pages/MainPage.qml"), {})
+ })
+ //pageStack.push(Qt.resolvedUrl("./pages/Conversation.qml"), {})
} else {
- pageStack.push(Qt.resolvedUrl("./pages/LoginPage.qml"), {})
+ pageStack.push(Qt.resolvedUrl("./pages/LoginPage.qml"), {})
}
})
Logic.init()
@@ -73,6 +73,7 @@ ApplicationWindow {
//Logic.conf.notificationLastID = 0;
Logic.saveData()
}
+
Connections {
target: Dbus
onViewtoot: {
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index a85b305..9ce3a3c 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -47,6 +47,27 @@ Page {
}
}
+ PullDownMenu {
+ id: pulleyConversation
+ visible: type === "reply"
+ MenuItem {
+ text: qsTr("Copy Link to Clipboard")
+ onClicked: if (toot_url === "") {
+
+ var test = toot_uri.split("/")
+ console.log(toot_uri)
+ console.log(JSON.stringify(test))
+ console.log(JSON.stringify(test.length))
+ if (test.length === 8 && (test[7] === "activity")) {
+ var urialt = toot_uri.replace("activity", "")
+ Clipboard.text = urialt
+ }
+ else Clipboard.text = toot_uri
+
+ } else onClicked: Clipboard.text = toot_url
+ }
+ }
+
ListModel {
id: mediaModel
onCountChanged: {
@@ -100,27 +121,6 @@ Page {
}
}
}
-
- PullDownMenu {
- id: pulleyConversation
- visible: type === "reply"
- MenuItem {
- text: qsTr("Copy Link to Clipboard")
- onClicked: if (toot_url === "") {
-
- var test = toot_uri.split("/")
- console.log(toot_uri)
- console.log(JSON.stringify(test))
- console.log(JSON.stringify(test.length))
- if (test.length === 8 && (test[7] === "activity")) {
- var urialt = toot_uri.replace("activity", "")
- Clipboard.text = urialt
- }
- else Clipboard.text = toot_uri
-
- } else onClicked: Clipboard.text = toot_url
- }
- }
}
Rectangle {
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index b35ad7a..3a2cb10 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -39,37 +39,37 @@ Page {
EnterKey.onClicked: {
Logic.api = Logic.mastodonAPI({ instance: instance.text, api_user_token: "" });
Logic.api.registerApplication("Tooter",
- 'http://localhost/harbour-tooter', // redirect uri, we will need this later on
- ["read", "write", "follow"], //scopes
- "http://grave-design.com/harbour-tooter", //website on the login screen
- function(data) {
+ 'http://localhost/harbour-tooter', // redirect uri, we will need this later on
+ ["read", "write", "follow"], //scopes
+ "http://grave-design.com/harbour-tooter", //website on the login screen
+ function(data) {
- console.log(data)
- var conf = JSON.parse(data)
- conf.instance = instance.text;
- conf.login = false;
+ console.log(data)
+ var conf = JSON.parse(data)
+ conf.instance = instance.text;
+ conf.login = false;
- /*conf['login'] = false;
+ /*conf['login'] = false;
conf['mastodon_client_id'] = data['mastodon_client_id'];
conf['mastodon_client_secret'] = data['mastodon_client_secret'];
conf['mastodon_client_redirect_uri'] = data['mastodon_client_redirect_uri'];
delete Logic.conf;*/
- Logic.conf = conf;
- console.log(JSON.stringify(conf))
- console.log(JSON.stringify(Logic.conf))
- // we got our application
+ Logic.conf = conf;
+ console.log(JSON.stringify(conf))
+ console.log(JSON.stringify(Logic.conf))
+ // we got our application
- // our user to it!
- var url = Logic.api.generateAuthLink(Logic.conf["client_id"],
- Logic.conf["redirect_uri"],
- "code", // oauth method
- ["read", "write", "follow"] //scopes
- );
- console.log(url)
- webView.url = url
- webView.visible = true
- }
- );
+ // our user to it!
+ var url = Logic.api.generateAuthLink(Logic.conf["client_id"],
+ Logic.conf["redirect_uri"],
+ "code", // oauth method
+ ["read", "write", "follow"] //scopes
+ );
+ console.log(url)
+ webView.url = url
+ webView.visible = true
+ }
+ );
}
}
Label {
@@ -109,7 +109,7 @@ Page {
if (
(url+"").substr(0, 37) === 'http://localhost/harbour-tooter?code=' ||
(url+"").substr(0, 38) === 'https://localhost/harbour-tooter?code='
- ) {
+ ) {
visible = false;
var vars = {};
@@ -120,22 +120,22 @@ Page {
console.log(authCode)
Logic.api.getAccessTokenFromAuthCode(
- Logic.conf["client_id"],
- Logic.conf["client_secret"],
- Logic.conf["redirect_uri"],
- authCode,
- function(data) {
- // AAAND DATA CONTAINS OUR TOKEN!
- console.log(data)
- data = JSON.parse(data)
- console.log(JSON.stringify(data))
- console.log(JSON.stringify(data.access_token))
- Logic.conf["api_user_token"] = data.access_token
- Logic.conf["login"] = true;
- Logic.api.setConfig("api_user_token", Logic.conf["api_user_token"])
- pageStack.replace(Qt.resolvedUrl("MainPage.qml"), {})
- }
- )
+ Logic.conf["client_id"],
+ Logic.conf["client_secret"],
+ Logic.conf["redirect_uri"],
+ authCode,
+ function(data) {
+ // AAAND DATA CONTAINS OUR TOKEN!
+ console.log(data)
+ data = JSON.parse(data)
+ console.log(JSON.stringify(data))
+ console.log(JSON.stringify(data.access_token))
+ Logic.conf["api_user_token"] = data.access_token
+ Logic.conf["login"] = true;
+ Logic.api.setConfig("api_user_token", Logic.conf["api_user_token"])
+ pageStack.replace(Qt.resolvedUrl("MainPage.qml"), {})
+ }
+ )
}
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index 8d33b9a..06601aa 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -3,7 +3,7 @@ import Sailfish.Silica 1.0
DockedPanel {
- id: root
+ id: root
dock: Dock.Top
width: parent.width
height: content.height
@@ -28,7 +28,7 @@ DockedPanel {
right: parent.right
rightMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
- }
+ }
}
MouseArea {
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index 324fa76..38ec83a 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -27,7 +27,7 @@ FullscreenContentPage {
}
Flickable {
- id: videoFlickable
+ id: videoFlickable
visible: false
clip: true
contentWidth: imageContainer.width
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index 20c93d9..de9c0af 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -122,7 +122,7 @@ Item {
rightMargin: Theme.paddingLarge
}
- /* Rectangle {
+ /* Rectangle {
id: followingBg
visible: (following ? true : false)
radius: Theme.paddingSmall
diff --git a/qml/pages/components/ProfileImage.qml b/qml/pages/components/ProfileImage.qml
index 1e000b0..5c49285 100644
--- a/qml/pages/components/ProfileImage.qml
+++ b/qml/pages/components/ProfileImage.qml
@@ -4,7 +4,7 @@ import Sailfish.Silica 1.0
FullscreenContentPage {
id: profileImage
- property string image: ""
+ property string image: ""
allowedOrientations: Orientation.All
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 2bb06a0..7635dc9 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -23,8 +23,8 @@ BackgroundItem {
height: parent.height
opacity: 0.3
gradient: Gradient {
- GradientStop { position: -1.5; color: "transparent" }
- GradientStop { position: 0.6; color: Theme.highlightBackgroundColor }
+ GradientStop { position: -1.5; color: "transparent" }
+ GradientStop { position: 0.6; color: Theme.highlightBackgroundColor }
}
}
@@ -37,8 +37,8 @@ BackgroundItem {
height: parent.height
opacity: 0.5
gradient: Gradient {
- GradientStop { position: -0.5; color: "transparent" }
- GradientStop { position: 0.4; color: Theme.highlightDimmerColor }
+ GradientStop { position: -0.5; color: "transparent" }
+ GradientStop { position: 0.4; color: Theme.highlightDimmerColor }
}
}
@@ -71,8 +71,8 @@ BackgroundItem {
onStatusChanged: {
if (avatar.status === Image.Error)
source = "../../images/icon-m-profile.svg?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
+ ? Theme.highlightColor
+ : Theme.primaryColor)
}
MouseArea {
@@ -165,8 +165,8 @@ BackgroundItem {
textFormat: Text.RichText
font.pixelSize: Theme.fontSizeSmall
linkColor: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
- Theme.secondaryHighlightColor
- } else Theme.highlightColor
+ Theme.secondaryHighlightColor
+ } else Theme.highlightColor
wrapMode: Text.Wrap
color: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
(pressed ? Theme.secondaryHighlightColor : (!highlight ? Theme.secondaryColor : Theme.secondaryHighlightColor))
@@ -304,7 +304,7 @@ BackgroundItem {
MenuItem {
id: mnuFavourite
- visible: model.type !== "follow" || model.status_visibility !== "direct"
+ visible: model.type !== "follow"
text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
onClicked: {
var status = typeof model.favourited !== "undefined" && model.favourited
From 9febf8409237478ce3382b0af3bb3bd3e150fc1c Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 11 Jun 2020 14:22:09 +0200
Subject: [PATCH 34/70] pulleyMnu fix
---
qml/pages/ConversationPage.qml | 42 +++++++++++++++++-----------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 9ce3a3c..a85b305 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -47,27 +47,6 @@ Page {
}
}
- PullDownMenu {
- id: pulleyConversation
- visible: type === "reply"
- MenuItem {
- text: qsTr("Copy Link to Clipboard")
- onClicked: if (toot_url === "") {
-
- var test = toot_uri.split("/")
- console.log(toot_uri)
- console.log(JSON.stringify(test))
- console.log(JSON.stringify(test.length))
- if (test.length === 8 && (test[7] === "activity")) {
- var urialt = toot_uri.replace("activity", "")
- Clipboard.text = urialt
- }
- else Clipboard.text = toot_uri
-
- } else onClicked: Clipboard.text = toot_url
- }
- }
-
ListModel {
id: mediaModel
onCountChanged: {
@@ -121,6 +100,27 @@ Page {
}
}
}
+
+ PullDownMenu {
+ id: pulleyConversation
+ visible: type === "reply"
+ MenuItem {
+ text: qsTr("Copy Link to Clipboard")
+ onClicked: if (toot_url === "") {
+
+ var test = toot_uri.split("/")
+ console.log(toot_uri)
+ console.log(JSON.stringify(test))
+ console.log(JSON.stringify(test.length))
+ if (test.length === 8 && (test[7] === "activity")) {
+ var urialt = toot_uri.replace("activity", "")
+ Clipboard.text = urialt
+ }
+ else Clipboard.text = toot_uri
+
+ } else onClicked: Clipboard.text = toot_url
+ }
+ }
}
Rectangle {
From 520bc9962b6c7b3393ea913d5a94dbfd0cd51ee9 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 11 Jun 2020 14:46:42 +0200
Subject: [PATCH 35/70] update translations
---
translations/harbour-tooter-de.ts | 4 ----
translations/harbour-tooter-el.ts | 4 ----
translations/harbour-tooter-es.ts | 4 ----
translations/harbour-tooter-fr.ts | 4 ----
translations/harbour-tooter-it.ts | 23 +++++++++--------------
translations/harbour-tooter-nl.ts | 4 ----
translations/harbour-tooter-nl_BE.ts | 4 ----
translations/harbour-tooter-oc.ts | 4 ----
translations/harbour-tooter-pl.ts | 4 ----
translations/harbour-tooter-ru.ts | 4 ----
translations/harbour-tooter-sr.ts | 4 ----
translations/harbour-tooter-sv.ts | 4 ----
translations/harbour-tooter-zh_CN.ts | 4 ----
translations/harbour-tooter.ts | 4 ----
14 files changed, 9 insertions(+), 66 deletions(-)
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 05e7430..63930d6 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Folgt dir
-
Bot
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 2a21994..ea65a83 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index af93f43..75ca954 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 3f560f4..10f6ce9 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Vous suit
-
Bot
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 8cb29ba..7ac849a 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -28,47 +28,47 @@
ConversationPage
-
+
Copia link
-
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
Toot è stato pubblicato!
@@ -224,11 +224,6 @@
ProfileHeader
-
-
-
- Ti segue
-
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index abf442d..6879a00 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index d333bb8..712bc42 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 2748d68..4912f6c 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 5a17753..b2fbbb9 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 8e5fc39..50a075a 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index d0eb23a..471c224 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index ccfc0f8..394ddbf 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
Bot
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index b2c834b..fb93b97 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
-
-
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 81c2b3a..2a521e4 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -185,10 +185,6 @@
ProfileHeader
-
-
- Follows you
-
Bot
From 12c0108f94d95de5b00bd23f0ecff83403f9ebc9 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 11 Jun 2020 15:02:04 +0200
Subject: [PATCH 36/70] Update harbour-tooterb-de.ts
---
translations/harbour-tooterb-de.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/translations/harbour-tooterb-de.ts b/translations/harbour-tooterb-de.ts
index 63930d6..d3a6af8 100644
--- a/translations/harbour-tooterb-de.ts
+++ b/translations/harbour-tooterb-de.ts
@@ -230,7 +230,7 @@
Is a button. Keep it as short as possible.
- Nicht stumm schalten
+ Nicht stumm
@@ -240,7 +240,7 @@
Is a button. Keep it as short as possible.
- Nicht blockieren
+ Zulassen
From 694d6f753af75d527793b918a1b8ae40d39e609d Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 11 Jun 2020 15:34:19 +0200
Subject: [PATCH 37/70] version 1.0.5
---
rpm/harbour-tooterb.changes | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index 2a0b841..9c24e73 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,4 +1,4 @@
-*Wed Jun 11 2020 molan 1.0.5-0
+*Thu Jun 11 2020 molan 1.0.5-0
- fixed: show search results without entering # before term
- fixed: non-clickable user mentions in Toots
- fixed: Copy link to clipboard in Conversations
From 32f93b8e263d9e3d4d7015298bb6d9ee38ee2222 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 12 Jun 2020 16:56:10 +0200
Subject: [PATCH 38/70] fix missing images in notifications
---
qml/pages/components/VisualContainer.qml | 5 +++--
translations/harbour-tooter-it.ts | 10 +++++-----
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 7635dc9..dfcaf35 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -210,7 +210,6 @@ BackgroundItem {
}
Rectangle {
- radius: 2
color: Theme.highlightDimmerColor
visible: status_spoiler_text.length > 0
anchors.fill: parent
@@ -245,7 +244,9 @@ BackgroundItem {
MediaBlock {
id: media
- visible: myList.type !== "notifications" && ( model.type !== "favourite" || model.type !== "reblog" )
+ visible: if (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) {
+ false
+ } else true
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: Theme.iconSizeExtraLarge * 2
anchors {
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 7ac849a..6089ce2 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -439,27 +439,27 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
Menzionare
From e4169b3b1b878ba6b3798b59f022cac7bc074936 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 12 Jun 2020 17:09:05 +0200
Subject: [PATCH 39/70] fix missing images in mentions
---
qml/pages/components/VisualContainer.qml | 4 +++-
rpm/harbour-tooterb.changes | 3 +++
rpm/harbour-tooterb.spec | 2 +-
rpm/harbour-tooterb.yaml | 2 +-
translations/harbour-tooterb-it.ts | 10 +++++-----
5 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index a3578d9..3778955 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -246,7 +246,9 @@ BackgroundItem {
MediaBlock {
id: media
- visible: myList.type !== "notifications" && ( model.type !== "favourite" || model.type !== "reblog" )
+ visible: if (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) {
+ false
+ } else true
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: Theme.iconSizeExtraLarge * 2
anchors {
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index 9c24e73..c1868e3 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,6 @@
+*Fri Jun 12 2020 molan 1.0.5-1
+- [hotfix] fix missing images in mentions on Notification page
+
*Thu Jun 11 2020 molan 1.0.5-0
- fixed: show search results without entering # before term
- fixed: non-clickable user mentions in Toots
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index d5b840d..8f1508a 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -14,7 +14,7 @@ Name: harbour-tooterb
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
Version: 1.0.5
-Release: 0
+Release: 1
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index c1c753c..2bfca44 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
Version: 1.0.5
-Release: 0
+Release: 1
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
diff --git a/translations/harbour-tooterb-it.ts b/translations/harbour-tooterb-it.ts
index 6089ce2..d73d685 100644
--- a/translations/harbour-tooterb-it.ts
+++ b/translations/harbour-tooterb-it.ts
@@ -439,27 +439,27 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
Menzionare
From ddf0d4d06571d1a6e214a6359bd6d6554d7caf55 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 15 Jun 2020 10:42:10 +0200
Subject: [PATCH 40/70] new user profile labels
---
harbour-tooter.pro | 3 +-
qml/lib/Worker.js | 13 +-
qml/pages/ConversationPage.qml | 10 +-
qml/pages/MainPage.qml | 3 +-
qml/pages/SettingsPage.qml | 8 +-
qml/pages/components/ItemUser.qml | 13 +-
qml/pages/components/MyList.qml | 5 +-
qml/pages/components/ProfileHeader.qml | 27 +++-
qml/pages/components/Toot.qml | 187 -----------------------
qml/pages/components/VisualContainer.qml | 16 +-
10 files changed, 57 insertions(+), 228 deletions(-)
delete mode 100644 qml/pages/components/Toot.qml
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index a5a786b..577a632 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -71,7 +71,6 @@ DISTFILES += qml/harbour-tooter.qml \
qml/cover/CoverPage.qml \
qml/pages/MainPage.qml \
qml/pages/LoginPage.qml \
- qml/pages/components/Toot.qml \
qml/pages/Browser.qml \
qml/lib/API.js \
qml/images/icon-s-following \
@@ -93,7 +92,7 @@ SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
# to disable building translations every time, comment out the
# following CONFIG line
-CONFIG += sailfishapp_i18n
+# CONFIG += sailfishapp_i18n
TRANSLATIONS += translations/harbour-tooter.ts \
translations/harbour-tooter-de.ts \
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 0317523..91d4252 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -132,7 +132,6 @@ 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"]
@@ -152,7 +151,7 @@ function parseNotification(data){
switch (item['type']){
case "mention":
if (!data.status) {
- break;
+ break;
}
item = parseToot(data.status)
@@ -257,10 +256,10 @@ function parseToot (data){
item = parseAccounts(item, "", data["account"])
}
item['content'] = data['content']
- .replaceAll('', '')
- .replaceAll('', '')
- .replaceAll('', '')
- .replaceAll('class=""', '');
+ .replaceAll('', '')
+ .replaceAll('', '')
+ .replaceAll('', '')
+ .replaceAll('class=""', '');
item['attachments'] = [];
@@ -274,7 +273,7 @@ function parseToot (data){
id: attachments['id'],
type: attachments['type'],
url: attachments['remote_url'] && typeof attachments['remote_url'] == "string" ? attachments['remote_url'] : attachments['url'] ,
- preview_url: loadImages ? attachments['preview_url'] : ''
+ preview_url: loadImages ? attachments['preview_url'] : ''
}
item['attachments'].push(tmp)
}
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index a85b305..18a09ca 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -8,18 +8,18 @@ import "./components/"
Page {
id: conversationPage
- property string headerTitle: ""
property string type
- property alias title: header.title
- property alias description: header.description
- property alias avatar: header.image
+ property string description: ""
+ property string headerTitle: ""
property string suggestedUser: ""
property ListModel suggestedModel
property string toot_id: ""
property string toot_url: ""
property string toot_uri: ""
property int tootMaxChar: 500;
- property bool bot: false
+ property bool bot: false //otherwise ReferenceError ProfileHeader.qml
+ property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
+ property bool locked: false //otherwise ReferenceError ProfileHeader.qml
property ListModel mdl
allowedOrientations: Orientation.All
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 2ff089f..7ece6d2 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -179,6 +179,7 @@ Page {
})
}
}
+
Component.onCompleted: {
view2.type = "accounts/search"
view2.params = []
@@ -256,7 +257,7 @@ Page {
}
}
- function onLinkActivated(href){
+ function onLinkActivated(href) {
var test = href.split("/")
console.log(href)
console.log(JSON.stringify(test))
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index adb844d..c2caa47 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -31,7 +31,6 @@ Page {
text: qsTr("Load Images in Toots")
description: qsTr("Disable this option if you want to preserve your data connection")
icon.source: "image://theme/icon-m-image"
- enabled: true
checked: typeof Logic.conf['loadImages'] !== "undefined" && Logic.conf['loadImages']
onClicked: {
Logic.conf['loadImages'] = checked
@@ -97,11 +96,8 @@ Page {
font.pixelSize: Theme.fontSizeExtraSmall
wrapMode: Text.Wrap
color: Theme.highlightColor
- anchors {
- left: parent.left
- right: parent.right
- rightMargin: Theme.paddingLarge + icnRemoveAccount
- }
+ width: parent.width - Theme.paddingMedium
+ anchors.left: parent.left
}
}
}
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index d1df686..6f6b4cd 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -51,12 +51,16 @@ BackgroundItem {
anchors.leftMargin: Theme.paddingLarge
anchors.verticalCenter: parent.verticalCenter
height: account_acct.height + display_name.height
+
Label {
id: display_name
- text: model.account_display_name+" "
- color: !pressed ? Theme.primaryColor : Theme.highlightColor
+ text: if (model.account_display_name + " ") {
+ model.account_username.split("@")[0] + " "
+ } else model.account_display_name
+ color: !pressed ? Theme.primaryColor : Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
}
+
Label {
id: account_acct
text: "@"+model.account_acct
@@ -65,12 +69,13 @@ BackgroundItem {
font.pixelSize: Theme.fontSizeExtraSmall
}
}
- onClicked: openUser({
+
+ onClicked: openUser( {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
"profileBackground": model.account_header
- })
+ } )
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index ce8f5e6..8885525 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -70,7 +70,7 @@ SilicaListView {
text: qsTr("New Toot")
onClicked: {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
- //headerTitle: "New Toot",
+ headerTitle: qsTr("New Toot"),
type: "new"
})
}
@@ -84,8 +84,7 @@ SilicaListView {
}
}
- delegate: VisualContainer {
- } //Toot {}
+ delegate: VisualContainer {}
add: Transition {
NumberAnimation { property: "opacity"; from: 0; to: 1.0; duration: 800 }
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index 0c8ab17..d68d3ed 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,7 @@ Item {
property string bg: ""
width: parent.width
- height: if (bot === true) {
+ height: if (bot === true || locked === true || followed_by === true) {
avatarImage.height + Theme.paddingLarge*2 + infoLbl.height + Theme.paddingLarge
} else avatarImage.height + Theme.paddingLarge*2
@@ -122,9 +122,9 @@ Item {
rightMargin: Theme.paddingLarge
}
- /* Rectangle {
+ Rectangle {
id: followingBg
- visible: (following ? true : false)
+ visible: (followed_by ? true : false)
radius: Theme.paddingSmall
color: Theme.secondaryHighlightColor
width: followingLbl.width + 2*Theme.paddingLarge
@@ -138,7 +138,26 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
}
- } */
+ }
+
+ Rectangle {
+ id: lockedBg
+ visible: (locked ? true : false)
+ radius: Theme.paddingSmall
+ color: Theme.secondaryHighlightColor
+ width: lockedImg.width + 2*Theme.paddingLarge
+ height: parent.height
+
+ HighlightImage {
+ id: lockedImg
+ source: "image://theme/icon-s-secure?"
+ width: Theme.fontSizeExtraSmall
+ height: width
+ color: Theme.primaryColor
+ anchors.horizontalCenter: lockedBg.horizontalCenter
+ anchors.verticalCenter: lockedBg.verticalCenter
+ }
+ }
Rectangle {
id: botBg
diff --git a/qml/pages/components/Toot.qml b/qml/pages/components/Toot.qml
deleted file mode 100644
index 190cd82..0000000
--- a/qml/pages/components/Toot.qml
+++ /dev/null
@@ -1,187 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import QtGraphicalEffects 1.0
-
-
-BackgroundItem {
- id: delegate
-
- signal send (string notice)
- signal navigateTo(string link)
-
- width: parent.width
- height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (type.length ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
-
- Image {
- id: iconRT
- y: Theme.paddingLarge
- anchors.right: avatar.right
- visible: type.length
- width: Theme.iconSizeExtraSmall
- height: width
- source: "../../images/boosted.svg"
- }
-
- Label {
- id: lblRtByName
- visible: type.length
- anchors.left: lblName.left
- anchors.bottom: iconRT.bottom
- font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.secondaryColor
- text: {
- var action;
- switch(type){
- case "reblog":
- action = qsTr('boosted');
- break;
- case "favourite":
- action = qsTr('favourited');
- break;
- case "follow":
- action = qsTr('followed you');
- break;
- default:
- action = type;
- }
- return '@' + retweetScreenName + ' ' + action
- }
- }
-
- Image {
- id: avatar
- x: Theme.horizontalPageMargin
- y: Theme.paddingLarge + (type.length ? iconRT.height+Theme.paddingMedium : 0)
- asynchronous: true
- width: Theme.iconSizeMedium
- height: width
- smooth: true
- source: account_avatar
- visible: true
- MouseArea {
- anchors.fill: parent
- onClicked: {
- pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
- "display_name": account_display_name,
- "username": account_username,
- "profileImage": account_avatar
- })
- }
- }
- }
-
- Label {
- id: lblName
- text: account_display_name
- font.weight: Font.Bold
- font.pixelSize: Theme.fontSizeSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
- anchors {
- top: avatar.top
- topMargin: 0
- left: avatar.right
- leftMargin: Theme.paddingMedium
- }
- }
-
- Image {
- id: iconLocked
- visible: account_locked
- y: Theme.paddingLarge
- opacity: 0.8
- source: "image://theme/icon-s-secure?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
- width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
- height: width
- anchors {
- left: lblName.right
- leftMargin: Theme.paddingSmall
- verticalCenter: lblName.verticalCenter
- }
- }
-
- Label {
- id: lblScreenName
- truncationMode: TruncationMode.Fade
- text: '@'+account_username
- font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
- anchors {
- left: iconLocked.right
- right: lblDate.left
- leftMargin: Theme.paddingMedium
- baseline: lblName.baseline
- }
- }
-
- Label {
- id: lblDate
- function timestamp() {
- var txt = Format.formatDate(created_at, Formatter.Timepoint)
- var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
- return (elapsed ? elapsed : txt )
- }
- text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
- font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
- horizontalAlignment: Text.AlignRight
- anchors {
- right: parent.right
- baseline: lblName.baseline
- rightMargin: Theme.paddingLarge
- }
- }
-
- Text {
- id: lblText
- height: content.length ? paintedHeight : 0
- onLinkActivated: {
- console.log(link)
- if (link[0] === "@") {
- pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
- "name": "",
- "username": link.substring(1),
- "profileImage": ""
- })
- } else if (link[0] === "#") {
- pageStack.pop(pageStack.find(function(page) {
- var check = page.isFirstPage === true;
- if (check)
- page.onLinkActivated(link)
- return check;
- }));
- send(link)
- } else {
- Qt.openUrlExternally(link);
- }
- }
- text: content
- textFormat: Text.RichText
- font.pixelSize: Theme.fontSizeSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
- linkColor : Theme.highlightColor
- wrapMode: Text.Wrap
- maximumLineCount: 6
- anchors {
- left: lblName.left
- right: parent.right
- top: lblScreenName.bottom
- topMargin: Theme.paddingSmall
- rightMargin: Theme.paddingLarge
- }
- }
-
- onClicked: {
- pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
- headerTitle: "Conversation",
- toot_id: id,
- toot_url: status_url,
- //title: account_display_name,
- description: '@'+account_acc,
- avatar: account_avatar,
- type: "reply"
- })
- }
-
-}
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index dfcaf35..6f9b695 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -84,7 +84,7 @@ BackgroundItem {
"user_id": model.account_id,
"profileImage": model.account_avatar,
"profileBackground": model.account_header
- })
+ } )
}
}
@@ -371,17 +371,15 @@ BackgroundItem {
}
onClicked: {
- var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
+ var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
m.append(mdl.get(index))
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
- headerTitle: "Conversation",
- toot_id: status_id,
- toot_url: status_url,
- toot_uri: status_uri,
- title: account_display_name,
- description: '@'+account_acct,
- avatar: account_avatar,
+ headerTitle: qsTr("Conversation"),
+ "toot_id": status_id,
+ "toot_url": status_url,
+ "toot_uri": status_uri,
+ "description": '@'+account_acct,
mdl: m,
type: "reply"
})
From 0446eda9d0246073902d59a2c5ee3bab7dd1ccf4 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 15 Jun 2020 13:29:01 +0200
Subject: [PATCH 41/70] hide/show reply element
---
qml/pages/ConversationPage.qml | 23 +++++++++++++++++------
qml/pages/ProfilePage.qml | 2 +-
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 18a09ca..4f706b5 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -104,10 +104,10 @@ Page {
PullDownMenu {
id: pulleyConversation
visible: type === "reply"
+
MenuItem {
text: qsTr("Copy Link to Clipboard")
onClicked: if (toot_url === "") {
-
var test = toot_uri.split("/")
console.log(toot_uri)
console.log(JSON.stringify(test))
@@ -117,9 +117,17 @@ Page {
Clipboard.text = urialt
}
else Clipboard.text = toot_uri
-
- } else onClicked: Clipboard.text = toot_url
+ } else Clipboard.text = toot_url
}
+
+ MenuItem {
+ text: !panel.open ? qsTr("Reply") : qsTr("Hide Reply")
+ visible: type == "reply"
+ onClicked: if (!panel.open) {
+ panel.open = true
+ } else panel.open = false
+ }
+
}
}
@@ -177,8 +185,11 @@ Page {
+ btnContentWarning.height + Theme.paddingMedium
+ (warningContent.visible ? warningContent.height : 0)
dock: Dock.Bottom
- open: true
- animationDuration: 200
+ open: if (type == "new") {
+ true
+ } else false
+
+ animationDuration: 300
Rectangle {
width: parent.width
@@ -520,7 +531,7 @@ Page {
BackgroundItem {
id: hiddenPanel
visible: !panel.open
- height: Theme.paddingLarge * 0.5
+ height: Theme.paddingLarge * 0.7
width: parent.width
opacity: enabled ? 0.6 : 0.0
Behavior on opacity { FadeAnimator { duration: 400 } }
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index e5ce206..37e0350 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -301,7 +301,7 @@ Page {
Button {
id: btnMention
preferredWidth: Theme.buttonWidthSmall
- text: "Mention"
+ text: qsTr("Mention")
onClicked: {
pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
headerTitle: qsTr("Mention"),
From 674e96754be10e2fc5cc8e155878c47b8a05d02a Mon Sep 17 00:00:00 2001
From: molan-git
Date: Tue, 16 Jun 2020 16:09:28 +0200
Subject: [PATCH 42/70] fix user profile crash
- 1st commit for fixing app crashes
---
...icon-s-following.svg => icon-s-follow.svg} | 0
qml/lib/API.js | 4 +-
qml/lib/Worker.js | 128 +++++++++++-------
qml/pages/ConversationPage.qml | 16 ++-
qml/pages/MainPage.qml | 9 +-
qml/pages/ProfilePage.qml | 43 +++---
qml/pages/components/ItemUser.qml | 21 ++-
qml/pages/components/MediaBlock.qml | 17 ++-
qml/pages/components/MediaFullScreen.qml | 18 ++-
qml/pages/components/MiniStatus.qml | 14 +-
qml/pages/components/MyList.qml | 2 +-
qml/pages/components/VisualContainer.qml | 44 ++++--
rpm/harbour-tooter.spec | 2 +-
rpm/harbour-tooter.yaml | 2 +-
14 files changed, 194 insertions(+), 126 deletions(-)
rename qml/images/{icon-s-following.svg => icon-s-follow.svg} (100%)
diff --git a/qml/images/icon-s-following.svg b/qml/images/icon-s-follow.svg
similarity index 100%
rename from qml/images/icon-s-following.svg
rename to qml/images/icon-s-follow.svg
diff --git a/qml/lib/API.js b/qml/lib/API.js
index ea84804..cbbb579 100644
--- a/qml/lib/API.js
+++ b/qml/lib/API.js
@@ -89,11 +89,11 @@ var tootParser = function(data){
ret.avatar_static = data.account.avatar_static
ret.favourited = data.favourited ? true : false
- ret.favourites_count = data.favourites_count ? data.favourites_count : 0
+ ret.status_favourites_count = data.favourites_count ? data.favourites_count : 0
ret.reblog = data.reblog ? true : false
ret.reblogged = data.reblogged ? true : false
- ret.reblogs_count = data.reblogs_count ? data.reblogs_count : false
+ ret.status_reblogs_count = data.reblogs_count ? data.reblogs_count : false
ret.muted = data.muted ? true : false
ret.sensitive = data.sensitive ? true : false
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 91d4252..c8cfb23 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -1,5 +1,8 @@
Qt.include("Mastodon.js")
+
+
var loadImages = true;
+
WorkerScript.onMessage = function(msg) {
console.log("Action > " + msg.action)
console.log("Model > " + msg.model)
@@ -9,16 +12,17 @@ WorkerScript.onMessage = function(msg) {
// order notifications in ASC order
function orderNotifications(items){
- for (var i = items.length-1; i > 0; i--){
+ for (var i = items.length-1; i > 0; i--) {
if (items[i].id > 0 ) //msg.conf.notificationLastID)
WorkerScript.sendMessage({ 'fireNotification': true, "data": items[i]})
}
}
- if (!msg.conf || !msg.conf.login){
+ if (!msg.conf || !msg.conf.login) {
console.log("Not loggedin")
return;
}
+
if (typeof msg.conf['loadImages'] !== "undefined")
loadImages = msg.conf['loadImages']
@@ -27,7 +31,7 @@ WorkerScript.onMessage = function(msg) {
API.post(msg.action, msg.params, function(data) {
if (msg.bgAction){
console.log(JSON.stringify(data))
- } else if (msg.action === "statuses"){
+ } else if (msg.action === "statuses") {
// status posted
if(msg.model){
var item = parseToot(data);
@@ -59,7 +63,7 @@ WorkerScript.onMessage = function(msg) {
} else if(msg.action === "notifications") {
// notification
- //console.log("Is notification... parsing...")
+ // console.log("Is notification... parsing...")
console.log(JSON.stringify(data[i]))
item = parseNotification(data[i]);
items.push(item)
@@ -90,14 +94,13 @@ WorkerScript.onMessage = function(msg) {
}
addDataToModel (msg.model, "append", items);
items = [];
-
} else if (data[i].hasOwnProperty("content")){
- //console.log("Is toot... parsing...")
+ // console.log("Is toot... parsing...")
item = parseToot(data[i]);
item['id'] = item['status_id']
items.push(item)
} else {
- WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i]})
+ WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i] })
}
}
}
@@ -108,39 +111,54 @@ WorkerScript.onMessage = function(msg) {
});
}
-
-
//WorkerScript.sendMessage({ 'notifyNewItems': length - i })
-function addDataToModel (model, mode, items){
+function addDataToModel (model, mode, items) {
var length = items.length;
console.log("Fetched > " +length)
if (mode === "append") {
model.append(items)
} else if (mode === "prepend") {
- for(var i = length-1; i >= 0 ; i--){
+ for(var i = length-1; i >= 0 ; i--) {
model.insert(0,items[i])
}
}
model.sync()
}
-function parseAccounts(collection, prefix, data){
- var res = collection;
+// Get Account Data: Represents a user of Mastodon and their associated profile.
+function parseAccounts(collection, prefix, data) {
+
+ var res = collection;
+ // Base attributes
res[prefix + 'account_id'] = data["id"]
res[prefix + 'account_username'] = data["username"]
res[prefix + 'account_acct'] = data["acct"]
+ res[prefix + 'account_url'] = data["url"]
+ // Display attributes
res[prefix + 'account_display_name'] = data["display_name"]
- res[prefix + 'account_locked'] = data["locked"]
- res[prefix + 'account_created_at'] = data["created_at"]
+ res[prefix + 'account_note'] = data["note"]
res[prefix + 'account_avatar'] = data["avatar"]
res[prefix + 'account_header'] = data["header"]
+ res[prefix + 'account_locked'] = data["locked"]
+ //res[prefix + 'account_emojis'] = data["emojis"]
+ res[prefix + 'account_discoverable'] = data["discoverable"]
+ // Statistical attributes
+ res[prefix + 'account_created_at'] = data["created_at"]
+ res[prefix + 'account_statuses_count'] = data["statuses_count"]
+ res[prefix + 'account_followers_count'] = data["followers_count"]
+ res[prefix + 'account_following_count'] = data["following_count"]
+ // Optional attributes
+ //res[prefix + 'account_fields'] = data["fields"]
+ res[prefix + 'account_bot'] = data["bot"]
+ res[prefix + 'account_source'] = data["source"]
- // console.log(JSON.stringify(res))
+ //console.log(JSON.stringify(res))
return (res);
}
+// Get Notification Data
function parseNotification(data){
//console.log(JSON.stringify(data))
var item = {
@@ -153,29 +171,28 @@ function parseNotification(data){
if (!data.status) {
break;
}
-
item = parseToot(data.status)
item['typeIcon'] = "image://theme/icon-s-retweet"
item['typeIcon'] = "image://theme/icon-s-alarm"
- item['type'] = "mention";
+ item['type'] = "mention"
break;
+
case "reblog":
if (!data.status) {
break;
}
-
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])
- item['status_reblog'] = true;
- item['type'] = "reblog";
+ item['status_reblog'] = true
+ item['type'] = "reblog"
item['typeIcon'] = "image://theme/icon-s-retweet"
break;
+
case "favourite":
if (!data.status) {
break;
}
-
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])
@@ -184,15 +201,16 @@ function parseNotification(data){
item['type'] = "favourite";
//item['retweetScreenName'] = item['reblog_account_username'];
break;
+
case "follow":
item['type'] = "follow";
item = parseAccounts(item, "", data["account"])
item = parseAccounts(item, "reblog_", data["account"])
item['content'] = data['account']['note']
- item['typeIcon'] = "../../images/icon-s-following.svg"
+ item['typeIcon'] = "../../images/icon-s-follow.svg"
item['attachments'] = []
-
break;
+
default:
item['typeIcon'] = "image://theme/icon-s-sailfish"
}
@@ -215,41 +233,48 @@ function collect() {
}
return ret;
}
-function getDate(dateStr){
+
+function getDate(dateStr) {
var ts = new Date(dateStr);
return new Date(ts.getFullYear(), ts.getMonth(), ts.getDate(), 0, 0, 0)
}
-function parseToot (data){
+
+// Get Status / Toot Data
+function parseToot (data) {
var i = 0;
var item = {};
item['type'] = "toot"
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
- item['status_content'] = data["content"]
- item['status_created_at'] = item['created_at'] = new Date(data["created_at"]);
- item['section'] = getDate(data["created_at"]);
- item['reblogs_count'] = data["reblogs_count"]
- item['favourites_count'] = data["favourites_count"]
- item['reblogged'] = data["reblogged"]
- item['favourited'] = data["favourited"]
- item['bookmarked'] = data["bookmarked"]
+ item['status_created_at'] = item['created_at'] = new Date(data["created_at"])
item['status_sensitive'] = data["sensitive"]
item['status_spoiler_text'] = data["spoiler_text"]
item['status_visibility'] = data["visibility"]
+ item['status_language'] = data["language"]
- if(item['status_reblog']){
+ item['status_uri'] = data["uri"]
+ item['status_url'] = data["url"]
+ item['status_replies_count'] = data["replies_count"]
+ item['status_reblogs_count'] = data["reblogs_count"]
+ item['status_favourites_count'] = data["favourites_count"]
+ item['status_favourited'] = data["favourited"]
+ item['status_reblogged'] = data["reblogged"]
+ item['status_bookmarked'] = data["bookmarked"]
+
+ item['status_content'] = data["content"]
+ 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
+ item['section'] = getDate(data["created_at"])
+
+ // If Toot is a Reblog
+ if(item['status_reblog']) {
item['type'] = "reblog";
item['typeIcon'] = "image://theme/icon-s-retweet"
item['status_id'] = data["reblog"]["id"];
item['status_spoiler_text'] = data["reblog"]["spoiler_text"]
item['status_sensitive'] = data["reblog"]["sensitive"]
- item['emojis'] = data["reblog"]["emojis"];
item = parseAccounts(item, "", data['reblog']["account"])
item = parseAccounts(item, "reblog_", data["account"])
} else {
@@ -262,14 +287,11 @@ function parseToot (data){
.replaceAll('class=""', '');
item['attachments'] = [];
-
-
-
- for(i = 0; i < data['media_attachments'].length ; i++){
+ // Media attachements in Toots
+ for(i = 0; i < data['media_attachments'].length ; i++) {
var attachments = data['media_attachments'][i];
item['content'] = item['content'].replaceAll(attachments['text_url'], '')
var tmp = {
- id: attachments['id'],
id: attachments['id'],
type: attachments['type'],
url: attachments['remote_url'] && typeof attachments['remote_url'] == "string" ? attachments['remote_url'] : attachments['url'] ,
@@ -277,8 +299,10 @@ function parseToot (data){
}
item['attachments'].push(tmp)
}
- if(item['status_reblog']){
- for(i = 0; i < data['reblog']['media_attachments'].length ; i++){
+
+ // Media attachements in Reblogs
+ if(item['status_reblog']) {
+ for(i = 0; i < data['reblog']['media_attachments'].length ; i++) {
var attachments = data['reblog']['media_attachments'][i];
item['content'] = item['content'].replaceAll(attachments['text_url'], '')
var tmp = {
@@ -290,18 +314,20 @@ function parseToot (data){
item['attachments'].push(tmp)
}
}
+
return addEmojis(item, data);
}
-function addEmojis(item, data){
+// Display function for custom Emojis in Toots
+function addEmojis(item, data) {
var emoji, i;
- for (i = 0; i < data["emojis"].length; i++){
+ for (i = 0; i < data["emojis"].length; i++) {
emoji = data["emojis"][i];
item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
//console.log(JSON.stringify(data["emojis"][i]))
}
if (data["reblog"])
- for (i = 0; i < data["reblog"]["emojis"].length; i++){
+ for (i = 0; i < data["reblog"]["emojis"].length; i++) {
emoji = data["reblog"]["emojis"][i];
item['content'] = item['content'].replaceAll(":"+emoji.shortcode+":", "")
}
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 4f706b5..a1137cf 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -170,13 +170,15 @@ Page {
+ textOperations.text.substring(textOperations.selectionEnd).trim()
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
- }
- }
- onCountChanged: {
- positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
- }
- }
- }
+ }
+ }
+ onCountChanged: {
+ if (count > 0) {
+ positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
+ }
+ }
+ }
+ }
DockedPanel {
id: panel
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 7ece6d2..eae284c 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -175,7 +175,14 @@ Page {
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
- "profileBackground": model.account_header
+ "profileBackground": model.account_header,
+ "note": model.account_note,
+ "url": model.account_url,
+ "followers_count": model.account_followers_count,
+ "following_count": model.account_following_count,
+ "statuses_count": model.account_statuses_count,
+ "locked": model.account_locked,
+ "bot": model.account_bot
})
}
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index 37e0350..efdf0c3 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -19,14 +19,11 @@ Page {
property int statuses_count
property int following_count
property int followers_count
- property int favourites_count
- property int reblogs_count
- property int count_moments
property bool locked: false
property bool bot: false
property bool following: false
- property bool requested: false
property bool followed_by: false
+ property bool requested: false
property bool blocking: false
property bool muting: false
property bool domain_blocking: false
@@ -57,12 +54,12 @@ Page {
if(messageObject.action === "accounts/relationships/"){
console.log(JSON.stringify(messageObject))
- following= messageObject.data.following
- requested= messageObject.data.requested
- followed_by= messageObject.data.followed_by
- blocking= messageObject.data.blocking
- muting= messageObject.data.muting
- domain_blocking= messageObject.data.domain_blocking
+ following = messageObject.data.following
+ requested = messageObject.data.requested
+ followed_by = messageObject.data.followed_by
+ blocking = messageObject.data.blocking
+ muting = messageObject.data.muting
+ domain_blocking = messageObject.data.domain_blocking
}
switch (messageObject.key) {
case 'followers_count':
@@ -119,15 +116,18 @@ Page {
if (user_id) {
msg = {
'action' : "accounts/relationships/",
- 'params' : [ {name: "id", data: user_id}],
+ 'params' : [ {name: "id", data: user_id} ],
'conf' : Logic.conf
}
worker.sendMessage(msg)
- msg = {
+
+ // reason for crashes when opening ProfilePage.qml
+ /* msg = {
'action' : "accounts/"+user_id,
'conf' : Logic.conf
}
- worker.sendMessage(msg)
+ worker.sendMessage(msg) */
+
} else {
var instance = Logic.conf['instance'].split("//")
msg = {
@@ -249,7 +249,7 @@ Page {
Text {
id: txtFollowers
- visible: followers_count ? true : false
+ visible: true //followers_count ? true : false
text: followers_count+" "+
//: Will show as: "35 Followers"
qsTr("Followers")
@@ -260,7 +260,7 @@ Page {
Text {
id: txtFollowing
- visible: following_count ? true : false
+ visible: true //following_count ? true : false
text: following_count+" "+
//: Will show as: "23 Following"
qsTr("Following")
@@ -271,7 +271,7 @@ Page {
Text {
id: txtStatuses
- visible: statuses_count ? true : false
+ visible: true //statuses_count ? true : false
text: statuses_count+" "+
//: Will show as: "115 Statuses"
qsTr("Statuses")
@@ -279,17 +279,6 @@ Page {
color: Theme.highlightColor
wrapMode: Text.Wrap
}
-
- /*Text {
- id: txtFavourites
- visible: favourites_count ? true : false
- text: favourites_count+" "+
- //: Will show as: "56 Favourites"
- qsTr("Favourites")
- font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.highlightColor
- wrapMode: Text.Wrap
- } */
}
Item { // dummy item for spacing
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 6f6b4cd..1f4ce55 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -18,6 +18,7 @@ BackgroundItem {
anchors.left: parent.left
anchors.leftMargin: Theme.horizontalPageMargin
color: Theme.highlightDimmerColor
+
Image {
id: img
opacity: status === Image.Ready ? 1.0 : 0.0
@@ -41,7 +42,14 @@ BackgroundItem {
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
- "profileBackground": model.account_header
+ "profileBackground": model.account_header,
+ "note": model.account_note,
+ "url": model.account_url,
+ "followers_count": model.account_followers_count,
+ "following_count": model.account_following_count,
+ "statuses_count": model.account_statuses_count,
+ "locked": model.account_locked,
+ "bot": model.account_bot
})
}
}
@@ -54,7 +62,7 @@ BackgroundItem {
Label {
id: display_name
- text: if (model.account_display_name + " ") {
+ text: if (model.account_display_name === "") {
model.account_username.split("@")[0] + " "
} else model.account_display_name
color: !pressed ? Theme.primaryColor : Theme.highlightColor
@@ -75,7 +83,14 @@ BackgroundItem {
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
- "profileBackground": model.account_header
+ "profileBackground": model.account_header,
+ "note": model.account_note,
+ "url": model.account_url,
+ "followers_count": model.account_followers_count,
+ "following_count": model.account_following_count,
+ "statuses_count": model.account_statuses_count,
+ "locked": model.account_locked,
+ "bot": model.account_bot
} )
}
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index bf3c047..10cd985 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -23,12 +23,14 @@ Item {
if (model && model.count)
count = model.count
switch(count){
+
case 1:
placeholder1.width = holder.width
placeholder1.height = placeholder1.width*hRatio
placeholder1.visible = true;
holder.height = placeholder1.height
break;
+
case 2:
placeholder1.visible = true;
placeholder2.visible = true;
@@ -39,6 +41,7 @@ Item {
placeholder2.x = placeholder1.width + placeholder2.x + Theme.paddingSmall
holder.height = placeholder1.height
break;
+
case 3:
placeholder1.visible = true;
placeholder2.visible = true;
@@ -53,8 +56,8 @@ Item {
placeholder3.height = placeholder3.width = placeholder2.height = placeholder2.width
placeholder3.x = placeholder2.x = placeholder1.x + placeholder1.width + Theme.paddingSmall;
placeholder3.y = placeholder2.y + placeholder2.height + Theme.paddingSmall;
-
break;
+
case 4:
placeholder1.visible = true;
placeholder2.visible = true;
@@ -67,9 +70,9 @@ Item {
placeholder3.x = 2*(placeholder1.width)+ 2*Theme.paddingSmall;
placeholder4.x = 3*(placeholder1.width)+ 3*Theme.paddingSmall;
-
- holder.height = placeholder1.height
+ holder.height = placeholder1.height
break;
+
default:
holder.height = 0
placeholder1.visible = placeholder2.visible = placeholder3.visible = placeholder4.visible = false;
@@ -86,7 +89,7 @@ Item {
type = model.get(0).type
previewURL = model.get(0).preview_url
mediaURL = model.get(0).url
- height = 200
+ height = Theme.itemSizeLarge
return true
} else {
height = 0
@@ -105,7 +108,7 @@ Item {
type = model.get(1).type
previewURL = model.get(1).preview_url
mediaURL = model.get(1).url
- height = 200
+ height = Theme.itemSizeLarge
return true
} else {
height = 0
@@ -124,7 +127,7 @@ Item {
type = model.get(2).type
previewURL = model.get(2).preview_url
mediaURL = model.get(2).url
- height = 200
+ height = Theme.itemSizeLarge
return true
} else {
height = 0
@@ -143,7 +146,7 @@ Item {
type = model.get(3).type
previewURL = model.get(3).preview_url
mediaURL = model.get(3).url
- height = 200
+ height = Theme.itemSizeLarge
return true
} else {
height = 0
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index 38ec83a..cd53ec7 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -11,7 +11,7 @@ FullscreenContentPage {
property string mediaURL: ""
allowedOrientations: Orientation.All
- Component.onCompleted: function(){
+ Component.onCompleted: function() {
console.log(type)
console.log(previewURL)
console.log(mediaURL)
@@ -44,7 +44,7 @@ FullscreenContentPage {
Video {
id: video
anchors.fill: parent
- onErrorStringChanged: function(){
+ onErrorStringChanged: function() {
videoError.visible = true
}
onStatusChanged: {
@@ -60,7 +60,7 @@ FullscreenContentPage {
}
onPlaybackStateChanged: {
console.log(playbackState)
- switch (playbackState){
+ switch (playbackState) {
case MediaPlayer.PlayingState:
playerIcon.icon.source = "image://theme/icon-m-pause"
return;
@@ -72,7 +72,7 @@ FullscreenContentPage {
return;
}
}
- onPositionChanged: function(){
+ onPositionChanged: function() {
//console.log(duration)
//console.log(bufferProgress)
//console.log(position)
@@ -84,7 +84,7 @@ FullscreenContentPage {
}
}
onStopped: function() {
- if (video.duration < 30000)
+ if (type != 'video')
video.play()
else
video.stop()
@@ -151,7 +151,6 @@ FullscreenContentPage {
anchors.centerIn: parent
}
}
-
}
}
@@ -288,7 +287,7 @@ FullscreenContentPage {
id: failedLoading
Text {
text: qsTr("Error loading")
- font.pixelSize: Theme.fontSizeSmall;
+ font.pixelSize: Theme.fontSizeSmall
color: Theme.highlightColor
}
}
@@ -315,11 +314,10 @@ FullscreenContentPage {
}
icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
- var filename = mediaURL.split("/");
- FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
+ var filename = mediaURL.split("/")
+ FileDownloader.downloadFile(mediaURL, filename[filename.length-1])
}
}
VerticalScrollDecorator { flickable: imageFlickable }
}
-
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index d9dc96c..48b77d6 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -26,13 +26,8 @@ Item {
Label {
id: lblRtByName
visible: type.length
- anchors {
- left: icon.right
- leftMargin: Theme.paddingMedium
- verticalCenter: icon.verticalCenter
- }
text: {
- var action = "";
+ var action = ""
switch(type){
case "reblog":
action = qsTr('boosted');
@@ -47,9 +42,14 @@ Item {
miniStatus.visible = false
action = type;
}
- return typeof reblog_account_username !== "undefined" ? '@' + reblog_account_username + ' ' + action : ''
+ return typeof reblog_account_username !== "undefined" ? "@" + reblog_account_username + " " + action : " "
}
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
+ anchors {
+ left: icon.right
+ leftMargin: Theme.paddingMedium
+ verticalCenter: icon.verticalCenter
+ }
}
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index 8885525..c654fa6 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -84,7 +84,7 @@ SilicaListView {
}
}
- delegate: VisualContainer {}
+ delegate: VisualContainer { }
add: Transition {
NumberAnimation { property: "opacity"; from: 0; to: 1.0; duration: 800 }
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 6f9b695..a9f5218 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -83,7 +83,14 @@ BackgroundItem {
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
- "profileBackground": model.account_header
+ "profileBackground": model.account_header,
+ "note": model.account_note,
+ "url": model.account_url,
+ "followers_count": model.account_followers_count,
+ "following_count": model.account_following_count,
+ "statuses_count": model.account_statuses_count,
+ "locked": model.account_locked,
+ "bot": model.account_bot
} )
}
}
@@ -146,6 +153,26 @@ BackgroundItem {
width: Theme.iconSizeSmall
height: width
}
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
+ "display_name": model.reblog_account_display_name,
+ "username": model.reblog_account_acct,
+ "user_id": model.reblog_account_id,
+ "profileImage": model.reblog_account_avatar,
+ "profileBackground": model.account_header,
+ "note": model.reblog_account_note,
+ "url": model.reblog_account_url,
+ "followers_count": model.reblog_account_followers_count,
+ "following_count": model.reblog_account_following_count,
+ "statuses_count": model.reblog_account_statuses_count,
+ "locked": model.reblog_account_locked,
+ "bot": model.reblog_account_bot
+ } )
+ }
+ }
}
}
@@ -247,13 +274,13 @@ BackgroundItem {
visible: if (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) {
false
} else true
- model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
+ model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: Theme.iconSizeExtraLarge * 2
anchors {
left: lblContent.left
right: lblContent.right
top: lblContent.bottom
- topMargin: Theme.paddingSmall
+ topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
}
}
@@ -275,7 +302,7 @@ BackgroundItem {
"bgAction": true,
"action" : "statuses/"+model.status_id+"/" + (status ? "unreblog" : "reblog")
})
- model.reblogs_count = !status ? model.reblogs_count+1 : (model.reblogs_count > 0 ? model.reblogs_count-1 : model.reblogs_count);
+ model.status_reblogs_count = !status ? model.status_reblogs_count+1 : (model.status_reblogs_count > 0 ? model.status_reblogs_count-1 : model.status_reblogs_count);
model.reblogged = !model.reblogged
}
@@ -292,7 +319,7 @@ BackgroundItem {
}
Label {
- text: reblogs_count
+ text: status_reblogs_count // from API.js
font.pixelSize: Theme.fontSizeExtraSmall
color: !model.reblogged ? Theme.highlightColor : Theme.primaryColor
anchors {
@@ -316,7 +343,7 @@ BackgroundItem {
"bgAction": true,
"action" : "statuses/"+model.status_id+"/" + (status ? "unfavourite" : "favourite")
})
- model.favourites_count = !status ? model.favourites_count+1 : (model.favourites_count > 0 ? model.favourites_count-1 : model.favourites_count);
+ model.status_favourites_count = !status ? model.status_favourites_count+1 : (model.status_favourites_count > 0 ? model.status_favourites_count-1 : model.status_favourites_count);
model.favourited = !model.favourited
}
@@ -333,7 +360,7 @@ BackgroundItem {
}
Label {
- text: favourites_count
+ text: status_favourites_count // from API.js
font.pixelSize: Theme.fontSizeExtraSmall
color: !model.favourited ? Theme.highlightColor : Theme.primaryColor
anchors {
@@ -386,8 +413,9 @@ BackgroundItem {
}
onPressAndHold: {
console.log(JSON.stringify(mdl.get(index)))
- mnu.show(delegate)
+ mnu.open(delegate)
}
+
onDoubleClicked: {
console.log("double click")
}
diff --git a/rpm/harbour-tooter.spec b/rpm/harbour-tooter.spec
index 4c576ba..a83649f 100644
--- a/rpm/harbour-tooter.spec
+++ b/rpm/harbour-tooter.spec
@@ -14,7 +14,7 @@ Name: harbour-tooter
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter
Version: 1.0.4
-Release: 1
+Release: 9
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooter.yaml b/rpm/harbour-tooter.yaml
index 093166c..6658e97 100644
--- a/rpm/harbour-tooter.yaml
+++ b/rpm/harbour-tooter.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooter
Summary: Tooter
Version: 1.0.4
-Release: 1
+Release: 9
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
From f77d539f5aa578c74fa139b7a6cf31467a5bd53f Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 08:32:52 +0200
Subject: [PATCH 43/70] Bot icn / better element anchoring
---
harbour-tooter.pro | 1 +
qml/images/icon-s-bot.svg | 11 ++
qml/pages/ConversationPage.qml | 3 +-
qml/pages/LoginPage.qml | 1 -
qml/pages/MainPage.qml | 7 +-
qml/pages/ProfilePage.qml | 1 -
qml/pages/SettingsPage.qml | 3 +-
qml/pages/components/EmojiSelect.qml | 2 -
qml/pages/components/InfoBanner.qml | 1 -
qml/pages/components/ItemUser.qml | 24 +++-
qml/pages/components/MediaBlock.qml | 1 -
qml/pages/components/MiniHeader.qml | 55 +++++----
qml/pages/components/MyImage.qml | 1 -
qml/pages/components/MyList.qml | 9 +-
qml/pages/components/Navigation.qml | 2 -
qml/pages/components/ProfileHeader.qml | 26 ++--
qml/pages/components/ProfileImage.qml | 1 -
qml/pages/components/VisualContainer.qml | 46 ++++---
src/imageuploader.cpp | 12 +-
translations/harbour-tooter-de.ts | 33 ++---
translations/harbour-tooter-el.ts | 33 ++---
translations/harbour-tooter-es.ts | 33 ++---
translations/harbour-tooter-fr.ts | 33 ++---
translations/harbour-tooter-it.ts | 147 ++++++++++++-----------
translations/harbour-tooter-nl.ts | 33 ++---
translations/harbour-tooter-nl_BE.ts | 33 ++---
translations/harbour-tooter-oc.ts | 33 ++---
translations/harbour-tooter-pl.ts | 33 ++---
translations/harbour-tooter-ru.ts | 33 ++---
translations/harbour-tooter-sr.ts | 33 ++---
translations/harbour-tooter-sv.ts | 33 ++---
translations/harbour-tooter-zh_CN.ts | 33 ++---
translations/harbour-tooter.ts | 33 ++---
33 files changed, 429 insertions(+), 354 deletions(-)
create mode 100644 qml/images/icon-s-bot.svg
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index 577a632..7ec9265 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -73,6 +73,7 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/LoginPage.qml \
qml/pages/Browser.qml \
qml/lib/API.js \
+ qml/images/icon-s-bot.svg \
qml/images/icon-s-following \
qml/images/icon-m-emoji.svg \
qml/images/icon-m-profile.svg \
diff --git a/qml/images/icon-s-bot.svg b/qml/images/icon-s-bot.svg
new file mode 100644
index 0000000..d4c484c
--- /dev/null
+++ b/qml/images/icon-s-bot.svg
@@ -0,0 +1,11 @@
+
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index a1137cf..f54a0a6 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -106,6 +106,7 @@ Page {
visible: type === "reply"
MenuItem {
+ //: Use the translation of "Copy Link" for a shorter PullDownMenu label
text: qsTr("Copy Link to Clipboard")
onClicked: if (toot_url === "") {
var test = toot_uri.split("/")
@@ -121,6 +122,7 @@ Page {
}
MenuItem {
+ //: "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
text: !panel.open ? qsTr("Reply") : qsTr("Hide Reply")
visible: type == "reply"
onClicked: if (!panel.open) {
@@ -590,5 +592,4 @@ Page {
InfoBanner {
id: sentBanner
}
-
}
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index 3a2cb10..10f469e 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -161,5 +161,4 @@ Page {
}
}
}
-
}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index eae284c..6ccd4f0 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -10,7 +10,6 @@ Page {
property bool isFirstPage: true
property bool isTablet: true //Screen.sizeCategory >= Screen.Large
- // The effective value will be restricted by ApplicationWindow.allowedOrientations
allowedOrientations: Orientation.All
DockedPanel {
@@ -19,6 +18,7 @@ Page {
width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
+
Navigation {
id: navigation
isPortrait: !mainPage.isPortrait
@@ -31,6 +31,7 @@ Page {
VisualItemModel {
id: visualModel
+
MyList{
id: tlHome
title: qsTr("Home")
@@ -88,7 +89,7 @@ Page {
loader.sourceComponent = userListComponent
} else if (search.charAt(0) === "#") {
loader.sourceComponent = tagListComponent
- } else { loader.sourceComponent = wordListComponent}
+ } else loader.sourceComponent = wordListComponent
}
Loader {
@@ -102,6 +103,7 @@ Page {
PageHeader {
title: qsTr("Search")
}
+
SearchField {
id: searchField
width: parent.width
@@ -287,5 +289,4 @@ Page {
Component.onCompleted: {
console.log("aaa")
}
-
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index efdf0c3..f0c0206 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -382,5 +382,4 @@ Page {
}
}
}
-
}
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index c2caa47..19b2dd4 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -37,7 +37,7 @@ Page {
}
}
- SectionHeader { text: qsTr("Account")}
+ SectionHeader { text: qsTr("Account") }
Item {
id: removeAccount
@@ -249,5 +249,4 @@ Page {
}
}
}
-
}
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index 45a6f10..67c067a 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -161,6 +161,4 @@ Component {
VerticalScrollDecorator {flickable: listEmojis }
}
}
-
-
}
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index 06601aa..048a43f 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -55,5 +55,4 @@ DockedPanel {
stop()
}
}
-
}
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 1f4ce55..29a3cca 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -54,7 +54,7 @@ BackgroundItem {
}
}
- Column {
+ Item {
anchors.left: avatar.right
anchors.leftMargin: Theme.paddingLarge
anchors.verticalCenter: parent.verticalCenter
@@ -62,11 +62,25 @@ BackgroundItem {
Label {
id: display_name
- text: if (model.account_display_name === "") {
- model.account_username.split("@")[0] + " "
- } else model.account_display_name
+ text: account_display_name ? account_display_name : account_username.split('@')[0]
color: !pressed ? Theme.primaryColor : Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
+ anchors.top: parent.top
+
+ }
+
+ Image {
+ id: icnBot
+ visible: account_bot
+ source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
+ width: account_bot ? Theme.iconSizeExtraSmall : 0
+ height: width
+ y: Theme.paddingLarge
+ anchors {
+ left: display_name.right
+ leftMargin: Theme.paddingSmall
+ verticalCenter: display_name.verticalCenter
+ }
}
Label {
@@ -75,6 +89,7 @@ BackgroundItem {
color: !pressed ? Theme.secondaryColor : Theme.secondaryHighlightColor
anchors.leftMargin: Theme.paddingMedium
font.pixelSize: Theme.fontSizeExtraSmall
+ anchors.top: display_name.bottom
}
}
@@ -92,5 +107,4 @@ BackgroundItem {
"locked": model.account_locked,
"bot": model.account_bot
} )
-
}
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 10cd985..650bfdb 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -154,5 +154,4 @@ Item {
}
}
}
-
}
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index e227fd0..6347664 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -9,30 +9,22 @@ Item {
Label {
id: lblName
- text:
- if (account_display_name === "") {
- account_username.split('@')[0]
- }
- else account_display_name
+ text: account_display_name ? account_display_name : account_username.split('@')[0]
font.weight: Font.Bold
font.pixelSize: Theme.fontSizeSmall
- color: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
- (pressed ? Theme.secondaryHighlightColor : (!highlight ? Theme.secondaryColor : Theme.secondaryHighlightColor))
- } else (pressed ? Theme.highlightColor : (!highlight ? Theme.primaryColor : Theme.secondaryColor))
+ color: if ( myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
+ ( pressed ? Theme.secondaryHighlightColor : (!highlight ? Theme.secondaryColor : Theme.secondaryHighlightColor ))
+ } else ( pressed ? Theme.highlightColor : ( !highlight ? Theme.primaryColor : Theme.secondaryColor ))
truncationMode: TruncationMode.Fade
width: contentWidth > parent.width /2 ? parent.width /2 : contentWidth
- anchors {
- left: parent.left
- leftMargin: Theme.paddingMedium
- }
+ anchors.left: parent.left
}
Image {
- id: icnLocked
- visible: account_locked
- opacity: 0.8
- source: "image://theme/icon-s-secure?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
- width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
+ id: icnBot
+ visible: account_bot
+ source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
+ width: account_bot ? Theme.iconSizeExtraSmall * 1.3 : 0
height: width
y: Theme.paddingLarge
anchors {
@@ -44,15 +36,30 @@ Item {
Label {
id: lblScreenName
+ visible: model.type !== "follow"
text: '@'+account_username
font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
+ color: ( pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor )
truncationMode: TruncationMode.Fade
anchors {
- left: icnLocked.right
+ left: icnBot ? icnBot.right : icnLocked.right
+ leftMargin: Theme.paddingSmall
right: lblDate.left
- leftMargin: Theme.paddingMedium
- baseline: lblName.baseline
+ rightMargin: Theme.paddingMedium
+ verticalCenter: lblName.verticalCenter
+ }
+ }
+
+ Label {
+ id: lblScreenNameFollow
+ visible: model.type === "follow" && myList.type === "notifications"
+ text: '@'+account_username
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: ( pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor )
+ truncationMode: TruncationMode.Fade
+ anchors {
+ left: parent.left
+ top: lblName.bottom
}
}
@@ -60,13 +67,11 @@ Item {
id: lblDate
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
font.pixelSize: Theme.fontSizeExtraSmall
- color: (pressed ? Theme.highlightColor : Theme.primaryColor)
+ color: ( pressed ? Theme.highlightColor : Theme.secondaryColor )
horizontalAlignment: Text.AlignRight
anchors {
right: parent.right
- rightMargin: Theme.horizontalPageMargin
- baseline: lblName.baseline
+ verticalCenter: lblName.verticalCenter
}
}
-
}
diff --git a/qml/pages/components/MyImage.qml b/qml/pages/components/MyImage.qml
index 8e0be74..9b60c4d 100644
--- a/qml/pages/components/MyImage.qml
+++ b/qml/pages/components/MyImage.qml
@@ -89,5 +89,4 @@ Item {
}
}
}
-
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index c654fa6..14f90ea 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -128,7 +128,7 @@ SilicaListView {
openDrawer(contentY - scrollOffset > 0 ? false : true )
scrollOffset = contentY
}
- if(contentY+height > footerItem.y && !loadStarted && autoLoadMore){
+ if(contentY+height > footerItem.y && !loadStarted && autoLoadMore) {
loadData("append")
loadStarted = true
}
@@ -161,16 +161,16 @@ SilicaListView {
}
}
- function loadData(mode){
+ function loadData(mode) {
var p = []
if (params.length)
for(var i = 0; i paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
anchors {
left: miniHeader.left
- leftMargin: Theme.paddingMedium
right: miniHeader.right
- rightMargin: Theme.horizontalPageMargin
top: miniHeader.bottom
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
@@ -236,6 +247,7 @@ BackgroundItem {
}
}
+ // Content warning cover for Toots
Rectangle {
color: Theme.highlightDimmerColor
visible: status_spoiler_text.length > 0
@@ -269,22 +281,24 @@ BackgroundItem {
}
}
+ // Displays media in Toots
MediaBlock {
id: media
visible: if (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) {
false
} else true
- model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
+ model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject')
height: Theme.iconSizeExtraLarge * 2
anchors {
- left: lblContent.left
- right: lblContent.right
+ left: miniHeader.left
+ right: miniHeader.right
top: lblContent.bottom
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
}
}
+ // Context menu for Toots
ContextMenu {
id: mnu
@@ -377,7 +391,7 @@ BackgroundItem {
text: qsTr("Mention")
onClicked: {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
- headerTitle: "Mention",
+ headerTitle: qsTr("Mention"),
description: "@"+reblog_account_acct,
type: "new"
})
@@ -397,6 +411,7 @@ BackgroundItem {
}
}
+ // Open ConversationPage and show other Toots in thread (if available)
onClicked: {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
@@ -419,5 +434,4 @@ BackgroundItem {
onDoubleClicked: {
console.log("double click")
}
-
}
diff --git a/src/imageuploader.cpp b/src/imageuploader.cpp
index 3153372..40ddb2a 100644
--- a/src/imageuploader.cpp
+++ b/src/imageuploader.cpp
@@ -11,15 +11,15 @@
//static const QUrl IMGUR_UPLOAD_URL("https://httpbin.org/post");
//static const QUrl IMGUR_UPLOAD_URL();
-ImageUploader::ImageUploader(QObject *parent) : QObject(parent), m_networkAccessManager(0), m_reply(0) {
+ImageUploader::ImageUploader(QObject *parent) : QObject(parent), m_networkAccessManager(nullptr), m_reply(nullptr) {
m_networkAccessManager = new QNetworkAccessManager(this);
}
ImageUploader::~ImageUploader() {
- if (m_reply != 0) {
+ if (m_reply != nullptr) {
m_reply->disconnect();
m_reply->deleteLater();
- m_reply = 0;
+ m_reply = nullptr;
}
}
@@ -58,10 +58,10 @@ void ImageUploader::upload() {
return;
}
- if (m_reply != 0) {
+ if (m_reply != nullptr) {
m_reply->disconnect();
m_reply->deleteLater();
- m_reply = 0;
+ m_reply = nullptr;
}
/*QFileInfo fileInfo(QUrl(m_fileName).toLocalFile());
@@ -146,6 +146,6 @@ void ImageUploader::replyFinished() {
}
m_reply->deleteLater();
- m_reply = 0;
+ m_reply = nullptr;
postdata.clear();
}
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 63930d6..c593d66 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Link kopieren
@@ -58,6 +59,15 @@
Toot gesendet!
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+ Antworten
+
+
+
+ Antwort verbergen
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+ Folgt dir
+
ProfilePage
@@ -344,21 +358,6 @@
um bei den Übersetzungen mitzuhelfen.
-
- Toot
-
-
- hat geteilt
-
-
-
- hat favorisiert
-
-
-
- folgt dir
-
-
VisualContainer
@@ -381,5 +380,9 @@
Erwähnen
+
+
+ Konversation
+
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index ea65a83..ed641fd 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας.
-
- Toot
-
-
- προωθημένο
-
-
-
- στους σελιδοδείκτες
-
-
-
- σας ακολουθούν
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 75ca954..27c26c2 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Copiar enlace al portapapeles
@@ -58,6 +59,15 @@
¡Toot enviado!
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
para ayudar con traducciones.
-
- Toot
-
-
- retooteó
-
-
-
- marcó como favorito
-
-
-
- te empezó a seguir
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 10f6ce9..500e6e0 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Copier le lien
@@ -58,6 +59,15 @@
Pouet envoyé !
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+ Répondre
+
+
+
+ Fermer Répondre
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+ Vous suit
+
ProfilePage
@@ -344,21 +358,6 @@
pour aider à traduire cette application.
-
- Toot
-
-
- a partagé
-
-
-
- a ajouté à ses favoris
-
-
-
- vous suit
-
-
VisualContainer
@@ -381,5 +380,9 @@
Mentionner
+
+
+ Conversation
+
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 6089ce2..bcd2957 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -28,47 +28,59 @@
ConversationPage
-
+
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Copia link
-
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+ Risposta
+
+
+
+
+ Chiudere Risposta
+
+
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
Toot è stato pubblicato!
@@ -133,37 +145,37 @@
MainPage
-
+
Home
-
+
Notifiche
-
+
Locale
-
+
Federazione
-
+
Cerca
-
+
@utente o #termine
-
+
Nuovo toot
@@ -171,7 +183,7 @@
MediaFullScreen
-
+
Errore durante caricamento
@@ -179,17 +191,17 @@
MiniStatus
-
+
ha condiviso
-
+
ha apprezzato
-
+
ha iniziato a seguirti
@@ -213,6 +225,7 @@
+
Nuovo toot
@@ -225,7 +238,12 @@
ProfileHeader
-
+
+
+ Ti segue
+
+
+
Bot
@@ -257,54 +275,55 @@
Toots
-
+
+
Menzionare
-
+
Is a button. Keep it as short as possible.
Smetti di seguire
-
+
Is a button. Keep it as short as possible.
Richiesto
-
+
Is a button. Keep it as short as possible.
Segui
-
+
Is a button. Keep it as short as possible.
Non silenziare
-
+
Is a button. Keep it as short as possible.
Silenzia
-
+
Is a button. Keep it as short as possible.
Sblocca
-
+
Is a button. Keep it as short as possible.
Blocca
-
+
Aprire nel browser
@@ -332,136 +351,124 @@
Disabilitare questa opzione per conservare connessione dati
-
+
Account
-
+
Rimozione del account
-
+
Aggiungi account
-
+
Annullare l'autorizzazione dell'app e rimuovere l'account
-
+
Autorizzare l'app all'utilizzo del conto Mastodon
-
+
Tradurre
-
+
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
Utilizzare
-
+
per aiutare nella traduzione dell'app.
-
+
Sviluppo
-
+
Design UI/UX e sviluppo
-
+
Identità visiva
-
+
Sviluppo e traduzioni
-
+
Traduzione francese e occitanica
-
+
Traduzione cinese
-
+
Traduzione olandese
-
+
Traduzione spagnola
-
+
Aggiunto file README
-
- Toot
-
-
-
- ha condiviso
-
-
-
-
- ha apprezzato
-
-
-
-
- ha iniziato a seguirti
-
-
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
+
Menzionare
+
+
+
+ Conversazione
+
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 6879a00..a3259b1 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Linkadres kopiëren
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
om deze app te helpen vertalen in jouw taal.
-
- Toot
-
-
- boostte
-
-
-
- maakte favoriet
-
-
-
- volgde jou
-
-
VisualContainer
@@ -381,5 +380,9 @@
Vermelden
+
+
+
+
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 712bc42..52517c9 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
voor te helpen met dezen app in uw taal te vertalen.
-
- Toot
-
-
- heeft geboost
-
-
-
- heeft geduimd voor
-
-
-
- volgt u nu
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 4912f6c..69ca0d0 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
per ajudar a traduire l’aplicacion dins vòstra lenga.
-
- Toot
-
-
- a tornat partejar
-
-
-
- a mes en favorit
-
-
-
- vos sèc
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index b2fbbb9..fedaf9c 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
-
- Toot
-
-
- podbił(a)
-
-
-
- dodał(a) do ulubionych
-
-
-
- zaczął(-ęła Cię śledzić)
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 50a075a..9171ede 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
чтобы помочь с переводом приложения на ваш язык.
-
- Toot
-
-
- росту
-
-
-
- имеет любимый
-
-
-
- следую за тобой
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index 471c224..d80e7d8 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
и помозите у преводу апликације на други језик.
-
- Toot
-
-
- разглашено
-
-
-
- омиљено
-
-
-
- вас прати
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 394ddbf..d99d520 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
@@ -58,6 +59,15 @@
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
för att hjälpa med app-översättningar till ditt språk.
-
- Toot
-
-
- puffade
-
-
-
- favoriserad
-
-
-
- följer dig
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index fb93b97..5d18598 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
复制链接到剪切板
@@ -58,6 +59,15 @@
已发送嘟嘟!
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
-
- Toot
-
-
- 推起
-
-
-
- 收藏
-
-
-
- 关注你
-
-
VisualContainer
@@ -381,5 +380,9 @@
+
+
+
+
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 2a521e4..8005ce9 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -24,6 +24,7 @@
ConversationPage
+ Use the translation of "Copy Link" for a shorter PullDownMenu label
Copy Link to Clipboard
@@ -58,6 +59,15 @@
Toot sent!
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+
+
+
+
+
+
CoverPage
@@ -189,6 +199,10 @@
Bot
+
+
+
+
ProfilePage
@@ -344,21 +358,6 @@
to help with app translation to your language.
-
- Toot
-
-
- boosted
-
-
-
- favourited
-
-
-
- followed you
-
-
VisualContainer
@@ -381,5 +380,9 @@
Mention
+
+
+
+
From 72c49c3777f4a4bc7c8001420207dd01a9ffd021 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 18:40:24 +0200
Subject: [PATCH 44/70] new features / ui improvements
- add Toots to bookmarks
---
harbour-tooter.pro | 3 +-
qml/images/icon-s-bookmark.svg | 9 +
qml/lib/API.js | 2 +
qml/lib/Worker.js | 1 +
qml/pages/ConversationPage.qml | 701 +++++++++++------------
qml/pages/MainPage.qml | 3 +-
qml/pages/ProfilePage.qml | 38 +-
qml/pages/components/ItemUser.qml | 5 +-
qml/pages/components/MediaBlock.qml | 26 +-
qml/pages/components/MiniHeader.qml | 3 +-
qml/pages/components/ProfileHeader.qml | 39 +-
qml/pages/components/VisualContainer.qml | 71 ++-
translations/harbour-tooter-de.ts | 12 +
translations/harbour-tooter-el.ts | 12 +
translations/harbour-tooter-es.ts | 26 +-
translations/harbour-tooter-fr.ts | 12 +
translations/harbour-tooter-it.ts | 91 +--
translations/harbour-tooter-nl.ts | 38 +-
translations/harbour-tooter-nl_BE.ts | 12 +
translations/harbour-tooter-oc.ts | 12 +
translations/harbour-tooter-pl.ts | 12 +
translations/harbour-tooter-ru.ts | 12 +
translations/harbour-tooter-sr.ts | 12 +
translations/harbour-tooter-sv.ts | 12 +
translations/harbour-tooter-zh_CN.ts | 12 +
translations/harbour-tooter.ts | 20 +-
26 files changed, 706 insertions(+), 490 deletions(-)
create mode 100644 qml/images/icon-s-bookmark.svg
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index 7ec9265..a78b746 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -75,6 +75,7 @@ DISTFILES += qml/harbour-tooter.qml \
qml/lib/API.js \
qml/images/icon-s-bot.svg \
qml/images/icon-s-following \
+ qml/images/icon-s-bookmark \
qml/images/icon-m-emoji.svg \
qml/images/icon-m-profile.svg \
qml/images/icon-l-profile.svg \
@@ -93,7 +94,7 @@ SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
# to disable building translations every time, comment out the
# following CONFIG line
-# CONFIG += sailfishapp_i18n
+CONFIG += sailfishapp_i18n
TRANSLATIONS += translations/harbour-tooter.ts \
translations/harbour-tooter-de.ts \
diff --git a/qml/images/icon-s-bookmark.svg b/qml/images/icon-s-bookmark.svg
new file mode 100644
index 0000000..6a7cba2
--- /dev/null
+++ b/qml/images/icon-s-bookmark.svg
@@ -0,0 +1,9 @@
+
diff --git a/qml/lib/API.js b/qml/lib/API.js
index cbbb579..1f80f11 100644
--- a/qml/lib/API.js
+++ b/qml/lib/API.js
@@ -95,6 +95,8 @@ var tootParser = function(data){
ret.reblogged = data.reblogged ? true : false
ret.status_reblogs_count = data.reblogs_count ? data.reblogs_count : false
+ ret.bookmarked = data.bookmarked ? true : false
+
ret.muted = data.muted ? true : false
ret.sensitive = data.sensitive ? true : false
ret.visibility = data.visibility ? data.visibility : false
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index c8cfb23..268c024 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -152,6 +152,7 @@ function parseAccounts(collection, prefix, data) {
// Optional attributes
//res[prefix + 'account_fields'] = data["fields"]
res[prefix + 'account_bot'] = data["bot"]
+ res[prefix + 'account_group'] = data["group"]
res[prefix + 'account_source'] = data["source"]
//console.log(JSON.stringify(res))
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index f54a0a6..674a76c 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -6,73 +6,74 @@ import "./components/"
Page {
- id: conversationPage
+ id: conversationPage
property string type
property string description: ""
property string headerTitle: ""
- property string suggestedUser: ""
- property ListModel suggestedModel
- property string toot_id: ""
+ property string suggestedUser: ""
+ property ListModel suggestedModel
+ property string toot_id: ""
property string toot_url: ""
property string toot_uri: ""
property int tootMaxChar: 500;
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
property bool locked: false //otherwise ReferenceError ProfileHeader.qml
+ property bool group: false //otherwise ReferenceError ProfileHeader.qml
property ListModel mdl
- allowedOrientations: Orientation.All
- onSuggestedUserChanged: {
- console.log(suggestedUser)
- suggestedModel = Qt.createQmlObject(
- 'import QtQuick 2.0; ListModel { }',
- Qt.application, 'InternalQmlObject'
- )
- predictionList.visible = false
- if (suggestedUser.length > 0) {
- var msg = {
- "action": 'accounts/search',
- "method": 'GET',
- "model": suggestedModel,
- "mode": "append",
- "params": [{
- "name": "q",
- "data": suggestedUser
- }],
- "conf": Logic.conf
- }
- worker.sendMessage(msg)
- predictionList.visible = true
- }
- }
+ allowedOrientations: Orientation.All
+ onSuggestedUserChanged: {
+ console.log(suggestedUser)
+ suggestedModel = Qt.createQmlObject(
+ 'import QtQuick 2.0; ListModel { }',
+ Qt.application, 'InternalQmlObject'
+ )
+ predictionList.visible = false
+ if (suggestedUser.length > 0) {
+ var msg = {
+ "action": 'accounts/search',
+ "method": 'GET',
+ "model": suggestedModel,
+ "mode": "append",
+ "params": [{
+ "name": "q",
+ "data": suggestedUser
+ }],
+ "conf": Logic.conf
+ }
+ worker.sendMessage(msg)
+ predictionList.visible = true
+ }
+ }
- ListModel {
- id: mediaModel
- onCountChanged: {
- btnAddImage.enabled = mediaModel.count < 4
- }
- }
+ ListModel {
+ id: mediaModel
+ onCountChanged: {
+ btnAddImage.enabled = mediaModel.count < 4
+ }
+ }
- WorkerScript {
- id: worker
- source: "../lib/Worker.js"
- onMessage: {
- console.log(JSON.stringify(messageObject))
- }
- }
+ WorkerScript {
+ id: worker
+ source: "../lib/Worker.js"
+ onMessage: {
+ console.log(JSON.stringify(messageObject))
+ }
+ }
- ProfileHeader {
- id: header
- visible: false
- }
+ ProfileHeader {
+ id: header
+ visible: false
+ }
SilicaListView {
id: myList
- header: PageHeader {
+ header: PageHeader {
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
- }
- clip: true
+ }
+ clip: true
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
@@ -81,25 +82,25 @@ Page {
} else {
hiddenPanel.top
}
- model: mdl
- section {
- property: 'section'
- delegate: SectionHeader {
- height: Theme.itemSizeExtraSmall
- text: Format.formatDate(section, Formatter.DateMedium)
- }
- }
- delegate: VisualContainer {
- }
- onCountChanged: {
- if (mdl)
- for (var i = 0; i < mdl.count; i++) {
- if (mdl.get(i).status_id === toot_id) {
- console.log(mdl.get(i).status_id)
- positionViewAtIndex(i, ListView.Center)
- }
- }
- }
+ model: mdl
+ section {
+ property: 'section'
+ delegate: SectionHeader {
+ height: Theme.itemSizeExtraSmall
+ text: Format.formatDate(section, Formatter.DateMedium)
+ }
+ }
+ delegate: VisualContainer {
+ }
+ onCountChanged: {
+ if (mdl)
+ for (var i = 0; i < mdl.count; i++) {
+ if (mdl.get(i).status_id === toot_id) {
+ console.log(mdl.get(i).status_id)
+ positionViewAtIndex(i, ListView.Center)
+ }
+ }
+ }
PullDownMenu {
id: pulleyConversation
@@ -133,9 +134,9 @@ Page {
}
}
- Rectangle {
- id: predictionList
- visible: false
+ Rectangle {
+ id: predictionList
+ visible: false
color: Theme.highlightDimmerColor
height: parent.height - panel.height - (Theme.paddingLarge * 4.5)
anchors {
@@ -151,27 +152,27 @@ Page {
SilicaListView {
rotation: 180
anchors.fill: parent
- model: suggestedModel
- clip: true
+ model: suggestedModel
+ clip: true
quickScroll: false
VerticalScrollDecorator {}
- delegate: ItemUser {
+ delegate: ItemUser {
rotation: 180
- onClicked: {
- var start = toot.cursorPosition
- while (toot.text[start] !== "@" && start > 0) {
- start--
- }
- textOperations.text = toot.text
- textOperations.cursorPosition = toot.cursorPosition
- textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
- toot.text = textOperations.text.substring(0, textOperations.selectionStart)
- + ' @'
- + model.account_acct
- + ' '
- + textOperations.text.substring(textOperations.selectionEnd).trim()
+ onClicked: {
+ var start = toot.cursorPosition
+ while (toot.text[start] !== "@" && start > 0) {
+ start--
+ }
+ textOperations.text = toot.text
+ textOperations.cursorPosition = toot.cursorPosition
+ textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
+ toot.text = textOperations.text.substring(0, textOperations.selectionStart)
+ + ' @'
+ + model.account_acct
+ + ' '
+ + textOperations.text.substring(textOperations.selectionEnd).trim()
- toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
+ toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
}
}
onCountChanged: {
@@ -182,82 +183,80 @@ Page {
}
}
- DockedPanel {
- id: panel
- width: parent.width
+ DockedPanel {
+ id: panel
+ width: parent.width
height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
- + btnContentWarning.height + Theme.paddingMedium
- + (warningContent.visible ? warningContent.height : 0)
+ + btnContentWarning.height + Theme.paddingMedium
+ + (warningContent.visible ? warningContent.height : 0)
dock: Dock.Bottom
- open: if (type == "new") {
- true
- } else false
+ open: true
animationDuration: 300
Rectangle {
- width: parent.width
- height: progressBar.height
- color: Theme.highlightBackgroundColor
- opacity: 0.2
- anchors {
- left: parent.left
- right: parent.right
- top: parent.top
- }
- }
+ width: parent.width
+ height: progressBar.height
+ color: Theme.highlightBackgroundColor
+ opacity: 0.2
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ }
+ }
- Rectangle {
- id: progressBar
- width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
+ Rectangle {
+ id: progressBar
+ width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
height: Theme.itemSizeSmall * 0.05
- color: Theme.highlightBackgroundColor
- opacity: 0.7
- anchors {
- left: parent.left
+ color: Theme.highlightBackgroundColor
+ opacity: 0.7
+ anchors {
+ left: parent.left
top: parent.top
- }
- }
+ }
+ }
- TextField {
- id: warningContent
- visible: false
- height: visible ? implicitHeight : 0
- anchors {
+ TextField {
+ id: warningContent
+ visible: false
+ height: visible ? implicitHeight : 0
+ anchors {
top: parent.top
- topMargin: Theme.paddingMedium
- left: parent.left
- right: parent.right
- }
- autoScrollEnabled: true
- labelVisible: false
+ topMargin: Theme.paddingMedium
+ left: parent.left
+ right: parent.right
+ }
+ autoScrollEnabled: true
+ labelVisible: false
font.pixelSize: Theme.fontSizeSmall
placeholderText: qsTr("Write your warning here")
placeholderColor: palette.highlightColor
color: palette.highlightColor
- horizontalAlignment: Text.AlignLeft
- EnterKey.onClicked: {}
- }
+ horizontalAlignment: Text.AlignLeft
+ EnterKey.onClicked: {}
+ }
- TextInput {
- id: textOperations
- visible: false
- }
+ TextInput {
+ id: textOperations
+ visible: false
+ }
- TextArea {
- id: toot
- anchors {
- top: warningContent.bottom
- topMargin: Theme.paddingMedium
- left: parent.left
+ TextArea {
+ id: toot
+ anchors {
+ top: warningContent.bottom
+ topMargin: Theme.paddingMedium
+ left: parent.left
right: parent.right
rightMargin: Theme.paddingLarge * 2
- }
- autoScrollEnabled: true
- labelVisible: false
+ }
+ autoScrollEnabled: true
+ labelVisible: false
text: description !== "" && (description.charAt(0) === '@'
- || description.charAt(
- 0) === '#') ? description + ' ' : ''
+ || description.charAt(
+ 0) === '#') ? description + ' ' : ''
height: if (type !== "reply") {
Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
}
@@ -268,269 +267,269 @@ Page {
placeholderText: qsTr("What's on your mind?")
font.pixelSize: Theme.fontSizeSmall
EnterKey.onClicked: {}
- onTextChanged: {
- textOperations.text = toot.text
- textOperations.cursorPosition = toot.cursorPosition
- textOperations.selectWord()
- textOperations.select(
- textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
- textOperations.selectionEnd)
- //console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
- console.log(toot.text.length)
- suggestedUser = ""
- if (textOperations.selectedText.charAt(0) === "@") {
- suggestedUser = textOperations.selectedText.trim().substring(1)
- }
- }
- }
+ onTextChanged: {
+ textOperations.text = toot.text
+ textOperations.cursorPosition = toot.cursorPosition
+ textOperations.selectWord()
+ textOperations.select(
+ textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
+ textOperations.selectionEnd)
+ //console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
+ console.log(toot.text.length)
+ suggestedUser = ""
+ if (textOperations.selectedText.charAt(0) === "@") {
+ suggestedUser = textOperations.selectedText.trim().substring(1)
+ }
+ }
+ }
- IconButton {
- id: btnSmileys
+ IconButton {
+ id: btnSmileys
property string selection
opacity: 0.7
icon {
+ source: "../../qml/images/icon-m-emoji.svg?"
color: Theme.secondaryColor
width: Theme.iconSizeSmallPlus
fillMode: Image.PreserveAspectFit
- source: "../../qml/images/icon-m-emoji.svg"
}
- anchors {
+ anchors {
top: warningContent.bottom
- bottom: bottom.top
- right: parent.right
- rightMargin: Theme.paddingSmall
- }
+ bottom: bottom.top
+ right: parent.right
+ rightMargin: Theme.paddingSmall
+ }
onSelectionChanged: { console.log(selection) }
onClicked: pageStack.push(emojiSelect)
- }
+ }
- SilicaGridView {
- id: uploadedImages
- width: parent.width
+ SilicaGridView {
+ id: uploadedImages
+ width: parent.width
anchors.top: bottom.toot
- anchors.bottom: parent.bottom
+ anchors.bottom: parent.bottom
height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
model: mediaModel
- cellWidth: uploadedImages.width / 4
+ cellWidth: uploadedImages.width / 4
cellHeight: Theme.itemSizeExtraLarge
- delegate: BackgroundItem {
- id: myDelegate
- width: uploadedImages.cellWidth
- height: uploadedImages.cellHeight
- RemorseItem {
+ delegate: BackgroundItem {
+ id: myDelegate
+ width: uploadedImages.cellWidth
+ height: uploadedImages.cellHeight
+ RemorseItem {
id: remorse
- }
+ }
- Image {
- anchors.fill: parent
- fillMode: Image.PreserveAspectCrop
- source: model.preview_url
- }
- onClicked: {
- var idx = index
- console.log(idx)
- //mediaModel.remove(idx)
- remorse.execute(myDelegate, qsTr("Delete"), function () {
- mediaModel.remove(idx)
- })
- }
- }
- add: Transition {
- NumberAnimation {
- property: "opacity"
- from: 0
- to: 1.0
- duration: 800
- }
- }
- remove: Transition {
- NumberAnimation {
- property: "opacity"
- from: 1.0
- to: 0
- duration: 800
- }
- }
- displaced: Transition {
- NumberAnimation {
- properties: "x,y"
- duration: 800
- easing.type: Easing.InOutBack
- }
- }
- }
+ Image {
+ anchors.fill: parent
+ fillMode: Image.PreserveAspectCrop
+ source: model.preview_url
+ }
+ onClicked: {
+ var idx = index
+ console.log(idx)
+ //mediaModel.remove(idx)
+ remorse.execute(myDelegate, qsTr("Delete"), function () {
+ mediaModel.remove(idx)
+ })
+ }
+ }
+ add: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 0
+ to: 1.0
+ duration: 800
+ }
+ }
+ remove: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 1.0
+ to: 0
+ duration: 800
+ }
+ }
+ displaced: Transition {
+ NumberAnimation {
+ properties: "x,y"
+ duration: 800
+ easing.type: Easing.InOutBack
+ }
+ }
+ }
- IconButton {
- id: btnContentWarning
- anchors {
+ IconButton {
+ id: btnContentWarning
+ anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
- left: parent.left
- leftMargin: Theme.paddingMedium
- }
- icon.source: "image://theme/icon-s-warning?"
- + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
- onClicked: warningContent.visible = !warningContent.visible
- }
+ left: parent.left
+ leftMargin: Theme.paddingMedium
+ }
+ icon.source: "image://theme/icon-s-warning?"
+ + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
+ onClicked: warningContent.visible = !warningContent.visible
+ }
- IconButton {
- id: btnAddImage
- enabled: mediaModel.count < 4
- anchors {
+ IconButton {
+ id: btnAddImage
+ enabled: mediaModel.count < 4
+ anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
- left: btnContentWarning.right
- leftMargin: Theme.paddingSmall
- }
- icon.source: "image://theme/icon-s-attach?"
- + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
- onClicked: {
- btnAddImage.enabled = false
- var once = true
- var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
- imagePicker.selectedContentChanged.connect(function () {
- var imagePath = imagePicker.selectedContent
- console.log(imagePath)
- imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
- imageUploader.setFile(imagePath)
- imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
- imageUploader.upload()
- })
- }
- }
+ left: btnContentWarning.right
+ leftMargin: Theme.paddingSmall
+ }
+ icon.source: "image://theme/icon-s-attach?"
+ + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
+ onClicked: {
+ btnAddImage.enabled = false
+ var once = true
+ var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
+ imagePicker.selectedContentChanged.connect(function () {
+ var imagePath = imagePicker.selectedContent
+ console.log(imagePath)
+ imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
+ imageUploader.setFile(imagePath)
+ imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
+ imageUploader.upload()
+ })
+ }
+ }
- ImageUploader {
- id: imageUploader
- onProgressChanged: {
- console.log("progress " + progress)
- uploadProgress.width = parent.width * progress
- }
- onSuccess: {
- uploadProgress.width = 0
- console.log(replyData)
- mediaModel.append(JSON.parse(replyData))
- }
- onFailure: {
- uploadProgress.width = 0
- btnAddImage.enabled = true
- console.log(status)
- console.log(statusText)
- }
- }
+ ImageUploader {
+ id: imageUploader
+ onProgressChanged: {
+ console.log("progress " + progress)
+ uploadProgress.width = parent.width * progress
+ }
+ onSuccess: {
+ uploadProgress.width = 0
+ console.log(replyData)
+ mediaModel.append(JSON.parse(replyData))
+ }
+ onFailure: {
+ uploadProgress.width = 0
+ btnAddImage.enabled = true
+ console.log(status)
+ console.log(statusText)
+ }
+ }
- ComboBox {
+ ComboBox {
id: privacy
- anchors {
+ anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
- left: btnAddImage.right
+ left: btnAddImage.right
right: btnSend.left
}
menu: ContextMenu {
- MenuItem {
+ MenuItem {
text: qsTr("Public")
- }
- MenuItem {
+ }
+ MenuItem {
text: qsTr("Unlisted")
- }
- MenuItem {
+ }
+ MenuItem {
text: qsTr("Followers-only")
- }
- MenuItem {
+ }
+ MenuItem {
text: qsTr("Direct")
- }
- }
- }
+ }
+ }
+ }
- IconButton {
- id: btnSend
- icon.source: "image://theme/icon-m-send?"
- + (pressed ? Theme.highlightColor : Theme.primaryColor)
- anchors {
+ IconButton {
+ id: btnSend
+ icon.source: "image://theme/icon-m-send?"
+ + (pressed ? Theme.highlightColor : Theme.primaryColor)
+ anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
- right: parent.right
+ right: parent.right
rightMargin: Theme.paddingSmall
- }
- enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
- onClicked: {
+ }
+ enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
+ onClicked: {
var visibility = ["public", "unlisted", "private", "direct"]
- var media_ids = []
- for (var k = 0; k < mediaModel.count; k++) {
- console.log(mediaModel.get(k).id)
- media_ids.push(mediaModel.get(k).id)
- }
- var msg = {
- "action": 'statuses',
- "method": 'POST',
- "model": mdl,
- "mode": "append",
- "params": {
- "status": toot.text,
- "visibility": visibility[privacy.currentIndex],
- "media_ids": media_ids
- },
- "conf": Logic.conf
- }
- if (toot_id)
- msg.params['in_reply_to_id'] = (toot_id) + ""
+ var media_ids = []
+ for (var k = 0; k < mediaModel.count; k++) {
+ console.log(mediaModel.get(k).id)
+ media_ids.push(mediaModel.get(k).id)
+ }
+ var msg = {
+ "action": 'statuses',
+ "method": 'POST',
+ "model": mdl,
+ "mode": "append",
+ "params": {
+ "status": toot.text,
+ "visibility": visibility[privacy.currentIndex],
+ "media_ids": media_ids
+ },
+ "conf": Logic.conf
+ }
+ if (toot_id)
+ msg.params['in_reply_to_id'] = (toot_id) + ""
- if (warningContent.visible && warningContent.text.length > 0) {
- msg.params['sensitive'] = 1
- msg.params['spoiler_text'] = warningContent.text
- }
+ if (warningContent.visible && warningContent.text.length > 0) {
+ msg.params['sensitive'] = 1
+ msg.params['spoiler_text'] = warningContent.text
+ }
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
mediaModel.clear()
sentBanner.showText(qsTr("Toot sent!"))
- }
- }
+ }
+ }
- Rectangle {
- id: uploadProgress
- color: Theme.highlightBackgroundColor
+ Rectangle {
+ id: uploadProgress
+ color: Theme.highlightBackgroundColor
anchors.bottom: parent.bottom
- anchors.left: parent.left
+ anchors.left: parent.left
height: Theme.itemSizeSmall * 0.05
- }
- }
+ }
+ }
- Component.onCompleted: {
- toot.cursorPosition = toot.text.length
- if (mdl.count > 0) {
- var setIndex = 0
- switch (mdl.get(0).status_visibility) {
- case "unlisted":
- setIndex = 1
- break
- case "private":
- setIndex = 2
- break
- case "direct":
- privacy.enabled = false
- setIndex = 3
- break
- default:
- privacy.enabled = true
- setIndex = 0
- }
- privacy.currentIndex = setIndex
- }
+ Component.onCompleted: {
+ toot.cursorPosition = toot.text.length
+ if (mdl.count > 0) {
+ var setIndex = 0
+ switch (mdl.get(0).status_visibility) {
+ case "unlisted":
+ setIndex = 1
+ break
+ case "private":
+ setIndex = 2
+ break
+ case "direct":
+ privacy.enabled = false
+ setIndex = 3
+ break
+ default:
+ privacy.enabled = true
+ setIndex = 0
+ }
+ privacy.currentIndex = setIndex
+ }
- console.log(JSON.stringify())
+ console.log(JSON.stringify())
- worker.sendMessage({
- "action": 'statuses/' + mdl.get(0).status_id + '/context',
- "method": 'GET',
- "model": mdl,
- "params": { },
- "conf": Logic.conf
- })
- }
+ worker.sendMessage({
+ "action": 'statuses/' + mdl.get(0).status_id + '/context',
+ "method": 'GET',
+ "model": mdl,
+ "params": { },
+ "conf": Logic.conf
+ })
+ }
BackgroundItem {
id: hiddenPanel
@@ -587,7 +586,7 @@ Page {
EmojiSelect {
id: emojiSelect
- }
+ }
InfoBanner {
id: sentBanner
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 6ccd4f0..a0bed46 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -184,7 +184,8 @@ Page {
"following_count": model.account_following_count,
"statuses_count": model.account_statuses_count,
"locked": model.account_locked,
- "bot": model.account_bot
+ "bot": model.account_bot,
+ "group": model.account_group
})
}
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index f0c0206..0cf7bd5 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -21,6 +21,7 @@ Page {
property int followers_count
property bool locked: false
property bool bot: false
+ property bool group: false
property bool following: false
property bool followed_by: false
property bool requested: false
@@ -68,16 +69,9 @@ Page {
case 'following_count':
following_count = messageObject.data
break;
- case 'acct':
- // line below was commented out, reason unknown
- // username = messageObject.data
- break;
- case 'locked':
- locked = messageObject.data
- break;
- case 'bot':
- bot = messageObject.data
- break;
+ /* case 'acct':
+ username = messageObject.data
+ break; */
case 'created_at':
created_at = messageObject.data
break;
@@ -99,10 +93,7 @@ Page {
break;
case 'blocking':
blocking = messageObject.data
- followers_count = followers_count + (blocking ? -1 : 0)
- break;
- case 'followed_by':
- followed_by = messageObject.data
+ // followers_count = followers_count + (blocking ? -1 : 0)
break;
}
}
@@ -121,13 +112,6 @@ Page {
}
worker.sendMessage(msg)
- // reason for crashes when opening ProfilePage.qml
- /* msg = {
- 'action' : "accounts/"+user_id,
- 'conf' : Logic.conf
- }
- worker.sendMessage(msg) */
-
} else {
var instance = Logic.conf['instance'].split("//")
msg = {
@@ -160,13 +144,10 @@ Page {
}
}
- ExpandingSectionGroup { // ProfilePage ExpandingSection
+ // ProfilePage ExpandingSection
+ ExpandingSectionGroup {
id: profileExpander
- anchors {
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
+ anchors.bottom: parent.bottom
ExpandingSection {
id: expandingSection1
@@ -174,13 +155,12 @@ Page {
//: If there's no good translation for "About", use "Details" (in details about profile).
qsTr("About")
content.sourceComponent: Column {
- height: Math.min( txtContainer, parent.height * 0.7 )
spacing: Theme.paddingLarge
Item {
id: txtContainer
width: parent.width
- height: Math.min( txtNote.height, parent.height * 0.55 )
+ height: profilePage.isPortrait ? Math.min( txtNote.height, parent.height * 0.5 ) : Math.min( txtNote.height, parent.height * 0.2 )
visible: {
if ((note.text === "") || ( note.text === "" )) {
false
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 29a3cca..4357a97 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -31,7 +31,7 @@ BackgroundItem {
size: BusyIndicatorSize.Small
opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
- running: avatar.status !== Image.Ready;
+ running: avatar.status !== Image.Ready
anchors.centerIn: parent
}
@@ -105,6 +105,7 @@ BackgroundItem {
"following_count": model.account_following_count,
"statuses_count": model.account_statuses_count,
"locked": model.account_locked,
- "bot": model.account_bot
+ "bot": model.account_bot,
+ "group": model.account_group
} )
}
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 650bfdb..0e60884 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -32,8 +32,8 @@ Item {
break;
case 2:
- placeholder1.visible = true;
- placeholder2.visible = true;
+ placeholder1.visible = true
+ placeholder2.visible = true
placeholder1.width = (holder.width-Theme.paddingSmall)/2
placeholder1.height = placeholder1.width
placeholder2.width = placeholder1.width
@@ -43,10 +43,10 @@ Item {
break;
case 3:
- placeholder1.visible = true;
- placeholder2.visible = true;
- placeholder3.visible = true;
- placeholder4.visible = false;
+ placeholder1.visible = true
+ placeholder2.visible = true
+ placeholder3.visible = true
+ placeholder4.visible = false
placeholder1.width = holder.width - Theme.paddingSmall - Theme.itemSizeLarge;
placeholder1.height = Theme.itemSizeLarge*2+Theme.paddingSmall
@@ -59,16 +59,16 @@ Item {
break;
case 4:
- placeholder1.visible = true;
- placeholder2.visible = true;
- placeholder3.visible = true;
- placeholder4.visible = true;
+ placeholder1.visible = true
+ placeholder2.visible = true
+ placeholder3.visible = true
+ placeholder4.visible = true
placeholder1.width = placeholder2.width = placeholder3.width = placeholder4.width = (holder.width - 3*Theme.paddingSmall)/4
placeholder1.height = placeholder2.height = placeholder3.height = placeholder4.height = Theme.itemSizeLarge*2+Theme.paddingSmall
- placeholder2.x = 1*(placeholder1.width)+ 1*Theme.paddingSmall;
- placeholder3.x = 2*(placeholder1.width)+ 2*Theme.paddingSmall;
- placeholder4.x = 3*(placeholder1.width)+ 3*Theme.paddingSmall;
+ placeholder2.x = 1*(placeholder1.width)+ 1*Theme.paddingSmall
+ placeholder3.x = 2*(placeholder1.width)+ 2*Theme.paddingSmall
+ placeholder4.x = 3*(placeholder1.width)+ 3*Theme.paddingSmall
holder.height = placeholder1.height
break;
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index 6347664..aa4f5e2 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -20,10 +20,11 @@ Item {
anchors.left: parent.left
}
- Image {
+ Icon {
id: icnBot
visible: account_bot
source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
+ color: Theme.primaryColor
width: account_bot ? Theme.iconSizeExtraSmall * 1.3 : 0
height: width
y: Theme.paddingLarge
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index de85db0..8410136 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,7 @@ Item {
property string bg: ""
width: parent.width
- height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height + Theme.paddingLarge
+ height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height
Rectangle {
id: bgImage
@@ -27,7 +27,6 @@ Item {
asynchronous: true
fillMode: Image.PreserveAspectCrop
source: bg
- opacity: 0.8
anchors.fill: parent
}
}
@@ -40,11 +39,11 @@ Item {
? Theme.highlightColor
: Theme.primaryColor)
else image
- width: description === "" ? Theme.iconSizeMedium : Theme.iconSizeLarge
+ width: Theme.iconSizeLarge
height: width
anchors {
left: parent.left
- leftMargin: Theme.paddingLarge
+ leftMargin: Theme.horizontalPageMargin
top: parent.top
topMargin: Theme.paddingLarge * 1.5
}
@@ -69,11 +68,11 @@ Item {
Column {
anchors {
top: parent.top
- topMargin: Theme.paddingLarge * 1.5
+ topMargin: Theme.paddingLarge
left: avatarImage.right
- leftMargin: Theme.paddingLarge
+ leftMargin: Theme.horizontalPageMargin
right: parent.right
- rightMargin: Theme.paddingLarge
+ rightMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
@@ -106,14 +105,32 @@ Item {
id: infoLbl
spacing: Theme.paddingLarge
layoutDirection: Qt.RightToLeft
- height: followed_by || locked || bot ? Theme.iconSizeSmall + Theme.paddingSmall : 0
+ height: followed_by || locked || bot || group ? Theme.iconSizeSmall + Theme.paddingSmall : 0
anchors {
top: avatarImage.bottom
- topMargin: Theme.paddingLarge
+ topMargin: Theme.paddingMedium
left: parent.left
- leftMargin: Theme.paddingLarge
+ leftMargin: Theme.horizontalPageMargin
right: parent.right
- rightMargin: Theme.paddingLarge
+ rightMargin: Theme.horizontalPageMargin
+ }
+
+ Rectangle {
+ id: groupBg
+ visible: (group ? true : false)
+ radius: Theme.paddingSmall
+ color: Theme.secondaryHighlightColor
+ width: groupLbl.width + 2*Theme.paddingLarge
+ height: parent.height
+
+ Label {
+ id: groupLbl
+ text: qsTr("Group")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.primaryColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ }
}
Rectangle {
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 98d5217..cd81ef3 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -93,7 +93,8 @@ BackgroundItem {
"following_count": model.account_following_count,
"statuses_count": model.account_statuses_count,
"locked": model.account_locked,
- "bot": model.account_bot
+ "bot": model.account_bot,
+ "group": model.account_group
} )
}
}
@@ -123,7 +124,7 @@ BackgroundItem {
visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
- source: "image://theme/icon-m-mail"
+ source: "../../images/icon-m-mail.svg?"
anchors {
horizontalCenter: avatar.horizontalCenter
top: avatar.bottom
@@ -172,7 +173,8 @@ BackgroundItem {
"following_count": model.reblog_account_following_count,
"statuses_count": model.reblog_account_statuses_count,
"locked": model.reblog_account_locked,
- "bot": model.reblog_account_bot
+ "bot": model.reblog_account_bot,
+ "group": model.reblog_account_group
} )
}
}
@@ -213,7 +215,7 @@ BackgroundItem {
Theme.paddingLarge
} else if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
Math.min( implicitHeight, Theme.itemSizeExtraLarge * 1.5 )
- } else content.length ? (contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
+ } else content.length ? ( contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight ) : 0
anchors {
left: miniHeader.left
right: miniHeader.right
@@ -249,6 +251,7 @@ BackgroundItem {
// Content warning cover for Toots
Rectangle {
+ id: contentWarningBg
color: Theme.highlightDimmerColor
visible: status_spoiler_text.length > 0
anchors.fill: parent
@@ -320,7 +323,7 @@ BackgroundItem {
model.reblogged = !model.reblogged
}
- Image {
+ Icon {
id: icRT
source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
width: Theme.iconSizeExtraSmall
@@ -347,9 +350,9 @@ BackgroundItem {
MenuItem {
id: mnuFavourite
visible: model.type !== "follow"
- text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
+ text: typeof model.status_favourited !== "undefined" && model.status_favourited ? qsTr("Unfavorite") : qsTr("Favorite")
onClicked: {
- var status = typeof model.favourited !== "undefined" && model.favourited
+ var status = typeof model.status_favourited !== "undefined" && model.status_favourited
worker.sendMessage({
"conf" : Logic.conf,
"params" : [],
@@ -358,25 +361,25 @@ BackgroundItem {
"action" : "statuses/"+model.status_id+"/" + (status ? "unfavourite" : "favourite")
})
model.status_favourites_count = !status ? model.status_favourites_count+1 : (model.status_favourites_count > 0 ? model.status_favourites_count-1 : model.status_favourites_count);
- model.favourited = !model.favourited
+ model.status_favourited = !model.status_favourited
}
- Image {
+ Icon {
id: icFA
+ source: "image://theme/icon-s-favorite?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
+ width: Theme.iconSizeExtraSmall
+ height: width
anchors {
leftMargin: Theme.horizontalPageMargin
left: parent.left
verticalCenter: parent.verticalCenter
}
- width: Theme.iconSizeExtraSmall
- height: width
- source: "image://theme/icon-s-favorite?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
}
Label {
- text: status_favourites_count // from API.js
+ text: status_favourites_count
font.pixelSize: Theme.fontSizeExtraSmall
- color: !model.favourited ? Theme.highlightColor : Theme.primaryColor
+ color: !model.status_favourited ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icFA.right
leftMargin: Theme.paddingMedium
@@ -385,6 +388,36 @@ BackgroundItem {
}
}
+ MenuItem {
+ id: mnuBookmark
+ visible: model.type !== "follow"
+ text: typeof model.status_bookmarked !== "undefined" && model.status_bookmarked ? qsTr("Remove Bookmark") : qsTr("Bookmark")
+ onClicked: {
+ var status = typeof model.status_bookmarked !== "undefined" && model.status_bookmarked
+ worker.sendMessage({
+ "conf" : Logic.conf,
+ "params" : [],
+ "method" : "POST",
+ "bgAction": true,
+ "action" : "statuses/"+model.status_id+"/" + (status ? "unbookmark" : "bookmark")
+ })
+ model.status_bookmarked = !model.status_bookmarked
+ }
+
+ Icon {
+ source: "../../images/icon-s-bookmark.svg?"
+ color: !model.status_bookmarked ? Theme.highlightColor : Theme.primaryColor
+ width: Theme.iconSizeExtraSmall
+ height: width
+ anchors {
+ left: parent.left
+ leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
+ verticalCenter: parent.verticalCenter
+ }
+ }
+ }
+
+
MenuItem {
id: mnuMention
visible: model.type === "follow"
@@ -397,16 +430,16 @@ BackgroundItem {
})
}
- Image {
+ Icon {
id: icMT
+ source: "image://theme/icon-s-chat?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
+ width: Theme.iconSizeExtraSmall
+ height: width
anchors {
- leftMargin: Theme.horizontalPageMargin
+ leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
left: parent.left
verticalCenter: parent.verticalCenter
}
- width: Theme.iconSizeExtraSmall
- height: width
- source: "image://theme/icon-s-chat?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
}
}
}
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index c593d66..f41bab8 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -203,6 +203,10 @@
Folgt dir
+
+
+ Gruppe
+
ProfilePage
@@ -384,5 +388,13 @@
Konversation
+
+
+ Lesezeichen entfernen
+
+
+
+ Lesezeichen
+
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index ed641fd..7e70cd2 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 27c26c2..d538f0d 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -62,11 +62,11 @@
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ Respuesta
-
+ Cerrar respuesta
@@ -201,7 +201,11 @@
-
+ Te sigue
+
+
+
+ Grupo
@@ -234,7 +238,7 @@
Is a button. Keep it as short as possible.
-
+ Requerido
@@ -267,7 +271,7 @@
-
+ Mencionar
@@ -378,11 +382,19 @@
-
+ Mencionar
-
+ Conversación
+
+
+
+ Eliminar marcador
+
+
+
+ Marcador
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 500e6e0..6f2dcba 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -203,6 +203,10 @@
Vous suit
+
+
+ Groupe
+
ProfilePage
@@ -384,5 +388,13 @@
Conversation
+
+
+ Retirer marque-page
+
+
+
+ Ajouter aux marque-pages
+
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index bcd2957..2f3bd50 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -4,23 +4,23 @@
API
-
+
ha apprezzato
-
+
ha iniziato a seguirti
-
+
ha condiviso
-
+
ha detto
@@ -28,59 +28,59 @@
ConversationPage
-
+
Use the translation of "Copy Link" for a shorter PullDownMenu label
Copia link
-
+
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
Risposta
-
+
Chiudere Risposta
-
+
Contenuto avviso
-
+
A cosa stai pensando?
-
+
Elimina
-
+
Pubblico
-
+
Non elencato
-
+
Solo ai seguaci
-
+
Diretto
-
+
Toot è stato pubblicato!
@@ -175,7 +175,7 @@
@utente o #termine
-
+
Nuovo toot
@@ -238,12 +238,17 @@
ProfileHeader
-
+
+
+ Gruppo
+
+
+
Ti segue
-
+
Bot
@@ -251,79 +256,79 @@
ProfilePage
-
+
If there's no good translation for "About", use "Details" (in details about profile).
Dettagli
-
+
Will show as: "35 Followers"
Seguaci
-
+
Will show as: "23 Following"
Segue
-
+
Will show as: "115 Statuses"
Toots
-
-
+
+
Menzionare
-
+
Is a button. Keep it as short as possible.
Smetti di seguire
-
+
Is a button. Keep it as short as possible.
Richiesto
-
+
Is a button. Keep it as short as possible.
Segui
-
+
Is a button. Keep it as short as possible.
Non silenziare
-
+
Is a button. Keep it as short as possible.
Silenzia
-
+
Is a button. Keep it as short as possible.
Sblocca
-
+
Is a button. Keep it as short as possible.
Blocca
-
+
Aprire nel browser
@@ -440,33 +445,43 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
+ Elimina segnalibro
+
+
+
+
+ Aggiungi segnalibro
+
+
+
+
Menzionare
-
+
Conversazione
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index a3259b1..e24485a 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -29,11 +29,11 @@
-
+ Waarschuwingstekst
-
+ Wat wil je kwijt?
@@ -41,32 +41,32 @@
-
+ Openbaar
-
+ Minder openbaar
-
+ Alleen volgers
-
+ Direct
-
+ Toot verzonden!
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ Antwoord
-
+ Antwoord verbergen
@@ -106,7 +106,7 @@
-
+ Geldig Mastodon URL
@@ -201,7 +201,11 @@
-
+ Volgt jou
+
+
+
+ Groep
@@ -267,7 +271,7 @@
- Vermelden
+ Vermelden
@@ -382,7 +386,15 @@
-
+ Conversatie
+
+
+
+ Bookmarken
+
+
+
+ Bladwijzer verwijderen
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 52517c9..9c9ccf0 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 69ca0d0..70c903b 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index fedaf9c..9a2caba 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 9171ede..105378a 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index d80e7d8..aab50f1 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index d99d520..67ea6cf 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 5d18598..a00b9e4 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -203,6 +203,10 @@
+
+
+
+
ProfilePage
@@ -384,5 +388,13 @@
+
+
+
+
+
+
+
+
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 8005ce9..e3b0909 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -62,11 +62,11 @@
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ Reply
-
+ Hide Reply
@@ -201,7 +201,11 @@
-
+ Follows you
+
+
+
+ Group
@@ -382,7 +386,15 @@
-
+ Conversation
+
+
+
+ Remove Bookmark
+
+
+
+ Bookmark
From 917851a4e7c1483e0a824c1d5b3ec4af02ec1cc4 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 19:14:45 +0200
Subject: [PATCH 45/70] version 1.0.6
---
harbour-tooterb.pro.user | 734 +++++++++++++++++++++++++++++++++++-
rpm/harbour-tooterb.changes | 13 +
rpm/harbour-tooterb.spec | 4 +-
rpm/harbour-tooterb.yaml | 4 +-
4 files changed, 748 insertions(+), 7 deletions(-)
diff --git a/harbour-tooterb.pro.user b/harbour-tooterb.pro.user
index a74221b..d29aa36 100644
--- a/harbour-tooterb.pro.user
+++ b/harbour-tooterb.pro.user
@@ -1,6 +1,6 @@
-
+
EnvironmentId
@@ -8,7 +8,7 @@
ProjectExplorer.Project.ActiveTarget
- 0
+ 2
ProjectExplorer.Project.EditorSettings
@@ -789,9 +789,737 @@
1
+
+ ProjectExplorer.Project.Target.2
+
+ SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-i486
+ 1
+ 1
+ 0
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Debug
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Release
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Profile
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy As RPM Package
+
+ QmakeProjectManager.MerRpmDeployConfiguration
+
+
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmBuildStep
+
+
+ true
+ RPM Validation
+
+ QmakeProjectManager.MerRpmValidationStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Build RPM Package For Manual Deployment
+
+ QmakeProjectManager.MerMb2RpmBuildConfiguration
+
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ Rsync
+
+ QmakeProjectManager.MerRsyncDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy By Copying Binaries
+
+ QmakeProjectManager.MerRSyncDeployConfiguration
+
+ 3
+
+
+ dwarf
+
+ cpu-cycles
+
+
+ 250
+ -F
+ true
+ 4096
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ kcachegrind
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ C:/Users/XPAM/Github/Github-App/harbour-tooter
+ false
+ -1
+ 3
+
+ 1
+
+
+ harbour-tooterb (on Sailfish OS Emulator 3.3.0.16)
+ QmakeProjectManager.MerRunConfiguration:C:/Users/XPAM/Github/Github-App/harbour-tooter/harbour-tooterb.pro
+ 1
+
+ false
+
+ 3768
+ false
+ true
+ false
+ false
+ true
+
+
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.3
+
+ SailfishOS-3.2.1.20-armv7hl (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-armv7hl (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-armv7hl
+ 1
+ 1
+ 0
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_armv7hl_in_Sailfish_OS_Build_Engine-Debug
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_armv7hl_in_Sailfish_OS_Build_Engine-Release
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_armv7hl_in_Sailfish_OS_Build_Engine-Profile
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy As RPM Package
+
+ QmakeProjectManager.MerRpmDeployConfiguration
+
+
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmBuildStep
+
+
+ true
+ RPM Validation
+
+ QmakeProjectManager.MerRpmValidationStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Build RPM Package For Manual Deployment
+
+ QmakeProjectManager.MerMb2RpmBuildConfiguration
+
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ Rsync
+
+ QmakeProjectManager.MerRsyncDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy By Copying Binaries
+
+ QmakeProjectManager.MerRSyncDeployConfiguration
+
+ 3
+
+
+ dwarf
+
+ cpu-cycles
+
+
+ 250
+ -F
+ true
+ 4096
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ kcachegrind
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ C:/Users/XPAM/Github/Github-App/harbour-tooter
+ false
+ -1
+ 3
+
+ 1
+
+
+ harbour-tooterb (on Sailfish OS Emulator 3.3.0.16)
+ QmakeProjectManager.MerRunConfiguration:C:/Users/XPAM/Github/Github-App/harbour-tooter/harbour-tooterb.pro
+ 1
+
+ false
+
+ 3768
+ false
+ true
+ false
+ false
+ true
+
+
+
+ 1
+
+
ProjectExplorer.Project.TargetCount
- 2
+ 4
ProjectExplorer.Project.Updater.FileVersion
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index c1868e3..32b30af 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,16 @@
+*Thu Jun 18 2020 molan 1.0.6-0
+- Fix app crash when open some Profile pages
+- Fix sometimes missing favourite / reblog counts
+- Fix various QML warnings, replace deprecated Silica items
+- Add save to Bookmarks feature
+- Add Follows you / Locked / Bot / Group labels to Profile Page header
+- Add Bot icon to user display name
+- Add clicking on reblog-avatar opens reblog user profile
+- Remove Locked icon from user display name
+- Further improved Notification Page / general UI
+- Code refactoring & other changes under the hood
+- Translation updates
+
*Fri Jun 12 2020 molan 1.0.5-1
- [hotfix] fix missing images in mentions on Notification page
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index 8f1508a..6256147 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -13,8 +13,8 @@ Name: harbour-tooterb
%{!?qtc_make:%define qtc_make make}
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
-Version: 1.0.5
-Release: 1
+Version: 1.0.6
+Release: 0
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index 2bfca44..b91e9f3 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
-Version: 1.0.5
-Release: 1
+Version: 1.0.6
+Release: 0
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
From 35f7a29db047b1b86c60e35de0a44d70f9420693 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 19:42:01 +0200
Subject: [PATCH 46/70] fix missing icon direct messages
---
harbour-tooterb.pro.user | 734 +++++++++++------------
qml/pages/components/VisualContainer.qml | 5 +-
2 files changed, 370 insertions(+), 369 deletions(-)
diff --git a/harbour-tooterb.pro.user b/harbour-tooterb.pro.user
index d29aa36..0ee6300 100644
--- a/harbour-tooterb.pro.user
+++ b/harbour-tooterb.pro.user
@@ -1,6 +1,6 @@
-
+
EnvironmentId
@@ -8,7 +8,7 @@
ProjectExplorer.Project.ActiveTarget
- 2
+ 0
ProjectExplorer.Project.EditorSettings
@@ -63,6 +63,370 @@
ProjectExplorer.Project.Target.0
+
+ SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
+ SailfishOS-3.2.1.20-i486
+ 1
+ 1
+ 0
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Debug
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Release
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Profile
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 3
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Start Build Engine
+
+ Mer.MerSdkStartStep
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 2
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy As RPM Package
+
+ QmakeProjectManager.MerRpmDeployConfiguration
+
+
+
+
+ true
+ RPM
+
+ QmakeProjectManager.MerRpmBuildStep
+
+
+ true
+ RPM Validation
+
+ QmakeProjectManager.MerRpmValidationStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Build RPM Package For Manual Deployment
+
+ QmakeProjectManager.MerMb2RpmBuildConfiguration
+
+
+
+
+ true
+ Prepare Target
+
+ QmakeProjectManager.MerPrepareTargetStep
+
+
+ true
+ Rsync
+
+ QmakeProjectManager.MerRsyncDeployStep
+
+ 2
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy By Copying Binaries
+
+ QmakeProjectManager.MerRSyncDeployConfiguration
+
+ 3
+
+
+ dwarf
+
+ cpu-cycles
+
+
+ 250
+ -F
+ true
+ 4096
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ kcachegrind
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ C:/Users/XPAM/Github/Github-App/harbour-tooter
+ false
+ -1
+ 3
+
+ 1
+
+
+ harbour-tooterb (on Sailfish OS Emulator 3.3.0.16)
+ QmakeProjectManager.MerRunConfiguration:C:/Users/XPAM/Github/Github-App/harbour-tooter/harbour-tooterb.pro
+ 1
+
+ false
+
+ 3768
+ false
+ true
+ false
+ false
+ true
+
+
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.1
SailfishOS-3.3.0.16-armv7hl (in Sailfish OS Build Engine)
SailfishOS-3.3.0.16-armv7hl (in Sailfish OS Build Engine)
@@ -426,7 +790,7 @@
- ProjectExplorer.Project.Target.1
+ ProjectExplorer.Project.Target.2
SailfishOS-3.3.0.16-i486 (in Sailfish OS Build Engine)
SailfishOS-3.3.0.16-i486 (in Sailfish OS Build Engine)
@@ -789,370 +1153,6 @@
1
-
- ProjectExplorer.Project.Target.2
-
- SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
- SailfishOS-3.2.1.20-i486 (in Sailfish OS Build Engine)
- SailfishOS-3.2.1.20-i486
- 1
- 1
- 0
-
- C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Debug
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- qmake
-
- QtProjectManager.QMakeBuildStep
- true
-
- false
- false
- false
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 3
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 2
- Clean
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Debug
- Debug
- Qt4ProjectManager.Qt4BuildConfiguration
- 2
- true
-
-
- C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Release
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- qmake
-
- QtProjectManager.QMakeBuildStep
- false
-
- false
- false
- false
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 3
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 2
- Clean
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Release
- Release
- Qt4ProjectManager.Qt4BuildConfiguration
- 0
- true
-
-
- C:/Users/XPAM/Github/Github-App/build-harbour-tooterb-SailfishOS_3_2_1_20_i486_in_Sailfish_OS_Build_Engine-Profile
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- qmake
-
- QtProjectManager.QMakeBuildStep
- true
-
- false
- true
- false
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- false
-
-
- false
-
- 3
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Start Build Engine
-
- Mer.MerSdkStartStep
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- true
- clean
-
- false
-
- 2
- Clean
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Profile
- Profile
- Qt4ProjectManager.Qt4BuildConfiguration
- 0
- true
-
- 3
-
-
-
- true
- Prepare Target
-
- QmakeProjectManager.MerPrepareTargetStep
-
-
- true
- RPM
-
- QmakeProjectManager.MerRpmDeployStep
-
- 2
- Deploy
-
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- Deploy As RPM Package
-
- QmakeProjectManager.MerRpmDeployConfiguration
-
-
-
-
- true
- RPM
-
- QmakeProjectManager.MerRpmBuildStep
-
-
- true
- RPM Validation
-
- QmakeProjectManager.MerRpmValidationStep
-
- 2
- Deploy
-
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- Build RPM Package For Manual Deployment
-
- QmakeProjectManager.MerMb2RpmBuildConfiguration
-
-
-
-
- true
- Prepare Target
-
- QmakeProjectManager.MerPrepareTargetStep
-
-
- true
- Rsync
-
- QmakeProjectManager.MerRsyncDeployStep
-
- 2
- Deploy
-
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- Deploy By Copying Binaries
-
- QmakeProjectManager.MerRSyncDeployConfiguration
-
- 3
-
-
- dwarf
-
- cpu-cycles
-
-
- 250
- -F
- true
- 4096
- false
- false
- 1000
-
- true
-
- false
- false
- false
- false
- true
- 0.01
- 10
- true
- kcachegrind
- 1
- 25
-
- 1
- true
- false
- true
- valgrind
-
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
- C:/Users/XPAM/Github/Github-App/harbour-tooter
- false
- -1
- 3
-
- 1
-
-
- harbour-tooterb (on Sailfish OS Emulator 3.3.0.16)
- QmakeProjectManager.MerRunConfiguration:C:/Users/XPAM/Github/Github-App/harbour-tooter/harbour-tooterb.pro
- 1
-
- false
-
- 3768
- false
- true
- false
- false
- true
-
-
-
- 1
-
-
ProjectExplorer.Project.Target.3
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 75c8ddc..6058b12 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -119,12 +119,13 @@ BackgroundItem {
}
}
- Image {
+ Icon {
id: iconDirectMsg
visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
- source: "../../images/icon-m-mail.svg?"
+ source: "image://theme/icon-m-mail?"
+ color: Theme.primaryColor
anchors {
horizontalCenter: avatar.horizontalCenter
top: avatar.bottom
From a74768c9b3539bdb2b91c121035dbf8cfc829718 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 19:44:36 +0200
Subject: [PATCH 47/70] fix missing icon direct messages
---
qml/pages/components/VisualContainer.qml | 5 +++--
translations/harbour-tooter-it.ts | 18 +++++++++---------
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index cd81ef3..571888c 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -119,12 +119,13 @@ BackgroundItem {
}
}
- Image {
+ Icon {
id: iconDirectMsg
visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
- source: "../../images/icon-m-mail.svg?"
+ source: "image://theme/icon-m-mail?"
+ color: Theme.primaryColor
anchors {
horizontalCenter: avatar.horizontalCenter
top: avatar.bottom
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 2f3bd50..3304407 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -445,43 +445,43 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
Elimina segnalibro
-
+
Aggiungi segnalibro
-
-
+
+
Menzionare
-
+
Conversazione
From e140c46befbdac2d9194b951c631c134bdd25fb1 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Thu, 18 Jun 2020 20:01:37 +0200
Subject: [PATCH 48/70] fix Italian translation
---
rpm/harbour-tooterb.changes | 2 +-
rpm/harbour-tooterb.spec | 2 +-
rpm/harbour-tooterb.yaml | 2 +-
translations/harbour-tooterb-it.ts | 22 +++++++++++-----------
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index 32b30af..d93b543 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,4 +1,4 @@
-*Thu Jun 18 2020 molan 1.0.6-0
+*Thu Jun 18 2020 molan 1.0.6-1
- Fix app crash when open some Profile pages
- Fix sometimes missing favourite / reblog counts
- Fix various QML warnings, replace deprecated Silica items
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index 6256147..dd2e4f5 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -14,7 +14,7 @@ Name: harbour-tooterb
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
Version: 1.0.6
-Release: 0
+Release: 1
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index b91e9f3..a23e60b 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
Version: 1.0.6
-Release: 0
+Release: 1
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
diff --git a/translations/harbour-tooterb-it.ts b/translations/harbour-tooterb-it.ts
index 007307c..5862b75 100644
--- a/translations/harbour-tooterb-it.ts
+++ b/translations/harbour-tooterb-it.ts
@@ -65,12 +65,12 @@
Pubblico
- s
+
Non elencato
- s
+
Solo ai seguaci
@@ -445,43 +445,43 @@
VisualContainer
-
+
Annulla condivisione
-
+
Condividi
-
+
Annulla apprezzamento
-
+
Apprezzato
-
+
Elimina segnalibro
-
+
Aggiungi segnalibro
-
-
+
+
Menzionare
-
+
Conversazione
From 131d082d2989ae9468f360f5f9accf29e170f2bd Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 19 Jun 2020 10:16:13 +0200
Subject: [PATCH 49/70] ui fixes / translation updates
---
harbour-tooter.pro | 1 -
qml/images/icon-s-bot.svg | 11 -
qml/pages/ConversationPage.qml | 26 +--
qml/pages/SettingsPage.qml | 26 +--
qml/pages/components/ItemUser.qml | 26 +--
qml/pages/components/MiniHeader.qml | 27 +--
qml/pages/components/MiniStatus.qml | 5 +-
qml/pages/components/MyList.qml | 2 +-
qml/pages/components/VisualContainer.qml | 44 +---
translations/harbour-tooter-de.ts | 5 +-
translations/harbour-tooter-el.ts | 5 +-
translations/harbour-tooter-es.ts | 5 +-
translations/harbour-tooter-fr.ts | 7 +-
translations/harbour-tooter-it.ts | 262 ++++++++---------------
translations/harbour-tooter-nl.ts | 5 +-
translations/harbour-tooter-nl_BE.ts | 5 +-
translations/harbour-tooter-oc.ts | 5 +-
translations/harbour-tooter-pl.ts | 5 +-
translations/harbour-tooter-ru.ts | 5 +-
translations/harbour-tooter-sr.ts | 5 +-
translations/harbour-tooter-sv.ts | 5 +-
translations/harbour-tooter-zh_CN.ts | 5 +-
translations/harbour-tooter.ts | 5 +-
23 files changed, 154 insertions(+), 343 deletions(-)
delete mode 100644 qml/images/icon-s-bot.svg
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index a78b746..3e4ae73 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -73,7 +73,6 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/LoginPage.qml \
qml/pages/Browser.qml \
qml/lib/API.js \
- qml/images/icon-s-bot.svg \
qml/images/icon-s-following \
qml/images/icon-s-bookmark \
qml/images/icon-m-emoji.svg \
diff --git a/qml/images/icon-s-bot.svg b/qml/images/icon-s-bot.svg
deleted file mode 100644
index d4c484c..0000000
--- a/qml/images/icon-s-bot.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 674a76c..199e7ca 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -222,12 +222,6 @@ Page {
id: warningContent
visible: false
height: visible ? implicitHeight : 0
- anchors {
- top: parent.top
- topMargin: Theme.paddingMedium
- left: parent.left
- right: parent.right
- }
autoScrollEnabled: true
labelVisible: false
font.pixelSize: Theme.fontSizeSmall
@@ -235,6 +229,12 @@ Page {
placeholderColor: palette.highlightColor
color: palette.highlightColor
horizontalAlignment: Text.AlignLeft
+ anchors {
+ top: parent.top
+ topMargin: Theme.paddingMedium
+ left: parent.left
+ right: parent.right
+ }
EnterKey.onClicked: {}
}
@@ -245,13 +245,6 @@ Page {
TextArea {
id: toot
- anchors {
- top: warningContent.bottom
- topMargin: Theme.paddingMedium
- left: parent.left
- right: parent.right
- rightMargin: Theme.paddingLarge * 2
- }
autoScrollEnabled: true
labelVisible: false
text: description !== "" && (description.charAt(0) === '@'
@@ -266,6 +259,13 @@ Page {
horizontalAlignment: Text.AlignLeft
placeholderText: qsTr("What's on your mind?")
font.pixelSize: Theme.fontSizeSmall
+ anchors {
+ top: warningContent.bottom
+ topMargin: Theme.paddingMedium
+ left: parent.left
+ right: parent.right
+ rightMargin: Theme.paddingLarge * 2
+ }
EnterKey.onClicked: {}
onTextChanged: {
textOperations.text = toot.text
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index 19b2dd4..fd78501 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -70,7 +70,7 @@ Page {
Button {
id: btnRemoveAccount
text: Logic.conf['login'] ? qsTr("Remove Account") : qsTr("Add Account")
- width: Theme.buttonWidthMedium
+ preferredWidth: Theme.buttonWidthMedium
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
remorsePopup.execute(btnRemoveAccount.text, function() {
@@ -125,6 +125,7 @@ Page {
}
SectionHeader {
+ //: Translation alternative: "Development"
text: qsTr("Credits")
}
@@ -146,13 +147,6 @@ Page {
mail: ""
}
- ListElement {
- name: "Miodrag Nikolić"
- desc: qsTr("Visual identity")
- mastodon: ""
- mail: "micotakis@gmail.com"
- }
-
ListElement {
name: "Molan"
desc: qsTr("Development and translations")
@@ -160,6 +154,13 @@ Page {
mail: ""
}
+ ListElement {
+ name: "Miodrag Nikolić"
+ desc: qsTr("Visual identity")
+ mastodon: ""
+ mail: "micotakis@gmail.com"
+ }
+
ListElement {
name: "Quentin PAGÈS / Quenti ♏"
desc: qsTr("Occitan & French translation")
@@ -187,13 +188,6 @@ Page {
mastodon: ""
mail: ""
}
-
- ListElement {
- name: "Mohamed-Touhami MAHDI"
- desc: qsTr("Added README file")
- mastodon: "dragnucs@touha.me"
- mail: "touhami@touha.me"
- }
}
Item {
@@ -210,7 +204,7 @@ Page {
}
onClicked: {
if (model.mastodon !== ""){
- var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
+ var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
pageStack.push(Qt.resolvedUrl("ConversationPage.qml"), {
headerTitle: "Mention",
description: '@'+model.mastodon,
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 4357a97..edd79fa 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -12,12 +12,13 @@ BackgroundItem {
Rectangle {
id: avatar
+ color: "transparent"
width: Theme.itemSizeExtraSmall
height: width
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: Theme.horizontalPageMargin
- color: Theme.highlightDimmerColor
+
Image {
id: img
@@ -55,40 +56,33 @@ BackgroundItem {
}
Item {
+ id: userdescription
+ height: account_acct.height + display_name.height
anchors.left: avatar.right
anchors.leftMargin: Theme.paddingLarge
+ anchors.right: parent.right
+ anchors.rightMargin: Theme.horizontalPageMargin
anchors.verticalCenter: parent.verticalCenter
- height: account_acct.height + display_name.height
Label {
id: display_name
text: account_display_name ? account_display_name : account_username.split('@')[0]
color: !pressed ? Theme.primaryColor : Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
+ truncationMode: TruncationMode.Fade
+ width: parent.width - Theme.paddingMedium
anchors.top: parent.top
}
- Image {
- id: icnBot
- visible: account_bot
- source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
- width: account_bot ? Theme.iconSizeExtraSmall : 0
- height: width
- y: Theme.paddingLarge
- anchors {
- left: display_name.right
- leftMargin: Theme.paddingSmall
- verticalCenter: display_name.verticalCenter
- }
- }
-
Label {
id: account_acct
text: "@"+model.account_acct
color: !pressed ? Theme.secondaryColor : Theme.secondaryHighlightColor
anchors.leftMargin: Theme.paddingMedium
font.pixelSize: Theme.fontSizeExtraSmall
+ truncationMode: TruncationMode.Fade
+ width: parent.width - Theme.paddingMedium
anchors.top: display_name.bottom
}
}
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index aa4f5e2..1774e95 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -16,22 +16,10 @@ Item {
( pressed ? Theme.secondaryHighlightColor : (!highlight ? Theme.secondaryColor : Theme.secondaryHighlightColor ))
} else ( pressed ? Theme.highlightColor : ( !highlight ? Theme.primaryColor : Theme.secondaryColor ))
truncationMode: TruncationMode.Fade
- width: contentWidth > parent.width /2 ? parent.width /2 : contentWidth
- anchors.left: parent.left
- }
-
- Icon {
- id: icnBot
- visible: account_bot
- source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
- color: Theme.primaryColor
- width: account_bot ? Theme.iconSizeExtraSmall * 1.3 : 0
- height: width
- y: Theme.paddingLarge
+ width: myList.type !== "follow" ? ( contentWidth > parent.width /2 ? parent.width /2 : contentWidth ) : parent.width - Theme.paddingMedium
anchors {
- left: lblName.right
- leftMargin: Theme.paddingSmall
- verticalCenter: lblName.verticalCenter
+ left: parent.left
+ leftMargin: Theme.paddingMedium
}
}
@@ -43,8 +31,8 @@ Item {
color: ( pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor )
truncationMode: TruncationMode.Fade
anchors {
- left: icnBot ? icnBot.right : icnLocked.right
- leftMargin: Theme.paddingSmall
+ left: lblName.right
+ leftMargin: Theme.paddingMedium
right: lblDate.left
rightMargin: Theme.paddingMedium
verticalCenter: lblName.verticalCenter
@@ -53,13 +41,15 @@ Item {
Label {
id: lblScreenNameFollow
- visible: model.type === "follow" && myList.type === "notifications"
+ visible: model.type === "follow"
text: '@'+account_username
font.pixelSize: Theme.fontSizeExtraSmall
color: ( pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor )
+ width: parent.width - Theme.paddingMedium
truncationMode: TruncationMode.Fade
anchors {
left: parent.left
+ leftMargin: Theme.paddingMedium
top: lblName.bottom
}
}
@@ -72,6 +62,7 @@ Item {
horizontalAlignment: Text.AlignRight
anchors {
right: parent.right
+ rightMargin: Theme.horizontalPageMargin
verticalCenter: lblName.verticalCenter
}
}
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index 48b77d6..946fe98 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -7,6 +7,7 @@ Item {
visible: true
height: icon.height+Theme.paddingMedium
width: parent.width
+
Icon {
id: icon
visible: type.length
@@ -27,7 +28,7 @@ Item {
id: lblRtByName
visible: type.length
text: {
- var action = ""
+ var action = "";
switch(type){
case "reblog":
action = qsTr('boosted');
@@ -42,7 +43,7 @@ Item {
miniStatus.visible = false
action = type;
}
- return typeof reblog_account_username !== "undefined" ? "@" + reblog_account_username + " " + action : " "
+ return typeof reblog_account_username !== "undefined" ? '@' + reblog_account_username + " " + action : " "
}
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index 14f90ea..ec732a4 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -84,7 +84,7 @@ SilicaListView {
}
}
- delegate: VisualContainer { }
+ delegate: VisualContainer {}
add: Transition {
NumberAnimation { property: "opacity"; from: 0; to: 1.0; duration: 800 }
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 571888c..0d7b014 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -29,22 +29,8 @@ BackgroundItem {
}
}
- // Background for reblogs and favourited statuses in Notification View
- /* Rectangle {
- id: bgNotifications
- x: 0
- y: 0
- visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
- width: parent.width
- height: parent.height
- opacity: 0.5
- gradient: Gradient {
- GradientStop { position: -0.5; color: "transparent" }
- GradientStop { position: 0.4; color: Theme.highlightDimmerColor }
- }
- } */
-
- MiniStatus { // Element showing reblog- or favourite status on top of Toot
+ // Element showing reblog, favourite, follow status on top of Toot
+ MiniStatus {
id: miniStatus
anchors {
leftMargin: Theme.horizontalPageMargin
@@ -99,6 +85,7 @@ BackgroundItem {
}
}
+ // Avatar dimmer for facourite and reblog notifications
Rectangle {
visible: myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )
opacity: 0.5
@@ -106,19 +93,6 @@ BackgroundItem {
anchors.fill: avatar
}
- Image {
- id: iconTR
- visible: typeof status_reblogged !== "undefined" && status_reblogged
- width: Theme.iconSizeExtraSmall
- height: width
- source: "image://theme/icon-s-retweet"
- anchors {
- top: avatar.bottom
- topMargin: Theme.paddingMedium
- left: avatar.left
- }
- }
-
Icon {
id: iconDirectMsg
visible: status_visibility === "direct"
@@ -188,16 +162,13 @@ BackgroundItem {
anchors {
top: avatar.top
left: avatar.right
- leftMargin: Theme.paddingMedium
right: parent.right
- rightMargin: Theme.horizontalPageMargin
}
}
// Toot content
Label {
id: lblContent
-
visible: model.type !== "follow"
text: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
content
@@ -219,7 +190,9 @@ BackgroundItem {
} else content.length ? ( contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight ) : 0
anchors {
left: miniHeader.left
+ leftMargin: Theme.paddingMedium
right: miniHeader.right
+ rightMargin: Theme.horizontalPageMargin
top: miniHeader.bottom
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
@@ -294,8 +267,8 @@ BackgroundItem {
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject')
height: Theme.iconSizeExtraLarge * 2
anchors {
- left: miniHeader.left
- right: miniHeader.right
+ left: lblContent.left
+ right: lblContent.right
top: lblContent.bottom
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
@@ -406,6 +379,7 @@ BackgroundItem {
}
Icon {
+ id: icBM
source: "../../images/icon-s-bookmark.svg?"
color: !model.status_bookmarked ? Theme.highlightColor : Theme.primaryColor
width: Theme.iconSizeExtraSmall
@@ -437,8 +411,8 @@ BackgroundItem {
width: Theme.iconSizeExtraSmall
height: width
anchors {
- leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
left: parent.left
+ leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
verticalCenter: parent.verticalCenter
}
}
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index f41bab8..b82d09c 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Über
@@ -348,10 +349,6 @@
Spanische Übersetzung
-
-
- Erstellung README-Datei
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 7e70cd2..8dd7c56 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Ευχαριστίες
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index d538f0d..ce1675f 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Créditos
@@ -348,10 +349,6 @@
Traducción al español
-
-
- Añadido archivo README
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 6f2dcba..e302031 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -66,7 +66,7 @@
- Fermer Répondre
+ Masquer la réponse
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Développement
@@ -348,10 +349,6 @@
Traduction espagnole
-
-
- Fichier README ajouté
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 3304407..5c40768 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -4,23 +4,18 @@
API
-
ha apprezzato
-
ha iniziato a seguirti
-
ha condiviso
-
-
ha detto
@@ -28,80 +23,66 @@
ConversationPage
-
Use the translation of "Copy Link" for a shorter PullDownMenu label
Copia link
-
-
- "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
- Risposta
-
-
-
-
- Chiudere Risposta
-
-
-
Contenuto avviso
-
A cosa stai pensando?
-
Elimina
-
Pubblico
-
Non elencato
-
Solo ai seguaci
-
Diretto
-
Toot è stato pubblicato!
+
+
+ "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
+ Rispondere
+
+
+
+ Chuidere risposta
+
CoverPage
-
- Nuovo toot
+ Nuovo Toot
EmojiSelect
-
Emojis
-
Tap per inserire
@@ -109,7 +90,6 @@
ImageUploader
-
Il file %1 non esiste
@@ -117,27 +97,22 @@
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
@@ -145,45 +120,37 @@
MainPage
-
Home
-
Notifiche
-
-
- Locale
+
+ Nuovo Toot
-
-
- Federazione
-
-
-
Cerca
-
- @utente o #termine
+ @utente o #terme
-
-
- Nuovo toot
+
+ Locale
+
+
+
+ Federazione
MediaFullScreen
-
Errore durante caricamento
@@ -191,17 +158,14 @@
MiniStatus
-
ha condiviso
-
ha apprezzato
-
ha iniziato a seguirti
@@ -209,281 +173,225 @@
MyList
-
-
- Caricamento
+
+ Caricare altri
-
-
- Attendere un momento...
-
-
-
Impostazioni
-
-
-
- Nuovo toot
+
+ Caricamento
-
-
- Caricare altri
+
+ Attendere un momento...
+
+
+
+ Nuovo Toot
ProfileHeader
-
-
- Gruppo
+
+ Bot
-
Ti segue
-
-
- Bot
+
+ Gruppo
ProfilePage
-
If there's no good translation for "About", use "Details" (in details about profile).
Dettagli
-
Will show as: "35 Followers"
Seguaci
-
Will show as: "23 Following"
Segue
-
Will show as: "115 Statuses"
Toots
-
-
-
- Menzionare
-
-
-
Is a button. Keep it as short as possible.
Smetti di seguire
-
Is a button. Keep it as short as possible.
Richiesto
-
Is a button. Keep it as short as possible.
Segui
-
Is a button. Keep it as short as possible.
Non silenziare
-
Is a button. Keep it as short as possible.
Silenzia
-
Is a button. Keep it as short as possible.
Sblocca
-
Is a button. Keep it as short as possible.
Blocca
-
Aprire nel browser
+
+
+ Menzionare
+
SettingsPage
-
Impostazioni
-
Opzioni
-
- Caricare immagini nei toots
+ Caricare immagini nei Toots
-
Disabilitare questa opzione per conservare connessione dati
-
Account
-
Rimozione del account
-
Aggiungi account
-
Annullare l'autorizzazione dell'app e rimuovere l'account
-
Autorizzare l'app all'utilizzo del conto Mastodon
-
Tradurre
-
+
+ Translation alternative: "Development"
+ Sviluppo
+
+
+
+ Design UI/UX e sviluppo
+
+
+
+ Identità visiva
+
+
+
+ Sviluppo e traduzioni
+
+
+
+ Traduzione francese e occitanica
+
+
+
+ Traduzione cinese
+
+
+
+ Traduzione olandese
+
+
+
+ Traduzione spagnola
+
+
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
Utilizzare
-
per aiutare nella traduzione dell'app.
-
-
-
- Sviluppo
-
-
-
-
- Design UI/UX e sviluppo
-
-
-
-
- Identità visiva
-
-
-
-
- Sviluppo e traduzioni
-
-
-
-
- Traduzione francese e occitanica
-
-
-
-
- Traduzione cinese
-
-
-
-
- Traduzione olandese
-
-
-
-
- Traduzione spagnola
-
-
-
-
- Aggiunto file README
-
VisualContainer
-
- Annulla condivisione
+ Annuler le partage
-
- Condividi
+ Partager
-
- Annulla apprezzamento
+ Retirer des favoris
-
- Apprezzato
+ Ajouter aux favoris
-
-
- Elimina segnalibro
-
-
-
-
- Aggiungi segnalibro
-
-
-
-
- Menzionare
+ Mentionner
-
- Conversazione
+ Conversation
+
+
+
+ Retirer marque-page
+
+
+
+ Ajouter aux marque-pages
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index e24485a..45da362 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Credits
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 9c9ccf0..c88c27f 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Credits
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 70c903b..26a7f08 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Crèdits
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 9a2caba..f8f3ef9 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 105378a..571b499 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Зачет
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index aab50f1..a8b3f4d 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Спомен плоча
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 67ea6cf..fab63f4 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Erkännanden
@@ -348,10 +349,6 @@
-
-
-
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index a00b9e4..d41f95b 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
信誉
@@ -348,10 +349,6 @@
西班牙语翻译
-
-
- 添加 README 文件
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index e3b0909..7940e30 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -318,6 +318,7 @@
+ Translation alternative: "Development"
Credits
@@ -348,10 +349,6 @@
Spanish translation
-
-
- Added README file
-
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
From 0eef51ac2855ca807887a15b9b6c5fc200442a71 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 19 Jun 2020 10:46:46 +0200
Subject: [PATCH 50/70] Update harbour-tooter-it.ts
---
translations/harbour-tooter-it.ts | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 5c40768..76ed877 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -363,35 +363,35 @@
VisualContainer
- Annuler le partage
+ Annulla condivisione
- Partager
+ Condividi
- Retirer des favoris
+ Annulla apprezzamento
- Ajouter aux favoris
+ Apprezzato
- Mentionner
+ Menzionare
- Conversation
+ Conversazione
- Retirer marque-page
+ Elimina segnalibro
- Ajouter aux marque-pages
+ Aggiungi segnalibro
From 2ac4ce47de0318f0387d0116708a6a1a69221488 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 19 Jun 2020 11:41:24 +0200
Subject: [PATCH 51/70] 1.0.6-2
---
harbour-tooterb.pro.user | 2 +-
rpm/harbour-tooterb.changes | 4 ++++
rpm/harbour-tooterb.spec | 2 +-
rpm/harbour-tooterb.yaml | 2 +-
4 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/harbour-tooterb.pro.user b/harbour-tooterb.pro.user
index 0ee6300..3519283 100644
--- a/harbour-tooterb.pro.user
+++ b/harbour-tooterb.pro.user
@@ -1,6 +1,6 @@
-
+
EnvironmentId
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index d93b543..8e535c5 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,7 @@
+*Fri Jun 18 2020 molan 1.0.6-2
+- Fix reported small UI issue
+- Updated translations
+
*Thu Jun 18 2020 molan 1.0.6-1
- Fix app crash when open some Profile pages
- Fix sometimes missing favourite / reblog counts
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index dd2e4f5..4cee2f4 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -14,7 +14,7 @@ Name: harbour-tooterb
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
Version: 1.0.6
-Release: 1
+Release: 2
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index a23e60b..9fc42fa 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
Version: 1.0.6
-Release: 1
+Release: 2
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
From d5cffbebccb852f0b9cd11a1e9bb8daea9ea5309 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 19 Jun 2020 16:06:11 +0200
Subject: [PATCH 52/70] fix reblog mnu
---
qml/pages/components/VisualContainer.qml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 0d7b014..f1362d0 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -283,9 +283,9 @@ BackgroundItem {
id: mnuBoost
visible: model.type !== "follow"
enabled: status_visibility !== "direct"
- text: typeof model.reblogged !== "undefined" && model.reblogged ? qsTr("Unboost") : qsTr("Boost")
+ text: typeof model.status_reblogged !== "undefined" && model.status_reblogged ? qsTr("Unboost") : qsTr("Boost")
onClicked: {
- var status = typeof model.reblogged !== "undefined" && model.reblogged
+ var status = typeof model.status_reblogged !== "undefined" && model.status_reblogged
worker.sendMessage({
"conf" : Logic.conf,
"params" : [],
@@ -294,12 +294,12 @@ BackgroundItem {
"action" : "statuses/"+model.status_id+"/" + (status ? "unreblog" : "reblog")
})
model.status_reblogs_count = !status ? model.status_reblogs_count+1 : (model.status_reblogs_count > 0 ? model.status_reblogs_count-1 : model.status_reblogs_count);
- model.reblogged = !model.reblogged
+ model.status_reblogged = !model.status_reblogged
}
Icon {
id: icRT
- source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
+ source: "image://theme/icon-s-retweet?" + (!model.status_reblogged ? Theme.highlightColor : Theme.primaryColor)
width: Theme.iconSizeExtraSmall
height: width
anchors {
@@ -312,7 +312,7 @@ BackgroundItem {
Label {
text: status_reblogs_count // from API.js
font.pixelSize: Theme.fontSizeExtraSmall
- color: !model.reblogged ? Theme.highlightColor : Theme.primaryColor
+ color: !model.status_reblogged ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icRT.right
leftMargin: Theme.paddingMedium
From ed85fc23a037ba78ced8063361bceca8606b2d69 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 19 Jun 2020 16:24:21 +0200
Subject: [PATCH 53/70] 1.0.6-3
---
rpm/harbour-tooterb.changes | 3 +++
rpm/harbour-tooterb.spec | 2 +-
rpm/harbour-tooterb.yaml | 2 +-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index 8e535c5..856e59f 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,6 @@
+*Fri Jun 18 2020 molan 1.0.6-3
+- Fix broken reblog indication
+
*Fri Jun 18 2020 molan 1.0.6-2
- Fix reported small UI issue
- Updated translations
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index 4cee2f4..9e37d76 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -14,7 +14,7 @@ Name: harbour-tooterb
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
Version: 1.0.6
-Release: 2
+Release: 3
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index 9fc42fa..f520784 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
Version: 1.0.6
-Release: 2
+Release: 3
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt
From d635974182008c250b178d3e0db0e5a558fb396f Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Fri, 19 Jun 2020 16:38:24 +0200
Subject: [PATCH 54/70] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2134e03..0fe8afa 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Tooter β [Fork]
+# Tooter β [Fork]
## About
Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
From a5f287dfd73cf628bd865e33edf7b5812ba381f5 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 20 Jun 2020 12:04:45 +0200
Subject: [PATCH 55/70] Update README.md
---
README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 0fe8afa..516a773 100644
--- a/README.md
+++ b/README.md
@@ -1,23 +1,23 @@
-# Tooter β [Fork]
+# Tooter β
## About
Tooter is Mastodon client for [Sailfish OS](https://sailfishos.org).
-This fork is being used to further develop and maintain the Tooter app by dysko ([harbour-tooter](https://github.com/dysk0/harbour-tooter)). The development branch *upstream* is being used for merge pull requests to the original project.
+This fork is being used to further develop and maintain the Tooter app by dysko ([harbour-tooter](https://github.com/dysk0/harbour-tooter)).
+* Releases from this repository (Tooter β from release branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v)
* Releases by dysko can be found on the Jolla store and on [OpenRepos.net](https://openrepos.net/content/dysko/tooter)
-* Releases from this forked repository (branch *master*) can be found on [OpenRepos.net](https://openrepos.net/content/molan/tooter-v)
## Build
-Clone / download this repository and import it in your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
+Clone / download this repository and import it into your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
## Repository branches:
* master: default (Beta release version, harbour-tooterb)
* upstream: used to send changes to upstream repository (harbour-tooter)
## Contributions
-Contributions to this project are very welcome, since there are still many things which can be done for Tooter.
-- please fork the upstream branch if you want to contribute to this project.
+Contributions to this project are very welcome, since there are still many things which can be done for Tooter. If you already know what you want to add or fix, please make a Pull Request (PR) with your proposal. Your PR should include an explanation or a change log summary. Merging will not be allowed until the PR has been reviewed.
+Please fork the [upstream branch](https://github.com/molan-git/harbour-tooter/tree/upstream) if you want to contribute to this project.
## Screenshots
From 79ca85868fd247de0740747e5e91262b8a5f7d30 Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 20 Jun 2020 12:09:10 +0200
Subject: [PATCH 56/70] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 516a773..af9d77a 100644
--- a/README.md
+++ b/README.md
@@ -12,8 +12,8 @@ This fork is being used to further develop and maintain the Tooter app by dysko
Clone / download this repository and import it into your SailfishOS IDE using the harbour-tooter.pro project file. No additional configuration needed.
## Repository branches:
-* master: default (Beta release version, harbour-tooterb)
-* upstream: used to send changes to upstream repository (harbour-tooter)
+* master: release branch which includes specifics for harbour-tooterb (Tooter β)
+* upstream: main development branch which is used to send changes to the upstream repository (harbour-tooter)
## Contributions
Contributions to this project are very welcome, since there are still many things which can be done for Tooter. If you already know what you want to add or fix, please make a Pull Request (PR) with your proposal. Your PR should include an explanation or a change log summary. Merging will not be allowed until the PR has been reviewed.
From fda0cddfaa0500b1401d3f8e8aa33abb525e479f Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Sat, 20 Jun 2020 12:15:01 +0200
Subject: [PATCH 57/70] Update .gitignore
---
.gitignore | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index e31cfb2..e5f8bc2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-
*.user
+README.md
From e7ed4b3763849da3cd4f43ca432878b897cf53e5 Mon Sep 17 00:00:00 2001
From: dashinfantry <45334556+dashinfantry@users.noreply.github.com>
Date: Sun, 21 Jun 2020 00:36:45 +0800
Subject: [PATCH 58/70] Update harbour-tooterb-zh_CN.ts
---
translations/harbour-tooterb-zh_CN.ts | 32 +++++++++++++--------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/translations/harbour-tooterb-zh_CN.ts b/translations/harbour-tooterb-zh_CN.ts
index d41f95b..18f52fa 100644
--- a/translations/harbour-tooterb-zh_CN.ts
+++ b/translations/harbour-tooterb-zh_CN.ts
@@ -62,11 +62,11 @@
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ 回复
-
+ 隐藏回复
@@ -197,15 +197,15 @@
ProfileHeader
-
+ <机器人/translation>
-
+ 关注你
-
+ 群组
@@ -213,7 +213,7 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ 关于
@@ -238,7 +238,7 @@
Is a button. Keep it as short as possible.
-
+ 请求
@@ -271,7 +271,7 @@
-
+ 提及
@@ -282,7 +282,7 @@
-
+ 选项
@@ -314,7 +314,7 @@
-
+ 翻译
@@ -352,11 +352,11 @@
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
-
+ 使用
-
+ 以帮助翻译软件为你使用的语言
@@ -379,19 +379,19 @@
-
+ 提及
-
+ 对话
-
+ 移除收藏
-
+ 收藏
From f23d634e499464d45e02282f838067947f0779ff Mon Sep 17 00:00:00 2001
From: molan-git <59296158+molan-git@users.noreply.github.com>
Date: Mon, 22 Jun 2020 10:41:35 +0200
Subject: [PATCH 59/70] Update harbour-tooterb-zh_CN.ts
---
translations/harbour-tooterb-zh_CN.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/harbour-tooterb-zh_CN.ts b/translations/harbour-tooterb-zh_CN.ts
index 18f52fa..22aef92 100644
--- a/translations/harbour-tooterb-zh_CN.ts
+++ b/translations/harbour-tooterb-zh_CN.ts
@@ -197,7 +197,7 @@
ProfileHeader
- <机器人/translation>
+ 机器人
From 479bfd8f3eb43ba94f131fbce69fb81a2c4737bb Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 22 Jun 2020 20:13:05 +0200
Subject: [PATCH 60/70] update context mnu / translations
---
qml/images/icon-s-bookmark.svg | 4 +-
qml/lib/API.js | 7 +++
qml/lib/Mastodon.js | 13 +++--
qml/lib/Worker.js | 52 ++++++++++++--------
qml/pages/ConversationPage.qml | 50 +++++++++----------
qml/pages/components/ItemUser.qml | 6 +--
qml/pages/components/MyImage.qml | 6 ++-
qml/pages/components/MyList.qml | 7 ++-
qml/pages/components/VisualContainer.qml | 54 +++++++++++++--------
translations/harbour-tooter-de.ts | 12 ++---
translations/harbour-tooter-el.ts | 14 ++----
translations/harbour-tooter-es.ts | 12 ++---
translations/harbour-tooter-fr.ts | 12 ++---
translations/harbour-tooter-it.ts | 12 ++---
translations/harbour-tooter-nl.ts | 12 ++---
translations/harbour-tooter-nl_BE.ts | 12 ++---
translations/harbour-tooter-oc.ts | 12 ++---
translations/harbour-tooter-pl.ts | 14 ++----
translations/harbour-tooter-ru.ts | 62 +++++++++++-------------
translations/harbour-tooter-sr.ts | 14 ++----
translations/harbour-tooter-sv.ts | 14 ++----
translations/harbour-tooter-zh_CN.ts | 44 ++++++++---------
translations/harbour-tooter.ts | 12 ++---
23 files changed, 219 insertions(+), 238 deletions(-)
diff --git a/qml/images/icon-s-bookmark.svg b/qml/images/icon-s-bookmark.svg
index 6a7cba2..f05bf8a 100644
--- a/qml/images/icon-s-bookmark.svg
+++ b/qml/images/icon-s-bookmark.svg
@@ -2,8 +2,6 @@
icon-s-bookmark
-
-
-
+
diff --git a/qml/lib/API.js b/qml/lib/API.js
index 1f80f11..9fbfa12 100644
--- a/qml/lib/API.js
+++ b/qml/lib/API.js
@@ -9,6 +9,7 @@ var mediator = (function(){
mediator.channels[channel].push({ context : this, callback : fn });
return this;
};
+
var publish = function(channel){
if(!mediator.channels[channel]) return false;
var args = Array.prototype.slice.call(arguments, 1);
@@ -18,6 +19,7 @@ var mediator = (function(){
};
return this;
};
+
return {
channels : {},
publish : publish,
@@ -28,6 +30,7 @@ var mediator = (function(){
}
};
}());
+
var init = function(){
console.log("db.version: "+db.version);
if(db.version === '') {
@@ -103,6 +106,7 @@ var tootParser = function(data){
console.log(ret)
}
+
var test = 1;
Qt.include("Mastodon.js")
@@ -161,6 +165,7 @@ var notifier = function(item){
key: item.id
}
break;
+
case "follow":
msg = {
urgency: "critical",
@@ -182,6 +187,7 @@ var notifier = function(item){
key: item.id
}
break;
+
case "mention":
msg = {
urgency: "critical",
@@ -193,6 +199,7 @@ var notifier = function(item){
key: item.id
}
break;
+
default:
//console.log(JSON.stringify(messageObject.data))
return;
diff --git a/qml/lib/Mastodon.js b/qml/lib/Mastodon.js
index 55265be..97b5bcc 100644
--- a/qml/lib/Mastodon.js
+++ b/qml/lib/Mastodon.js
@@ -10,10 +10,12 @@ var mastodonAPI = function(config) {
// modify initial config afterwards
config[key] = value;
},
+
getConfig: function(key) {
//get config key
return config[key];
},
+
get: function (endpoint) {
// for GET API calls
// can be called with two or three parameters
@@ -67,6 +69,7 @@ var mastodonAPI = function(config) {
}
http.send();
},
+
post: function (endpoint) {
// for POST API calls
var postData, callback;
@@ -113,6 +116,7 @@ var mastodonAPI = function(config) {
}
});*/
},
+
delete: function (endpoint, callback) {
// for DELETE API calls.
$.ajax({
@@ -125,6 +129,7 @@ var mastodonAPI = function(config) {
}
});
},
+
stream: function (streamType, onData) {
// Event Stream Support
// websocket streaming is undocumented. i had to reverse engineer the fucking web client.
@@ -132,7 +137,7 @@ var mastodonAPI = function(config) {
// user for your local home TL and notifications
// public for your federated TL
// public:local for your home TL
- // hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump
+ // hashtag&tag=mastodonrocks for the stream of #mastodonrocks
// callback gets called whenever new data ist recieved
// callback { event: (eventtype), payload: {mastodon object as described in the api docs} }
// eventtype could be notification (=notification) or update (= new toot in TL)
@@ -147,12 +152,10 @@ var mastodonAPI = function(config) {
onData(event);
};
es.onmessage = listener;
-
-
},
+
registerApplication: function (client_name, redirect_uri, scopes, website, callback) {
//register a new application
-
// OAuth Auth flow:
// First register the application
// 2) get a access code from a user (using the link, generation function below!)
@@ -191,10 +194,12 @@ var mastodonAPI = function(config) {
}
http.send(params);
},
+
generateAuthLink: function (client_id, redirect_uri, responseType, scopes) {
return config.instance + "/oauth/authorize?client_id=" + client_id + "&redirect_uri=" + redirect_uri +
"&response_type=" + responseType + "&scope=" + scopes.join("+");
},
+
getAccessTokenFromAuthCode: function (client_id, client_secret, redirect_uri, code, callback) {
/*$.ajax({
url: config.instance + "/oauth/token",
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 268c024..6e8bb69 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -10,7 +10,7 @@ WorkerScript.onMessage = function(msg) {
console.log("Conf > " + JSON.stringify(msg.conf))
console.log("Params > " + JSON.stringify(msg.params))
- // order notifications in ASC order
+ /** order notifications in ASC order */
function orderNotifications(items){
for (var i = items.length-1; i > 0; i--) {
if (items[i].id > 0 ) //msg.conf.notificationLastID)
@@ -18,14 +18,17 @@ WorkerScript.onMessage = function(msg) {
}
}
+ /** Logged-in status */
if (!msg.conf || !msg.conf.login) {
console.log("Not loggedin")
return;
}
+ /** Load images */
if (typeof msg.conf['loadImages'] !== "undefined")
loadImages = msg.conf['loadImages']
+ /** POST statuses */
var API = mastodonAPI({ instance: msg.conf.instance, api_user_token: msg.conf.api_user_token});
if (msg.method === "POST"){
API.post(msg.action, msg.params, function(data) {
@@ -63,7 +66,7 @@ WorkerScript.onMessage = function(msg) {
} else if(msg.action === "notifications") {
// notification
- // console.log("Is notification... parsing...")
+ console.log("Get notification list")
console.log(JSON.stringify(data[i]))
item = parseNotification(data[i]);
items.push(item)
@@ -73,7 +76,9 @@ WorkerScript.onMessage = function(msg) {
console.log("ancestors")
for (var j = 0; j < data[i].length; j ++) {
item = parseToot(data[i][j]);
- item['id'] = item['status_id']
+ item['id'] = item['status_id'];
+ if (typeof item['attachments'] === "undefined")
+ item['attachments'] = [];
items.push(item)
console.log(JSON.stringify(data[i][j]))
}
@@ -82,7 +87,7 @@ WorkerScript.onMessage = function(msg) {
//console.log(JSON.stringify(i))
} else if(msg.action.indexOf("statuses") >-1 && msg.action.indexOf("context") >-1 && i === "descendants") {
- // status ancestors toots - conversation
+ // status descendants toots - conversation
console.log("descendants")
for (var j = 0; j < data[i].length; j ++) {
item = parseToot(data[i][j]);
@@ -94,16 +99,19 @@ WorkerScript.onMessage = function(msg) {
}
addDataToModel (msg.model, "append", items);
items = [];
+
} else if (data[i].hasOwnProperty("content")){
- // console.log("Is toot... parsing...")
+ //console.log("Get Toot")
item = parseToot(data[i]);
item['id'] = item['status_id']
items.push(item)
+
} else {
WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i] })
}
}
}
+
if(msg.model && items.length)
addDataToModel(msg.model, msg.mode, items)
/*if(msg.action === "notifications")
@@ -123,11 +131,10 @@ function addDataToModel (model, mode, items) {
model.insert(0,items[i])
}
}
-
model.sync()
}
-// Get Account Data: Represents a user of Mastodon and their associated profile.
+/** Function: Get Account Data */
function parseAccounts(collection, prefix, data) {
var res = collection;
@@ -159,7 +166,7 @@ function parseAccounts(collection, prefix, data) {
return (res);
}
-// Get Notification Data
+/** Function: Get Notification Data */
function parseNotification(data){
//console.log(JSON.stringify(data))
var item = {
@@ -168,12 +175,12 @@ function parseNotification(data){
attachments: []
};
switch (item['type']){
+
case "mention":
if (!data.status) {
break;
}
item = parseToot(data.status)
- item['typeIcon'] = "image://theme/icon-s-retweet"
item['typeIcon'] = "image://theme/icon-s-alarm"
item['type'] = "mention"
break;
@@ -197,19 +204,18 @@ function parseNotification(data){
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])
- item['status_reblog'] = true;
+ item['status_reblog'] = true
+ item['type'] = "favourite"
item['typeIcon'] = "image://theme/icon-s-favorite"
- item['type'] = "favourite";
- //item['retweetScreenName'] = item['reblog_account_username'];
break;
case "follow":
item['type'] = "follow";
item = parseAccounts(item, "", data["account"])
item = parseAccounts(item, "reblog_", data["account"])
- item['content'] = data['account']['note']
+ //item['content'] = data['account']['note']
item['typeIcon'] = "../../images/icon-s-follow.svg"
- item['attachments'] = []
+ //item['attachments'] = []
break;
default:
@@ -222,6 +228,7 @@ function parseNotification(data){
return item;
}
+/** Function: ?? */
function collect() {
var ret = {};
var len = arguments.length;
@@ -235,12 +242,13 @@ function collect() {
return ret;
}
+/** Function: Get Status date */
function getDate(dateStr) {
var ts = new Date(dateStr);
return new Date(ts.getFullYear(), ts.getMonth(), ts.getDate(), 0, 0, 0)
}
-// Get Status / Toot Data
+/** Function: Get Status data */
function parseToot (data) {
var i = 0;
var item = {};
@@ -264,12 +272,14 @@ function parseToot (data) {
item['status_bookmarked'] = data["bookmarked"]
item['status_content'] = data["content"]
+ item['attachments'] = data['media_attachments']
+
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
item['section'] = getDate(data["created_at"])
- // If Toot is a Reblog
+ /** If Toot is a Reblog */
if(item['status_reblog']) {
item['type'] = "reblog";
item['typeIcon'] = "image://theme/icon-s-retweet"
@@ -281,14 +291,16 @@ function parseToot (data) {
} else {
item = parseAccounts(item, "", data["account"])
}
+
+ /** Replace HTML content */
item['content'] = data['content']
.replaceAll('', '')
.replaceAll('', '')
.replaceAll('', '')
.replaceAll('class=""', '');
- item['attachments'] = [];
- // Media attachements in Toots
+ /** Media attachements in Toots */
+ item['attachments'] = [];
for(i = 0; i < data['media_attachments'].length ; i++) {
var attachments = data['media_attachments'][i];
item['content'] = item['content'].replaceAll(attachments['text_url'], '')
@@ -301,7 +313,7 @@ function parseToot (data) {
item['attachments'].push(tmp)
}
- // Media attachements in Reblogs
+ /** Media attachements in Reblogs */
if(item['status_reblog']) {
for(i = 0; i < data['reblog']['media_attachments'].length ; i++) {
var attachments = data['reblog']['media_attachments'][i];
@@ -319,7 +331,7 @@ function parseToot (data) {
return addEmojis(item, data);
}
-// Display function for custom Emojis in Toots
+/** Function: Display custom Emojis in Toots */
function addEmojis(item, data) {
var emoji, i;
for (i = 0; i < data["emojis"].length; i++) {
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 199e7ca..d65fa49 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -9,13 +9,13 @@ Page {
id: conversationPage
property string type
- property string description: ""
+ property string username: ""
property string headerTitle: ""
property string suggestedUser: ""
property ListModel suggestedModel
- property string toot_id: ""
- property string toot_url: ""
- property string toot_uri: ""
+ property string status_id: ""
+ property string status_url: ""
+ property string status_uri: ""
property int tootMaxChar: 500;
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
@@ -63,11 +63,6 @@ Page {
}
}
- ProfileHeader {
- id: header
- visible: false
- }
-
SilicaListView {
id: myList
header: PageHeader {
@@ -95,7 +90,7 @@ Page {
onCountChanged: {
if (mdl)
for (var i = 0; i < mdl.count; i++) {
- if (mdl.get(i).status_id === toot_id) {
+ if (mdl.get(i).status_id === status_id) {
console.log(mdl.get(i).status_id)
positionViewAtIndex(i, ListView.Center)
}
@@ -109,17 +104,17 @@ Page {
MenuItem {
//: Use the translation of "Copy Link" for a shorter PullDownMenu label
text: qsTr("Copy Link to Clipboard")
- onClicked: if (toot_url === "") {
- var test = toot_uri.split("/")
- console.log(toot_uri)
+ onClicked: if (status_url === "") {
+ var test = status_uri.split("/")
+ console.log(status_uri)
console.log(JSON.stringify(test))
console.log(JSON.stringify(test.length))
if (test.length === 8 && (test[7] === "activity")) {
- var urialt = toot_uri.replace("activity", "")
+ var urialt = status_uri.replace("activity", "")
Clipboard.text = urialt
}
- else Clipboard.text = toot_uri
- } else Clipboard.text = toot_url
+ else Clipboard.text = status_uri
+ } else Clipboard.text = status_url
}
MenuItem {
@@ -247,9 +242,9 @@ Page {
id: toot
autoScrollEnabled: true
labelVisible: false
- text: description !== "" && (description.charAt(0) === '@'
- || description.charAt(
- 0) === '#') ? description + ' ' : ''
+ text: username !== "" && (username.charAt(0) === '@'
+ || username.charAt(
+ 0) === '#') ? username + ' ' : ''
height: if (type !== "reply") {
Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
}
@@ -320,6 +315,9 @@ Page {
height: uploadedImages.cellHeight
RemorseItem {
id: remorse
+ cancelText: ""
+
+
}
Image {
@@ -331,7 +329,7 @@ Page {
var idx = index
console.log(idx)
//mediaModel.remove(idx)
- remorse.execute(myDelegate, qsTr("Delete"), function () {
+ remorse.execute(myDelegate, "", function () {
mediaModel.remove(idx)
})
}
@@ -377,14 +375,14 @@ Page {
IconButton {
id: btnAddImage
enabled: mediaModel.count < 4
+ icon.source: "image://theme/icon-s-attach?"
+ + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
left: btnContentWarning.right
leftMargin: Theme.paddingSmall
}
- icon.source: "image://theme/icon-s-attach?"
- + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
onClicked: {
btnAddImage.enabled = false
var once = true
@@ -447,13 +445,13 @@ Page {
id: btnSend
icon.source: "image://theme/icon-m-send?"
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
+ enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
right: parent.right
rightMargin: Theme.paddingSmall
}
- enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
onClicked: {
var visibility = ["public", "unlisted", "private", "direct"]
var media_ids = []
@@ -473,8 +471,8 @@ Page {
},
"conf": Logic.conf
}
- if (toot_id)
- msg.params['in_reply_to_id'] = (toot_id) + ""
+ if (status_id)
+ msg.params['in_reply_to_id'] = (status_id) + ""
if (warningContent.visible && warningContent.text.length > 0) {
msg.params['sensitive'] = 1
@@ -492,9 +490,9 @@ Page {
Rectangle {
id: uploadProgress
color: Theme.highlightBackgroundColor
+ height: Theme.itemSizeSmall * 0.05
anchors.bottom: parent.bottom
anchors.left: parent.left
- height: Theme.itemSizeSmall * 0.05
}
}
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index edd79fa..4220a76 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -10,9 +10,8 @@ BackgroundItem {
width: parent.width
height: Theme.itemSizeMedium
- Rectangle {
+ Item {
id: avatar
- color: "transparent"
width: Theme.itemSizeExtraSmall
height: width
anchors.verticalCenter: parent.verticalCenter
@@ -50,7 +49,8 @@ BackgroundItem {
"following_count": model.account_following_count,
"statuses_count": model.account_statuses_count,
"locked": model.account_locked,
- "bot": model.account_bot
+ "bot": model.account_bot,
+ "group": model.account_group
})
}
}
diff --git a/qml/pages/components/MyImage.qml b/qml/pages/components/MyImage.qml
index 9b60c4d..2b07d73 100644
--- a/qml/pages/components/MyImage.qml
+++ b/qml/pages/components/MyImage.qml
@@ -11,12 +11,14 @@ Item {
property string mediaURL: ""
Rectangle {
- opacity: 0.2
+ opacity: 0.4
color: Theme.highlightDimmerColor
anchors.fill: parent
}
Image {
+ opacity: status !== Image.Ready ? 1.0 : 0.0
+ Behavior on opacity { FadeAnimator {} }
source: "image://theme/icon-m-image"
anchors.centerIn: parent
}
@@ -75,7 +77,7 @@ Item {
Rectangle {
id: mediaWarning
color: Theme.highlightDimmerColor
- visible: typeof status_sensitive != 'undefined' && status_sensitive ? true : false
+ visible: typeof status_sensitive != "undefined" && status_sensitive ? true : false
anchors.fill: parent
Image {
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index ec732a4..e31c2b6 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -29,7 +29,6 @@ SilicaListView {
onNotify: {
console.log(what + " - " + num)
}
-
signal openDrawer (bool setDrawer)
onOpenDrawer: {
//console.log("Open drawer: " + setDrawer)
@@ -39,7 +38,6 @@ SilicaListView {
console.log("LIST send signal emitted with notice: " + notice)
}
-
header: PageHeader {
title: myList.title
description: myList.description
@@ -77,7 +75,7 @@ SilicaListView {
}
MenuItem {
- text: qsTr("Load more")
+ text: qsTr("Reload")
onClicked: {
loadData("prepend")
}
@@ -101,7 +99,7 @@ SilicaListView {
console.log("CountChanged!")*/
}
- footer: Item{
+ footer: Item {
visible: autoLoadMore
width: parent.width
height: Theme.itemSizeLarge
@@ -181,6 +179,7 @@ SilicaListView {
'mode' : mode,
'conf' : Logic.conf
};
+
console.log(JSON.stringify(msg))
if (type !== "")
worker.sendMessage(msg)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index f1362d0..3765689 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -43,7 +43,6 @@ BackgroundItem {
// Account avatar
Image {
id: avatar
- visible: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
asynchronous: true
@@ -254,7 +253,6 @@ BackgroundItem {
anchors.fill: parent
onClicked: parent.visible = false
}
-
}
}
@@ -300,7 +298,7 @@ BackgroundItem {
Icon {
id: icRT
source: "image://theme/icon-s-retweet?" + (!model.status_reblogged ? Theme.highlightColor : Theme.primaryColor)
- width: Theme.iconSizeExtraSmall
+ width: Theme.iconSizeSmall
height: width
anchors {
leftMargin: Theme.horizontalPageMargin
@@ -310,8 +308,8 @@ BackgroundItem {
}
Label {
- text: status_reblogs_count // from API.js
- font.pixelSize: Theme.fontSizeExtraSmall
+ text: status_reblogs_count
+ font.pixelSize: Theme.fontSizeSmall
color: !model.status_reblogged ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icRT.right
@@ -341,7 +339,7 @@ BackgroundItem {
Icon {
id: icFA
source: "image://theme/icon-s-favorite?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
- width: Theme.iconSizeExtraSmall
+ width: Theme.iconSizeSmall
height: width
anchors {
leftMargin: Theme.horizontalPageMargin
@@ -352,7 +350,7 @@ BackgroundItem {
Label {
text: status_favourites_count
- font.pixelSize: Theme.fontSizeExtraSmall
+ font.pixelSize: Theme.fontSizeSmall
color: !model.status_favourited ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icFA.right
@@ -382,7 +380,7 @@ BackgroundItem {
id: icBM
source: "../../images/icon-s-bookmark.svg?"
color: !model.status_bookmarked ? Theme.highlightColor : Theme.primaryColor
- width: Theme.iconSizeExtraSmall
+ width: Theme.iconSizeSmall
height: width
anchors {
left: parent.left
@@ -408,7 +406,7 @@ BackgroundItem {
Icon {
id: icMT
source: "image://theme/icon-s-chat?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
- width: Theme.iconSizeExtraSmall
+ width: Theme.iconSizeSmall
height: width
anchors {
left: parent.left
@@ -419,21 +417,39 @@ BackgroundItem {
}
}
- // Open ConversationPage and show other Toots in thread (if available)
+ // Open ConversationPage and show other Toots in thread (if available) or ProfilePage if new Follower
onClicked: {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
m.append(mdl.get(index))
- pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
- headerTitle: qsTr("Conversation"),
- "toot_id": status_id,
- "toot_url": status_url,
- "toot_uri": status_uri,
- "description": '@'+account_acct,
- mdl: m,
- type: "reply"
- })
+
+ if (model.type !== "follow") {
+ pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
+ headerTitle: qsTr("Conversation"),
+ "status_id": status_id,
+ "status_url": status_url,
+ "status_uri": status_uri,
+ "username": '@'+account_acct,
+ mdl: m,
+ type: "reply"
+ })
+ } else pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
+ "display_name": model.account_display_name,
+ "username": model.account_acct,
+ "user_id": model.account_id,
+ "profileImage": model.account_avatar,
+ "profileBackground": model.account_header,
+ "note": model.account_note,
+ "url": model.account_url,
+ "followers_count": model.account_followers_count,
+ "following_count": model.account_following_count,
+ "statuses_count": model.account_statuses_count,
+ "locked": model.account_locked,
+ "bot": model.account_bot,
+ "group": model.account_group
+ } )
}
+
onPressAndHold: {
console.log(JSON.stringify(mdl.get(index)))
mnu.open(delegate)
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index b82d09c..e97e5eb 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -35,10 +35,6 @@
Was gibt's Neues?
-
-
- Löschen
-
Öffentlich
@@ -172,10 +168,6 @@
MyList
-
-
- Lade mehr
-
Einstellungen
@@ -192,6 +184,10 @@
Neuer Toot
+
+
+ Neu laden
+
ProfileHeader
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 8dd7c56..173f116 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -35,10 +35,6 @@
-
-
- Διαγραφή
-
@@ -114,7 +110,7 @@
-
+ Επαναφόρτωση
@@ -172,10 +168,6 @@
MyList
-
-
- Φόρτωση περισσοτέρων
-
Ρυθμίσεις
@@ -192,6 +184,10 @@
Νέος
+
+
+ Επαναφόρτωση
+
ProfileHeader
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index ce1675f..085fb00 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -35,10 +35,6 @@
¿En qué estás pensando?
-
-
- Borrar
-
Público
@@ -172,10 +168,6 @@
MyList
-
-
- Cargar más
-
Ajustes
@@ -192,6 +184,10 @@
Nuevo toot
+
+
+ Volver a cargar
+
ProfileHeader
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index e302031..5dfc7d3 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -35,10 +35,6 @@
Qu'avez-vous en tête?
-
-
- Supprimer
-
Public
@@ -172,10 +168,6 @@
MyList
-
-
- Charger plus
-
Paramètres
@@ -192,6 +184,10 @@
Nouveau pouet
+
+
+ Recharger
+
ProfileHeader
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 76ed877..b18fcc5 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -35,10 +35,6 @@
A cosa stai pensando?
-
-
- Elimina
-
Pubblico
@@ -172,10 +168,6 @@
MyList
-
-
- Caricare altri
-
Impostazioni
@@ -192,6 +184,10 @@
Nuovo Toot
+
+
+ Ricarica
+
ProfileHeader
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 45da362..654c222 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -35,10 +35,6 @@
Wat wil je kwijt?
-
-
- Verwijderen
-
Openbaar
@@ -172,10 +168,6 @@
MyList
-
-
- Meer laden
-
Instellingen
@@ -192,6 +184,10 @@
Nieuwe Toot
+
+
+ Herladen
+
ProfileHeader
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index c88c27f..f54b406 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -35,10 +35,6 @@
-
-
- Verwijderen
-
@@ -172,10 +168,6 @@
MyList
-
-
- Meer laden
-
Instellingen
@@ -192,6 +184,10 @@
Nieuwen toot
+
+
+ Herladen
+
ProfileHeader
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 26a7f08..ffd232c 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -35,10 +35,6 @@
-
-
- Escafar
-
@@ -172,10 +168,6 @@
MyList
-
-
- Cargar mai
-
Parmètres
@@ -192,6 +184,10 @@
Nòu Tut
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index f8f3ef9..5a98dea 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -35,10 +35,6 @@
-
-
- Usuń
-
@@ -114,7 +110,7 @@
-
+ Załaduj ponownie
@@ -172,10 +168,6 @@
MyList
-
-
- Załaduj więcej
-
Ustawienia
@@ -192,6 +184,10 @@
Nowy wpis
+
+
+ Załaduj ponownie
+
ProfileHeader
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 571b499..f8a5da6 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -25,48 +25,44 @@
Use the translation of "Copy Link" for a shorter PullDownMenu label
-
+ Копировать ссылку
-
+ Текст предупреждения
-
-
-
-
- Удалить
+ О чём думаете?
-
+ Публичный
-
+ Скрытый
-
+ Приватный
-
+ Адресованный
-
+ Поста отправлено!
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ Ответ
-
+ Скрыть ответ
@@ -98,7 +94,7 @@
LoginPage
-
+ Авторизоваться
@@ -114,7 +110,7 @@
-
+ Перезарядка
@@ -152,7 +148,7 @@
MediaFullScreen
-
+ Ошибка загрузки
@@ -172,10 +168,6 @@
MyList
-
-
- Загрузи больше
-
Настройки
@@ -192,20 +184,24 @@
Новый
+
+
+ Перезагрузить
+
ProfileHeader
-
+ бот
-
+ Подписан(а) на вас
-
+ Группа
@@ -213,7 +209,7 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ О профиль
@@ -238,7 +234,7 @@
Is a button. Keep it as short as possible.
-
+ Запрошенный
@@ -267,11 +263,11 @@
-
+ Открыть в браузере
-
+ Упоминание
@@ -282,7 +278,7 @@
-
+ Параметры
@@ -379,19 +375,19 @@
-
+ Упоминание
-
+ беседа
-
+ Убрать из закладок
-
+ Добавить в закладки
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index a8b3f4d..b631d8e 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -35,10 +35,6 @@
-
-
- Обриши
-
@@ -114,7 +110,7 @@
-
+ учитај још
@@ -172,10 +168,6 @@
MyList
-
-
- учитај још
-
Подешавања
@@ -192,6 +184,10 @@
Novi toot
+
+
+ учитај још
+
ProfileHeader
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index fab63f4..94b995c 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -35,10 +35,6 @@
-
-
- Radera
-
@@ -114,7 +110,7 @@
-
+ Ladda mer
@@ -172,10 +168,6 @@
MyList
-
-
- Ladda mer
-
Inställningar
@@ -192,6 +184,10 @@
Ny toot
+
+
+ Ladda mer
+
ProfileHeader
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index d41f95b..438c6d3 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -35,10 +35,6 @@
有何想法?
-
-
- 删除
-
公共区域
@@ -62,11 +58,11 @@
"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
-
+ 回复
-
+ 隐藏回复
@@ -172,10 +168,6 @@
MyList
-
-
- 加载更多
-
设置
@@ -192,20 +184,24 @@
新嘟嘟
+
+
+ 重新加载
+
ProfileHeader
-
+ 机器人
-
+ 关注你
-
+ 群组
@@ -213,7 +209,7 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ 关于
@@ -238,7 +234,7 @@
Is a button. Keep it as short as possible.
-
+ 请求
@@ -271,7 +267,7 @@
-
+ 提及
@@ -282,7 +278,7 @@
-
+ 选项
@@ -314,7 +310,7 @@
-
+ 翻译
@@ -352,11 +348,11 @@
Full sentence for translation: "Use Transifex to help with app translation to your language." - The word Transifex is a link and doesn't need translation.
-
+ 使用
-
+ 以帮助翻译软件为你使用的语言.
@@ -379,19 +375,19 @@
-
+ 提及
-
+ 对话
-
+ 移除收藏
-
+ 收藏
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 7940e30..6305016 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -35,10 +35,6 @@
What's on your mind?
-
-
- Delete
-
Public
@@ -172,10 +168,6 @@
MyList
-
-
- Load more
-
Settings
@@ -192,6 +184,10 @@
New Toot
+
+
+ Reload
+
ProfileHeader
From 9e7d735a3b672ee2eb5f8eb871495c306f8eb6e2 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 29 Jun 2020 10:48:06 +0200
Subject: [PATCH 61/70] support for landscape view
---
harbour-tooter.pro | 5 +-
qml/harbour-tooter.qml | 1 -
qml/pages/ConversationPage.qml | 13 +-
qml/pages/LoginPage.qml | 28 ++-
qml/pages/MainPage.qml | 41 ++---
qml/pages/ProfilePage.qml | 32 ++--
qml/pages/components/EmojiSelect.qml | 40 +++--
qml/pages/components/MediaBlock.qml | 8 +-
qml/pages/components/MediaFullScreen.qml | 163 +++++++++++-------
qml/pages/components/MyList.qml | 18 +-
.../components/{MyImage.qml => MyMedia.qml} | 26 ++-
.../{Navigation.qml => NavigationPanel.qml} | 55 ++----
qml/pages/components/ProfileHeader.qml | 4 +-
qml/pages/components/VisualContainer.qml | 9 +-
rpm/harbour-tooter.spec | 3 +
rpm/harbour-tooter.yaml | 8 +-
src/filedownloader.h | 2 +-
src/imageuploader.cpp | 7 -
src/imageuploader.h | 2 +-
translations/harbour-tooter-de.ts | 77 +++++----
translations/harbour-tooter-el.ts | 67 +++----
translations/harbour-tooter-es.ts | 77 +++++----
translations/harbour-tooter-fr.ts | 81 ++++-----
translations/harbour-tooter-it.ts | 77 +++++----
translations/harbour-tooter-nl.ts | 75 ++++----
translations/harbour-tooter-nl_BE.ts | 69 ++++----
translations/harbour-tooter-oc.ts | 69 ++++----
translations/harbour-tooter-pl.ts | 59 +++----
translations/harbour-tooter-ru.ts | 77 +++++----
translations/harbour-tooter-sr.ts | 69 ++++----
translations/harbour-tooter-sv.ts | 69 ++++----
translations/harbour-tooter-zh_CN.ts | 77 +++++----
translations/harbour-tooter.ts | 77 +++++----
33 files changed, 764 insertions(+), 721 deletions(-)
rename qml/pages/components/{MyImage.qml => MyMedia.qml} (76%)
rename qml/pages/components/{Navigation.qml => NavigationPanel.qml} (67%)
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index 3e4ae73..fd7bec4 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -14,6 +14,7 @@ TARGET = harbour-tooter
CONFIG += sailfishapp
QT += network dbus sql
+QT += multimedia
CONFIG += link_pkgconfig
PKGCONFIG += sailfishapp
PKGCONFIG += \
@@ -58,16 +59,16 @@ DISTFILES += qml/harbour-tooter.qml \
qml/pages/SettingsPage.qml \
qml/pages/components/InfoBanner.qml \
qml/pages/components/MediaFullScreen.qml \
+ qml/pages/components/MyMedia.qml \
+ qml/pages/components/NavigationPanel.qml \
qml/pages/components/ProfileImage.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/cover/CoverPage.qml \
qml/pages/MainPage.qml \
qml/pages/LoginPage.qml \
diff --git a/qml/harbour-tooter.qml b/qml/harbour-tooter.qml
index b50b096..60e8399 100644
--- a/qml/harbour-tooter.qml
+++ b/qml/harbour-tooter.qml
@@ -87,5 +87,4 @@ ApplicationWindow {
activate()
}
}
-
}
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index d65fa49..1d3480e 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -242,18 +242,19 @@ Page {
id: toot
autoScrollEnabled: true
labelVisible: false
+ //: placeholderText in Toot text panel
+ placeholderText: qsTr("What's on your mind?")
+ font.pixelSize: Theme.fontSizeSmall
text: username !== "" && (username.charAt(0) === '@'
|| username.charAt(
0) === '#') ? username + ' ' : ''
height: if (type !== "reply") {
- Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
+ isPortrait ? Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight)) : Math.max(conversationPage.height / 2, Math.min(conversationPage.height * 0.65, implicitHeight))
}
else {
- Math.max(conversationPage.height / 4, Math.min(conversationPage.height * 0.65, implicitHeight))
+ isPortrait ? Math.max(conversationPage.height / 4, Math.min(conversationPage.height * 0.65, implicitHeight)) : Math.max(conversationPage.height / 2.5, Math.min(conversationPage.height * 0.65, implicitHeight))
}
horizontalAlignment: Text.AlignLeft
- placeholderText: qsTr("What's on your mind?")
- font.pixelSize: Theme.fontSizeSmall
anchors {
top: warningContent.bottom
topMargin: Theme.paddingMedium
@@ -297,7 +298,7 @@ Page {
rightMargin: Theme.paddingSmall
}
onSelectionChanged: { console.log(selection) }
- onClicked: pageStack.push(emojiSelect)
+ onClicked: pageStack.push(emojiDialog)
}
SilicaGridView {
@@ -583,7 +584,7 @@ Page {
}
EmojiSelect {
- id: emojiSelect
+ id: emojiDialog
}
InfoBanner {
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index 10f469e..288e4d8 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -50,10 +50,10 @@ Page {
conf.login = false;
/*conf['login'] = false;
- conf['mastodon_client_id'] = data['mastodon_client_id'];
- conf['mastodon_client_secret'] = data['mastodon_client_secret'];
- conf['mastodon_client_redirect_uri'] = data['mastodon_client_redirect_uri'];
- delete Logic.conf;*/
+ conf['mastodon_client_id'] = data['mastodon_client_id'];
+ conf['mastodon_client_secret'] = data['mastodon_client_secret'];
+ conf['mastodon_client_redirect_uri'] = data['mastodon_client_redirect_uri'];
+ delete Logic.conf;*/
Logic.conf = conf;
console.log(JSON.stringify(conf))
console.log(JSON.stringify(Logic.conf))
@@ -72,7 +72,14 @@ Page {
);
}
}
+
Label {
+ id: serviceDescr
+ text: qsTr("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.")
+ font.pixelSize: Theme.fontSizeExtraSmall
+ color: Theme.highlightColor
+ wrapMode: Text.WordWrap
+ width: parent.width
anchors {
left: parent.left
right: parent.right
@@ -80,30 +87,20 @@ Page {
leftMargin: Theme.horizontalPageMargin
rightMargin: Theme.horizontalPageMargin
}
-
- width: parent.width
- wrapMode: Text.WordWrap
- color: Theme.highlightColor
- font.pixelSize: Theme.fontSizeExtraSmall
- text: qsTr("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.")
}
-
-
}
-
}
SilicaWebView {
id: webView
visible: false
+ opacity: 0
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
}
-
- opacity: 0
onLoadingChanged: {
console.log(url)
if (
@@ -154,6 +151,7 @@ Page {
}
FadeAnimation on opacity {}
+
PullDownMenu {
MenuItem {
text: qsTr("Reload")
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index a0bed46..7d460a0 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -12,14 +12,15 @@ Page {
allowedOrientations: Orientation.All
+ // Docked Navigation panel
DockedPanel {
id: infoPanel
open: true
- width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
- height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
- dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
+ width: isPortrait ? parent.width : Theme.itemSizeLarge
+ height: isPortrait ? Theme.itemSizeLarge : parent.height
+ dock: isPortrait ? Dock.Bottom : Dock.Right
- Navigation {
+ NavigationPanel {
id: navigation
isPortrait: !mainPage.isPortrait
onSlideshowShow: {
@@ -32,46 +33,46 @@ Page {
VisualItemModel {
id: visualModel
- MyList{
+ MyList {
id: tlHome
title: qsTr("Home")
type: "timelines/home"
mdl: Logic.modelTLhome
- width: parent.itemWidth
+ width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
- MyList{
+ MyList {
id: tlNotifications
title: qsTr("Notifications")
type: "notifications"
notifier: true
mdl: Logic.modelTLnotifications
- width: parent.itemWidth
+ width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
- MyList{
+ MyList {
id: tlLocal
title: qsTr("Local")
type: "timelines/public?local=true"
//params: ["local", true]
mdl: Logic.modelTLlocal
- width: parent.itemWidth
+ width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
- MyList{
+ MyList {
id: tlPublic
title: qsTr("Federated")
type: "timelines/public"
mdl: Logic.modelTLpublic
- width: parent.itemWidth
+ width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
Item {
@@ -80,7 +81,7 @@ Page {
property ListModel mdl: ListModel {}
property string search
- width: parent.itemWidth
+ width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onSearchChanged: {
console.log(search)
@@ -239,8 +240,8 @@ Page {
anchors {
fill: parent
top: parent.top
- rightMargin: mainPage.isPortrait ? 0 : infoPanel.visibleSize
- bottomMargin: mainPage.isPortrait ? infoPanel.visibleSize : 0
+ rightMargin: isPortrait ? 0 : infoPanel.visibleSize
+ bottomMargin: isPortrait ? infoPanel.visibleSize : 0
}
model: visualModel
Component.onCompleted: {
@@ -255,7 +256,7 @@ Page {
icon.source: "image://theme/icon-l-add"
anchors {
right: (mainPage.isPortrait ? parent.right : infoPanel.left)
- rightMargin: Theme.paddingLarge
+ rightMargin: isPortrait ? Theme.paddingLarge : Theme.paddingLarge * 0.8
bottom: (mainPage.isPortrait ? infoPanel.top : parent.bottom)
bottomMargin: Theme.paddingLarge
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index 0cf7bd5..6956187 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -182,9 +182,9 @@ Page {
id: txtNote
text: note
textFormat: Text.StyledText
- color: Theme.secondaryColor
+ color: Theme.highlightColor
font.pixelSize: Theme.fontSizeExtraSmall
- linkColor: Theme.highlightColor
+ linkColor: Theme.secondaryColor
wrapMode: Text.Wrap
width: parent.width - ( 2 * Theme.horizontalPageMargin )
anchors.horizontalCenter: parent.horizontalCenter
@@ -227,37 +227,43 @@ Page {
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
- Text {
+ Label {
id: txtFollowers
visible: true //followers_count ? true : false
text: followers_count+" "+
//: Will show as: "35 Followers"
qsTr("Followers")
font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.highlightColor
+ color: Theme.primaryColor
wrapMode: Text.Wrap
}
- Text {
+ Label {
id: txtFollowing
visible: true //following_count ? true : false
text: following_count+" "+
//: Will show as: "23 Following"
qsTr("Following")
font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.highlightColor
+ color: Theme.primaryColor
wrapMode: Text.Wrap
}
- Text {
+ Label {
id: txtStatuses
visible: true //statuses_count ? true : false
text: statuses_count+" "+
//: Will show as: "115 Statuses"
qsTr("Statuses")
font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.highlightColor
+ color: Theme.primaryColor
wrapMode: Text.Wrap
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: expandingSection1.expanded = false
+ }
+
}
}
@@ -344,16 +350,6 @@ Page {
}
}
- Button {
- id: btnBrowser
- text: qsTr("Open in Browser")
- preferredWidth: Theme.buttonWidthMedium
- anchors.horizontalCenter: parent.horizontalCenter
- onClicked: {
- Qt.openUrlExternally(url)
- }
- }
-
Rectangle { // dummy item for spacing
height: Theme.paddingSmall
width: parent.width
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index 67c067a..1353f15 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -2,18 +2,23 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
-Component {
- id: emojiComponent
-
- Dialog {
- id: emoticonsDialog
- canAccept: false //selector.currentIndex >= 0
- onAcceptPendingChanged: {
- if (acceptPending) {
- // Tell the destination page what the selected category is
- // acceptDestinationInstance.category = selector.value
- }
+Dialog {
+ id: emojiDialog
+ anchors.top: parent.top
+ allowedOrientations: Orientation.All
+ canAccept: false //selector.currentIndex >= 0
+ onAcceptPendingChanged: {
+ if (acceptPending) {
+ // Tell the destination page what the selected category is
+ // acceptDestinationInstance.category = selector.value
}
+ }
+
+ Column {
+ id: emojiColumn
+ spacing: Theme.paddingLarge
+ width: parent.width
+ height: parent.height
SilicaGridView {
id: gridView
@@ -21,9 +26,10 @@ Component {
title: qsTr("Emojis")
description: qsTr("Tap to insert")
}
- cellWidth: gridView.width / 6
+ cellWidth: isPortrait ? gridView.width / 6 : gridView.width / 10
cellHeight: cellWidth
- anchors.fill: parent
+ width: parent.width
+ height: parent.height
model: ListModel {
ListElement { section: "smileys"; glyph: "😁" }
ListElement { section: "smileys"; glyph: "😂" }
@@ -137,6 +143,7 @@ Component {
ListElement { section: "Horoscope Signs"; glyph: "♒" }
ListElement { section: "Horoscope Signs"; glyph: "♓" }
}
+
delegate: BackgroundItem {
width: gridView.cellWidth
height: gridView.cellHeight
@@ -153,12 +160,11 @@ Component {
0, cursorPosition) + model.glyph + toot.text.substring(
cursorPosition)
toot.cursorPosition = cursorPosition + model.glyph.length
- emoticonsDialog.canAccept = true
- emoticonsDialog.accept()
+ emojiDialog.canAccept = true
+ emojiDialog.accept()
}
}
-
- VerticalScrollDecorator {flickable: listEmojis }
+ VerticalScrollDecorator { flickable: listEmojis }
}
}
}
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 0e60884..5963062 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -79,7 +79,7 @@ Item {
}
}
- MyImage {
+ MyMedia {
id: placeholder1
width: 2
height: 1
@@ -98,7 +98,7 @@ Item {
}
}
- MyImage {
+ MyMedia {
id: placeholder2
width: 2
height: 1
@@ -117,7 +117,7 @@ Item {
}
}
- MyImage {
+ MyMedia {
id: placeholder3
width: 2
height: 1
@@ -136,7 +136,7 @@ Item {
}
}
- MyImage {
+ MyMedia {
id: placeholder4
width: 2
height: 1
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index cd53ec7..d0f9119 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -1,6 +1,6 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
-import QtMultimedia 5.0
+import QtMultimedia 5.6
FullscreenContentPage {
@@ -21,15 +21,17 @@ FullscreenContentPage {
} else {
video.source = mediaURL
video.fillMode = VideoOutput.PreserveAspectFit
- video.play()
videoFlickable.visible = true
+ playerIcon.visible = true
+ playerProgress.visible = true
+ video.play()
+ hideTimer.start()
}
}
- Flickable {
+ SilicaFlickable {
id: videoFlickable
visible: false
- clip: true
contentWidth: imageContainer.width
contentHeight: imageContainer.height
anchors.fill: parent
@@ -49,7 +51,7 @@ FullscreenContentPage {
}
onStatusChanged: {
console.log(status)
- switch (status){
+ switch (status) {
case MediaPlayer.Loading:
console.log("loading")
return;
@@ -84,49 +86,27 @@ FullscreenContentPage {
}
}
onStopped: function() {
- if (type != 'video')
+ if (type == 'gifv') {
video.play()
- else
+ } else {
video.stop()
- }
-
- IconButton {
- id: playerIcon
- icon.source: "image://theme/icon-m-play"
- anchors {
- left: parent.left
- bottom: parent.bottom
- leftMargin: Theme.horizontalPageMargin
- bottomMargin: Theme.horizontalPageMargin
- }
- onClicked: function() {
- if (video.playbackState === MediaPlayer.PlayingState)
- video.pause()
- else
- video.play()
+ overlayIcons.active = true
+ hideTimer.stop()
}
}
- ProgressBar {
- id: playerProgress
- indeterminate: true
- width: 400
- anchors {
- verticalCenter: playerIcon.verticalCenter
- left: playerIcon.right
- right: parent.right
- rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
- bottomMargin: Theme.horizontalPageMargin
- }
- }
MouseArea {
anchors.fill: parent
onClicked: function() {
- if (video.playbackState === MediaPlayer.PlayingState)
+ if (video.playbackState === MediaPlayer.PlayingState) {
video.pause()
- else
+ overlayIcons.active = true
+ hideTimer.stop()
+ } else {
video.play()
+ hideTimer.start()
+ }
}
}
@@ -155,12 +135,11 @@ FullscreenContentPage {
}
- Flickable {
+ SilicaFlickable {
id: imageFlickable
visible: false
contentWidth: imageContainer.width
contentHeight: imageContainer.height
- clip: true
anchors.fill: parent
onHeightChanged: if (imagePreview.status === Image.Ready) {
imagePreview.fitToScreen()
@@ -224,7 +203,6 @@ FullscreenContentPage {
property real minScale: 1.0
property real maxScale: 3.0
- opacity: 0.3
anchors.fill: parent
enabled: imagePreview.status === Image.Ready
pinch.target: imagePreview
@@ -250,6 +228,11 @@ FullscreenContentPage {
property: "scale"
from: imagePreview.scale
}
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: overlayIcons.active = !overlayIcons.active
+ }
}
}
@@ -292,32 +275,88 @@ FullscreenContentPage {
}
}
- IconButton {
- id: dismissBtn
- icon.source: "image://theme/icon-m-dismiss"
- anchors {
- top: parent.top
- topMargin: Theme.horizontalPageMargin
- right: parent.right
- rightMargin: Theme.horizontalPageMargin
- }
- onClicked: pageStack.pop()
- }
+ Item {
+ id: overlayIcons
- IconButton {
- id: mediaDlBtn
- anchors {
- right: parent.right
- rightMargin: Theme.horizontalPageMargin
- bottom: parent.bottom
- bottomMargin: Theme.horizontalPageMargin
+ 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()
}
- icon.source: "image://theme/icon-m-cloud-download"
- onClicked: {
- var filename = mediaURL.split("/")
- FileDownloader.downloadFile(mediaURL, filename[filename.length-1])
+
+ IconButton {
+ id: mediaDlBtn
+ anchors {
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ bottom: parent.bottom
+ bottomMargin: Theme.horizontalPageMargin
+ }
+ icon.source: "image://theme/icon-m-cloud-download"
+ onClicked: {
+ var filename = mediaURL.split("/")
+ FileDownloader.downloadFile(mediaURL, filename[filename.length-1])
+ }
}
+
+ IconButton {
+ id: playerIcon
+ visible: false
+ icon.source: "image://theme/icon-m-play"
+ anchors {
+ left: parent.left
+ bottom: parent.bottom
+ leftMargin: Theme.horizontalPageMargin
+ bottomMargin: Theme.horizontalPageMargin
+ }
+ onClicked: function() {
+ if (video.playbackState === MediaPlayer.PlayingState) {
+ video.pause()
+ hideTimer.stop()
+ } else {
+ video.play()
+ hideTimer.start()
+
+ }
+ }
+ }
+
+ ProgressBar {
+ id: playerProgress
+ visible: false
+ indeterminate: true
+ width: 400
+ anchors {
+ verticalCenter: playerIcon.verticalCenter
+ left: playerIcon.right
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
+ bottomMargin: Theme.horizontalPageMargin
+ }
+ }
+
+ Timer {
+ id: hideTimer
+ running: false
+ interval: 2000
+ onTriggered: {
+ overlayIcons.active = !overlayIcons.active
+ }
+ }
+
}
VerticalScrollDecorator { flickable: imageFlickable }
}
+
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index e31c2b6..d903ccc 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -9,8 +9,6 @@ SilicaListView {
property string type
property string title
- property string vwPlaceholderText: qsTr("Loading")
- property string vwPlaceholderHint: qsTr("please wait...")
property string description
property ListModel mdl: []
property variant params: []
@@ -52,13 +50,16 @@ SilicaListView {
ViewPlaceholder {
id: viewPlaceHolder
enabled: model.count === 0
- text: vwPlaceholderText
- hintText: vwPlaceholderHint
+ text: qsTr("Loading")
+ hintText: qsTr("please wait...")
+ anchors.centerIn: parent
}
PullDownMenu {
+
MenuItem {
text: qsTr("Settings")
+ visible: !profilePage
onClicked: {
pageStack.push(Qt.resolvedUrl("../SettingsPage.qml"), {})
}
@@ -66,6 +67,7 @@ SilicaListView {
MenuItem {
text: qsTr("New Toot")
+ visible: !profilePage
onClicked: {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
headerTitle: qsTr("New Toot"),
@@ -74,6 +76,14 @@ SilicaListView {
}
}
+ MenuItem {
+ text: qsTr("Open in Browser")
+ visible: !mainPage
+ onClicked: {
+ Qt.openUrlExternally(url)
+ }
+ }
+
MenuItem {
text: qsTr("Reload")
onClicked: {
diff --git a/qml/pages/components/MyImage.qml b/qml/pages/components/MyMedia.qml
similarity index 76%
rename from qml/pages/components/MyImage.qml
rename to qml/pages/components/MyMedia.qml
index 2b07d73..32fe464 100644
--- a/qml/pages/components/MyImage.qml
+++ b/qml/pages/components/MyMedia.qml
@@ -4,7 +4,7 @@ import QtMultimedia 5.0
Item {
- id: myImage
+ id: myMedia
property string type : ""
property string previewURL: ""
@@ -17,9 +17,26 @@ Item {
}
Image {
- opacity: status !== Image.Ready ? 1.0 : 0.0
+ visible: type == 'image'
+ opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
- source: "image://theme/icon-m-image"
+ source: "image://theme/icon-m-image?"
+ anchors.centerIn: parent
+ }
+
+ Image {
+ visible: type == 'video' || type == "gifv"
+ opacity: img.status === Image.Ready ? 0.0 : 1.0
+ Behavior on opacity { FadeAnimator {} }
+ source: "image://theme/icon-m-file-video?"
+ anchors.centerIn: parent
+ }
+
+ Image {
+ visible: type == 'audio'
+ opacity: img.status === Image.Ready ? 0.0 : 1.0
+ Behavior on opacity { FadeAnimator {} }
+ source: "image://theme/icon-m-file-audio?"
anchors.centerIn: parent
}
@@ -33,6 +50,7 @@ Item {
Image {
id: img
+ visible: type != 'audio'
asynchronous: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
@@ -61,7 +79,7 @@ Item {
Image {
id: videoIcon
visible: type === "video" || type === "gifv"
- source: "image://theme/icon-l-play"
+ source: "image://theme/icon-l-play?"
anchors.centerIn: parent
}
diff --git a/qml/pages/components/Navigation.qml b/qml/pages/components/NavigationPanel.qml
similarity index 67%
rename from qml/pages/components/Navigation.qml
rename to qml/pages/components/NavigationPanel.qml
index 0190051..9846baa 100644
--- a/qml/pages/components/Navigation.qml
+++ b/qml/pages/components/NavigationPanel.qml
@@ -17,7 +17,7 @@ SilicaGridView {
ListModel {
id: listModel
ListElement {
- icon: "image://theme/icon-m-home"
+ icon: "image://theme/icon-m-home?"
slug: "home"
name: "Home"
active: true
@@ -25,14 +25,14 @@ SilicaGridView {
}
ListElement {
- icon: "image://theme/icon-m-alarm"
+ icon: "image://theme/icon-m-alarm?"
slug: "notifications"
name: "Notifications"
active: false
}
ListElement {
- icon: "image://theme/icon-m-whereami"
+ icon: "image://theme/icon-m-whereami?"
slug: "local"
name: "Local"
active: false
@@ -40,7 +40,7 @@ SilicaGridView {
}
ListElement {
- icon: "image://theme/icon-m-website"
+ icon: "image://theme/icon-m-website?"
slug: "federated"
name: "Federated"
active: false
@@ -48,7 +48,7 @@ SilicaGridView {
}
ListElement {
- icon: "image://theme/icon-m-search"
+ icon: "image://theme/icon-m-search?"
slug: "search"
name: "Search"
active: false
@@ -100,54 +100,19 @@ SilicaGridView {
}
}
- OpacityRampEffect {
- sourceItem: label
- offset: 0.5
- }
-
- ColorOverlay {
- source: image
- color: (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
- anchors.fill: image
- }
-
Image {
id: image
visible: false
- source: model.icon // +'?'+ (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
+ source: model.icon
sourceSize.width: Theme.iconSizeMedium
sourceSize.height: Theme.iconSizeMedium
anchors.centerIn: parent
}
- Text {
- visible: false
- text: model.name
- font.pixelSize: Theme.fontSizeExtraSmall/2
- color: (highlighted
- ? Theme.highlightColor
- : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
- horizontalAlignment: Text.AlignHCenter
- anchors {
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- bottomMargin: Theme.paddingSmall
- }
- }
-
- Label {
- id: label
- visible: false
- color: (highlighted ? Theme.highlightColor : Theme.secondaryHighlightColor)
- text: {
- return model.name.toUpperCase();
- }
- font.pixelSize: Theme.fontSizeExtraSmall
- font.family: Theme.fontFamilyHeading
- width: parent.width
- horizontalAlignment : Text.AlignHCenter
- anchors.bottom: parent.bottom
+ ColorOverlay {
+ source: image
+ color: (highlighted ? Theme.highlightColor : (model.active ? Theme.secondaryHighlightColor : Theme.primaryColor))
+ anchors.fill: image
}
onClicked: {
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index 8410136..b4d5355 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -35,9 +35,7 @@ Item {
id: avatarImage
asynchronous: true
source: if (avatarImage.status === Image.Error)
- source = "../../images/icon-l-profile.svg?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
+ source = "../../images/icon-l-profile.svg?" + Theme.primaryColor
else image
width: Theme.iconSizeLarge
height: width
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 3765689..b0a6e82 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -9,7 +9,6 @@ BackgroundItem {
signal send (string notice)
signal navigateTo(string link)
- width: parent.width
height: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
mnu.height + miniHeader.height + Theme.paddingLarge + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
} else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0) + (iconDirectMsg.visible ? iconDirectMsg.height : 0)
@@ -58,9 +57,7 @@ BackgroundItem {
}
onStatusChanged: {
if (avatar.status === Image.Error)
- source = "../../images/icon-m-profile.svg?" + (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
+ source = "../../images/icon-m-profile.svg?" + Theme.primaryColor
}
MouseArea {
@@ -97,7 +94,7 @@ BackgroundItem {
visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
- source: "image://theme/icon-m-mail?"
+ source: "image://theme/icon-m-mail?" + Theme.primaryColor
color: Theme.primaryColor
anchors {
horizontalCenter: avatar.horizontalCenter
@@ -266,7 +263,9 @@ BackgroundItem {
height: Theme.iconSizeExtraLarge * 2
anchors {
left: lblContent.left
+ leftMargin: isPortrait ? 0 : Theme.itemSizeSmall
right: lblContent.right
+ rightMargin: isPortrait ? 0 : Theme.itemSizeLarge
top: lblContent.bottom
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
diff --git a/rpm/harbour-tooter.spec b/rpm/harbour-tooter.spec
index a83649f..3f48274 100644
--- a/rpm/harbour-tooter.spec
+++ b/rpm/harbour-tooter.spec
@@ -25,7 +25,10 @@ BuildRequires: pkgconfig(sailfishapp) >= 1.0.2
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Quick)
+BuildRequires: pkgconfig(Qt5DBus)
+BuildRequires: pkgconfig(Qt5Multimedia)
BuildRequires: pkgconfig(nemonotifications-qt5)
+BuildRequires: pkgconfig(openssl)
BuildRequires: desktop-file-utils
%description
diff --git a/rpm/harbour-tooter.yaml b/rpm/harbour-tooter.yaml
index 6658e97..3aec42f 100644
--- a/rpm/harbour-tooter.yaml
+++ b/rpm/harbour-tooter.yaml
@@ -25,12 +25,14 @@ PkgConfigBR:
- Qt5Core
- Qt5Qml
- Qt5Quick
+ - Qt5DBus
+ - Qt5Multimedia
- nemonotifications-qt5
-
+ - openssl
# Build dependencies without a pkgconfig setup can be listed here
-# PkgBR:
-# - package-needed-to-build
+# PkgBR:
+# - qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
# Runtime dependencies which are not automatically detected
Requires:
diff --git a/src/filedownloader.h b/src/filedownloader.h
index a8f5179..125ac84 100644
--- a/src/filedownloader.h
+++ b/src/filedownloader.h
@@ -24,7 +24,7 @@ class FileDownloader : public QObject
{
Q_OBJECT
public:
- explicit FileDownloader(QQmlEngine *engine, QObject *parent = 0);
+ explicit FileDownloader(QQmlEngine *engine, QObject *parent = nullptr);
Q_INVOKABLE void downloadFile(QUrl url, QString filename);
Q_INVOKABLE void open(QString filename);
diff --git a/src/imageuploader.cpp b/src/imageuploader.cpp
index 40ddb2a..4e66a65 100644
--- a/src/imageuploader.cpp
+++ b/src/imageuploader.cpp
@@ -8,7 +8,6 @@
#include
#include
-//static const QUrl IMGUR_UPLOAD_URL("https://httpbin.org/post");
//static const QUrl IMGUR_UPLOAD_URL();
ImageUploader::ImageUploader(QObject *parent) : QObject(parent), m_networkAccessManager(nullptr), m_reply(nullptr) {
@@ -101,12 +100,8 @@ void ImageUploader::upload() {
//imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(fileInfo));
-
-
//POST data
-
-
QNetworkRequest request(m_uploadUrl);
request.setRawHeader("Authorization", m_authorizationHeader);
m_reply = m_networkAccessManager->post(request, multiPart);
@@ -114,8 +109,6 @@ void ImageUploader::upload() {
connect(m_reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));
-
-
//connect(m_reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
//connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));*/
}
diff --git a/src/imageuploader.h b/src/imageuploader.h
index e530e48..86eda07 100644
--- a/src/imageuploader.h
+++ b/src/imageuploader.h
@@ -12,7 +12,7 @@ class ImageUploader : public QObject
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged)
public:
- explicit ImageUploader(QObject *parent = 0);
+ explicit ImageUploader(QObject *parent = nullptr);
~ImageUploader();
Q_INVOKABLE void setFile(const QString &fileName);
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index e97e5eb..a85cd34 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
Was gibt's Neues?
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tippen um einzufügen
+
@@ -117,38 +118,38 @@
MainPage
- Home
+
- Benachrichtigungen
-
-
-
- Neuer Toot
-
-
-
- Suche
-
-
-
- @Benutzer oder #Ausdruck
+
- Lokal
+
- Föderation
+
+
+
+
+
+
+
+
+
+
+
+
+ Neuer Toot
MediaFullScreen
- Ladefehler
+
@@ -188,6 +189,10 @@
Neu laden
+
+
+ Im Browser öffnen
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- Details
+
Will show as: "35 Followers"
- Folgende
+
Will show as: "23 Following"
- Folgt
+
Will show as: "115 Statuses"
- Beiträge
+
+
+
+
+ Erwähnen
Is a button. Keep it as short as possible.
- Entfolgen
+
Is a button. Keep it as short as possible.
- Angefragt
+
Is a button. Keep it as short as possible.
- Folgen
+
Is a button. Keep it as short as possible.
- Nicht stumm schalten
+
Is a button. Keep it as short as possible.
- Stumm schalten
+
Is a button. Keep it as short as possible.
- Nicht blockieren
+
Is a button. Keep it as short as possible.
- Blockieren
-
-
-
- Im Browser öffnen
-
-
-
- Erwähnen
+
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 173f116..5be46c0 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Emoji
+
- Κτυπήστε για εισαγωγή
+
@@ -117,32 +118,32 @@
MainPage
- Οικοσελίδα
+
- Ειδοποιήσεις
-
-
-
- Νέος
-
-
-
- Αναζήτηση
-
-
-
- @χρήστη ή #όρος
+
- Τοπικός
+
+
+
+
+
+
+
+
+
+
+
+ Νέος
+
MediaFullScreen
@@ -188,6 +189,10 @@
Επαναφόρτωση
+
+
+
+
ProfileHeader
@@ -214,22 +219,26 @@
Will show as: "35 Followers"
- Σας ακολουθούν
+
Will show as: "23 Following"
- Σε παρακολούθηση
+
Will show as: "115 Statuses"
- Κατάσταση
+
+
+
+
+
Is a button. Keep it as short as possible.
- Αναίρεση παρακολούθησης
+
@@ -239,34 +248,26 @@
Is a button. Keep it as short as possible.
- Παρακολούθηση
+
Is a button. Keep it as short as possible.
- Αναίρεση σίγασης
+
Is a button. Keep it as short as possible.
- Σίγαση
+
Is a button. Keep it as short as possible.
- Αναίρεση φραγής
+
Is a button. Keep it as short as possible.
- Φραγή
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 085fb00..fc84ce7 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
¿En qué estás pensando?
@@ -76,11 +77,11 @@
EmojiSelect
- Emoticonos
+
- Toca para insertar
+
@@ -117,38 +118,38 @@
MainPage
- Inicio
+
- Notificaciones
-
-
-
- Nuevo toot
-
-
-
- Buscar
-
-
-
- @usuario o #término
+
- Local
+
- Federada
+
+
+
+
+
+
+
+
+
+
+
+
+ Nuevo toot
MediaFullScreen
- Error al cargar
+
@@ -188,6 +189,10 @@
Volver a cargar
+
+
+ Abrir en el navegador
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- Detalles
+
Will show as: "35 Followers"
- Seguidores
+
Will show as: "23 Following"
- Siguiendo
+
Will show as: "115 Statuses"
- Estados
+
+
+
+
+ Mencionar
Is a button. Keep it as short as possible.
- Dejar de seguir
+
Is a button. Keep it as short as possible.
- Requerido
+
Is a button. Keep it as short as possible.
- Seguir
+
Is a button. Keep it as short as possible.
- Dejar de silenciar
+
Is a button. Keep it as short as possible.
- Silenciar
+
Is a button. Keep it as short as possible.
- Desbloquear
+
Is a button. Keep it as short as possible.
- Bloquear
-
-
-
- Abrir en el navegador
-
-
-
- Mencionar
+
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 5dfc7d3..3135fb6 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
Qu'avez-vous en tête?
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Appuyez pour insérer
+
@@ -117,38 +118,38 @@
MainPage
- Accueil
+
- Notifications
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nouveau pouet
-
-
- Rechercher
-
-
-
- @personne ou #terme
-
-
-
- Fil public local
-
-
-
- Fil public global
-
MediaFullScreen
- Erreur au chargement
+
@@ -188,6 +189,10 @@
Recharger
+
+
+ Ouvrir dans le navigateur
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- Détails
+
Will show as: "35 Followers"
- Abonné(e)s
+
Will show as: "23 Following"
- Abonnements
+
Will show as: "115 Statuses"
- Pouets
+
+
+
+
+ Mentionner
Is a button. Keep it as short as possible.
- Ne plus suivre
+
Is a button. Keep it as short as possible.
- Demandé
+
Is a button. Keep it as short as possible.
- Suivre
+
Is a button. Keep it as short as possible.
- Démasquer
+
Is a button. Keep it as short as possible.
- Masquer
+
Is a button. Keep it as short as possible.
- Débloquer
+
Is a button. Keep it as short as possible.
- Bloquer
-
-
-
- Ouvrir dans le navigateur
-
-
-
- Mentionner
+
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index b18fcc5..93cb7c3 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
A cosa stai pensando?
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tap per inserire
+
@@ -117,38 +118,38 @@
MainPage
- Home
+
- Notifiche
-
-
-
- Nuovo Toot
-
-
-
- Cerca
-
-
-
- @utente o #terme
+
- Locale
+
- Federazione
+
+
+
+
+
+
+
+
+
+
+
+
+ Nuovo Toot
MediaFullScreen
- Errore durante caricamento
+
@@ -188,6 +189,10 @@
Ricarica
+
+
+ Aprire nel browser
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- Dettagli
+
Will show as: "35 Followers"
- Seguaci
+
Will show as: "23 Following"
- Segue
+
Will show as: "115 Statuses"
- Toots
+
+
+
+
+ Menzionare
Is a button. Keep it as short as possible.
- Smetti di seguire
+
Is a button. Keep it as short as possible.
- Richiesto
+
Is a button. Keep it as short as possible.
- Segui
+
Is a button. Keep it as short as possible.
- Non silenziare
+
Is a button. Keep it as short as possible.
- Silenzia
+
Is a button. Keep it as short as possible.
- Sblocca
+
Is a button. Keep it as short as possible.
- Blocca
-
-
-
- Aprire nel browser
-
-
-
- Menzionare
+
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 654c222..83c891a 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
Wat wil je kwijt?
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tikken om in te voegen
+
@@ -117,31 +118,31 @@
MainPage
- Thuis
+
- Meldingen
-
-
-
- Nieuwe Toot
-
-
-
- Zoeken
-
-
-
- @user of #term
+
- Lokaal
+
- Gefedereerd
+
+
+
+
+
+
+
+
+
+
+
+
+ Nieuwe Toot
@@ -188,6 +189,10 @@
Herladen
+
+
+ Open een Browser
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- Gegevens
+
Will show as: "35 Followers"
- Volgers
+
Will show as: "23 Following"
- Volgend
+
Will show as: "115 Statuses"
- Statussen
+
+
+
+
+ Vermelden
Is a button. Keep it as short as possible.
- Ontvolgen
+
Is a button. Keep it as short as possible.
- Gevraagd
+
Is a button. Keep it as short as possible.
- Volgen
+
Is a button. Keep it as short as possible.
- Ontdempen
+
Is a button. Keep it as short as possible.
- Dempen
+
Is a button. Keep it as short as possible.
- Deblokkeren
+
Is a button. Keep it as short as possible.
- Blokkeren
-
-
-
- Open een Browser
-
-
-
- Vermelden
+
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index f54b406..f0e21c0 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Emoji’s
+
- Tikt voor in te voegen
+
@@ -117,31 +118,31 @@
MainPage
- Thuis
+
- Meldingen
-
-
-
- Nieuwen toot
-
-
-
- Zoeken
-
-
-
- @gebruiker of #term
+
- Lokaal
+
- Gefedereerd
+
+
+
+
+
+
+
+
+
+
+
+
+ Nieuwen toot
@@ -188,6 +189,10 @@
Herladen
+
+
+
+
ProfileHeader
@@ -214,22 +219,26 @@
Will show as: "35 Followers"
- Volgers
+
Will show as: "23 Following"
- Volgend
+
Will show as: "115 Statuses"
- Statussen
+
+
+
+
+
Is a button. Keep it as short as possible.
- Ontvolgen
+
@@ -239,34 +248,26 @@
Is a button. Keep it as short as possible.
- Volgen
+
Is a button. Keep it as short as possible.
- Ontdempen
+
Is a button. Keep it as short as possible.
- Dempen
+
Is a button. Keep it as short as possible.
- Deblokkeren
+
Is a button. Keep it as short as possible.
- Blokkeren
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index ffd232c..6599ff6 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tustejar per inserir
+
@@ -117,31 +118,31 @@
MainPage
- Acuèlh
+
- Notificacions
-
-
-
- Nòu Tut
-
-
-
- Cercar
-
-
-
- @utilizaire o #tèrm
+
- Local
+
- Federat
+
+
+
+
+
+
+
+
+
+
+
+
+ Nòu Tut
@@ -188,6 +189,10 @@
+
+
+
+
ProfileHeader
@@ -214,22 +219,26 @@
Will show as: "35 Followers"
- Seguidors
+
Will show as: "23 Following"
- Abonaments
+
Will show as: "115 Statuses"
- Estatuts
+
+
+
+
+
Is a button. Keep it as short as possible.
- Quitar de seguir
+
@@ -239,34 +248,26 @@
Is a button. Keep it as short as possible.
- Seguir
+
Is a button. Keep it as short as possible.
- Mostrar
+
Is a button. Keep it as short as possible.
- Amagar
+
Is a button. Keep it as short as possible.
- Desblocar
+
Is a button. Keep it as short as possible.
- Blocar
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 5a98dea..be3604d 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Emoji
+
- Dotknij aby wstawić
+
@@ -117,31 +118,31 @@
MainPage
- Strona główna
+
- Powiadomienia
-
-
-
- Nowy wpis
-
-
-
- Szukaj
-
-
-
- @użytkownik lub #tag
+
- Lokalne
+
- Globalne
+
+
+
+
+
+
+
+
+
+
+
+
+ Nowy wpis
@@ -188,6 +189,10 @@
Załaduj ponownie
+
+
+
+
ProfileHeader
@@ -219,17 +224,21 @@
Will show as: "23 Following"
- Śledzisz
+
Will show as: "115 Statuses"
+
+
+
+
Is a button. Keep it as short as possible.
- Przestań śledzić
+
@@ -249,7 +258,7 @@
Is a button. Keep it as short as possible.
- Wycisz
+
@@ -261,14 +270,6 @@
Is a button. Keep it as short as possible.
-
-
-
-
-
-
-
-
SettingsPage
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index f8a5da6..a9224f4 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
О чём думаете?
@@ -76,11 +77,11 @@
EmojiSelect
- Cмайликов
+
- Нажмите, чтобы вставить
+
@@ -117,38 +118,38 @@
MainPage
- Главная
+
- Уведомления
-
-
-
- Новый
-
-
-
- Поиск
-
-
-
- @пользователь или #срок
+
- Локальный
+
- Федеративные
+
+
+
+
+
+
+
+
+
+
+
+
+ Новый
MediaFullScreen
- Ошибка загрузки
+
@@ -188,6 +189,10 @@
Перезагрузить
+
+
+ Открыть в браузере
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- О профиль
+
Will show as: "35 Followers"
- Читают
+
Will show as: "23 Following"
- Следующий
+
Will show as: "115 Statuses"
- Статусы
+
+
+
+
+ Упоминание
Is a button. Keep it as short as possible.
- Отписаться
+
Is a button. Keep it as short as possible.
- Запрошенный
+
Is a button. Keep it as short as possible.
- Следить
+
Is a button. Keep it as short as possible.
- Нет безгласный
+
Is a button. Keep it as short as possible.
- Безгласный
+
Is a button. Keep it as short as possible.
- Открыть
+
Is a button. Keep it as short as possible.
- Блокировать
-
-
-
- Открыть в браузере
-
-
-
- Упоминание
+
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index b631d8e..1a0f511 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Емотикони
+
- Тапни за убацивање
+
@@ -117,31 +118,31 @@
MainPage
- Почетна
+
- Обавјештење
-
-
-
- Novi toot
-
-
-
- Претрага
-
-
-
- @korisnik ili #pojam
+
- Локална
+
- Федеративна
+
+
+
+
+
+
+
+
+
+
+
+
+ Novi toot
@@ -188,6 +189,10 @@
учитај још
+
+
+
+
ProfileHeader
@@ -214,22 +219,26 @@
Will show as: "35 Followers"
- Пратиоци
+
Will show as: "23 Following"
- Пратите
+
Will show as: "115 Statuses"
- Статуси
+
+
+
+
+
Is a button. Keep it as short as possible.
- Одпрати
+
@@ -239,34 +248,26 @@
Is a button. Keep it as short as possible.
- Прати
+
Is a button. Keep it as short as possible.
- Укини утишање
+
Is a button. Keep it as short as possible.
- Утишај
+
Is a button. Keep it as short as possible.
- Одблокирати
+
Is a button. Keep it as short as possible.
- Блокирати
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 94b995c..7e3b76b 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tryck för att infoga
+
@@ -117,31 +118,31 @@
MainPage
- Hem
+
- Notifieringar
-
-
-
- Ny toot
-
-
-
- Sök
-
-
-
- @user eller #term
+
- Lokalt
+
- Förenade
+
+
+
+
+
+
+
+
+
+
+
+
+ Ny toot
@@ -188,6 +189,10 @@
Ladda mer
+
+
+
+
ProfileHeader
@@ -214,22 +219,26 @@
Will show as: "35 Followers"
- Följare
+
Will show as: "23 Following"
- Följer
+
Will show as: "115 Statuses"
- Statusar
+
+
+
+
+
Is a button. Keep it as short as possible.
- Sluta följa
+
@@ -239,34 +248,26 @@
Is a button. Keep it as short as possible.
- Följ
+
Is a button. Keep it as short as possible.
- Avtysta
+
Is a button. Keep it as short as possible.
- Tysta
+
Is a button. Keep it as short as possible.
- Avblockera
+
Is a button. Keep it as short as possible.
- Blockera
-
-
-
-
-
-
-
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 438c6d3..062036b 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
有何想法?
@@ -76,11 +77,11 @@
EmojiSelect
- 表情
+
- 点击以插入
+
@@ -117,38 +118,38 @@
MainPage
- 主页
+
- 通知
-
-
-
- 新嘟嘟
-
-
-
- 搜索
-
-
-
- @用户或#项目
+
- 本地
+
- 联合
+
+
+
+
+
+
+
+
+
+
+
+
+ 新嘟嘟
MediaFullScreen
- 加载错误
+
@@ -188,6 +189,10 @@
重新加载
+
+
+ 在浏览器打开个人简介
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- 关于
+
Will show as: "35 Followers"
- 关注者
+
Will show as: "23 Following"
- 关注中
+
Will show as: "115 Statuses"
- 状态
+
+
+
+
+ 提及
Is a button. Keep it as short as possible.
- 取消关注
+
Is a button. Keep it as short as possible.
- 请求
+
Is a button. Keep it as short as possible.
- 关注
+
Is a button. Keep it as short as possible.
- 未静音
+
Is a button. Keep it as short as possible.
- 静音
+
Is a button. Keep it as short as possible.
- 解除封锁
+
Is a button. Keep it as short as possible.
- 封锁
-
-
-
- 在浏览器打开个人简介
-
-
-
- 提及
+
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 6305016..8e242a8 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -33,6 +33,7 @@
+ placeholderText in Toot text panel
What's on your mind?
@@ -76,11 +77,11 @@
EmojiSelect
- Emojis
+
- Tap to insert
+
@@ -117,38 +118,38 @@
MainPage
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ New Toot
MediaFullScreen
- Error loading
+
@@ -188,6 +189,10 @@
Reload
+
+
+ Open in Browser
+
ProfileHeader
@@ -209,65 +214,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
- About
+
Will show as: "35 Followers"
- Followers
+
Will show as: "23 Following"
- Following
+
Will show as: "115 Statuses"
- Statuses
+
+
+
+
+ Mention
Is a button. Keep it as short as possible.
- Unfollow
+
Is a button. Keep it as short as possible.
- Requested
+
Is a button. Keep it as short as possible.
- Follow
+
Is a button. Keep it as short as possible.
- Unmute
+
Is a button. Keep it as short as possible.
- Mute
+
Is a button. Keep it as short as possible.
- Unblock
+
Is a button. Keep it as short as possible.
- Block
-
-
-
- Open in Browser
-
-
-
- Mention
+
From b307fa81bee7623439b75bc5d7d16dd0097dcf49 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 29 Jun 2020 11:23:44 +0200
Subject: [PATCH 62/70] better sizing uploaded images
---
qml/pages/ConversationPage.qml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 1d3480e..a3c68ba 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -309,7 +309,7 @@ Page {
height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
model: mediaModel
cellWidth: uploadedImages.width / 4
- cellHeight: Theme.itemSizeExtraLarge
+ cellHeight: isPortrait ? cellWidth : Theme.itemSizeExtraLarge
delegate: BackgroundItem {
id: myDelegate
width: uploadedImages.cellWidth
From 071d4469435da6ff39845f32c3b7bcb582e1ceac Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 29 Jun 2020 15:31:05 +0200
Subject: [PATCH 63/70] support for landscape view
---
qml/pages/components/ProfileHeader.qml | 8 ++++----
qml/pages/components/VisualContainer.qml | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index b4d5355..5cddfbd 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -12,7 +12,7 @@ Item {
property string bg: ""
width: parent.width
- height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height
+ height: isPortrait ? (avatarImage.height + Theme.paddingLarge*3 + infoLbl.height) : (avatarImage.height + Theme.paddingLarge*2.5 + infoLbl.height)
Rectangle {
id: bgImage
@@ -37,7 +37,7 @@ Item {
source: if (avatarImage.status === Image.Error)
source = "../../images/icon-l-profile.svg?" + Theme.primaryColor
else image
- width: Theme.iconSizeLarge
+ width: isPortrait ? Theme.iconSizeLarge : Theme.iconSizeExtraLarge
height: width
anchors {
left: parent.left
@@ -94,7 +94,7 @@ Item {
color: Theme.secondaryHighlightColor
truncationMode: TruncationMode.Fade
width: parent.width
- height: description === "" ? 0 : contentHeight
+ height: contentHeight
horizontalAlignment: Text.AlignRight
}
}
@@ -106,7 +106,7 @@ Item {
height: followed_by || locked || bot || group ? Theme.iconSizeSmall + Theme.paddingSmall : 0
anchors {
top: avatarImage.bottom
- topMargin: Theme.paddingMedium
+ topMargin: isPortrait ? Theme.paddingMedium : 0
left: parent.left
leftMargin: Theme.horizontalPageMargin
right: parent.right
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index b0a6e82..57cacb3 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -265,7 +265,7 @@ BackgroundItem {
left: lblContent.left
leftMargin: isPortrait ? 0 : Theme.itemSizeSmall
right: lblContent.right
- rightMargin: isPortrait ? 0 : Theme.itemSizeLarge
+ rightMargin: isPortrait ? 0 : Theme.itemSizeLarge * 1.4
top: lblContent.bottom
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
From 699265fca78366276e63a98cf7eebbde9104e130 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 3 Jul 2020 10:45:03 +0200
Subject: [PATCH 64/70] fix broken reblog/favourites counter
---
harbour-tooter.pro | 3 +--
qml/lib/API.js | 2 +-
qml/lib/Worker.js | 17 ++++++++---------
3 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/harbour-tooter.pro b/harbour-tooter.pro
index fd7bec4..db171a3 100644
--- a/harbour-tooter.pro
+++ b/harbour-tooter.pro
@@ -16,8 +16,7 @@ CONFIG += sailfishapp
QT += network dbus sql
QT += multimedia
CONFIG += link_pkgconfig
-PKGCONFIG += sailfishapp
-PKGCONFIG += \
+PKGCONFIG += sailfishapp \
nemonotifications-qt5
DEFINES += "APPVERSION=\\\"$${SPECVERSION}\\\""
diff --git a/qml/lib/API.js b/qml/lib/API.js
index 9fbfa12..1373f9f 100644
--- a/qml/lib/API.js
+++ b/qml/lib/API.js
@@ -38,7 +38,7 @@ var init = function(){
tx.executeSql('CREATE TABLE IF NOT EXISTS settings ('
+ ' key TEXT UNIQUE, '
+ ' value TEXT '
- +');');
+ + ');');
//tx.executeSql('INSERT INTO settings (key, value) VALUES (?, ?)', ["conf", "{}"]);
});
db.changeVersion('', '0.1', function(tx) {
diff --git a/qml/lib/Worker.js b/qml/lib/Worker.js
index 6e8bb69..1373fb0 100644
--- a/qml/lib/Worker.js
+++ b/qml/lib/Worker.js
@@ -160,7 +160,6 @@ function parseAccounts(collection, prefix, data) {
//res[prefix + 'account_fields'] = data["fields"]
res[prefix + 'account_bot'] = data["bot"]
res[prefix + 'account_group'] = data["group"]
- res[prefix + 'account_source'] = data["source"]
//console.log(JSON.stringify(res))
return (res);
@@ -228,7 +227,7 @@ function parseNotification(data){
return item;
}
-/** Function: ?? */
+/** Function: */
function collect() {
var ret = {};
var len = arguments.length;
@@ -261,7 +260,6 @@ function parseToot (data) {
item['status_spoiler_text'] = data["spoiler_text"]
item['status_visibility'] = data["visibility"]
item['status_language'] = data["language"]
-
item['status_uri'] = data["uri"]
item['status_url'] = data["url"]
item['status_replies_count'] = data["replies_count"]
@@ -270,10 +268,8 @@ function parseToot (data) {
item['status_favourited'] = data["favourited"]
item['status_reblogged'] = data["reblogged"]
item['status_bookmarked'] = data["bookmarked"]
-
item['status_content'] = data["content"]
item['attachments'] = data['media_attachments']
-
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
@@ -283,16 +279,19 @@ function parseToot (data) {
if(item['status_reblog']) {
item['type'] = "reblog";
item['typeIcon'] = "image://theme/icon-s-retweet"
- item['status_id'] = data["reblog"]["id"];
- item['status_spoiler_text'] = data["reblog"]["spoiler_text"]
+ item['status_id'] = data["reblog"]["id"]
item['status_sensitive'] = data["reblog"]["sensitive"]
+ item['status_spoiler_text'] = data["reblog"]["spoiler_text"]
+ item['status_replies_count'] = data["reblog"]["replies_count"]
+ item['status_reblogs_count'] = data["reblog"]["reblogs_count"]
+ item['status_favourites_count'] = data["reblog"]["favourites_count"]
item = parseAccounts(item, "", data['reblog']["account"])
item = parseAccounts(item, "reblog_", data["account"])
} else {
item = parseAccounts(item, "", data["account"])
}
- /** Replace HTML content */
+ /** Replace HTML content in Toots */
item['content'] = data['content']
.replaceAll('', '')
.replaceAll('', '')
@@ -301,7 +300,7 @@ function parseToot (data) {
/** Media attachements in Toots */
item['attachments'] = [];
- for(i = 0; i < data['media_attachments'].length ; i++) {
+ for(i = 0; i < data['media_attachments'].length; i++) {
var attachments = data['media_attachments'][i];
item['content'] = item['content'].replaceAll(attachments['text_url'], '')
var tmp = {
From 95f065fd5bf9e8ec9c7144ed5e6b059625e8080a Mon Sep 17 00:00:00 2001
From: molan-git
Date: Fri, 3 Jul 2020 10:45:30 +0200
Subject: [PATCH 65/70] ui improvements / landscape support
---
qml/pages/ConversationPage.qml | 78 +++-----
qml/pages/LoginPage.qml | 4 +-
qml/pages/MainPage.qml | 4 +-
qml/pages/ProfilePage.qml | 9 +-
qml/pages/components/EmojiSelect.qml | 235 ++++++++++++++++-------
qml/pages/components/InfoBanner.qml | 3 +-
qml/pages/components/ItemUser.qml | 4 +-
qml/pages/components/MediaFullScreen.qml | 8 +-
qml/pages/components/MiniHeader.qml | 2 +-
qml/pages/components/MiniStatus.qml | 4 +-
qml/pages/components/MyList.qml | 2 +-
qml/pages/components/MyMedia.qml | 13 +-
qml/pages/components/ProfileHeader.qml | 6 +-
qml/pages/components/VisualContainer.qml | 4 +-
translations/harbour-tooter-de.ts | 47 ++---
translations/harbour-tooter-el.ts | 35 ++--
translations/harbour-tooter-es.ts | 1 +
translations/harbour-tooter-fr.ts | 45 ++---
translations/harbour-tooter-it.ts | 47 ++---
translations/harbour-tooter-nl.ts | 1 +
translations/harbour-tooter-nl_BE.ts | 1 +
translations/harbour-tooter-oc.ts | 1 +
translations/harbour-tooter-pl.ts | 1 +
translations/harbour-tooter-ru.ts | 1 +
translations/harbour-tooter-sr.ts | 1 +
translations/harbour-tooter-sv.ts | 1 +
translations/harbour-tooter-zh_CN.ts | 1 +
translations/harbour-tooter.ts | 1 +
28 files changed, 327 insertions(+), 233 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index a3c68ba..8c82fd8 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -26,10 +26,7 @@ Page {
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
console.log(suggestedUser)
- suggestedModel = Qt.createQmlObject(
- 'import QtQuick 2.0; ListModel { }',
- Qt.application, 'InternalQmlObject'
- )
+ suggestedModel = Qt.createQmlObject( 'import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject' )
predictionList.visible = false
if (suggestedUser.length > 0) {
var msg = {
@@ -58,9 +55,7 @@ Page {
WorkerScript {
id: worker
source: "../lib/Worker.js"
- onMessage: {
- console.log(JSON.stringify(messageObject))
- }
+ onMessage: { console.log(JSON.stringify(messageObject)) }
}
SilicaListView {
@@ -85,8 +80,7 @@ Page {
text: Format.formatDate(section, Formatter.DateMedium)
}
}
- delegate: VisualContainer {
- }
+ delegate: VisualContainer {}
onCountChanged: {
if (mdl)
for (var i = 0; i < mdl.count; i++) {
@@ -121,11 +115,8 @@ Page {
//: "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
text: !panel.open ? qsTr("Reply") : qsTr("Hide Reply")
visible: type == "reply"
- onClicked: if (!panel.open) {
- panel.open = true
- } else panel.open = false
+ onClicked: !panel.open ? panel.open = true : panel.open = false
}
-
}
}
@@ -137,20 +128,16 @@ Page {
anchors {
left: panel.left
right: panel.right
- bottom: if (panel.open == true) {
- panel.top
- } else {
- hiddenPanel.top
- }
+ bottom: panel.open == true ? panel.top : hiddenPanel.top
}
SilicaListView {
- rotation: 180
+ id: predictionResults
+ rotation: 180 // shows best matching result on the bottom
anchors.fill: parent
model: suggestedModel
clip: true
quickScroll: false
- VerticalScrollDecorator {}
delegate: ItemUser {
rotation: 180
onClicked: {
@@ -166,7 +153,6 @@ Page {
+ model.account_acct
+ ' '
+ textOperations.text.substring(textOperations.selectionEnd).trim()
-
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
}
}
@@ -175,21 +161,20 @@ Page {
positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
}
}
+
+ VerticalScrollDecorator {}
}
}
DockedPanel {
id: panel
width: parent.width
- height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
- + btnContentWarning.height + Theme.paddingMedium
- + (warningContent.visible ? warningContent.height : 0)
+ height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0) + btnContentWarning.height + Theme.paddingMedium + (warningContent.visible ? warningContent.height : 0)
dock: Dock.Bottom
open: true
- animationDuration: 300
-
Rectangle {
+ id: progressBarBg
width: parent.width
height: progressBar.height
color: Theme.highlightBackgroundColor
@@ -220,17 +205,18 @@ Page {
autoScrollEnabled: true
labelVisible: false
font.pixelSize: Theme.fontSizeSmall
+ //: placeholderText in Toot content warning panel
placeholderText: qsTr("Write your warning here")
placeholderColor: palette.highlightColor
color: palette.highlightColor
horizontalAlignment: Text.AlignLeft
+ EnterKey.onClicked: {}
anchors {
top: parent.top
topMargin: Theme.paddingMedium
left: parent.left
right: parent.right
}
- EnterKey.onClicked: {}
}
TextInput {
@@ -270,7 +256,6 @@ Page {
textOperations.select(
textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
textOperations.selectionEnd)
- //console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
console.log(toot.text.length)
suggestedUser = ""
if (textOperations.selectedText.charAt(0) === "@") {
@@ -317,8 +302,6 @@ Page {
RemorseItem {
id: remorse
cancelText: ""
-
-
}
Image {
@@ -362,22 +345,20 @@ Page {
IconButton {
id: btnContentWarning
+ icon.source: "image://theme/icon-s-warning?" + ( pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor) )
+ onClicked: warningContent.visible = !warningContent.visible
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
left: parent.left
leftMargin: Theme.paddingMedium
}
- icon.source: "image://theme/icon-s-warning?"
- + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
- onClicked: warningContent.visible = !warningContent.visible
}
IconButton {
id: btnAddImage
enabled: mediaModel.count < 4
- icon.source: "image://theme/icon-s-attach?"
- + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
+ icon.source: "image://theme/icon-s-attach?" + ( pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor) )
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
@@ -387,7 +368,7 @@ Page {
onClicked: {
btnAddImage.enabled = false
var once = true
- var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
+ var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", { "allowedOrientations": Orientation.All })
imagePicker.selectedContentChanged.connect(function () {
var imagePath = imagePicker.selectedContent
console.log(imagePath)
@@ -420,12 +401,6 @@ Page {
ComboBox {
id: privacy
- anchors {
- top: toot.bottom
- topMargin: -Theme.paddingSmall * 1.5
- left: btnAddImage.right
- right: btnSend.left
- }
menu: ContextMenu {
MenuItem {
text: qsTr("Public")
@@ -440,12 +415,17 @@ Page {
text: qsTr("Direct")
}
}
+ anchors {
+ top: toot.bottom
+ topMargin: -Theme.paddingSmall * 1.5
+ left: btnAddImage.right
+ right: btnSend.left
+ }
}
IconButton {
id: btnSend
- icon.source: "image://theme/icon-m-send?"
- + (pressed ? Theme.highlightColor : Theme.primaryColor)
+ icon.source: "image://theme/icon-m-send?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
anchors {
top: toot.bottom
@@ -492,8 +472,10 @@ Page {
id: uploadProgress
color: Theme.highlightBackgroundColor
height: Theme.itemSizeSmall * 0.05
- anchors.bottom: parent.bottom
- anchors.left: parent.left
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ }
}
}
@@ -563,9 +545,9 @@ Page {
color: Theme.highlightBackgroundColor
opacity: 0.2
anchors {
+ top: parent.top
left: parent.left
right: parent.right
- top: parent.top
}
}
@@ -576,8 +558,8 @@ Page {
color: Theme.highlightBackgroundColor
opacity: 0.7
anchors {
- left: parent.left
top: parent.top
+ left: parent.left
}
}
diff --git a/qml/pages/LoginPage.qml b/qml/pages/LoginPage.qml
index 288e4d8..5227d13 100644
--- a/qml/pages/LoginPage.qml
+++ b/qml/pages/LoginPage.qml
@@ -81,10 +81,10 @@ Page {
wrapMode: Text.WordWrap
width: parent.width
anchors {
- left: parent.left
- right: parent.right
topMargin: Theme.paddingMedium
+ left: parent.left
leftMargin: Theme.horizontalPageMargin
+ right: parent.right
rightMargin: Theme.horizontalPageMargin
}
}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 7d460a0..0ce3be1 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -135,7 +135,7 @@ Page {
mdl: ListModel {}
width: parent.width
height: parent.height
- onOpenDrawer: infoPanel.open = setDrawer
+ onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
anchors.fill: parent
currentIndex: -1 // otherwise currentItem will steal focus
header: Item {
@@ -234,6 +234,7 @@ Page {
itemWidth: isTablet ? Math.round(parent.width) : parent.width
itemHeight: height
clip: true
+ model: visualModel
onCurrentIndexChanged: {
navigation.slideshowIndexChanged(currentIndex)
}
@@ -243,7 +244,6 @@ Page {
rightMargin: isPortrait ? 0 : infoPanel.visibleSize
bottomMargin: isPortrait ? infoPanel.visibleSize : 0
}
- model: visualModel
Component.onCompleted: {
}
}
diff --git a/qml/pages/ProfilePage.qml b/qml/pages/ProfilePage.qml
index 6956187..efb5b21 100644
--- a/qml/pages/ProfilePage.qml
+++ b/qml/pages/ProfilePage.qml
@@ -182,7 +182,7 @@ Page {
id: txtNote
text: note
textFormat: Text.StyledText
- color: Theme.highlightColor
+ color: Theme.secondaryHighlightColor
font.pixelSize: Theme.fontSizeExtraSmall
linkColor: Theme.secondaryColor
wrapMode: Text.Wrap
@@ -256,7 +256,7 @@ Page {
//: Will show as: "115 Statuses"
qsTr("Statuses")
font.pixelSize: Theme.fontSizeExtraSmall
- color: Theme.primaryColor
+ color: pressed ? Theme.highlightColor : Theme.primaryColor
wrapMode: Text.Wrap
MouseArea {
@@ -305,7 +305,6 @@ Page {
'conf' : Logic.conf
};
worker.sendMessage(msg);
- // to-do: create notification banner "Follow request sent!"
}
}
@@ -344,8 +343,8 @@ Page {
'params' : [],
'action' : "accounts/" + user_id + (blocking ? '/unblock':'/block'),
'conf' : Logic.conf
- };
- worker.sendMessage(msg);
+ }
+ worker.sendMessage(msg)
}
}
}
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index 1353f15..5580d37 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -4,7 +4,6 @@ import Sailfish.Silica 1.0
Dialog {
id: emojiDialog
- anchors.top: parent.top
allowedOrientations: Orientation.All
canAccept: false //selector.currentIndex >= 0
onAcceptPendingChanged: {
@@ -13,6 +12,7 @@ Dialog {
// acceptDestinationInstance.category = selector.value
}
}
+ anchors.top: parent.top
Column {
id: emojiColumn
@@ -20,6 +20,8 @@ Dialog {
width: parent.width
height: parent.height
+ VerticalScrollDecorator { flickable: gridView}
+
SilicaGridView {
id: gridView
header: PageHeader {
@@ -31,71 +33,170 @@ Dialog {
width: parent.width
height: parent.height
model: ListModel {
- ListElement { section: "smileys"; glyph: "😁" }
- ListElement { section: "smileys"; glyph: "😂" }
- ListElement { section: "smileys"; glyph: "😃" }
- ListElement { section: "smileys"; glyph: "😄" }
- ListElement { section: "smileys"; glyph: "😅" }
- ListElement { section: "smileys"; glyph: "😆" }
- ListElement { section: "smileys"; glyph: "😉" }
- ListElement { section: "smileys"; glyph: "😊" }
- ListElement { section: "smileys"; glyph: "😋" }
- ListElement { section: "smileys"; glyph: "😎" }
- ListElement { section: "smileys"; glyph: "😌" }
- ListElement { section: "smileys"; glyph: "😍" }
- ListElement { section: "smileys"; glyph: "😘" }
- ListElement { section: "smileys"; glyph: "😏" }
- ListElement { section: "smileys"; glyph: "😒" }
- ListElement { section: "smileys"; glyph: "😓" }
- ListElement { section: "smileys"; glyph: "😔" }
- ListElement { section: "smileys"; glyph: "😖" }
- ListElement { section: "smileys"; glyph: "😚" }
- ListElement { section: "smileys"; glyph: "😜" }
- ListElement { section: "smileys"; glyph: "😝" }
- ListElement { section: "smileys"; glyph: "😞" }
- ListElement { section: "smileys"; glyph: "😠" }
- ListElement { section: "smileys"; glyph: "😡" }
- ListElement { section: "smileys"; glyph: "😢" }
- ListElement { section: "smileys"; glyph: "😣" }
- ListElement { section: "smileys"; glyph: "😤" }
- ListElement { section: "smileys"; glyph: "😥" }
- ListElement { section: "smileys"; glyph: "😨" }
- ListElement { section: "smileys"; glyph: "😩" }
- ListElement { section: "smileys"; glyph: "😪" }
- ListElement { section: "smileys"; glyph: "😫" }
- ListElement { section: "smileys"; glyph: "😭" }
- ListElement { section: "smileys"; glyph: "😰" }
- ListElement { section: "smileys"; glyph: "😱" }
- ListElement { section: "smileys"; glyph: "😲" }
- ListElement { section: "smileys"; glyph: "😳" }
- ListElement { section: "smileys"; glyph: "😵" }
- ListElement { section: "smileys"; glyph: "😷" }
- ListElement { section: "smileys"; glyph: "😸" }
- ListElement { section: "smileys"; glyph: "😹" }
- ListElement { section: "smileys"; glyph: "😺" }
- ListElement { section: "smileys"; glyph: "😻" }
- ListElement { section: "smileys"; glyph: "😼" }
- ListElement { section: "smileys"; glyph: "😽" }
- ListElement { section: "smileys"; glyph: "😾" }
- ListElement { section: "smileys"; glyph: "😿" }
- ListElement { section: "smileys"; glyph: "🙀" }
+ ListElement { section: "Smileys"; glyph: "😄" }
+ ListElement { section: "Smileys"; glyph: "😃" }
+ ListElement { section: "Smileys"; glyph: "😀" }
+ ListElement { section: "Smileys"; glyph: "😊" }
+ ListElement { section: "Smileys"; glyph: "☺" }
+ ListElement { section: "Smileys"; glyph: "😉" }
+ ListElement { section: "Smileys"; glyph: "😍" }
+ ListElement { section: "Smileys"; glyph: "😘" }
+ ListElement { section: "Smileys"; glyph: "😚" }
+ ListElement { section: "Smileys"; glyph: "😗" }
+ ListElement { section: "Smileys"; glyph: "😙" }
+ ListElement { section: "Smileys"; glyph: "😜" }
+ ListElement { section: "Smileys"; glyph: "😝" }
+ ListElement { section: "Smileys"; glyph: "😛" }
+ ListElement { section: "Smileys"; glyph: "😳" }
+ ListElement { section: "Smileys"; glyph: "😁" }
+ ListElement { section: "Smileys"; glyph: "😔" }
+ ListElement { section: "Smileys"; glyph: "😌" }
+ ListElement { section: "Smileys"; glyph: "😒" }
+ ListElement { section: "Smileys"; glyph: "😞" }
+ ListElement { section: "Smileys"; glyph: "😣" }
+ ListElement { section: "Smileys"; glyph: "😢" }
+ ListElement { section: "Smileys"; glyph: "😂" }
+ ListElement { section: "Smileys"; glyph: "😭" }
+ ListElement { section: "Smileys"; glyph: "😪" }
+ ListElement { section: "Smileys"; glyph: "😥" }
+ ListElement { section: "Smileys"; glyph: "😰" }
+ ListElement { section: "Smileys"; glyph: "😅" }
+ ListElement { section: "Smileys"; glyph: "😩" }
+ ListElement { section: "Smileys"; glyph: "😫" }
+ ListElement { section: "Smileys"; glyph: "😨" }
+ ListElement { section: "Smileys"; glyph: "😱" }
+ ListElement { section: "Smileys"; glyph: "😠" }
+ ListElement { section: "Smileys"; glyph: "😡" }
+ ListElement { section: "Smileys"; glyph: "😤" }
+ ListElement { section: "Smileys"; glyph: "😖" }
+ ListElement { section: "Smileys"; glyph: "😆" }
+ ListElement { section: "Smileys"; glyph: "😋" }
+ ListElement { section: "Smileys"; glyph: "😷" }
+ ListElement { section: "Smileys"; glyph: "😎" }
+ ListElement { section: "Smileys"; glyph: "😴" }
+ ListElement { section: "Smileys"; glyph: "😵" }
+ ListElement { section: "Smileys"; glyph: "😲" }
+ ListElement { section: "Smileys"; glyph: "😟" }
+ ListElement { section: "Smileys"; glyph: "😦" }
+ ListElement { section: "Smileys"; glyph: "😧" }
+ ListElement { section: "Smileys"; glyph: "😈" }
+ ListElement { section: "Smileys"; glyph: "👿" }
+ ListElement { section: "Smileys"; glyph: "😮" }
+ ListElement { section: "Smileys"; glyph: "😬" }
+ ListElement { section: "Smileys"; glyph: "😐" }
+ ListElement { section: "Smileys"; glyph: "😕" }
+ ListElement { section: "Smileys"; glyph: "😯" }
+ ListElement { section: "Smileys"; glyph: "😶" }
+ ListElement { section: "Smileys"; glyph: "😇" }
+ ListElement { section: "Smileys"; glyph: "😏" }
+ ListElement { section: "Smileys"; glyph: "😑" }
- ListElement { section: "People and Fantasy"; glyph: "🙅" }
- ListElement { section: "People and Fantasy"; glyph: "🙆" }
- ListElement { section: "People and Fantasy"; glyph: "🙇" }
- ListElement { section: "People and Fantasy"; glyph: "🙈" }
- ListElement { section: "People and Fantasy"; glyph: "🙉" }
- ListElement { section: "People and Fantasy"; glyph: "🙊" }
- ListElement { section: "People and Fantasy"; glyph: "🙋" }
- ListElement { section: "People and Fantasy"; glyph: "🙍" }
- ListElement { section: "People and Fantasy"; glyph: "🙎" }
- ListElement { section: "People and Fantasy"; glyph: "👍" }
- ListElement { section: "People and Fantasy"; glyph: "👎" }
- ListElement { section: "People and Fantasy"; glyph: "🙌" }
- ListElement { section: "People and Fantasy"; glyph: "✊" }
- ListElement { section: "People and Fantasy"; glyph: "💪" }
- ListElement { section: "People and Fantasy"; glyph: "👉" }
- ListElement { section: "People and Fantasy"; glyph: "🙏" }
+ ListElement { section: "Cat Faces"; glyph: "😺" }
+ ListElement { section: "Cat Faces"; glyph: "😸" }
+ ListElement { section: "Cat Faces"; glyph: "😻" }
+ ListElement { section: "Cat Faces"; glyph: "😽" }
+ ListElement { section: "Cat Faces"; glyph: "😼" }
+ ListElement { section: "Cat Faces"; glyph: "🙀" }
+ ListElement { section: "Cat Faces"; glyph: "😿" }
+ ListElement { section: "Cat Faces"; glyph: "😹" }
+ ListElement { section: "Cat Faces"; glyph: "😾" }
+
+ ListElement { section: "Other Faces"; glyph: "👹" }
+ ListElement { section: "Other Faces"; glyph: "👺" }
+ ListElement { section: "Other Faces"; glyph: "🙈" }
+ ListElement { section: "Other Faces"; glyph: "🙉" }
+ ListElement { section: "Other Faces"; glyph: "🙊" }
+ ListElement { section: "Other Faces"; glyph: "💀" }
+ ListElement { section: "Other Faces"; glyph: "👽" }
+
+ ListElement { section: "Misc Emoji"; glyph: "🔥" }
+ ListElement { section: "Misc Emoji"; glyph: "✨" }
+ ListElement { section: "Misc Emoji"; glyph: "🌟" }
+ ListElement { section: "Misc Emoji"; glyph: "💫" }
+ ListElement { section: "Misc Emoji"; glyph: "💥" }
+ ListElement { section: "Misc Emoji"; glyph: "💢" }
+ ListElement { section: "Misc Emoji"; glyph: "💦" }
+ ListElement { section: "Misc Emoji"; glyph: "💧" }
+ ListElement { section: "Misc Emoji"; glyph: "💤" }
+ ListElement { section: "Misc Emoji"; glyph: "💨" }
+ ListElement { section: "Misc Emoji"; glyph: "👂" }
+ ListElement { section: "Misc Emoji"; glyph: "👀" }
+ ListElement { section: "Misc Emoji"; glyph: "👃" }
+ ListElement { section: "Misc Emoji"; glyph: "👅" }
+ ListElement { section: "Misc Emoji"; glyph: "👄" }
+ ListElement { section: "Misc Emoji"; glyph: "👍" }
+ ListElement { section: "Misc Emoji"; glyph: "👎" }
+ ListElement { section: "Misc Emoji"; glyph: "👌" }
+ ListElement { section: "Misc Emoji"; glyph: "👊" }
+ ListElement { section: "Misc Emoji"; glyph: "✊" }
+ ListElement { section: "Misc Emoji"; glyph: "✌" }
+ ListElement { section: "Misc Emoji"; glyph: "👋" }
+ ListElement { section: "Misc Emoji"; glyph: "✋" }
+ ListElement { section: "Misc Emoji"; glyph: "👐" }
+ ListElement { section: "Misc Emoji"; glyph: "👆" }
+ ListElement { section: "Misc Emoji"; glyph: "👇" }
+ ListElement { section: "Misc Emoji"; glyph: "👉" }
+ ListElement { section: "Misc Emoji"; glyph: "👈" }
+ ListElement { section: "Misc Emoji"; glyph: "🙌" }
+ ListElement { section: "Misc Emoji"; glyph: "🙏" }
+ ListElement { section: "Misc Emoji"; glyph: "☝" }
+ ListElement { section: "Misc Emoji"; glyph: "👏" }
+ ListElement { section: "Misc Emoji"; glyph: "💪" }
+
+ ListElement { section: "Animals Emoji"; glyph: "🐶" }
+ ListElement { section: "Animals Emoji"; glyph: "🐺" }
+ ListElement { section: "Animals Emoji"; glyph: "🐱" }
+ ListElement { section: "Animals Emoji"; glyph: "🐭" }
+ ListElement { section: "Animals Emoji"; glyph: "🐹" }
+ ListElement { section: "Animals Emoji"; glyph: "🐰" }
+ ListElement { section: "Animals Emoji"; glyph: "🐸" }
+ ListElement { section: "Animals Emoji"; glyph: "🐯" }
+ ListElement { section: "Animals Emoji"; glyph: "🐨" }
+ ListElement { section: "Animals Emoji"; glyph: "🐘" }
+ ListElement { section: "Animals Emoji"; glyph: "🐼" }
+ ListElement { section: "Animals Emoji"; glyph: "🐧" }
+ ListElement { section: "Animals Emoji"; glyph: "🐦" }
+ ListElement { section: "Animals Emoji"; glyph: "🐤" }
+ ListElement { section: "Animals Emoji"; glyph: "🐥" }
+ ListElement { section: "Animals Emoji"; glyph: "🐣" }
+ ListElement { section: "Animals Emoji"; glyph: "🐔" }
+ ListElement { section: "Animals Emoji"; glyph: "🐍" }
+ ListElement { section: "Animals Emoji"; glyph: "🐢" }
+ ListElement { section: "Animals Emoji"; glyph: "🐛" }
+ ListElement { section: "Animals Emoji"; glyph: "🐝" }
+ ListElement { section: "Animals Emoji"; glyph: "🐜" }
+ ListElement { section: "Animals Emoji"; glyph: "🐞" }
+ ListElement { section: "Animals Emoji"; glyph: "🐌" }
+ ListElement { section: "Animals Emoji"; glyph: "🐙" }
+ ListElement { section: "Animals Emoji"; glyph: "🐚" }
+ ListElement { section: "Animals Emoji"; glyph: "🐠" }
+ ListElement { section: "Animals Emoji"; glyph: "🐟" }
+ ListElement { section: "Animals Emoji"; glyph: "🐬" }
+ ListElement { section: "Animals Emoji"; glyph: "🐳" }
+ ListElement { section: "Animals Emoji"; glyph: "🐋" }
+ ListElement { section: "Animals Emoji"; glyph: "🐄" }
+ ListElement { section: "Animals Emoji"; glyph: "🐏" }
+ ListElement { section: "Animals Emoji"; glyph: "🐀" }
+ ListElement { section: "Animals Emoji"; glyph: "🐃" }
+ ListElement { section: "Animals Emoji"; glyph: "🐅" }
+ ListElement { section: "Animals Emoji"; glyph: "🐇" }
+ ListElement { section: "Animals Emoji"; glyph: "🐉" }
+ ListElement { section: "Animals Emoji"; glyph: "🐎" }
+ ListElement { section: "Animals Emoji"; glyph: "🐐" }
+ ListElement { section: "Animals Emoji"; glyph: "🐓" }
+ ListElement { section: "Animals Emoji"; glyph: "🐕" }
+ ListElement { section: "Animals Emoji"; glyph: "🐖" }
+ ListElement { section: "Animals Emoji"; glyph: "🐁" }
+ ListElement { section: "Animals Emoji"; glyph: "🐂" }
+ ListElement { section: "Animals Emoji"; glyph: "🐲" }
+ ListElement { section: "Animals Emoji"; glyph: "🐡" }
+ ListElement { section: "Animals Emoji"; glyph: "🐊" }
+ ListElement { section: "Animals Emoji"; glyph: "🐫" }
+ ListElement { section: "Animals Emoji"; glyph: "🐪" }
+ ListElement { section: "Animals Emoji"; glyph: "🐆" }
+ ListElement { section: "Animals Emoji"; glyph: "🐈" }
+ ListElement { section: "Animals Emoji"; glyph: "🐩" }
+ ListElement { section: "Animals Emoji"; glyph: "🐾" }
ListElement { section: "Transport and Map"; glyph: "🚀" }
ListElement { section: "Transport and Map"; glyph: "🚃" }
@@ -151,9 +252,10 @@ Dialog {
Label {
text: glyph
font.pixelSize: Theme.fontSizeLarge
- color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
+ color: highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
anchors.centerIn: parent
}
+
onClicked: {
var cursorPosition = toot.cursorPosition
toot.text = toot.text.substring(
@@ -164,7 +266,6 @@ Dialog {
emojiDialog.accept()
}
}
- VerticalScrollDecorator { flickable: listEmojis }
}
}
}
diff --git a/qml/pages/components/InfoBanner.qml b/qml/pages/components/InfoBanner.qml
index 048a43f..e740634 100644
--- a/qml/pages/components/InfoBanner.qml
+++ b/qml/pages/components/InfoBanner.qml
@@ -5,8 +5,9 @@ import Sailfish.Silica 1.0
DockedPanel {
id: root
dock: Dock.Top
- width: parent.width
+ width: isPortrait ? parent.width : Theme.buttonWidthLarge * 1.5
height: content.height
+ anchors.horizontalCenter: parent.horizontalCenter
Rectangle {
id: content
diff --git a/qml/pages/components/ItemUser.qml b/qml/pages/components/ItemUser.qml
index 4220a76..02913eb 100644
--- a/qml/pages/components/ItemUser.qml
+++ b/qml/pages/components/ItemUser.qml
@@ -18,7 +18,6 @@ BackgroundItem {
anchors.left: parent.left
anchors.leftMargin: Theme.horizontalPageMargin
-
Image {
id: img
opacity: status === Image.Ready ? 1.0 : 0.0
@@ -56,7 +55,7 @@ BackgroundItem {
}
Item {
- id: userdescription
+ id: userDescription
height: account_acct.height + display_name.height
anchors.left: avatar.right
anchors.leftMargin: Theme.paddingLarge
@@ -72,7 +71,6 @@ BackgroundItem {
truncationMode: TruncationMode.Fade
width: parent.width - Theme.paddingMedium
anchors.top: parent.top
-
}
Label {
diff --git a/qml/pages/components/MediaFullScreen.qml b/qml/pages/components/MediaFullScreen.qml
index d0f9119..f4adf7d 100644
--- a/qml/pages/components/MediaFullScreen.qml
+++ b/qml/pages/components/MediaFullScreen.qml
@@ -287,23 +287,23 @@ FullscreenContentPage {
IconButton {
y: Theme.paddingLarge
+ icon.source: "image://theme/icon-m-dismiss"
+ onClicked: pageStack.pop()
anchors {
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
- icon.source: "image://theme/icon-m-dismiss"
- onClicked: pageStack.pop()
}
IconButton {
id: mediaDlBtn
+ icon.source: "image://theme/icon-m-cloud-download"
anchors {
right: parent.right
rightMargin: Theme.horizontalPageMargin
bottom: parent.bottom
bottomMargin: Theme.horizontalPageMargin
}
- icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
var filename = mediaURL.split("/")
FileDownloader.downloadFile(mediaURL, filename[filename.length-1])
@@ -327,7 +327,6 @@ FullscreenContentPage {
} else {
video.play()
hideTimer.start()
-
}
}
}
@@ -354,7 +353,6 @@ FullscreenContentPage {
overlayIcons.active = !overlayIcons.active
}
}
-
}
VerticalScrollDecorator { flickable: imageFlickable }
diff --git a/qml/pages/components/MiniHeader.qml b/qml/pages/components/MiniHeader.qml
index 1774e95..3cf3cd3 100644
--- a/qml/pages/components/MiniHeader.qml
+++ b/qml/pages/components/MiniHeader.qml
@@ -48,9 +48,9 @@ Item {
width: parent.width - Theme.paddingMedium
truncationMode: TruncationMode.Fade
anchors {
+ top: lblName.bottom
left: parent.left
leftMargin: Theme.paddingMedium
- top: lblName.bottom
}
}
diff --git a/qml/pages/components/MiniStatus.qml b/qml/pages/components/MiniStatus.qml
index 946fe98..96170fe 100644
--- a/qml/pages/components/MiniStatus.qml
+++ b/qml/pages/components/MiniStatus.qml
@@ -5,8 +5,8 @@ import Sailfish.Silica 1.0
Item {
id: miniStatus
visible: true
- height: icon.height+Theme.paddingMedium
width: parent.width
+ height: icon.height+Theme.paddingMedium
Icon {
id: icon
@@ -18,9 +18,9 @@ Item {
anchors {
top: parent.top
topMargin: Theme.paddingMedium
- bottomMargin: Theme.paddingMedium
left: parent.left
leftMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium - width
+ bottomMargin: Theme.paddingMedium
}
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index d903ccc..3d96f61 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -188,7 +188,7 @@ SilicaListView {
'model' : model,
'mode' : mode,
'conf' : Logic.conf
- };
+ }
console.log(JSON.stringify(msg))
if (type !== "")
diff --git a/qml/pages/components/MyMedia.qml b/qml/pages/components/MyMedia.qml
index 32fe464..4e5c980 100644
--- a/qml/pages/components/MyMedia.qml
+++ b/qml/pages/components/MyMedia.qml
@@ -34,7 +34,7 @@ Item {
Image {
visible: type == 'audio'
- opacity: img.status === Image.Ready ? 0.0 : 1.0
+ //opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
source: "image://theme/icon-m-file-audio?"
anchors.centerIn: parent
@@ -85,24 +85,25 @@ Item {
BusyIndicator {
id: mediaLoader
+ visible: type != 'audio'
size: BusyIndicatorSize.Large
running: img.status !== Image.Ready
opacity: img.status === Image.Ready ? 0.0 : 1.0
- anchors.verticalCenter: parent.verticalCenter
- anchors.horizontalCenter: parent.horizontalCenter
+ anchors {
+ verticalCenter: parent.verticalCenter
+ horizontalCenter: parent.horizontalCenter
+ }
}
Rectangle {
id: mediaWarning
color: Theme.highlightDimmerColor
visible: typeof status_sensitive != "undefined" && status_sensitive ? true : false
- anchors.fill: parent
-
Image {
source: "image://theme/icon-l-attention?"+Theme.highlightColor
anchors.centerIn: parent
}
-
+ anchors.fill: parent
MouseArea {
anchors.fill: parent
onClicked: parent.visible = false
diff --git a/qml/pages/components/ProfileHeader.qml b/qml/pages/components/ProfileHeader.qml
index 5cddfbd..7fbb541 100644
--- a/qml/pages/components/ProfileHeader.qml
+++ b/qml/pages/components/ProfileHeader.qml
@@ -181,8 +181,10 @@ Item {
text: qsTr("Bot")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
+ }
}
}
}
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 57cacb3..54c2e0d 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -198,7 +198,6 @@ BackgroundItem {
console.log(link)
console.log(JSON.stringify(test))
console.log(JSON.stringify(test.length))
-
if (test.length === 5 && (test[3] === "tags" || test[3] === "tag") ) {
pageStack.pop(pageStack.find(function(page) {
var check = page.isFirstPage === true;
@@ -341,8 +340,8 @@ BackgroundItem {
width: Theme.iconSizeSmall
height: width
anchors {
- leftMargin: Theme.horizontalPageMargin
left: parent.left
+ leftMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
}
@@ -389,7 +388,6 @@ BackgroundItem {
}
}
-
MenuItem {
id: mnuMention
visible: model.type === "follow"
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index a85cd34..f0adf3f 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Inhaltswarnung
@@ -77,11 +78,11 @@
EmojiSelect
-
+ Emojis
-
+ Tippen um einzufügen
@@ -118,38 +119,38 @@
MainPage
-
+ Home
-
+ Benachrichtigungen
-
+ Lokal
-
+ Föderiert
-
+ Suche
-
+ @Benutzer oder #Ausdruck
- Neuer Toot
+ Neuer Toot
MediaFullScreen
-
+ Ladefehler
@@ -191,7 +192,7 @@
- Im Browser öffnen
+ Im Browser öffnen
@@ -214,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Details
Will show as: "35 Followers"
-
+ Folgende
Will show as: "23 Following"
-
+ Folgt
Will show as: "115 Statuses"
-
+ Beiträge
- Erwähnen
+ Erwähnen
Is a button. Keep it as short as possible.
-
+ Entfolgen
Is a button. Keep it as short as possible.
-
+ Angefragt
Is a button. Keep it as short as possible.
-
+ Folgen
Is a button. Keep it as short as possible.
-
+ Nicht stumm
Is a button. Keep it as short as possible.
-
+ Stumm schalten
Is a button. Keep it as short as possible.
-
+ Zulassen
Is a button. Keep it as short as possible.
-
+ Blockieren
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 5be46c0..25a224e 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
@@ -118,15 +119,15 @@
MainPage
-
+ Οικοσελίδα
-
+ Ειδοποιήσεις
-
+ Τοπικός
@@ -134,15 +135,15 @@
-
+ Αναζήτηση
-
+ @χρήστη ή #όρος
- Νέος
+ Νέος
@@ -187,7 +188,7 @@
- Επαναφόρτωση
+ Φόρτωση περισσοτέρων
@@ -219,26 +220,26 @@
Will show as: "35 Followers"
-
+ Σας ακολουθούν
Will show as: "23 Following"
-
+ Σε παρακολούθηση
Will show as: "115 Statuses"
-
+ Κατάσταση
-
+ Φραγή
Is a button. Keep it as short as possible.
-
+ Αναίρεση παρακολούθησης
@@ -248,22 +249,22 @@
Is a button. Keep it as short as possible.
-
+ Παρακολούθηση
Is a button. Keep it as short as possible.
-
+ Αναίρεση σίγασης
Is a button. Keep it as short as possible.
-
+ Σίγαση
Is a button. Keep it as short as possible.
-
+ Αναίρεση φραγής
@@ -376,7 +377,7 @@
-
+ Φραγή
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index fc84ce7..6973817 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Escribe aquí tu advertencia
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 3135fb6..aa50e34 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Rédigez votre alerte ici
@@ -77,11 +78,11 @@
EmojiSelect
-
+ Emojis
-
+ Appuyez pour insérer
@@ -118,27 +119,27 @@
MainPage
-
+ Accueil
-
+ Notifications
-
+ Fil public local
-
+ Fil public global
-
+ Rechercher
-
+ @personne ou #terme
@@ -149,7 +150,7 @@
MediaFullScreen
-
+ Erreur au chargement
@@ -191,7 +192,7 @@
- Ouvrir dans le navigateur
+ Ouvrir dans le navigateur
@@ -214,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Détails
Will show as: "35 Followers"
-
+ Abonné(e)s
Will show as: "23 Following"
-
+ Abonnements
Will show as: "115 Statuses"
-
+ Pouets
- Mentionner
+ Mentionner
Is a button. Keep it as short as possible.
-
+ Ne plus suivre
Is a button. Keep it as short as possible.
-
+ Demandé
Is a button. Keep it as short as possible.
-
+ Suivre
Is a button. Keep it as short as possible.
-
+ Démasquer
Is a button. Keep it as short as possible.
-
+ Masquer
Is a button. Keep it as short as possible.
-
+ Débloquer
Is a button. Keep it as short as possible.
-
+ Bloquer
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 93cb7c3..4e12a4d 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Contenuto avviso
@@ -77,11 +78,11 @@
EmojiSelect
-
+ Emojis
-
+ Tap per inserire
@@ -118,38 +119,38 @@
MainPage
-
+ Home
-
+ Notifiche
-
+ Locale
-
+ Federazione
-
+ Cerca
-
+ @utente o #terme
- Nuovo Toot
+ Nuovo Toot
MediaFullScreen
-
+ Errore durante caricamento
@@ -191,7 +192,7 @@
- Aprire nel browser
+ Aprire nel browser
@@ -214,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Dettagli
Will show as: "35 Followers"
-
+ Seguaci
Will show as: "23 Following"
-
+ Segue
Will show as: "115 Statuses"
-
+ Toots
- Menzionare
+ Menzionare
Is a button. Keep it as short as possible.
-
+ Smetti di seguire
Is a button. Keep it as short as possible.
-
+ Richiesto
Is a button. Keep it as short as possible.
-
+ Segui
Is a button. Keep it as short as possible.
-
+ Non silenziare
Is a button. Keep it as short as possible.
-
+ Silenzia
Is a button. Keep it as short as possible.
-
+ Sblocca
Is a button. Keep it as short as possible.
-
+ Blocca
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 83c891a..9e6e937 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Waarschuwingstekst
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index f0e21c0..20dccf8 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 6599ff6..8eb237f 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index be3604d..41e4364 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index a9224f4..495b13c 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Текст предупреждения
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index 1a0f511..5cc6c90 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 7e3b76b..da2e70c 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 062036b..f82ed64 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
在此编写你的警告信息
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 8e242a8..09af8b4 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -29,6 +29,7 @@
+ placeholderText in Toot content warning panel
Write your warning here
From bc8bcf39e505ab9d8b274144c71d803e46e9d9b1 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Mon, 6 Jul 2020 10:28:42 +0200
Subject: [PATCH 66/70] UI improvements
---
qml/pages/ConversationPage.qml | 3 ++-
qml/pages/MainPage.qml | 18 ++++++-------
qml/pages/components/MediaBlock.qml | 2 +-
qml/pages/components/MyList.qml | 33 +++++++++++-------------
qml/pages/components/ProfileHeader.qml | 7 ++---
qml/pages/components/ProfileImage.qml | 2 +-
qml/pages/components/VisualContainer.qml | 12 ++++-----
translations/harbour-tooter-de.ts | 12 +++------
translations/harbour-tooter-el.ts | 12 +++------
translations/harbour-tooter-es.ts | 12 +++------
translations/harbour-tooter-fr.ts | 12 +++------
translations/harbour-tooter-it.ts | 12 +++------
translations/harbour-tooter-nl.ts | 12 +++------
translations/harbour-tooter-nl_BE.ts | 12 +++------
translations/harbour-tooter-oc.ts | 12 +++------
translations/harbour-tooter-pl.ts | 12 +++------
translations/harbour-tooter-ru.ts | 12 +++------
translations/harbour-tooter-sr.ts | 12 +++------
translations/harbour-tooter-sv.ts | 12 +++------
translations/harbour-tooter-zh_CN.ts | 12 +++------
translations/harbour-tooter.ts | 12 +++------
21 files changed, 93 insertions(+), 152 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 8c82fd8..6cea652 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -16,7 +16,7 @@ Page {
property string status_id: ""
property string status_url: ""
property string status_uri: ""
- property int tootMaxChar: 500;
+ property int tootMaxChar: 500
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
property bool locked: false //otherwise ReferenceError ProfileHeader.qml
@@ -60,6 +60,7 @@ Page {
SilicaListView {
id: myList
+
header: PageHeader {
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
}
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index 0ce3be1..cb47a5c 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -85,7 +85,7 @@ Page {
height: parent.itemHeight
onSearchChanged: {
console.log(search)
- loader.sourceComponent = loading
+ //loader.sourceComponent = loading
if (search.charAt(0) === "@") {
loader.sourceComponent = userListComponent
} else if (search.charAt(0) === "#") {
@@ -119,14 +119,14 @@ Page {
}
}
- Component {
- id: loading
- BusyIndicator {
- size: BusyIndicatorSize.Large
- anchors.centerIn: parent
- running: true
- }
- }
+// Component {
+// id: loading
+// BusyIndicator {
+// size: BusyIndicatorSize.Large
+// anchors.centerIn: parent
+// running: true
+// }
+// }
Component {
id: tagListComponent
diff --git a/qml/pages/components/MediaBlock.qml b/qml/pages/components/MediaBlock.qml
index 5963062..e3bb587 100644
--- a/qml/pages/components/MediaBlock.qml
+++ b/qml/pages/components/MediaBlock.qml
@@ -14,7 +14,7 @@ Item {
height: height
Component.onCompleted: {
if (model && model.count && model.get(0).type === "video") {
- while (model.count>1){
+ while (model.count>1) {
model.remove(model.count-1)
}
//console.log(JSON.stringify(model.get(0)))
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index 3d96f61..a4add0b 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -41,22 +41,16 @@ SilicaListView {
description: myList.description
}
- BusyIndicator {
- size: BusyIndicatorSize.Large
- running: myList.model.count === 0 && !viewPlaceHolder.visible
- anchors.centerIn: parent
- }
-
- ViewPlaceholder {
- id: viewPlaceHolder
- enabled: model.count === 0
- text: qsTr("Loading")
- hintText: qsTr("please wait...")
- anchors.centerIn: parent
+ BusyLabel {
+ id: loadStatusList
+ running: model.count === 0
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
+ }
}
PullDownMenu {
-
MenuItem {
text: qsTr("Settings")
visible: !profilePage
@@ -124,10 +118,13 @@ SilicaListView {
}
BusyIndicator {
+ running: loadStarted
+ visible: loadStatusList.running ? false : true
size: BusyIndicatorSize.Small
- running: loadStarted;
- anchors.verticalCenter: parent.verticalCenter
- anchors.horizontalCenter: parent.horizontalCenter
+ anchors {
+ verticalCenter: parent.verticalCenter
+ horizontalCenter: parent.horizontalCenter
+ }
}
}
@@ -171,10 +168,10 @@ SilicaListView {
function loadData(mode) {
var p = []
- if (params.length)
+ if (params.length) {
for(var i = 0; iSettings
Einstellungen
-
-
- Wird geladen
-
-
-
- bitte warten...
-
Neuer Toot
@@ -194,6 +186,10 @@
Im Browser öffnen
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index 25a224e..f8fdd97 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -174,14 +174,6 @@
Ρυθμίσεις
-
-
- Φόρτωση
-
-
-
-
-
Νέος
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index 6973817..baf2096 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -174,14 +174,6 @@
Ajustes
-
-
- Cargando
-
-
-
- por favor, espera...
-
Nuevo toot
@@ -194,6 +186,10 @@
Abrir en el navegador
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index aa50e34..9f08856 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -174,14 +174,6 @@
Paramètres
-
-
- Chargement
-
-
-
- patientez...
-
Nouveau pouet
@@ -194,6 +186,10 @@
Ouvrir dans le navigateur
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index 4e12a4d..b88c20d 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -174,14 +174,6 @@
Impostazioni
-
-
- Caricamento
-
-
-
- Attendere un momento...
-
Nuovo Toot
@@ -194,6 +186,10 @@
Aprire nel browser
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index 9e6e937..b09d25f 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -174,14 +174,6 @@
Instellingen
-
-
- Laden
-
-
-
- even geduld…
-
Nieuwe Toot
@@ -194,6 +186,10 @@
Open een Browser
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 20dccf8..952bd2d 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -174,14 +174,6 @@
Instellingen
-
-
- Laden
-
-
-
- efkens geduld…
-
Nieuwen toot
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 8eb237f..3545567 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -174,14 +174,6 @@
Parmètres
-
-
- Cargament
-
-
-
- esperatz....
-
Nòu Tut
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index 41e4364..fe8a424 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -174,14 +174,6 @@
Ustawienia
-
-
- Ładowanie
-
-
-
- proszę czekać…
-
Nowy wpis
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index 495b13c..bd663b9 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -174,14 +174,6 @@
Настройки
-
-
- Загрузка
-
-
-
- Пожалуйста, подождите...
-
Новый
@@ -194,6 +186,10 @@
Открыть в браузере
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index 5cc6c90..0dcdbd6 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -174,14 +174,6 @@
Подешавања
-
-
- Učitavanje
-
-
-
- молимо вас, сачекајте...
-
Novi toot
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index da2e70c..6ff4080 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -174,14 +174,6 @@
Inställningar
-
-
- Laddar
-
-
-
- Vänligen vänta...
-
Ny toot
@@ -194,6 +186,10 @@
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index f82ed64..5a0bd4c 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -174,14 +174,6 @@
设置
-
-
- 加载中
-
-
-
- 稍等片刻......
-
新嘟嘟
@@ -194,6 +186,10 @@
在浏览器打开个人简介
+
+
+
+
ProfileHeader
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 09af8b4..28efe0d 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -174,14 +174,6 @@
Settings
-
-
-
-
-
-
-
-
New Toot
@@ -194,6 +186,10 @@
Open in Browser
+
+
+
+
ProfileHeader
From 779f90865ac61b237043546731992376f6c07d73 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Sun, 12 Jul 2020 09:12:34 +0200
Subject: [PATCH 67/70] UI improvements & fixes
---
qml/pages/ConversationPage.qml | 47 +++++++++++++++++-----------
qml/pages/MainPage.qml | 18 +++++------
qml/pages/components/EmojiSelect.qml | 3 +-
qml/pages/components/MyList.qml | 21 +++++++++++--
4 files changed, 57 insertions(+), 32 deletions(-)
diff --git a/qml/pages/ConversationPage.qml b/qml/pages/ConversationPage.qml
index 6cea652..dfa2b45 100644
--- a/qml/pages/ConversationPage.qml
+++ b/qml/pages/ConversationPage.qml
@@ -8,20 +8,32 @@ import "./components/"
Page {
id: conversationPage
- property string type
- property string username: ""
- property string headerTitle: ""
- property string suggestedUser: ""
property ListModel suggestedModel
- property string status_id: ""
- property string status_url: ""
- property string status_uri: ""
+ property ListModel mdl
property int tootMaxChar: 500
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
property bool locked: false //otherwise ReferenceError ProfileHeader.qml
property bool group: false //otherwise ReferenceError ProfileHeader.qml
- property ListModel mdl
+ property string type
+ property string username: ""
+ property string headerTitle: ""
+ property string suggestedUser: ""
+ property string status_id: ""
+ property string status_url: ""
+ property string status_uri: ""
+ property string status_link:
+ if (status_url === "") {
+ var test = status_uri.split("/")
+ console.log(status_uri)
+ console.log(JSON.stringify(test))
+ console.log(JSON.stringify(test.length))
+ if (test.length === 8 && (test[7] === "activity")) {
+ var urialt = status_uri.replace("activity", "")
+ status_link = urialt
+ }
+ else status_link = status_uri
+ } else status_link = status_url
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
@@ -96,20 +108,17 @@ Page {
id: pulleyConversation
visible: type === "reply"
+ MenuItem {
+ text: qsTr("Open in Browser")
+ onClicked: {
+ Qt.openUrlExternally(status_link)
+ }
+ }
+
MenuItem {
//: Use the translation of "Copy Link" for a shorter PullDownMenu label
text: qsTr("Copy Link to Clipboard")
- onClicked: if (status_url === "") {
- var test = status_uri.split("/")
- console.log(status_uri)
- console.log(JSON.stringify(test))
- console.log(JSON.stringify(test.length))
- if (test.length === 8 && (test[7] === "activity")) {
- var urialt = status_uri.replace("activity", "")
- Clipboard.text = urialt
- }
- else Clipboard.text = status_uri
- } else Clipboard.text = status_url
+ onClicked: Clipboard.text = status_link
}
MenuItem {
diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml
index cb47a5c..0ce3be1 100644
--- a/qml/pages/MainPage.qml
+++ b/qml/pages/MainPage.qml
@@ -85,7 +85,7 @@ Page {
height: parent.itemHeight
onSearchChanged: {
console.log(search)
- //loader.sourceComponent = loading
+ loader.sourceComponent = loading
if (search.charAt(0) === "@") {
loader.sourceComponent = userListComponent
} else if (search.charAt(0) === "#") {
@@ -119,14 +119,14 @@ Page {
}
}
-// Component {
-// id: loading
-// BusyIndicator {
-// size: BusyIndicatorSize.Large
-// anchors.centerIn: parent
-// running: true
-// }
-// }
+ Component {
+ id: loading
+ BusyIndicator {
+ size: BusyIndicatorSize.Large
+ anchors.centerIn: parent
+ running: true
+ }
+ }
Component {
id: tagListComponent
diff --git a/qml/pages/components/EmojiSelect.qml b/qml/pages/components/EmojiSelect.qml
index 5580d37..7e808e2 100644
--- a/qml/pages/components/EmojiSelect.qml
+++ b/qml/pages/components/EmojiSelect.qml
@@ -20,8 +20,6 @@ Dialog {
width: parent.width
height: parent.height
- VerticalScrollDecorator { flickable: gridView}
-
SilicaGridView {
id: gridView
header: PageHeader {
@@ -266,6 +264,7 @@ Dialog {
emojiDialog.accept()
}
}
+ VerticalScrollDecorator { flickable: gridView }
}
}
}
diff --git a/qml/pages/components/MyList.qml b/qml/pages/components/MyList.qml
index a4add0b..23ddd73 100644
--- a/qml/pages/components/MyList.qml
+++ b/qml/pages/components/MyList.qml
@@ -42,15 +42,32 @@ SilicaListView {
}
BusyLabel {
- id: loadStatusList
+ id: myListBusyLabel
running: model.count === 0
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
+
+ Timer {
+ interval: 5000
+ running: true
+ onTriggered: {
+ myListBusyLabel.visible = false
+ loadStatusPlaceholder.visible = true
+ }
+ }
+ }
+
+ ViewPlaceholder {
+ id: loadStatusPlaceholder
+ visible: false
+ enabled: model.count === 0
+ text: qsTr("Nothing found")
}
PullDownMenu {
+ id: mainPulleyMenu
MenuItem {
text: qsTr("Settings")
visible: !profilePage
@@ -119,7 +136,7 @@ SilicaListView {
BusyIndicator {
running: loadStarted
- visible: loadStatusList.running ? false : true
+ visible: myListBusyLabel.running ? false : true
size: BusyIndicatorSize.Small
anchors {
verticalCenter: parent.verticalCenter
From 0adc7c144e446f7ba9141e93d33b0986d40c7903 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Sun, 12 Jul 2020 09:12:45 +0200
Subject: [PATCH 68/70] Translation updates
---
translations/harbour-tooter-de.ts | 8 +++-
translations/harbour-tooter-el.ts | 12 +++--
translations/harbour-tooter-es.ts | 54 ++++++++++++----------
translations/harbour-tooter-fr.ts | 8 +++-
translations/harbour-tooter-it.ts | 8 +++-
translations/harbour-tooter-nl.ts | 64 ++++++++++++++------------
translations/harbour-tooter-nl_BE.ts | 42 +++++++++--------
translations/harbour-tooter-oc.ts | 28 +++++++-----
translations/harbour-tooter-pl.ts | 36 ++++++++-------
translations/harbour-tooter-ru.ts | 68 +++++++++++++++-------------
translations/harbour-tooter-sr.ts | 42 +++++++++--------
translations/harbour-tooter-sv.ts | 42 +++++++++--------
translations/harbour-tooter-zh_CN.ts | 54 ++++++++++++----------
translations/harbour-tooter.ts | 56 ++++++++++++-----------
14 files changed, 289 insertions(+), 233 deletions(-)
diff --git a/translations/harbour-tooter-de.ts b/translations/harbour-tooter-de.ts
index 58bf01c..ebe1c3c 100644
--- a/translations/harbour-tooter-de.ts
+++ b/translations/harbour-tooter-de.ts
@@ -66,6 +66,10 @@
Antwort verbergen
+
+
+ Im Browser öffnen
+
CoverPage
@@ -187,8 +191,8 @@
Im Browser öffnen
-
-
+
+ Nichts gefunden
diff --git a/translations/harbour-tooter-el.ts b/translations/harbour-tooter-el.ts
index f8fdd97..82c679a 100644
--- a/translations/harbour-tooter-el.ts
+++ b/translations/harbour-tooter-el.ts
@@ -66,6 +66,10 @@
+
+
+
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emoji
-
+ Κτυπήστε για εισαγωγή
@@ -187,7 +191,7 @@
-
+
@@ -265,7 +269,7 @@
Is a button. Keep it as short as possible.
-
+ Φραγή
diff --git a/translations/harbour-tooter-es.ts b/translations/harbour-tooter-es.ts
index baf2096..92b07d4 100644
--- a/translations/harbour-tooter-es.ts
+++ b/translations/harbour-tooter-es.ts
@@ -66,6 +66,10 @@
Cerrar respuesta
+
+
+ Abrir en el navegador
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emoticonos
-
+ Toca para insertar
@@ -119,38 +123,38 @@
MainPage
-
+ Inicio
-
+ Notificaciones
-
+ Local
-
+ Federada
-
+ Buscar
-
+ @usuario o #término
- Nuevo toot
+ Nuevo toot
MediaFullScreen
-
+ Error al cargar
@@ -184,11 +188,11 @@
- Abrir en el navegador
+ Abrir en el navegador
-
-
+
+ No encontrado nada
@@ -211,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Detalles
Will show as: "35 Followers"
-
+ Seguidores
Will show as: "23 Following"
-
+ Siguiendo
Will show as: "115 Statuses"
-
+ Estados
- Mencionar
+ Mencionar
Is a button. Keep it as short as possible.
-
+ Dejar de seguir
Is a button. Keep it as short as possible.
-
+ Requerido
Is a button. Keep it as short as possible.
-
+ Seguir
Is a button. Keep it as short as possible.
-
+ Dejar de silenciar
Is a button. Keep it as short as possible.
-
+ Silenciar
Is a button. Keep it as short as possible.
-
+ Desbloquear
Is a button. Keep it as short as possible.
-
+ Bloquear
diff --git a/translations/harbour-tooter-fr.ts b/translations/harbour-tooter-fr.ts
index 9f08856..5657178 100644
--- a/translations/harbour-tooter-fr.ts
+++ b/translations/harbour-tooter-fr.ts
@@ -66,6 +66,10 @@
Masquer la réponse
+
+
+ Ouvrir dans le navigateur
+
CoverPage
@@ -187,8 +191,8 @@
Ouvrir dans le navigateur
-
-
+
+ Rien trouvé
diff --git a/translations/harbour-tooter-it.ts b/translations/harbour-tooter-it.ts
index b88c20d..9b7dfe8 100644
--- a/translations/harbour-tooter-it.ts
+++ b/translations/harbour-tooter-it.ts
@@ -66,6 +66,10 @@
Chuidere risposta
+
+
+ Aprire nel browser
+
CoverPage
@@ -187,8 +191,8 @@
Aprire nel browser
-
-
+
+ Niente trovato
diff --git a/translations/harbour-tooter-nl.ts b/translations/harbour-tooter-nl.ts
index b09d25f..e0bf1d1 100644
--- a/translations/harbour-tooter-nl.ts
+++ b/translations/harbour-tooter-nl.ts
@@ -66,6 +66,10 @@
Antwoord verbergen
+
+
+ Open een Browser
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emojis
-
+ Tikken om in te voegen
@@ -119,38 +123,38 @@
MainPage
-
+ Thuis
-
+ Meldingen
-
+ Lokaal
-
+ Gefedereerd
-
+ Zoeken
-
+ @user of #term
- Nieuwe Toot
+ Nieuwe Toot
MediaFullScreen
-
+ Laadfout
@@ -184,11 +188,11 @@
- Open een Browser
+ Open een Browser
-
-
+
+ Niets gevonden
@@ -211,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Gegevens
Will show as: "35 Followers"
-
+ Volgers
Will show as: "23 Following"
-
+ Volgend
Will show as: "115 Statuses"
-
+ Statussen
- Vermelden
+ Vermelden
Is a button. Keep it as short as possible.
-
+ Ontvolgen
Is a button. Keep it as short as possible.
-
+ Gevraagd
Is a button. Keep it as short as possible.
-
+ Volgen
Is a button. Keep it as short as possible.
-
+ Ontdempen
Is a button. Keep it as short as possible.
-
+ Dempen
Is a button. Keep it as short as possible.
-
+ Deblokkeren
Is a button. Keep it as short as possible.
-
+ Blokkeren
@@ -321,7 +325,7 @@
-
+ Visuele identiteit
@@ -329,19 +333,19 @@
-
+ Occitaanse & Franse vertaling
-
+ Chinese vertaling
-
+ Nederlandse vertaling
-
+ Spaanse vertaling
diff --git a/translations/harbour-tooter-nl_BE.ts b/translations/harbour-tooter-nl_BE.ts
index 952bd2d..0089850 100644
--- a/translations/harbour-tooter-nl_BE.ts
+++ b/translations/harbour-tooter-nl_BE.ts
@@ -66,6 +66,10 @@
+
+
+
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emojis
-
+ Tikt voor in te voegen
@@ -119,31 +123,31 @@
MainPage
-
+ Thuis
-
+ Meldingen
-
+ Lokaal
-
+ Gefedereerd
-
+ Zoeken
-
+ @gebruiker of #term
- Nieuwen toot
+ Nieuwen toot
@@ -187,7 +191,7 @@
-
+
@@ -216,17 +220,17 @@
Will show as: "35 Followers"
-
+ Volgers
Will show as: "23 Following"
-
+ Volgend
Will show as: "115 Statuses"
-
+ Statussen
@@ -235,7 +239,7 @@
Is a button. Keep it as short as possible.
-
+ Ontvolgen
@@ -245,27 +249,27 @@
Is a button. Keep it as short as possible.
-
+ Volgen
Is a button. Keep it as short as possible.
-
+ Ontdempen
Is a button. Keep it as short as possible.
-
+ Dempen
Is a button. Keep it as short as possible.
-
+ Deblokkeren
Is a button. Keep it as short as possible.
-
+ Blokkeren
diff --git a/translations/harbour-tooter-oc.ts b/translations/harbour-tooter-oc.ts
index 3545567..81fb159 100644
--- a/translations/harbour-tooter-oc.ts
+++ b/translations/harbour-tooter-oc.ts
@@ -66,6 +66,10 @@
+
+
+
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emojis
-
+ Tustejar per inserir
@@ -187,7 +191,7 @@
-
+
@@ -216,17 +220,17 @@
Will show as: "35 Followers"
-
+ Seguidors
Will show as: "23 Following"
-
+ Abonaments
Will show as: "115 Statuses"
-
+ Estatuts
@@ -235,7 +239,7 @@
Is a button. Keep it as short as possible.
-
+ Quitar de seguir
@@ -245,27 +249,27 @@
Is a button. Keep it as short as possible.
-
+ Seguir
Is a button. Keep it as short as possible.
-
+ Mostrar
Is a button. Keep it as short as possible.
-
+ Amagar
Is a button. Keep it as short as possible.
-
+ Desblocar
Is a button. Keep it as short as possible.
-
+ Blocar
diff --git a/translations/harbour-tooter-pl.ts b/translations/harbour-tooter-pl.ts
index fe8a424..8c1140c 100644
--- a/translations/harbour-tooter-pl.ts
+++ b/translations/harbour-tooter-pl.ts
@@ -66,6 +66,10 @@
+
+
+ Otwarte w przeglądarce
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emoji
-
+ Dotknij aby wstawić
@@ -96,7 +100,7 @@
LoginPage
-
+ Login
@@ -119,31 +123,31 @@
MainPage
-
+ Strona główna
-
+ Powiadomienia
-
+ Lokalne
-
+ Globalne
-
+ Szukaj
-
+ @użytkownik lub #tag
- Nowy wpis
+ Nowy wpis
@@ -184,11 +188,11 @@
-
+ Otwarte w przeglądarce
-
-
+
+ Nic nie znaleziono
@@ -221,7 +225,7 @@
Will show as: "23 Following"
-
+ Śledzisz
@@ -235,7 +239,7 @@
Is a button. Keep it as short as possible.
-
+ Przestań śledzić
@@ -255,7 +259,7 @@
Is a button. Keep it as short as possible.
-
+ Wycisz
diff --git a/translations/harbour-tooter-ru.ts b/translations/harbour-tooter-ru.ts
index bd663b9..98a54ca 100644
--- a/translations/harbour-tooter-ru.ts
+++ b/translations/harbour-tooter-ru.ts
@@ -66,6 +66,10 @@
Скрыть ответ
+
+
+ Открыть в браузере
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Cмайликов
-
+ Нажмите, чтобы вставить
@@ -100,7 +104,7 @@
-
+ Экземпляра
@@ -119,38 +123,38 @@
MainPage
-
+ Главная
-
+ Уведомления
-
+ Локальны
-
+ Федеративные
-
+ Поиск
-
+ @пользователь или #срок
- Новый
+ Новый
MediaFullScreen
-
+ Ошибка при загрузке
@@ -184,11 +188,11 @@
- Открыть в браузере
+ Открыть в браузере
-
-
+
+ Ничего не найдено
@@ -211,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ Подробности
Will show as: "35 Followers"
-
+ Читают
Will show as: "23 Following"
-
+ Следующий
Will show as: "115 Statuses"
-
+ Статусы
- Упоминание
+ Упоминание
Is a button. Keep it as short as possible.
-
+ Отписаться
Is a button. Keep it as short as possible.
-
+ Запрошенный
Is a button. Keep it as short as possible.
-
+ Следить
Is a button. Keep it as short as possible.
-
+ Нет безгласный
Is a button. Keep it as short as possible.
-
+ Безгласный
Is a button. Keep it as short as possible.
-
+ Открыть
Is a button. Keep it as short as possible.
-
+ Блокировать
@@ -321,27 +325,27 @@
-
+ Визуальная идентичность
-
+ Разработка и переводы
-
+ французский перевод
-
+ Китайский перевод
-
+ Голландский перевод
-
+ Испанский перевод
diff --git a/translations/harbour-tooter-sr.ts b/translations/harbour-tooter-sr.ts
index 0dcdbd6..11298c2 100644
--- a/translations/harbour-tooter-sr.ts
+++ b/translations/harbour-tooter-sr.ts
@@ -66,6 +66,10 @@
+
+
+
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Емотикони
-
+ Тапни за убацивање
@@ -119,31 +123,31 @@
MainPage
-
+ Почетна
-
+ Обавјештење
-
+ Локална
-
+ Федеративна
-
+ Претрага
-
+ @korisnik ili #pojam
- Novi toot
+ Novi toot
@@ -187,7 +191,7 @@
-
+
@@ -216,17 +220,17 @@
Will show as: "35 Followers"
-
+ Пратиоци
Will show as: "23 Following"
-
+ Пратите
Will show as: "115 Statuses"
-
+ Статуси
@@ -235,7 +239,7 @@
Is a button. Keep it as short as possible.
-
+ Одпрати
@@ -245,27 +249,27 @@
Is a button. Keep it as short as possible.
-
+ Прати
Is a button. Keep it as short as possible.
-
+ Укини утишање
Is a button. Keep it as short as possible.
-
+ Утишај
Is a button. Keep it as short as possible.
-
+ Одблокирати
Is a button. Keep it as short as possible.
-
+ Блокирати
diff --git a/translations/harbour-tooter-sv.ts b/translations/harbour-tooter-sv.ts
index 6ff4080..53b7f6e 100644
--- a/translations/harbour-tooter-sv.ts
+++ b/translations/harbour-tooter-sv.ts
@@ -66,6 +66,10 @@
+
+
+
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emojis
-
+ Tryck för att infoga
@@ -119,31 +123,31 @@
MainPage
-
+ Hem
-
+ Notifieringar
-
+ Lokalt
-
+ Förenade
-
+ Sök
-
+ @user eller #term
- Ny toot
+ Ny toot
@@ -187,7 +191,7 @@
-
+
@@ -216,17 +220,17 @@
Will show as: "35 Followers"
-
+ Följare
Will show as: "23 Following"
-
+ Följer
Will show as: "115 Statuses"
-
+ Statusar
@@ -235,7 +239,7 @@
Is a button. Keep it as short as possible.
-
+ Sluta följa
@@ -245,27 +249,27 @@
Is a button. Keep it as short as possible.
-
+ Följ
Is a button. Keep it as short as possible.
-
+ Avtysta
Is a button. Keep it as short as possible.
-
+ Tysta
Is a button. Keep it as short as possible.
-
+ Avblockera
Is a button. Keep it as short as possible.
-
+ Blockera
diff --git a/translations/harbour-tooter-zh_CN.ts b/translations/harbour-tooter-zh_CN.ts
index 5a0bd4c..050c9fc 100644
--- a/translations/harbour-tooter-zh_CN.ts
+++ b/translations/harbour-tooter-zh_CN.ts
@@ -66,6 +66,10 @@
隐藏回复
+
+
+ 在浏览器打开个人简介
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ 表情
-
+ 点击以插入
@@ -119,38 +123,38 @@
MainPage
-
+ 主页
-
+ 通知
-
+ 本地
-
+ 联合
-
+ 搜索
-
+ @用户或#项目
- 新嘟嘟
+ 新嘟嘟
MediaFullScreen
-
+ 加载错误
@@ -184,11 +188,11 @@
- 在浏览器打开个人简介
+ 在浏览器打开个人简介
-
-
+
+ 没有发现任何东西
@@ -211,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ 关于
Will show as: "35 Followers"
-
+ 关注者
Will show as: "23 Following"
-
+ 关注中
Will show as: "115 Statuses"
-
+ 状态
- 提及
+ 提及
Is a button. Keep it as short as possible.
-
+ 取消关注
Is a button. Keep it as short as possible.
-
+ 请求
Is a button. Keep it as short as possible.
-
+ 关注
Is a button. Keep it as short as possible.
-
+ 未静音
Is a button. Keep it as short as possible.
-
+ 静音
Is a button. Keep it as short as possible.
-
+ 解除封锁
Is a button. Keep it as short as possible.
-
+ 封锁
diff --git a/translations/harbour-tooter.ts b/translations/harbour-tooter.ts
index 28efe0d..49f0835 100644
--- a/translations/harbour-tooter.ts
+++ b/translations/harbour-tooter.ts
@@ -66,6 +66,10 @@
Hide Reply
+
+
+ Open in Browser
+
CoverPage
@@ -78,11 +82,11 @@
EmojiSelect
-
+ Emojis
-
+ Tap to insert
@@ -119,38 +123,38 @@
MainPage
-
+ Home
-
+ Notifications
-
+ Local
-
+ Federated
-
+ Search
-
+ @user or #term
- New Toot
+ New Toot
MediaFullScreen
-
+ Error loading
@@ -180,15 +184,15 @@
- Reload
+ Reload
- Open in Browser
+ Open in Browser
-
-
+
+ Nothing found
@@ -211,61 +215,61 @@
If there's no good translation for "About", use "Details" (in details about profile).
-
+ About
Will show as: "35 Followers"
-
+ Followers
Will show as: "23 Following"
-
+ Following
Will show as: "115 Statuses"
-
+ Statuses
- Mention
+ Mention
Is a button. Keep it as short as possible.
-
+ Unfollow
Is a button. Keep it as short as possible.
-
+ Requested
Is a button. Keep it as short as possible.
-
+ Follow
Is a button. Keep it as short as possible.
-
+ Unmute
Is a button. Keep it as short as possible.
-
+ Mute
Is a button. Keep it as short as possible.
-
+ Unblock
Is a button. Keep it as short as possible.
-
+ Block
From 726548745e06ab188891de87203a0a8c1e4cd63e Mon Sep 17 00:00:00 2001
From: molan-git
Date: Sun, 12 Jul 2020 09:17:07 +0200
Subject: [PATCH 69/70] Toot text spacing
---
qml/pages/components/VisualContainer.qml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qml/pages/components/VisualContainer.qml b/qml/pages/components/VisualContainer.qml
index 1a1443b..17260b0 100644
--- a/qml/pages/components/VisualContainer.qml
+++ b/qml/pages/components/VisualContainer.qml
@@ -188,7 +188,7 @@ BackgroundItem {
left: miniHeader.left
leftMargin: Theme.paddingMedium
right: miniHeader.right
- rightMargin: Theme.horizontalPageMargin + Theme.paddingLarge
+ rightMargin: Theme.horizontalPageMargin + Theme.paddingMedium
top: miniHeader.bottom
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
From f765a825bb8398c67deff5023da36259741f91b8 Mon Sep 17 00:00:00 2001
From: molan-git
Date: Sun, 12 Jul 2020 09:44:28 +0200
Subject: [PATCH 70/70] 1.0.7-0
---
rpm/harbour-tooterb.changes | 11 +++++++++++
rpm/harbour-tooterb.spec | 4 ++--
rpm/harbour-tooterb.yaml | 4 ++--
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/rpm/harbour-tooterb.changes b/rpm/harbour-tooterb.changes
index 856e59f..4581a83 100644
--- a/rpm/harbour-tooterb.changes
+++ b/rpm/harbour-tooterb.changes
@@ -1,3 +1,14 @@
+*Sun Jul 12 2020 molan 1.0.7-0
+- Fix missing / wrong reblog and favourite counts in Retoots (issue #90)
+- Added full landscape support
+- Added new Pulley Menu options
+- Improved Toot context menu
+- Improved media page
+- Improved loading indicators
+- Small changes for some UI-elements
+- New Emojis
+- New translated strings
+
*Fri Jun 18 2020 molan 1.0.6-3
- Fix broken reblog indication
diff --git a/rpm/harbour-tooterb.spec b/rpm/harbour-tooterb.spec
index 0844eb3..4b290da 100644
--- a/rpm/harbour-tooterb.spec
+++ b/rpm/harbour-tooterb.spec
@@ -13,8 +13,8 @@ Name: harbour-tooterb
%{!?qtc_make:%define qtc_make make}
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter β
-Version: 1.0.6
-Release: 3
+Version: 1.0.7
+Release: 0
Group: Qt/Qt
License: LICENSE
URL: http://example.org/
diff --git a/rpm/harbour-tooterb.yaml b/rpm/harbour-tooterb.yaml
index ea06e37..927cb80 100644
--- a/rpm/harbour-tooterb.yaml
+++ b/rpm/harbour-tooterb.yaml
@@ -1,7 +1,7 @@
Name: harbour-tooterb
Summary: Tooter β
-Version: 1.0.6
-Release: 3
+Version: 1.0.7
+Release: 0
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt