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 @@ Toot sent! - + 已发送嘟嘟! Copy Link to Clipboard @@ -71,7 +71,7 @@ ImageFullScreen Error loading - + 加载错误 @@ -288,11 +288,11 @@ Load images in toots - + 加载嘟嘟图片 Translate - + 翻译 Use Transifex to help with app translation to your language 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 - Delete - - - Emojis - Emojis - - - Tap to insert - Tap to insert + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + + Public @@ -54,16 +54,19 @@ Direct - - What's on your mind? - - Toot sent! + + + EmojiPage - Copy Link to Clipboard + Emojis + + + + Tap to insert 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 @@ + + Artboard 1 + + + + + + + + + + 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 - Delete - Löschen - - - Emojis - Emojis - - - Tap to insert - Tippen um einzufügen + Copy Link to Clipboard + Link kopieren Write your warning here - Inhaltswarnung - - - Public - Öffentlich - - - Unlisted - Nicht gelistet - - - Followers-only - Nur für Folgende - - - Direct - Direktnachricht + Inhaltswarnung What's on your mind? - Was gibt's Neues? + Was gibt's Neues? + + + Delete + Löschen + + + Public + Öffentlich + + + Unlisted + Nicht gelistet + + + Followers-only + Nur für Folgende + + + Direct + Direktnachricht Toot sent! - Toot gesendet! - - - Copy Link to Clipboard - Link kopieren + Toot gesendet! - ImageFullScreen + CoverPage - Error loading - Ladefehler + New Toot + Neuer Toot + + + + EmojiSelect + + Emojis + Emojis + + + Tap to insert + Tippen um einzufügen @@ -135,6 +138,13 @@ Föderation + + MediaFullScreen + + Error loading + Ladefehler + + MiniStatus @@ -168,139 +178,154 @@ please wait... bitte warten... + + New Toot + Neuer Toot + - Profile + ProfileHeader - Unfollow - Entfolgen + Follows you + - Follow request sent! - Folge-Anfrage gesendet! + Bot + + + + ProfilePage - Following - Folgt - - - Mute - Stummschalten - - - Unmute - Nicht stummschalten - - - Unblock - Nicht blockieren - - - Block - Blockieren - - - Statuses - Beiträge - - - Favourites - Favoriten - - - Follow - Folgen - - - Summary - Zusammenfassung + About + Followers - Folgende + Folgende - Bio - Bio + Following + Folgt - Open Profile in Browser - Profil im Browser öffnen + Statuses + Beiträge + + + Unfollow + Entfolgen + + + Requested + + + + Follow + Folgen + + + Unmute + Nicht stummschalten + + + Mute + Stummschalten + + + Unblock + Nicht blockieren + + + Block + Blockieren + + + Open in Browser + - Settings + SettingsPage Settings - Einstellungen + Einstellungen - Remove Account - Konto entfernen + Options + - Add Account - Konto hinzufügen - - - Deauthorize this app and remove your account - Konto entfernen und für diese Anwendung deaktivieren - - - Authorize this app to access your Mastodon account - Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben + Load Images in Toots + Disable this option if you want to preserve your data connection - Diese Option deaktivieren um Datenvolumen zu sparen + Diese Option deaktivieren um Datenvolumen zu sparen - Credits - Über + Account + - UI/UX design and development - UI/UX-Gestaltung und Entwicklung + Remove Account + Konto entfernen - Visual identity - Visuelle Identität + Add Account + Konto hinzufügen - Occitan & French translation - Französische Übersetzung + Deauthorize this app from using your account and remove account data from phone + - Dutch translation - Niederländische Übersetzung - - - Spanish translation - Spanische Übersetzung - - - Added README file - Erstellung README-Datei - - - Chinese translation - Chinesische Übersetzung - - - Load images in toots - Bilder in Toots laden + Authorize this app to access your Mastodon account + Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben Translate - Übersetzungen + Übersetzungen - Use Transifex to help with app translation to your language - Transifex benutzen um bei den Übersetzungen mitzuhelfen + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + + + + Credits + Über + + + UI/UX design and development + UI/UX-Gestaltung und Entwicklung + + + Visual identity + Visuelle Identität Development and translations - Entwicklung und Übersetzungen + Entwicklung und Übersetzungen + + + Occitan & French translation + Französische Übersetzung + + + Chinese translation + Chinesische Übersetzung + + + Dutch translation + Niederländische Übersetzung + + + Spanish translation + Spanische Übersetzung + + + Added README file + Erstellung README-Datei @@ -336,5 +361,9 @@ Favorite Favorisieren + + Mention + + 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 - Delete - Διαγραφή - - - Emojis - Emoji - - - Tap to insert - Κτυπήστε για εισαγωγή + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Διαγραφή + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Νέος + + + + EmojiSelect + + Emojis + Emoji + + + Tap to insert + Κτυπήστε για εισαγωγή @@ -135,6 +138,13 @@ + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... + + New Toot + Νέος + - Profile + ProfileHeader - Unfollow - Αναίρεση παρακολούθησης + Follows you + - Follow request sent! - Η αίτηση παρακολούθησης εστάλη! + Bot + + + + ProfilePage - Following - Σε παρακολούθηση - - - Mute - Σίγαση - - - Unmute - Αναίρεση σίγασης - - - Unblock - Αναίρεση φραγής - - - Block - Φραγή - - - Statuses - Κατάσταση - - - Favourites - Σελιδοδείκτες - - - Follow - Παρακολούθηση - - - Summary - Σύνοψη + About + Followers - Σας ακολουθούν + Σας ακολουθούν - Bio + Following + Σε παρακολούθηση + + + Statuses + Κατάσταση + + + Unfollow + Αναίρεση παρακολούθησης + + + Requested - Open Profile in Browser + Follow + Παρακολούθηση + + + Unmute + Αναίρεση σίγασης + + + Mute + Σίγαση + + + Unblock + Αναίρεση φραγής + + + Block + Φραγή + + + Open in Browser - Settings + SettingsPage Settings - Ρυθμίσεις + Ρυθμίσεις - Remove Account - Αφαίρεση λογαριασμού + Options + - Add Account - Προσθήκη λογαριασμού - - - Deauthorize this app and remove your account - Άρση της αδειοδότησης της εφαρμογής και αφαίρεση του λογαριασμού σας - - - Authorize this app to access your Mastodon account - Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας + 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 + Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας + + + 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 - UI/UX σχεδιασμός και ανάπτυξη + UI/UX σχεδιασμός και ανάπτυξη Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - - - - Translate - Μετάφραση - - - Use Transifex to help with app translation to your language - Χρησιμοποιήστε το Transifex για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite Σελιδοδείκτης + + Mention + + 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 - Delete - Borrar - - - Emojis - Emoticonos - - - Tap to insert - Toca para insertar + Copy Link to Clipboard + Write your warning here - Escribe aquí tu advertencia - - - Public - Público - - - Unlisted - Sin federar - - - Followers-only - Sólo seguidores - - - Direct - Directo + Escribe aquí tu advertencia What's on your mind? - ¿En qué estás pensando? + ¿En qué estás pensando? + + + Delete + Borrar + + + Public + Público + + + Unlisted + Sin federar + + + Followers-only + Sólo seguidores + + + Direct + Directo Toot sent! + + + CoverPage - Copy Link to Clipboard - + New Toot + Nuevo toot - ImageFullScreen + EmojiSelect - Error loading - + Emojis + Emoticonos + + + Tap to insert + Toca para insertar @@ -135,6 +138,13 @@ Federada + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,139 +178,154 @@ please wait... por favor, espera... + + New Toot + Nuevo toot + - Profile + ProfileHeader - Unfollow - Dejar de seguir + Follows you + - Follow request sent! - ¡Solicitud de seguidor enviada! + Bot + + + + ProfilePage - Following - Siguiendo - - - Mute - Silenciar - - - Unmute - Dejar de silenciar - - - Unblock - Desbloquear - - - Block - Bloquear - - - Statuses - Estados - - - Favourites - Favoritos - - - Follow - Seguir - - - Summary - Resumen + About + Followers - Seguidores + Seguidores - Bio - Bio + Following + Siguiendo - Open Profile in Browser - Abrir perfil en el navegador + Statuses + Estados + + + Unfollow + Dejar de seguir + + + Requested + + + + Follow + Seguir + + + Unmute + Dejar de silenciar + + + Mute + Silenciar + + + Unblock + Desbloquear + + + Block + Bloquear + + + Open in Browser + - Settings + SettingsPage Settings - Ajustes + Ajustes - Remove Account - Eliminar cuenta + Options + - Add Account - Añadir cuenta - - - Deauthorize this app and remove your account - Retira la autorización a esta aplicación y elimina tu cuenta - - - Authorize this app to access your Mastodon account - Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre + Load Images in Toots + Disable this option if you want to preserve your data connection - 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 - Credits - Créditos + Account + - UI/UX design and development - Diseño UI/UX y desarrollo + Remove Account + Eliminar cuenta - Visual identity - Identidad visual + Add Account + Añadir cuenta - Occitan & French translation - Traducción al occitano y francés + Deauthorize this app from using your account and remove account data from phone + - Dutch translation - Traducción al holandés - - - Spanish translation - Traducción al español - - - Added README file - Añadido archivo README - - - Chinese translation - Traducción al chino - - - Load images in toots - Cargar imágenes en messages + Authorize this app to access your Mastodon account + Autoriza a esta aplicación para usar tu cuenta de Mastodon en tu nombre Translate - Traducir + Traducir - Use Transifex to help with app translation to your language - Usar Transifex para ayudar con traducciones + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + + + + Credits + Créditos + + + UI/UX design and development + Diseño UI/UX y desarrollo + + + Visual identity + Identidad visual Development and translations - Desarrollo y traducciones + Desarrollo y traducciones + + + Occitan & French translation + Traducción al occitano y francés + + + Chinese translation + Traducción al chino + + + Dutch translation + Traducción al holandés + + + Spanish translation + Traducción al español + + + Added README file + Añadido archivo README @@ -336,5 +361,9 @@ Favorite Marcar como favorito + + Mention + + 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 - Delete - Supprimer - - - Emojis - Emojis - - - Tap to insert - Appuyez pour insérer + Copy Link to Clipboard + Copier le lien Write your warning here - Rédigez votre alerte ici - - - Public - Public - - - Unlisted - Non listé - - - Followers-only - Abonné(e)s uniquement - - - Direct - Direct + Rédigez votre alerte ici What's on your mind? - Qu'avez-vous en tête? + Qu'avez-vous en tête? + + + Delete + Supprimer + + + Public + Public + + + Unlisted + Non listé + + + Followers-only + Abonné(e)s uniquement + + + Direct + Direct Toot sent! - Pouet envoyé ! - - - Copy Link to Clipboard - Copier le lien + Pouet envoyé ! - ImageFullScreen + CoverPage - Error loading - + New Toot + Nouveau pouet + + + + EmojiSelect + + Emojis + Emojis + + + Tap to insert + Appuyez pour insérer @@ -135,6 +138,13 @@ Fil public global + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,139 +178,154 @@ please wait... patientez... + + New Toot + Nouveau pouet + - Profile + ProfileHeader - Unfollow - Ne plus suivre + Follows you + - Follow request sent! - Demande d’abonnement envoyée ! + Bot + + + + ProfilePage - Following - Abonnements - - - Mute - Masquer - - - Unmute - Démasquer - - - Unblock - Débloquer - - - Block - Bloquer - - - Statuses - Pouets - - - Favourites - Favoris - - - Follow - Suivre - - - Summary - Résumé + About + Followers - Abonné(e)s + Abonné(e)s - Bio - Bio + Following + Abonnements - Open Profile in Browser - Ouvrir dans le navigateur + Statuses + Pouets + + + Unfollow + Ne plus suivre + + + Requested + + + + Follow + Suivre + + + Unmute + Démasquer + + + Mute + Masquer + + + Unblock + Débloquer + + + Block + Bloquer + + + Open in Browser + - Settings + SettingsPage Settings - Paramètres + Paramètres - Remove Account - Déconnecter votre compte + Options + - Add Account - Ajouter compte - - - Deauthorize this app and remove your account - Désautoriser cette application et enlever votre compte - - - Authorize this app to access your Mastodon account - Autoriser l’accès à votre compte pour cette application + Load Images in Toots + Disable this option if you want to preserve your data connection - Désactiver cette option pour économiser des données mobiles + Désactiver cette option pour économiser des données mobiles - Credits - Développement + Account + - UI/UX design and development - Design UI/UX et développement + Remove Account + Déconnecter votre compte - Visual identity - Identité visuelle + Add Account + Ajouter compte - Occitan & French translation - Traduction français + Deauthorize this app from using your account and remove account data from phone + - Dutch translation - Traduction néerlandaise - - - Spanish translation - Traduction espagnole - - - Chinese translation - Traduction chinoise - - - Added README file - Fichier README ajouté - - - Load images in toots - Charger images dans les pouets + Authorize this app to access your Mastodon account + Autoriser l’accès à votre compte pour cette application Translate - Traduire + Traduire - Use Transifex to help with app translation to your language - Utiliser Transifex pour aider à traduire cette application + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + + + + Credits + Développement + + + UI/UX design and development + Design UI/UX et développement + + + Visual identity + Identité visuelle Development and translations - Développement et traductions + Développement et traductions + + + Occitan & French translation + Traduction français + + + Chinese translation + Traduction chinoise + + + Dutch translation + Traduction néerlandaise + + + Spanish translation + Traduction espagnole + + + Added README file + Fichier README ajouté @@ -336,5 +361,9 @@ Favorite Ajouter aux favoris + + Mention + + 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 - + favourited ha apprezzato - + followed you ha iniziato a seguirti - + boosted ha condiviso + - said ha detto - Conversation + ConversationPage - + Copy Link to Clipboard - Copia link + Copia link - + Write your warning here - Contenuto avviso + Contenuto avviso - + What's on your mind? - A cosa stai pensando? + A cosa stai pensando? - + Delete - Elimina + Elimina - + Public - Pubblico + Pubblico - + Unlisted - Non elencato + Non elencato - + Followers-only - Solo ai seguaci + Solo ai seguaci - + Direct - Diretto + Diretto - + Toot sent! - Toot è stato pubblicato! - - - - Emojis - Emojis - - - - Tap to insert - Tap per inserire + Toot è stato pubblicato! - ImageFullScreen + CoverPage - - Error loading - Errore durante caricamento + + New Toot + Nuovo toot + + + + EmojiSelect + + + Emojis + Emojis + + + + Tap to insert + Tap per inserire @@ -102,27 +105,27 @@ LoginPage - + Login Accesso - + Instance Istanza - + Enter a valid Mastodon instance URL Inserire URL di una istanza Mastodon valida - + Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly. Mastodon è un servizio di rete sociale in software libero, costituito in una federazione d'istanze. Mastodon fa parte del più ampio Fediverso, permettendo ai suoi utenti di interagire anche con utenti su diverse piattaforme aperte che supportano lo stesso protocollo. - + Reload Ricarica @@ -130,55 +133,63 @@ MainPage - + Home Home - + Notifications Notifiche - + Local Locale - + Federated Federazione - + Search Cerca - + @user or #term @utente o #termine - + New Toot Nuovo toot + + MediaFullScreen + + + Error loading + Errore durante caricamento + + MiniStatus - + boosted ha condiviso - + favourited ha apprezzato - + followed you ha iniziato a seguirti @@ -186,12 +197,12 @@ MyList - + Loading Caricamento - + please wait... Attendere un momento... @@ -202,190 +213,208 @@ + New Toot + Nuovo toot + + + Load more Caricare altri - Profile + ProfileHeader - - Summary - Sintesi + + Follows you + - - Followers - Seguaci - - - - Following - Segue - - - - Statuses - Toots - - - - Favourites - Apprezzati - - - - Unfollow - Smetti di seguire - - - - Follow request sent! - Richiesta di seguito inviata! - - - - Follow - Segui - - - - Unmute - Non silenziare - - - - Mute - Silenzia - - - - Unblock - Sblocca - - - - Block - Blocca - - - - Bio - Biografia - - - - Open Profile in Browser - Aprire profile nel browser + + Bot + - Settings + ProfilePage - + + About + + + + + Followers + Seguaci + + + + Following + Segue + + + + Statuses + Toots + + + + Unfollow + Smetti di seguire + + + + Requested + + + + + Follow + Segui + + + + Unmute + Non silenziare + + + + Mute + Silenzia + + + + Unblock + Sblocca + + + + Block + Blocca + + + + Open in Browser + + + + + SettingsPage + + Settings - Impostazione + - - Remove Account - Rimozione del account + + Options + - - Add Account - Aggiungi account + + Load Images in Toots + - - Deauthorize this app and remove your account - Annullare l'autorizzazione dell'app e rimuovere l'account - - - - Authorize this app to access your Mastodon account - Autorizzare l'app all'utilizzo del conto Mastodon - - - - Load images in toots - Caricare immagini nei toots - - - + Disable this option if you want to preserve your data connection - Disabilitare questa opzione per conservare connessione dati + Disabilitare questa opzione per conservare connessione dati - + + Account + + + + + Remove Account + Rimozione del account + + + + Add Account + Aggiungi account + + + + Deauthorize this app from using your account and remove account data from phone + + + + + Authorize this app to access your Mastodon account + Autorizzare l'app all'utilizzo del conto Mastodon + + + Translate - Tradurre + Tradurre - - Use Transifex to help with app translation to your language - Utilizzare Transifex per aiutare nella traduzione dell'app + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + - + Credits - Sviluppo + Sviluppo - + UI/UX design and development - Design UI/UX e sviluppo + Design UI/UX e sviluppo - + Visual identity - Identità visiva + Identità visiva - + Development and translations - Sviluppo e traduzioni + Sviluppo e traduzioni - + Occitan & French translation - Traduzione francese e occitanica + Traduzione francese e occitanica - + Chinese translation - Traduzione cinese + Traduzione cinese - + Dutch translation - Traduzione olandese + Traduzione olandese - + Spanish translation - Traduzione spagnola + Traduzione spagnola - + Added README file - Aggiunto file README + Aggiunto file README Toot - + boosted ha condiviso - + favourited ha apprezzato - + followed you ha iniziato a seguirti @@ -393,24 +422,29 @@ VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato + + + Mention + + 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 - Delete - Verwijderen - - - Emojis - Emojis - - - Tap to insert - Tikken om in te voegen + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Verwijderen + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Nieuwe Toot + + + + EmojiSelect + + Emojis + Emojis + + + Tap to insert + Tikken om in te voegen @@ -135,6 +138,13 @@ Gefedereerd + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... even geduld… + + New Toot + Nieuwe Toot + - Profile + ProfileHeader - Unfollow - Ontvolgen + Follows you + - Follow request sent! - Volgverzoek verstuurd! + Bot + + + + ProfilePage - Following - Volgend - - - Mute - Dempen - - - Unmute - Ontdempen - - - Unblock - Deblokkeren - - - Block - Blokkeren - - - Statuses - Statussen - - - Favourites - Favorieten - - - Follow - Volgen - - - Summary - Samenvatting + About + Followers - Volgers + Volgers - Bio + Following + Volgend + + + Statuses + Statussen + + + Unfollow + Ontvolgen + + + Requested - Open Profile in Browser + Follow + Volgen + + + Unmute + Ontdempen + + + Mute + Dempen + + + Unblock + Deblokkeren + + + Block + Blokkeren + + + Open in Browser - Settings + SettingsPage Settings - Instellingen + Instellingen - Remove Account - Verwijderen account + Options + - Add Account - Toevoegen account - - - Deauthorize this app and remove your account - Trek autorisaties van deze app in en verwijder je account - - - Authorize this app to access your Mastodon account - Autoriseer deze app om je Mastodon namens jou te gebruiken + Load Images in Toots + Disable this option if you want to preserve your data connection - Schakel deze optie uit als je je dataverbinding wilt behouden + Schakel deze optie uit als je je dataverbinding wilt behouden + + + Account + + + + Remove Account + Verwijderen account + + + Add Account + Toevoegen account + + + Deauthorize this app from using your account and remove account data from phone + + + + Authorize this app to access your Mastodon account + Autoriseer deze app om je Mastodon namens jou te gebruiken + + + Translate + Vertalen + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + Credits - Credits + Credits UI/UX design and development - UI/UX ontwerp en ontwikkeling + UI/UX ontwerp en ontwikkeling Visual identity + + Development and translations + Ontwikkeling en vertalingen + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Laden afbeeldingen in toots - - - Translate - Vertalen - - - Use Transifex to help with app translation to your language - Gebruik Transifex om deze app te helpen vertalen in jouw taal - - - Development and translations - Ontwikkeling en vertalingen - Toot @@ -336,5 +361,9 @@ Favorite Markeren als favoriet + + Mention + + 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 - Delete - Verwijderen - - - Emojis - Emoji’s - - - Tap to insert - Tikt voor in te voegen + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Verwijderen + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Nieuwen toot + + + + EmojiSelect + + Emojis + Emoji’s + + + Tap to insert + Tikt voor in te voegen @@ -135,6 +138,13 @@ Gefedereerd + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... efkens geduld… + + New Toot + Nieuwen toot + - Profile + ProfileHeader - Unfollow - Ontvolgen + Follows you + - Follow request sent! - Volgverzoek verzonden! + Bot + + + + ProfilePage - Following - Volgend - - - Mute - Dempen - - - Unmute - Ontdempen - - - Unblock - Deblokkeren - - - Block - Blokkeren - - - Statuses - Statussen - - - Favourites - Duimen - - - Follow - Volgen - - - Summary - Samenvatting + About + Followers - Volgers + Volgers - Bio + Following + Volgend + + + Statuses + Statussen + + + Unfollow + Ontvolgen + + + Requested - Open Profile in Browser + Follow + Volgen + + + Unmute + Ontdempen + + + Mute + Dempen + + + Unblock + Deblokkeren + + + Block + Blokkeren + + + Open in Browser - Settings + SettingsPage Settings - Instellingen + Instellingen - Remove Account - Account verwijderen + Options + - Add Account - Account toevoegen - - - Deauthorize this app and remove your account - Trekt autorisaties van dezen app in en verwijdert uwen account - - - Authorize this app to access your Mastodon account - Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken + Load Images in Toots + Disable this option if you want to preserve your data connection - Schakelt dees optie uit als ge uw verbinding wilt behouden + Schakelt dees optie uit als ge uw verbinding wilt behouden + + + Account + + + + Remove Account + Account verwijderen + + + Add Account + Account toevoegen + + + Deauthorize this app from using your account and remove account data from phone + + + + Authorize this app to access your Mastodon account + Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken + + + Translate + Vertalen + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + Credits - Credits + Credits UI/UX design and development - UI/UX-ontwerp en -ontwikkeling + UI/UX-ontwerp en -ontwikkeling Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Afbeeldingen in toots laden - - - Translate - Vertalen - - - Use Transifex to help with app translation to your language - Gebruikt Transifex voor te helpen met dezen app in uw taal te vertalen - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite Duim toevoegen + + Mention + + 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 - Delete - Escafar - - - Emojis - Emojis - - - Tap to insert - Tustejar per inserir + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Escafar + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Nòu Tut + + + + EmojiSelect + + Emojis + Emojis + + + Tap to insert + Tustejar per inserir @@ -135,6 +138,13 @@ Federat + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... esperatz.... + + New Toot + Nòu Tut + - Profile + ProfileHeader - Unfollow - Quitar de seguir + Follows you + - Follow request sent! - Demanda de seguir enviada ! + Bot + + + + ProfilePage - Following - Abonaments - - - Mute - Amagar - - - Unmute - Mostrar - - - Unblock - Desblocar - - - Block - Blocar - - - Statuses - Estatuts - - - Favourites - Favorits - - - Follow - Seguir - - - Summary - Resumit + About + Followers - Seguidors + Seguidors - Bio + Following + Abonaments + + + Statuses + Estatuts + + + Unfollow + Quitar de seguir + + + Requested - Open Profile in Browser + Follow + Seguir + + + Unmute + Mostrar + + + Mute + Amagar + + + Unblock + Desblocar + + + Block + Blocar + + + Open in Browser - Settings + SettingsPage Settings - Parmètres + Parmètres - Remove Account - Levar un compte + Options + - Add Account - Ajustar un compte - - - Deauthorize this app and remove your account - Revocar l’aplicacion e levar vòstre compte - - - Authorize this app to access your Mastodon account - Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos + Load Images in Toots + Disable this option if you want to preserve your data connection - Desactivar aquesta opcion per estalviar vòstra connexion de donadas + Desactivar aquesta opcion per estalviar vòstra connexion de donadas + + + Account + + + + Remove Account + Levar un compte + + + Add Account + Ajustar un compte + + + Deauthorize this app from using your account and remove account data from phone + + + + Authorize this app to access your Mastodon account + Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos + + + Translate + Traduire + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + Credits - Crèdits + Crèdits UI/UX design and development - UI/UX design e desvlopament + UI/UX design e desvlopament Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Cargar los imatges dels tuts - - - Translate - Traduire - - - Use Transifex to help with app translation to your language - Utilizar Transifex per ajudar a traduire l’aplicacion dins vòstra lenga - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite Ajustar als favorits + + Mention + + 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 - Delete - Usuń - - - Emojis - Emoji - - - Tap to insert - Dotknij aby wstawić + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Usuń + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Nowy wpis + + + + EmojiSelect + + Emojis + Emoji + + + Tap to insert + Dotknij aby wstawić @@ -135,6 +138,13 @@ Globalne + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,72 +178,95 @@ please wait... proszę czekać… + + New Toot + Nowy wpis + - Profile + ProfileHeader - Unfollow - Przestań śledzić + Follows you + - Follow request sent! - Wysłano prośbę o możliwość śledzenia! + Bot + + + + ProfilePage - Following - Śledzisz - - - Mute - Wycisz - - - Unmute - Unmute - - - Unblock - Unblock - - - Block - Block - - - Statuses - Statuses - - - Favourites - Favourites - - - Follow - Follow - - - Summary - Summary + About + Followers - Followers + Followers - Bio + Following + Śledzisz + + + Statuses + Statuses + + + Unfollow + Przestań śledzić + + + Requested - Open Profile in Browser + Follow + Follow + + + Unmute + Unmute + + + Mute + Wycisz + + + Unblock + Unblock + + + Block + Block + + + Open in Browser - Settings + SettingsPage Settings Ustawienia + + Options + + + + Load Images in Toots + + + + Disable this option if you want to preserve your data connection + + + + Account + + Remove Account @@ -243,7 +276,7 @@ - Deauthorize this app and remove your account + Deauthorize this app from using your account and remove account data from phone @@ -251,7 +284,11 @@ - Disable this option if you want to preserve your data connection + Translate + + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. @@ -266,10 +303,18 @@ Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - - - - Translate - - - - Use Transifex to help with app translation to your language - - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite + + Mention + + 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 - Delete - Удалить - - - Emojis - Cмайликов - - - Tap to insert - Нажмите, чтобы вставить + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Удалить + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Новый + + + + EmojiSelect + + Emojis + Cмайликов + + + Tap to insert + Нажмите, чтобы вставить @@ -135,6 +138,13 @@ Федеративные + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... Пожалуйста, подождите... + + New Toot + Новый + - Profile + ProfileHeader - Unfollow - Отписаться + Follows you + - Follow request sent! - Следуйте запрошенному запросу! + Bot + + + + ProfilePage - Following - Следующий - - - Mute - Безгласный - - - Unmute - Нет безгласный - - - Unblock - Открыть - - - Block - Блокировать - - - Statuses - Статусы - - - Favourites - Избранные - - - Follow - Следить - - - Summary - Резюме + About + Followers - Читают + Читают - Bio + Following + Следующий + + + Statuses + Статусы + + + Unfollow + Отписаться + + + Requested - Open Profile in Browser + Follow + Следить + + + Unmute + Нет безгласный + + + Mute + Безгласный + + + Unblock + Открыть + + + Block + Блокировать + + + Open in Browser - Settings + SettingsPage Settings - Настройки + Настройки - Remove Account - Удалить учетную запись + Options + - Add Account - Добавить аккаунт - - - Deauthorize this app and remove your account - удалить учетную запись с устройства - - - Authorize this app to access your Mastodon account - Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени + 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 + Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени + + + 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 - Дизайн и разработка UI / UX + Дизайн и разработка UI / UX Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Загружать изображения - - - Translate - Переведите - - - Use Transifex to help with app translation to your language - Используйте Transifex, чтобы помочь с переводом приложения на ваш язык - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite Избранные + + Mention + + 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 - Delete - Обриши - - - Emojis - Емотикони - - - Tap to insert - Тапни за убацивање + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Обриши + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Novi toot + + + + EmojiSelect + + Emojis + Емотикони + + + Tap to insert + Тапни за убацивање @@ -135,6 +138,13 @@ Федеративна + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... молимо вас, сачекајте... + + New Toot + Novi toot + - Profile + ProfileHeader - Unfollow - Одпрати + Follows you + - Follow request sent! - Захтјев за праћењем поднесен! + Bot + + + + ProfilePage - Following - Пратите - - - Mute - Утишај - - - Unmute - Укини утишање - - - Unblock - Одблокирати - - - Block - Блокирати - - - Statuses - Статуси - - - Favourites - Омиљени - - - Follow - Прати - - - Summary - Детаљи + About + Followers - Пратиоци + Пратиоци - Bio + Following + Пратите + + + Statuses + Статуси + + + Unfollow + Одпрати + + + Requested - Open Profile in Browser + Follow + Прати + + + Unmute + Укини утишање + + + Mute + Утишај + + + Unblock + Одблокирати + + + Block + Блокирати + + + Open in Browser - Settings + SettingsPage Settings - Подешавања + Подешавања - Remove Account - Уклони налог + Options + - Add Account - Додај налог - - - Deauthorize this app and remove your account - Укините дозволе за кориштење и уклоните налог с телефона - - - Authorize this app to access your Mastodon account - Дозволите овој апликацији да користи ваш Mastodon налог + 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 + Дозволите овој апликацији да користи ваш Mastodon налог + + + 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 @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Прикажи слике у објавама - - - Translate - Преведи - - - Use Transifex to help with app translation to your language - Користите Transifex и помозите у преводу апликације на други језик - - - Development and translations - - Toot @@ -336,5 +361,9 @@ Favorite + + Mention + + 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 - Delete - Radera - - - Emojis - Emojis - - - Tap to insert - Tryck för att infoga + Copy Link to Clipboard + Write your warning here + + What's on your mind? + + + + Delete + Radera + Public @@ -54,24 +54,27 @@ Direct - - What's on your mind? - - Toot sent! - - Copy Link to Clipboard - - - ImageFullScreen + CoverPage - Error loading - + New Toot + Ny toot + + + + EmojiSelect + + Emojis + Emojis + + + Tap to insert + Tryck för att infoga @@ -135,6 +138,13 @@ Förenade + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,108 +178,143 @@ please wait... Vänligen vänta... + + New Toot + Ny toot + - Profile + ProfileHeader - Unfollow - Sluta följa + Follows you + - Follow request sent! - Följarförfrågan har skickats! + Bot + + + + ProfilePage - Following - Följer - - - Mute - Tysta - - - Unmute - Avtysta - - - Unblock - Avblockera - - - Block - Blockera - - - Statuses - Statusar - - - Favourites - Favoriter - - - Follow - Följ - - - Summary - Översikt + About + Followers - Följare + Följare - Bio + Following + Följer + + + Statuses + Statusar + + + Unfollow + Sluta följa + + + Requested - Open Profile in Browser + Follow + Följ + + + Unmute + Avtysta + + + Mute + Tysta + + + Unblock + Avblockera + + + Block + Blockera + + + Open in Browser - Settings + SettingsPage Settings - Inställningar + Inställningar - Remove Account - Radera konto + Options + - Add Account - Lägg till konto - - - Deauthorize this app and remove your account - Avauktorisera denna app och radera ditt konto - - - Authorize this app to access your Mastodon account - Godkänn denna app att använda ditt Mastodon-konto på dina vägnar + Load Images in Toots + Disable this option if you want to preserve your data connection - Inaktivera det här alternativet om du vill behålla din dataanslutning + Inaktivera det här alternativet om du vill behålla din dataanslutning + + + Account + + + + Remove Account + Radera konto + + + Add Account + Lägg till konto + + + Deauthorize this app from using your account and remove account data from phone + + + + Authorize this app to access your Mastodon account + Godkänn denna app att använda ditt Mastodon-konto på dina vägnar + + + Translate + Översätt + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. + Credits - Erkännanden + Erkännanden UI/UX design and development - UI/UX design och utveckling + UI/UX design och utveckling Visual identity + + Development and translations + Använd Transifex för att hjälpa med app-översättningar till ditt språk + Occitan & French translation + + Chinese translation + + Dutch translation @@ -282,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - Ladda bilder i toots - - - Translate - Översätt - - - Use Transifex to help with app translation to your language - - - - Development and translations - Använd Transifex för att hjälpa med app-översättningar till ditt språk - Toot @@ -336,5 +361,9 @@ Favorite Favorisera + + Mention + + 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 - Delete - 删除 - - - Emojis - 表情 - - - Tap to insert - 点击以插入 + Copy Link to Clipboard + 复制链接到剪切板 Write your warning here - 在此编写你的警告信息 - - - Public - 公共区域 - - - Unlisted - 不公开 - - - Followers-only - 仅关注者 - - - Direct - 私信 + 在此编写你的警告信息 What's on your mind? - 有何想法? + 有何想法? + + + Delete + 删除 + + + Public + 公共区域 + + + Unlisted + 不公开 + + + Followers-only + 仅关注者 + + + Direct + 私信 Toot sent! + + + CoverPage - Copy Link to Clipboard - 复制链接到剪切板 + New Toot + 新嘟嘟 - ImageFullScreen + EmojiSelect - Error loading - + Emojis + 表情 + + + Tap to insert + 点击以插入 @@ -135,6 +138,13 @@ 联合 + + MediaFullScreen + + Error loading + + + MiniStatus @@ -168,139 +178,154 @@ please wait... 稍等片刻...... + + New Toot + 新嘟嘟 + - Profile + ProfileHeader - Unfollow - 取消关注 + Follows you + - Follow request sent! - 已寄出关注请求! + Bot + + + + ProfilePage - Following - 关注中 - - - Mute - 静音 - - - Unmute - 未静音 - - - Unblock - 解除封锁 - - - Block - 封锁 - - - Statuses - 状态 - - - Favourites - 收藏 - - - Follow - 关注 - - - Summary - 摘要 + About + Followers - 关注者 + 关注者 - Bio - 简介 + Following + 关注中 - Open Profile in Browser - 在浏览器打开个人简介 + Statuses + 状态 + + + Unfollow + 取消关注 + + + Requested + + + + Follow + 关注 + + + Unmute + 未静音 + + + Mute + 静音 + + + Unblock + 解除封锁 + + + Block + 封锁 + + + Open in Browser + - Settings + SettingsPage Settings - 设置 + 设置 - Remove Account - 移除账号 + Options + - Add Account - 添加账号 - - - Deauthorize this app and remove your account - 取消授权此软件并移除你的账号 - - - Authorize this app to access your Mastodon account - 授权此软件使用你的 Mastodon 账号 + Load Images in Toots + Disable this option if you want to preserve your data connection - 如果你想保护你的数据连接,请禁用此选项 + 如果你想保护你的数据连接,请禁用此选项 - Credits - 信誉 - - - UI/UX design and development - UI/UX设计及开发 - - - Visual identity - 视觉识别 - - - Occitan & French translation - 奥克西坦语及法语翻译 - - - Dutch translation - 尼德兰语翻译 - - - Spanish translation - 西班牙语翻译 - - - Added README file - 添加 README 文件 - - - Chinese translation - 汉语翻译 - - - Load images in toots + 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 + 授权此软件使用你的 Mastodon 账号 + Translate - Use Transifex to help with app translation to your language - 使用 Transifex 以帮助翻译软件为你的语言 + 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 + UI/UX设计及开发 + + + Visual identity + 视觉识别 Development and translations - 开发及翻译 + 开发及翻译 + + + Occitan & French translation + 奥克西坦语及法语翻译 + + + Chinese translation + 汉语翻译 + + + Dutch translation + 尼德兰语翻译 + + + Spanish translation + 西班牙语翻译 + + + Added README file + 添加 README 文件 @@ -336,5 +361,9 @@ Favorite 关注 + + Mention + + 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 Copy Link to Clipboard @@ -60,7 +60,14 @@ - EmojiPage + CoverPage + + New Toot + + + + + EmojiSelect Emojis @@ -70,13 +77,6 @@ - - ImageFullScreen - - Error loading - - - ImageUploader @@ -138,6 +138,13 @@ + + MediaFullScreen + + Error loading + + + MiniStatus @@ -171,72 +178,95 @@ please wait... + + New Toot + + - Profile + ProfileHeader - Unfollow - Unfollow + Follows you + - Follow request sent! - Follow request sent! + Bot + + + + ProfilePage - Following - Following - - - Mute - Mute - - - Unmute - Unmute - - - Unblock - Unblock - - - Block - Block - - - Statuses - Statuses - - - Favourites - Favourites - - - Follow - Follow - - - Summary - Summary + About + Followers - Followers + Followers - Bio + Following + Following + + + Statuses + Statuses + + + Unfollow + Unfollow + + + Requested - Open Profile in Browser + Follow + Follow + + + Unmute + Unmute + + + Mute + Mute + + + Unblock + Unblock + + + Block + Block + + + Open in Browser - Settings + SettingsPage Settings Settings + + Options + + + + Load Images in Toots + + + + Disable this option if you want to preserve your data connection + + + + Account + + Remove Account @@ -246,7 +276,7 @@ - Deauthorize this app and remove your account + Deauthorize this app from using your account and remove account data from phone @@ -254,7 +284,11 @@ - Disable this option if you want to preserve your data connection + Translate + + + + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. @@ -269,10 +303,18 @@ Visual identity + + Development and translations + + Occitan & French translation + + Chinese translation + + Dutch translation @@ -285,26 +327,6 @@ Added README file - - Chinese translation - - - - Load images in toots - - - - Translate - - - - Use Transifex to help with app translation to your language - - - - Development and translations - - Toot @@ -339,5 +361,9 @@ Favorite + + Mention + + 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 Copy Link to Clipboard - Link kopieren + Link kopieren Write your warning here - Inhaltswarnung + Inhaltswarnung What's on your mind? - Was gibt's Neues? + Was gibt's Neues? Delete - Löschen + Löschen Public - Öffentlich + Öffentlich Unlisted - Nicht gelistet + Nicht gelistet Followers-only - Nur für Folgende + Nur für Folgende Direct - Direktnachricht + Direktnachricht Toot sent! - Toot gesendet! + Toot gesendet! CoverPage New Toot - Neuer Toot + Neuer Toot EmojiSelect Emojis - Emojis + Emojis Tap to insert - Tippen um einzufügen + Tippen um einzufügen @@ -142,7 +142,7 @@ MediaFullScreen Error loading - Ladefehler + Ladefehler @@ -180,152 +180,152 @@ New Toot - Neuer Toot + Neuer Toot ProfileHeader Follows you - + Folgt dir Bot - + Bot ProfilePage About - + Details Followers - Folgende + Folgende Following - Folgt + Folgt Statuses - Beiträge + Beiträge Unfollow - Entfolgen + Entfolgen Requested - + Angefragt Follow - Folgen + Folgen Unmute - Nicht stummschalten + Nicht stumm schalten Mute - Stummschalten + Stumm schalten Unblock - Nicht blockieren + Nicht blockieren Block - Blockieren + Blockieren Open in Browser - + Im Browser öffnen SettingsPage Settings - Einstellungen + Einstellungen Options - + Optionen Load Images in Toots - + Bilder in Toots laden Disable this option if you want to preserve your data connection - Diese Option deaktivieren um Datenvolumen zu sparen + Diese Option deaktivieren um Datenvolumen zu sparen Account - + Konto Remove Account - Konto entfernen + Konto entfernen Add Account - Konto hinzufügen + Konto hinzufügen Deauthorize this app from using your account and remove account data from phone - + Konto entfernen und für diese Anwendung deaktivieren Authorize this app to access your Mastodon account - Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben + Zugriff durch diese Anwendung auf eigenes Mastodon-Konto erlauben Translate - Übersetzungen + Übersetzungen Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> benutzen um bei den Übersetzungen mitzuhelfen. Credits - Über + Über UI/UX design and development - UI/UX-Gestaltung und Entwicklung + UI/UX-Gestaltung und Entwicklung Visual identity - Visuelle Identität + Visuelle Identität Development and translations - Entwicklung und Übersetzungen + Entwicklung und Übersetzungen Occitan & French translation - Französische Übersetzung + Französische Übersetzung Chinese translation - Chinesische Übersetzung + Chinesische Übersetzung Dutch translation - Niederländische Übersetzung + Niederländische Übersetzung Spanish translation - Spanische Übersetzung + Spanische Übersetzung Added README file - Erstellung README-Datei + Erstellung README-Datei @@ -363,7 +363,7 @@ Mention - + 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 Copy Link to Clipboard - + Copiar enlace al portapapeles Write your warning here - Escribe aquí tu advertencia + Escribe aquí tu advertencia What's on your mind? - ¿En qué estás pensando? + ¿En qué estás pensando? Delete - Borrar + Borrar Public - Público + Público Unlisted - Sin federar + Sin federar Followers-only - Sólo seguidores + Sólo seguidores Direct - Directo + Directo Toot sent! - + ¡Toot enviado! CoverPage New Toot - Nuevo toot + Nuevo toot EmojiSelect Emojis - Emoticonos + Emoticonos Tap to insert - Toca para insertar + Toca para insertar @@ -142,7 +142,7 @@ MediaFullScreen Error loading - + Error al cargar @@ -180,7 +180,7 @@ New Toot - Nuevo toot + Nuevo toot @@ -191,7 +191,7 @@ Bot - + Bot @@ -202,19 +202,19 @@ Followers - Seguidores + Seguidores Following - Siguiendo + Siguiendo Statuses - Estados + Estados Unfollow - Dejar de seguir + Dejar de seguir Requested @@ -222,110 +222,110 @@ Follow - Seguir + Seguir Unmute - Dejar de silenciar + Dejar de silenciar Mute - Silenciar + Silenciar Unblock - Desbloquear + Desbloquear Block - Bloquear + Bloquear Open in Browser - + Abrir en el navegador SettingsPage Settings - Ajustes + Ajustes Options - + Opciones Load Images in Toots - + Cargar imágenes en messages Disable this option if you want to preserve your data connection - 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 Account - + Cuenta Remove Account - Eliminar cuenta + Eliminar cuenta Add Account - Añadir cuenta + Añadir cuenta Deauthorize this app from using your account and remove account data from phone - + Retira la autorización a esta aplicación y elimina tu cuenta Authorize this app to access your Mastodon account - 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 Translate - Traducir + Traducir Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Usar <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> para ayudar con traducciones Credits - Créditos + Créditos UI/UX design and development - Diseño UI/UX y desarrollo + Diseño UI/UX y desarrollo Visual identity - Identidad visual + Identidad visual Development and translations - Desarrollo y traducciones + Desarrollo y traducciones Occitan & French translation - Traducción al occitano y francés + Traducción al occitano y francés Chinese translation - Traducción al chino + Traducción al chino Dutch translation - Traducción al holandés + Traducción al holandés Spanish translation - Traducción al español + Traducción al español Added README file - 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 - - favourited - - - - followed you - - - - boosted - - - - said - - - - - Conversation - - Delete - - - - Emojis - - - - Tap to insert - - - - Write your warning here - - - - Public - - - - Unlisted - - - - Followers-only - - - - Direct - - - - What's on your mind? - - - - Toot sent! - - - - Copy Link to Clipboard - - - - - ImageFullScreen - - Error loading - - - - - ImageUploader - - The file %1 does not exists - - - - - 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 - - - - - MainPage - - Home - - - - Notifications - - - - New Toot - - - - Search - - - - @user or #term - - - - Local - - - - Federated - - - - - MiniStatus - - boosted - - - - favourited - - - - followed you - - - - - MyList - - Load more - - - - Settings - - - - Loading - - - - please wait... - - - - - Profile - - Unfollow - - - - Follow request sent! - - - - Following - - - - Mute - - - - Unmute - - - - Unblock - - - - Block - - - - Statuses - - - - Favourites - - - - Follow - - - - Summary - - - - Followers - - - - Bio - - - - Open Profile in Browser - - - - - Settings - - Settings - - - - Remove Account - - - - Add Account - - - - Deauthorize this app and remove your account - - - - Authorize this app to access your Mastodon account - - - - Disable this option if you want to preserve your data connection - - - - Credits - - - - UI/UX design and development - - - - Visual identity - - - - Occitan & French translation - - - - Dutch translation - - - - Spanish translation - - - - Added README file - - - - Chinese translation - - - - Load images in toots - - - - Translate - - - - Use Transifex to help with app translation to your language - - - - Development and translations - - - - - Toot - - boosted - - - - favourited - - - - followed you - - - - - VisualContainer - - Unboost - - - - Boost - - - - Unfavorite - - - - Favorite - - - - 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 Copy Link to Clipboard - Copier le lien + Copier le lien Write your warning here - Rédigez votre alerte ici + Rédigez votre alerte ici What's on your mind? - Qu'avez-vous en tête? + Qu'avez-vous en tête? Delete - Supprimer + Supprimer Public - Public + Public Unlisted - Non listé + Non listé Followers-only - Abonné(e)s uniquement + Abonné(e)s uniquement Direct - Direct + Direct Toot sent! - Pouet envoyé ! + Pouet envoyé ! CoverPage New Toot - Nouveau pouet + Nouveau pouet EmojiSelect Emojis - Emojis + Emojis Tap to insert - Appuyez pour insérer + Appuyez pour insérer @@ -142,7 +142,7 @@ MediaFullScreen Error loading - + Erreur au chargement @@ -180,152 +180,152 @@ New Toot - Nouveau pouet + Nouveau pouet ProfileHeader Follows you - + Vous suit Bot - + Bot ProfilePage About - + Détails Followers - Abonné(e)s + Abonné(e)s Following - Abonnements + Abonnements Statuses - Pouets + Pouets Unfollow - Ne plus suivre + Ne plus suivre Requested - + Demandé Follow - Suivre + Suivre Unmute - Démasquer + Démasquer Mute - Masquer + Masquer Unblock - Débloquer + Débloquer Block - Bloquer + Bloquer Open in Browser - + Ouvrir dans le navigateur SettingsPage Settings - Paramètres + Paramètres Options - + Options Load Images in Toots - + Charger images dans les pouets Disable this option if you want to preserve your data connection - Désactiver cette option pour économiser des données mobiles + Désactiver cette option pour économiser des données mobiles Account - + Compte Remove Account - Déconnecter votre compte + Déconnecter votre compte Add Account - Ajouter compte + Ajouter compte Deauthorize this app from using your account and remove account data from phone - + Désautoriser cette application et enlever votre compte Authorize this app to access your Mastodon account - Autoriser l’accès à votre compte pour cette application + Autoriser l’accès à votre compte pour cette application Translate - Traduire + Traduire Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Utiliser <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> pour aider à traduire cette application. Credits - Développement + Développement UI/UX design and development - Design UI/UX et développement + Design UI/UX et développement Visual identity - Identité visuelle + Identité visuelle Development and translations - Développement et traductions + Développement et traductions Occitan & French translation - Traduction français + Traduction français Chinese translation - Traduction chinoise + Traduction chinoise Dutch translation - Traduction néerlandaise + Traduction néerlandaise Spanish translation - Traduction espagnole + Traduction espagnole Added README file - Fichier README ajouté + Fichier README ajouté @@ -363,7 +363,7 @@ Mention - + 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 @@ Copy Link to Clipboard - Copia link + Copia link Write your warning here - Contenuto avviso + Contenuto avviso What's on your mind? - A cosa stai pensando? + A cosa stai pensando? Delete - Elimina + Elimina Public - Pubblico + Pubblico Unlisted - Non elencato + Non elencato Followers-only - Solo ai seguaci + Solo ai seguaci Direct - Diretto + Diretto Toot sent! - Toot è stato pubblicato! + Toot è stato pubblicato! @@ -78,7 +78,7 @@ New Toot - Nuovo toot + Nuovo toot @@ -86,12 +86,12 @@ Emojis - Emojis + Emojis Tap to insert - Tap per inserire + Tap per inserire @@ -173,7 +173,7 @@ Error loading - Errore durante caricamento + Errore durante caricamento @@ -214,7 +214,7 @@ New Toot - Nuovo toot + Nuovo toot @@ -227,12 +227,12 @@ Follows you - + Ti segue Bot - + Bot @@ -240,62 +240,62 @@ About - + Dettagli Followers - Seguaci + Seguaci Following - Segue + Segue Statuses - Toots + Toots Unfollow - Smetti di seguire + Smetti di seguire Requested - + Richiesto Follow - Segui + Segui Unmute - Non silenziare + Non silenziare Mute - Silenzia + Silenzia Unblock - Sblocca + Sblocca Block - Blocca + Blocca Open in Browser - + Aprire nel browser @@ -303,102 +303,102 @@ Settings - + Impostazioni Options - + Opzioni Load Images in Toots - + Caricare immagini nei toots Disable this option if you want to preserve your data connection - Disabilitare questa opzione per conservare connessione dati + Disabilitare questa opzione per conservare connessione dati Account - + Account Remove Account - Rimozione del account + Rimozione del account Add Account - Aggiungi account + Aggiungi account Deauthorize this app from using your account and remove account data from phone - + Annullare l'autorizzazione dell'app e rimuovere l'account Authorize this app to access your Mastodon account - Autorizzare l'app all'utilizzo del conto Mastodon + Autorizzare l'app all'utilizzo del conto Mastodon Translate - Tradurre + Tradurre Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Utilizzare <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> per aiutare nella traduzione dell'app. Credits - Sviluppo + Sviluppo UI/UX design and development - Design UI/UX e sviluppo + Design UI/UX e sviluppo Visual identity - Identità visiva + Identità visiva Development and translations - Sviluppo e traduzioni + Sviluppo e traduzioni Occitan & French translation - Traduzione francese e occitanica + Traduzione francese e occitanica Chinese translation - Traduzione cinese + Traduzione cinese Dutch translation - Traduzione olandese + Traduzione olandese Spanish translation - Traduzione spagnola + Traduzione spagnola Added README file - Aggiunto file README + Aggiunto file README @@ -444,7 +444,7 @@ Mention - + 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 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 - 点击以插入 + 点击以插入 @@ -142,7 +142,7 @@ MediaFullScreen Error loading - + 加载错误 @@ -180,7 +180,7 @@ New Toot - 新嘟嘟 + 新嘟嘟 @@ -202,19 +202,19 @@ Followers - 关注者 + 关注者 Following - 关注中 + 关注中 Statuses - 状态 + 状态 Unfollow - 取消关注 + 取消关注 Requested @@ -222,34 +222,34 @@ Follow - 关注 + 关注 Unmute - 未静音 + 未静音 Mute - 静音 + 静音 Unblock - 解除封锁 + 解除封锁 Block - 封锁 + 封锁 Open in Browser - + 在浏览器打开个人简介 SettingsPage Settings - 设置 + 设置 Options @@ -257,31 +257,31 @@ 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 - 授权此软件使用你的 Mastodon 账号 + 授权此软件使用你的 Mastodon 账号 Translate @@ -289,43 +289,43 @@ Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + 使用 <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> 以帮助翻译软件为你的语言. Credits - 信誉 + 信誉 UI/UX design and development - UI/UX设计及开发 + UI/UX设计及开发 Visual identity - 视觉识别 + 视觉识别 Development and translations - 开发及翻译 + 开发及翻译 Occitan & French translation - 奥克西坦语及法语翻译 + 奥克西坦语及法语翻译 Chinese translation - 汉语翻译 + 汉语翻译 Dutch translation - 尼德兰语翻译 + 尼德兰语翻译 Spanish translation - 西班牙语翻译 + 西班牙语翻译 Added README file - 添加 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 - + Copy Link to Clipboard Write your warning here - + Write your warning here What's on your mind? - + What's on your mind? Delete - + Delete Public - + Public Unlisted - + Unlisted Followers-only - + Followers-only Direct - + Direct Toot sent! - + Toot sent! CoverPage New Toot - + New Toot EmojiSelect Emojis - + Emojis Tap to insert - + Tap to insert @@ -88,23 +88,23 @@ LoginPage Login - + Login Instance - + Instance Enter a valid Mastodon instance URL - + 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. - + 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 - + Reload @@ -142,7 +142,7 @@ MediaFullScreen Error loading - + Error loading @@ -180,152 +180,152 @@ New Toot - + New Toot ProfileHeader Follows you - + Follows you Bot - + Bot ProfilePage About - + About Followers - Followers + Followers Following - Following + Following Statuses - Statuses + Statuses Unfollow - Unfollow + Unfollow Requested - + Requested Follow - Follow + Follow Unmute - Unmute + Unmute Mute - Mute + Mute Unblock - Unblock + Unblock Block - Block + Block Open in Browser - + Open in Browser SettingsPage Settings - Settings + Settings Options - + Options Load Images in Toots - + Load Images in Toots Disable this option if you want to preserve your data connection - + Disable this option if you want to preserve your data connection Account - + Account Remove Account - + Remove Account Add Account - + Add Account Deauthorize this app from using your account and remove account data from phone - + Deauthorize this app from using your account and remove account data from phone Authorize this app to access your Mastodon account - + Authorize this app to access your Mastodon account Translate - + Translate Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. Credits - + Credits UI/UX design and development - + UI/UX design and development Visual identity - + Visual identity Development and translations - + Development and translations Occitan & French translation - + Occitan & French translation Chinese translation - + Chinese translation Dutch translation - + Dutch translation Spanish translation - + Spanish translation Added README file - + Added README file @@ -347,23 +347,23 @@ VisualContainer Unboost - + Unboost Boost - + Boost Unfavorite - + Unfavourite Favorite - + Favourite Mention - + 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 About + If there's no good translation for "About", use "Details" (in details about profile). Details Followers + Will show as: "35 Followers" Folgende Following + Will show as: "23 Following" Folgt Statuses + Will show as: "115 Statuses" Beiträge Unfollow + Is a button. Keep it as short as possible. Entfolgen Requested + Is a button. Keep it as short as possible. Angefragt Follow + Is a button. Keep it as short as possible. Folgen Unmute + Is a button. Keep it as short as possible. Nicht stumm schalten Mute + Is a button. Keep it as short as possible. Stumm schalten Unblock + Is a button. Keep it as short as possible. Nicht blockieren Block + Is a button. Keep it as short as possible. Blockieren Open in Browser Im Browser öffnen + + Mention + Erwähnen + SettingsPage @@ -287,10 +302,6 @@ Translate Übersetzungen - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> benutzen um bei den Übersetzungen mitzuhelfen. - Credits Über @@ -327,6 +338,15 @@ Added README file Erstellung README-Datei + + Use + 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 + + + to help with app translation to your language. + 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 @@ Delete - Διαγραφή + Διαγραφή Public @@ -63,18 +63,18 @@ CoverPage New Toot - Νέος + Νέος EmojiSelect Emojis - Emoji + Emoji Tap to insert - Κτυπήστε για εισαγωγή + Κτυπήστε για εισαγωγή @@ -131,7 +131,7 @@ Local - + Τοπικός Federated @@ -180,7 +180,7 @@ New Toot - Νέος + Νέος @@ -198,58 +198,73 @@ ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Σας ακολουθούν + Will show as: "35 Followers" + Σας ακολουθούν Following - Σε παρακολούθηση + Will show as: "23 Following" + Σε παρακολούθηση Statuses - Κατάσταση + Will show as: "115 Statuses" + Κατάσταση 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 - Φραγή + Is a button. Keep it as short as possible. + Φραγή Open in Browser + + Mention + + SettingsPage Settings - Ρυθμίσεις + Ρυθμίσεις Options @@ -261,43 +276,39 @@ 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 - Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας + Να επιτρέπεται στην εφαρμογή να χρησιμοποιεί τον λογαριασμό σας στο Mastodon εκ μέρους σας 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 - UI/UX σχεδιασμός και ανάπτυξη + UI/UX σχεδιασμός και ανάπτυξη Visual identity @@ -327,6 +338,15 @@ Added README file + + Use + 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. + Χρησιμοποιήστε το + + + to help with app translation to your language. + για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας. + 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 About - + If there's no good translation for "About", use "Details" (in details about profile). + Detalles Followers + Will show as: "35 Followers" Seguidores Following + Will show as: "23 Following" Siguiendo Statuses + Will show as: "115 Statuses" Estados Unfollow + Is a button. Keep it as short as possible. Dejar de seguir Requested + Is a button. Keep it as short as possible. Follow + Is a button. Keep it as short as possible. Seguir Unmute + Is a button. Keep it as short as possible. Dejar de silenciar Mute + Is a button. Keep it as short as possible. Silenciar Unblock + Is a button. Keep it as short as possible. Desbloquear Block + Is a button. Keep it as short as possible. Bloquear Open in Browser Abrir en el navegador + + Mention + + SettingsPage @@ -287,10 +302,6 @@ Translate Traducir - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - Usar <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> para ayudar con traducciones - Credits Créditos @@ -327,6 +338,15 @@ Added README file Añadido archivo README + + Use + 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 + + + to help with app translation to your language. + 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 About + If there's no good translation for "About", use "Details" (in details about profile). Détails Followers + Will show as: "35 Followers" Abonné(e)s Following + Will show as: "23 Following" Abonnements Statuses + Will show as: "115 Statuses" Pouets Unfollow + Is a button. Keep it as short as possible. Ne plus suivre Requested + Is a button. Keep it as short as possible. Demandé Follow + Is a button. Keep it as short as possible. Suivre Unmute + Is a button. Keep it as short as possible. Démasquer Mute + Is a button. Keep it as short as possible. Masquer Unblock + Is a button. Keep it as short as possible. Débloquer Block + Is a button. Keep it as short as possible. Bloquer Open in Browser Ouvrir dans le navigateur + + Mention + Mentionner + SettingsPage @@ -287,10 +302,6 @@ Translate Traduire - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - Utiliser <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> pour aider à traduire cette application. - Credits Développement @@ -327,6 +338,15 @@ Added README file Fichier README ajouté + + Use + 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 + + + to help with app translation to your language. + 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 - + About + If there's no good translation for "About", use "Details" (in details about profile). Dettagli - + Followers + Will show as: "35 Followers" Seguaci - + Following + Will show as: "23 Following" Segue - + Statuses + Will show as: "115 Statuses" Toots + Mention + Menzionare + + + Unfollow + Is a button. Keep it as short as possible. Smetti di seguire - + Requested + Is a button. Keep it as short as possible. Richiesto - + Follow + Is a button. Keep it as short as possible. Segui - + Unmute + Is a button. Keep it as short as possible. Non silenziare - + Mute + Is a button. Keep it as short as possible. Silenzia - + Unblock + Is a button. Keep it as short as possible. Sblocca - + Block + Is a button. Keep it as short as possible. Blocca - + Open in Browser Aprire nel browser @@ -351,52 +367,58 @@ Tradurre - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - Utilizzare <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> per aiutare nella traduzione dell'app. + + Use + 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 - + + to help with app translation to your language. + per aiutare nella traduzione dell'app. + + + Credits Sviluppo - + UI/UX design and development Design UI/UX e sviluppo - + Visual identity Identità visiva - + Development and translations Sviluppo e traduzioni - + Occitan & French translation Traduzione francese e occitanica - + Chinese translation Traduzione cinese - + Dutch translation Traduzione olandese - + Spanish translation Traduzione spagnola - + Added README file 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 Copy Link to Clipboard - + Linkadres kopiëren Write your warning here @@ -36,7 +36,7 @@ Delete - Verwijderen + Verwijderen Public @@ -63,18 +63,18 @@ CoverPage New Toot - Nieuwe Toot + Nieuwe Toot EmojiSelect Emojis - Emojis + Emojis Tap to insert - Tikken om in te voegen + Tikken om in te voegen @@ -180,7 +180,7 @@ New Toot - Nieuwe Toot + Nieuwe Toot @@ -191,113 +191,124 @@ Bot - + Bot ProfilePage About - + If there's no good translation for "About", use "Details" (in details about profile). + Gegevens Followers - Volgers + Will show as: "35 Followers" + Volgers Following - Volgend + Will show as: "23 Following" + Volgend Statuses - Statussen + Will show as: "115 Statuses" + Statussen Unfollow - Ontvolgen + Is a button. Keep it as short as possible. + Ontvolgen Requested - + Is a button. Keep it as short as possible. + Gevraagd Follow - Volgen + Is a button. Keep it as short as possible. + Volgen Unmute - Ontdempen + Is a button. Keep it as short as possible. + Ontdempen Mute - Dempen + Is a button. Keep it as short as possible. + Dempen Unblock - Deblokkeren + Is a button. Keep it as short as possible. + Deblokkeren Block - Blokkeren + Is a button. Keep it as short as possible. + Blokkeren Open in Browser - + Open een Browser + + + Mention + Vermelden SettingsPage Settings - Instellingen + Instellingen Options - + Opties Load Images in Toots - + Laden afbeeldingen in toots Disable this option if you want to preserve your data connection - Schakel deze optie uit als je je dataverbinding wilt behouden + Schakel deze optie uit als je je dataverbinding wilt behouden Account - + Account Remove Account - Verwijderen account + Verwijderen account Add Account - Toevoegen account + Toevoegen account Deauthorize this app from using your account and remove account data from phone - + Trek autorisaties van deze app in en verwijder je account Authorize this app to access your Mastodon account - Autoriseer deze app om je Mastodon namens jou te gebruiken + Autoriseer deze app om je Mastodon namens jou te gebruiken Translate - Vertalen - - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Vertalen Credits - Credits + Credits UI/UX design and development - UI/UX ontwerp en ontwikkeling + UI/UX ontwerp en ontwikkeling Visual identity @@ -305,7 +316,7 @@ Development and translations - Ontwikkeling en vertalingen + Ontwikkeling en vertalingen Occitan & French translation @@ -327,6 +338,15 @@ Added README file + + Use + 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 + + + to help with app translation to your language. + om deze app te helpen vertalen in jouw taal. + Toot @@ -363,7 +383,7 @@ Mention - + 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 @@ Delete - Verwijderen + Verwijderen Public @@ -63,18 +63,18 @@ CoverPage New Toot - Nieuwen toot + Nieuwen toot EmojiSelect Emojis - Emoji’s + Emoji’s Tap to insert - Tikt voor in te voegen + Tikt voor in te voegen @@ -180,7 +180,7 @@ New Toot - Nieuwen toot + Nieuwen toot @@ -191,65 +191,80 @@ Bot - + Bot ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Volgers + Will show as: "35 Followers" + Volgers Following - Volgend + Will show as: "23 Following" + Volgend Statuses - Statussen + Will show as: "115 Statuses" + Statussen Unfollow - Ontvolgen + Is a button. Keep it as short as possible. + Ontvolgen Requested + Is a button. Keep it as short as possible. Follow - Volgen + Is a button. Keep it as short as possible. + Volgen Unmute - Ontdempen + Is a button. Keep it as short as possible. + Ontdempen Mute - Dempen + Is a button. Keep it as short as possible. + Dempen Unblock - Deblokkeren + Is a button. Keep it as short as possible. + Deblokkeren Block - Blokkeren + Is a button. Keep it as short as possible. + Blokkeren Open in Browser + + Mention + + SettingsPage Settings - Instellingen + Instellingen Options @@ -257,47 +272,43 @@ Load Images in Toots - + Afbeeldingen in toots laden Disable this option if you want to preserve your data connection - Schakelt dees optie uit als ge uw verbinding wilt behouden + Schakelt dees optie uit als ge uw verbinding wilt behouden Account - + Account Remove Account - Account verwijderen + Account verwijderen Add Account - Account toevoegen + Account toevoegen Deauthorize this app from using your account and remove account data from phone - + Trekt autorisaties van dezen app in en verwijdert uwen account Authorize this app to access your Mastodon account - Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken + Autoriseert dezen app voor uwe Mastodon-account namens u te gebruiken Translate - Vertalen - - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Vertalen Credits - Credits + Credits UI/UX design and development - UI/UX-ontwerp en -ontwikkeling + UI/UX-ontwerp en -ontwikkeling Visual identity @@ -327,6 +338,15 @@ Added README file + + Use + 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 + + + to help with app translation to your language. + 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 @@ Delete - Escafar + Escafar Public @@ -63,18 +63,18 @@ CoverPage New Toot - Nòu Tut + Nòu Tut EmojiSelect Emojis - Emojis + Emojis Tap to insert - Tustejar per inserir + Tustejar per inserir @@ -180,7 +180,7 @@ New Toot - Nòu Tut + Nòu Tut @@ -191,65 +191,80 @@ Bot - + Bot ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Seguidors + Will show as: "35 Followers" + Seguidors Following - Abonaments + Will show as: "23 Following" + Abonaments Statuses - Estatuts + Will show as: "115 Statuses" + Estatuts Unfollow - Quitar de seguir + Is a button. Keep it as short as possible. + Quitar de seguir Requested + Is a button. Keep it as short as possible. Follow - Seguir + Is a button. Keep it as short as possible. + Seguir Unmute - Mostrar + Is a button. Keep it as short as possible. + Mostrar Mute - Amagar + Is a button. Keep it as short as possible. + Amagar Unblock - Desblocar + Is a button. Keep it as short as possible. + Desblocar Block - Blocar + Is a button. Keep it as short as possible. + Blocar Open in Browser + + Mention + + SettingsPage Settings - Parmètres + Parmètres Options @@ -257,47 +272,43 @@ Load Images in Toots - + Cargar los imatges dels tuts Disable this option if you want to preserve your data connection - Desactivar aquesta opcion per estalviar vòstra connexion de donadas + Desactivar aquesta opcion per estalviar vòstra connexion de donadas Account - + Compte Remove Account - Levar un compte + Levar un compte Add Account - Ajustar un compte + Ajustar un compte Deauthorize this app from using your account and remove account data from phone - + Revocar l’aplicacion e levar vòstre compte Authorize this app to access your Mastodon account - Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos + Autorizar aquesta aplicacion a utilizar vòstre compte Mastodon per vos Translate - Traduire - - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Traduire Credits - Crèdits + Crèdits UI/UX design and development - UI/UX design e desvlopament + UI/UX design e desvlopament Visual identity @@ -327,6 +338,15 @@ Added README file + + Use + 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 + + + to help with app translation to your language. + 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 favourited - dodał(a) do ulubionych + dodał(a) do ulubionych followed you @@ -36,7 +36,7 @@ Delete - Usuń + Usuń Public @@ -63,18 +63,18 @@ CoverPage New Toot - Nowy wpis + Nowy wpis EmojiSelect Emojis - Emoji + Emoji Tap to insert - Dotknij aby wstawić + Dotknij aby wstawić @@ -180,7 +180,7 @@ New Toot - Nowy wpis + Nowy wpis @@ -191,65 +191,80 @@ Bot - + Bot ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Followers + Will show as: "35 Followers" + Following - Śledzisz + Will show as: "23 Following" + Śledzisz Statuses - Statuses + Will show as: "115 Statuses" + Unfollow - Przestań śledzić + Is a button. Keep it as short as possible. + Przestań śledzić Requested + Is a button. Keep it as short as possible. Follow - Follow + Is a button. Keep it as short as possible. + Unmute - Unmute + Is a button. Keep it as short as possible. + Mute - Wycisz + Is a button. Keep it as short as possible. + Wycisz Unblock - Unblock + Is a button. Keep it as short as possible. + Block - Block + Is a button. Keep it as short as possible. + Open in Browser + + Mention + + SettingsPage Settings - Ustawienia + Ustawienia Options @@ -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 + + Use + 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. + + + + to help with app translation to your language. + + 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 @@ Delete - Удалить + Удалить Public @@ -63,18 +63,18 @@ CoverPage New Toot - Новый + Новый EmojiSelect Emojis - Cмайликов + Cмайликов Tap to insert - Нажмите, чтобы вставить + Нажмите, чтобы вставить @@ -180,7 +180,7 @@ New Toot - Новый + Новый @@ -198,58 +198,73 @@ ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Читают + Will show as: "35 Followers" + Читают Following - Следующий + Will show as: "23 Following" + Следующий Statuses - Статусы + Will show as: "115 Statuses" + Статусы 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 - Блокировать + Is a button. Keep it as short as possible. + Блокировать Open in Browser + + Mention + + SettingsPage Settings - Настройки + Настройки Options @@ -257,47 +272,43 @@ Load Images in Toots - + Загружать изображения Disable this option if you want to preserve your data connection - Отключите эту опцию, если вы хотите сохранить подключение к данным + Отключите эту опцию, если вы хотите сохранить подключение к данным Account - + Aккаунт 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 - Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени + Уполномочить это приложение использовать свою учетную запись Mastodon от вашего имени 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 - Дизайн и разработка UI / UX + Дизайн и разработка UI / UX Visual identity @@ -327,6 +338,15 @@ Added README file + + Use + 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. + Используйте + + + to help with app translation to your language. + чтобы помочь с переводом приложения на ваш язык. + 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 @@ Delete - Обриши + Обриши Public @@ -63,18 +63,18 @@ CoverPage New Toot - Novi toot + Novi toot EmojiSelect Emojis - Емотикони + Емотикони Tap to insert - Тапни за убацивање + Тапни за убацивање @@ -180,7 +180,7 @@ New Toot - Novi toot + Novi toot @@ -198,58 +198,73 @@ ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Пратиоци + Will show as: "35 Followers" + Пратиоци Following - Пратите + Will show as: "23 Following" + Пратите Statuses - Статуси + Will show as: "115 Statuses" + Статуси 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 - Блокирати + Is a button. Keep it as short as possible. + Блокирати Open in Browser + + Mention + + SettingsPage Settings - Подешавања + Подешавања Options @@ -257,47 +272,43 @@ Load Images in Toots - + Прикажи слике у објавама Disable this option if you want to preserve your data connection - Искључите ову опцију уколико желите да уштедите на преносу података + Искључите ову опцију уколико желите да уштедите на преносу података Account - + Hалог 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 - Дозволите овој апликацији да користи ваш Mastodon налог + Дозволите овој апликацији да користи ваш Mastodon налог 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 @@ -327,6 +338,15 @@ Added README file + + Use + 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. + Користите + + + to help with app translation to your language. + и помозите у преводу апликације на други језик. + 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 @@ Delete - Radera + Radera Public @@ -63,18 +63,18 @@ CoverPage New Toot - Ny toot + Ny toot EmojiSelect Emojis - Emojis + Emojis Tap to insert - Tryck för att infoga + Tryck för att infoga @@ -180,7 +180,7 @@ New Toot - Ny toot + Ny toot @@ -191,65 +191,80 @@ Bot - + Bot ProfilePage About + If there's no good translation for "About", use "Details" (in details about profile). Followers - Följare + Will show as: "35 Followers" + Följare Following - Följer + Will show as: "23 Following" + Följer Statuses - Statusar + Will show as: "115 Statuses" + Statusar Unfollow - Sluta följa + Is a button. Keep it as short as possible. + Sluta följa Requested + Is a button. Keep it as short as possible. Follow - Följ + Is a button. Keep it as short as possible. + Följ Unmute - Avtysta + Is a button. Keep it as short as possible. + Avtysta Mute - Tysta + Is a button. Keep it as short as possible. + Tysta Unblock - Avblockera + Is a button. Keep it as short as possible. + Avblockera Block - Blockera + Is a button. Keep it as short as possible. + Blockera Open in Browser + + Mention + + SettingsPage Settings - Inställningar + Inställningar Options @@ -257,47 +272,43 @@ Load Images in Toots - + Ladda bilder i toots Disable this option if you want to preserve your data connection - Inaktivera det här alternativet om du vill behålla din dataanslutning + Inaktivera det här alternativet om du vill behålla din dataanslutning Account - + Konto Remove Account - Radera konto + Radera konto Add Account - Lägg till konto + Lägg till konto Deauthorize this app from using your account and remove account data from phone - + Avauktorisera denna app och radera ditt konto Authorize this app to access your Mastodon account - 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 Translate - Översätt - - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - + Översätt Credits - Erkännanden + Erkännanden UI/UX design and development - UI/UX design och utveckling + UI/UX design och utveckling Visual identity @@ -305,7 +316,7 @@ Development and translations - Använd Transifex för att hjälpa med app-översättningar till ditt språk + Occitan & French translation @@ -327,6 +338,15 @@ Added README file + + Use + 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 + + + to help with app translation to your language. + 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 About + If there's no good translation for "About", use "Details" (in details about profile). Followers + Will show as: "35 Followers" 关注者 Following + Will show as: "23 Following" 关注中 Statuses + Will show as: "115 Statuses" 状态 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 + Is a button. Keep it as short as possible. 封锁 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. - 使用 <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> 以帮助翻译软件为你的语言. - Credits 信誉 @@ -327,6 +338,15 @@ Added README file 添加 README 文件 + + Use + 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. + + + + to help with app translation to your language. + + 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 About + If there's no good translation for "About", use "Details" (in details about profile). About Followers + Will show as: "35 Followers" Followers Following + Will show as: "23 Following" Following Statuses + Will show as: "115 Statuses" Statuses Unfollow + Is a button. Keep it as short as possible. Unfollow Requested + Is a button. Keep it as short as possible. Requested Follow + Is a button. Keep it as short as possible. Follow Unmute + Is a button. Keep it as short as possible. Unmute Mute + Is a button. Keep it as short as possible. Mute Unblock + Is a button. Keep it as short as possible. Unblock Block + Is a button. Keep it as short as possible. Block Open in Browser Open in Browser + + Mention + Mention + SettingsPage @@ -287,10 +302,6 @@ Translate Translate - - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - Use <a href='https://www.transifex.com/dysko/tooter/'>Transifex</a> to help with app translation to your language. - Credits Credits @@ -327,6 +338,15 @@ Added README file Added README file + + Use + 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. + 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 - - favourited - - - - followed you - - - - boosted - - - - said - - - - - Conversation - - Delete - - - - Emojis - - - - Tap to insert - - - - Write your warning here - - - - Public - - - - Unlisted - - - - Followers-only - - - - Direct - - - - What's on your mind? - - - - Toot sent! - - - - Copy Link to Clipboard - - - - - ImageFullScreen - - Error loading - - - - - ImageUploader - - The file %1 does not exists - - - - - 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 - - - - - MainPage - - Home - - - - Notifications - - - - New Toot - - - - Search - - - - @user or #term - - - - Local - - - - Federated - - - - - MiniStatus - - boosted - - - - favourited - - - - followed you - - - - - MyList - - Load more - - - - Settings - - - - Loading - - - - please wait... - - - - - Profile - - Unfollow - - - - Follow request sent! - - - - Following - - - - Mute - - - - Unmute - - - - Unblock - - - - Block - - - - Statuses - - - - Favourites - - - - Follow - - - - Summary - - - - Followers - - - - Bio - - - - Open Profile in Browser - - - - - Settings - - Settings - - - - Remove Account - - - - Add Account - - - - Deauthorize this app and remove your account - - - - Authorize this app to access your Mastodon account - - - - Disable this option if you want to preserve your data connection - - - - Credits - - - - UI/UX design and development - - - - Visual identity - - - - Occitan & French translation - - - - Dutch translation - - - - Spanish translation - - - - Added README file - - - - Chinese translation - - - - Load images in toots - - - - Translate - - - - Use Transifex to help with app translation to your language - - - - Development and translations - - - - - Toot - - boosted - - - - favourited - - - - followed you - - - - - VisualContainer - - Unboost - - - - Boost - - - - Unfavorite - - - - Favorite - - - - 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 - - Follows you - Folgt dir - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - Vous suit - Bot 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 - - - Follows you - Ti segue - Bot @@ -444,27 +439,27 @@ VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - s - + + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Mention 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - Follows you - Bot 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 - + Copy Link to Clipboard Copia link - + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + Toot sent! Toot è stato pubblicato! 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 - - Follows you - Folgt dir - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - Vous suit - Bot 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 - + Copy Link to Clipboard Copia link - + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + Toot sent! Toot è stato pubblicato! @@ -224,11 +224,6 @@ ProfileHeader - - - Follows you - Ti segue - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - - Follows you - - Bot 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 - Follows you - Bot 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 @@ Unmute Is a button. Keep it as short as possible. - Nicht stumm schalten + Nicht stumm Mute @@ -240,7 +240,7 @@ Unblock Is a button. Keep it as short as possible. - Nicht blockieren + Zulassen Block 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 - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Mention 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 - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Mention 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(' CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + Folgt dir + ProfilePage @@ -344,21 +358,6 @@ um bei den Übersetzungen mitzuhelfen. - - Toot - - boosted - hat geteilt - - - favourited - hat favorisiert - - - followed you - folgt dir - - VisualContainer @@ -381,5 +380,9 @@ Mention Erwähnen + + Conversation + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ για να βοηθήσετε την μετάφραση της εφαρμογής στην γλώσσα σας. - - Toot - - boosted - προωθημένο - - - favourited - στους σελιδοδείκτες - - - followed you - σας ακολουθούν - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label Copiar enlace al portapapeles @@ -58,6 +59,15 @@ Toot sent! ¡Toot enviado! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ para ayudar con traducciones. - - Toot - - boosted - retooteó - - - favourited - marcó como favorito - - - followed you - te empezó a seguir - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label Copier le lien @@ -58,6 +59,15 @@ Toot sent! Pouet envoyé ! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + Répondre + + + Hide Reply + Fermer Répondre + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + Vous suit + ProfilePage @@ -344,21 +358,6 @@ pour aider à traduire cette application. - - Toot - - boosted - a partagé - - - favourited - a ajouté à ses favoris - - - followed you - vous suit - - VisualContainer @@ -381,5 +380,9 @@ Mention Mentionner + + Conversation + 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 - + Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label Copia link - + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + Risposta + + + + Hide Reply + Chiudere Risposta + + + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + Toot sent! Toot è stato pubblicato! @@ -133,37 +145,37 @@ MainPage - + Home Home - + Notifications Notifiche - + Local Locale - + Federated Federazione - + Search Cerca - + @user or #term @utente o #termine - + New Toot Nuovo toot @@ -171,7 +183,7 @@ MediaFullScreen - + Error loading Errore durante caricamento @@ -179,17 +191,17 @@ MiniStatus - + boosted ha condiviso - + favourited ha apprezzato - + followed you ha iniziato a seguirti @@ -213,6 +225,7 @@ + New Toot Nuovo toot @@ -225,7 +238,12 @@ ProfileHeader - + + Follows you + Ti segue + + + Bot Bot @@ -257,54 +275,55 @@ Toots - + + Mention Menzionare - + Unfollow Is a button. Keep it as short as possible. Smetti di seguire - + Requested Is a button. Keep it as short as possible. Richiesto - + Follow Is a button. Keep it as short as possible. Segui - + Unmute Is a button. Keep it as short as possible. Non silenziare - + Mute Is a button. Keep it as short as possible. Silenzia - + Unblock Is a button. Keep it as short as possible. Sblocca - + Block Is a button. Keep it as short as possible. Blocca - + Open in Browser Aprire nel browser @@ -332,136 +351,124 @@ Disabilitare questa opzione per conservare connessione dati - + Account Account - + Remove Account Rimozione del account - + Add Account Aggiungi account - + Deauthorize this app from using your account and remove account data from phone Annullare l'autorizzazione dell'app e rimuovere l'account - + Authorize this app to access your Mastodon account Autorizzare l'app all'utilizzo del conto Mastodon - + Translate Tradurre - + Use 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 - + to help with app translation to your language. per aiutare nella traduzione dell'app. - + Credits Sviluppo - + UI/UX design and development Design UI/UX e sviluppo - + Visual identity Identità visiva - + Development and translations Sviluppo e traduzioni - + Occitan & French translation Traduzione francese e occitanica - + Chinese translation Traduzione cinese - + Dutch translation Traduzione olandese - + Spanish translation Traduzione spagnola - + Added README file Aggiunto file README - - Toot - - - boosted - ha condiviso - - - - favourited - ha apprezzato - - - - followed you - ha iniziato a seguirti - - VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + + Mention Menzionare + + + Conversation + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label Linkadres kopiëren @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ om deze app te helpen vertalen in jouw taal. - - Toot - - boosted - boostte - - - favourited - maakte favoriet - - - followed you - volgde jou - - VisualContainer @@ -381,5 +380,9 @@ Mention Vermelden + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ voor te helpen met dezen app in uw taal te vertalen. - - Toot - - boosted - heeft geboost - - - favourited - heeft geduimd voor - - - followed you - volgt u nu - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ per ajudar a traduire l’aplicacion dins vòstra lenga. - - Toot - - boosted - a tornat partejar - - - favourited - a mes en favorit - - - followed you - vos sèc - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ - - Toot - - boosted - podbił(a) - - - favourited - dodał(a) do ulubionych - - - followed you - zaczął(-ęła Cię śledzić) - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ чтобы помочь с переводом приложения на ваш язык. - - Toot - - boosted - росту - - - favourited - имеет любимый - - - followed you - следую за тобой - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ и помозите у преводу апликације на други језик. - - Toot - - boosted - разглашено - - - favourited - омиљено - - - followed you - вас прати - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label @@ -58,6 +59,15 @@ Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ för att hjälpa med app-översättningar till ditt språk. - - Toot - - boosted - puffade - - - favourited - favoriserad - - - followed you - följer dig - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label 复制链接到剪切板 @@ -58,6 +59,15 @@ Toot sent! 已发送嘟嘟! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ - - Toot - - boosted - 推起 - - - favourited - 收藏 - - - followed you - 关注你 - - VisualContainer @@ -381,5 +380,9 @@ Mention + + Conversation + + 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 Copy Link to Clipboard + Use the translation of "Copy Link" for a shorter PullDownMenu label Copy Link to Clipboard @@ -58,6 +59,15 @@ Toot sent! Toot sent! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + + + + Hide Reply + + CoverPage @@ -189,6 +199,10 @@ Bot Bot + + Follows you + + ProfilePage @@ -344,21 +358,6 @@ to help with app translation to your language. - - Toot - - boosted - boosted - - - favourited - favourited - - - followed you - followed you - - VisualContainer @@ -381,5 +380,9 @@ Mention Mention + + Conversation + + 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 @@ + + icon-s-bookmark + + + + + + + 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 @@ Follows you Folgt dir + + Group + Gruppe + ProfilePage @@ -384,5 +388,13 @@ Conversation Konversation + + Remove Bookmark + Lesezeichen entfernen + + + Bookmark + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + Respuesta Hide Reply - + Cerrar respuesta @@ -201,7 +201,11 @@ Follows you - + Te sigue + + + Group + Grupo @@ -234,7 +238,7 @@ Requested Is a button. Keep it as short as possible. - + Requerido Follow @@ -267,7 +271,7 @@ Mention - + Mencionar @@ -378,11 +382,19 @@ Mention - + Mencionar Conversation - + Conversación + + + Remove Bookmark + Eliminar marcador + + + Bookmark + 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 @@ Follows you Vous suit + + Group + Groupe + ProfilePage @@ -384,5 +388,13 @@ Conversation Conversation + + Remove Bookmark + Retirer marque-page + + + Bookmark + 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 - + favourited ha apprezzato - + followed you ha iniziato a seguirti - + boosted ha condiviso - + said ha detto @@ -28,59 +28,59 @@ ConversationPage - + Copy Link to Clipboard Use the translation of "Copy Link" for a shorter PullDownMenu label Copia link - + Reply "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" Risposta - + Hide Reply Chiudere Risposta - + Write your warning here Contenuto avviso - + What's on your mind? A cosa stai pensando? - + Delete Elimina - + Public Pubblico - + Unlisted Non elencato - + Followers-only Solo ai seguaci - + Direct Diretto - + Toot sent! Toot è stato pubblicato! @@ -175,7 +175,7 @@ @utente o #termine - + New Toot Nuovo toot @@ -238,12 +238,17 @@ ProfileHeader - + + Group + Gruppo + + + Follows you Ti segue - + Bot Bot @@ -251,79 +256,79 @@ ProfilePage - + About If there's no good translation for "About", use "Details" (in details about profile). Dettagli - + Followers Will show as: "35 Followers" Seguaci - + Following Will show as: "23 Following" Segue - + Statuses Will show as: "115 Statuses" Toots - - + + Mention Menzionare - + Unfollow Is a button. Keep it as short as possible. Smetti di seguire - + Requested Is a button. Keep it as short as possible. Richiesto - + Follow Is a button. Keep it as short as possible. Segui - + Unmute Is a button. Keep it as short as possible. Non silenziare - + Mute Is a button. Keep it as short as possible. Silenzia - + Unblock Is a button. Keep it as short as possible. Sblocca - + Block Is a button. Keep it as short as possible. Blocca - + Open in Browser Aprire nel browser @@ -440,33 +445,43 @@ VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Remove Bookmark + Elimina segnalibro + + + + Bookmark + Aggiungi segnalibro + + + + Mention Menzionare - + Conversation 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 @@ Write your warning here - + Waarschuwingstekst What's on your mind? - + Wat wil je kwijt? Delete @@ -41,32 +41,32 @@ Public - + Openbaar Unlisted - + Minder openbaar Followers-only - + Alleen volgers Direct - + Direct Toot sent! - + Toot verzonden! Reply "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + Antwoord Hide Reply - + Antwoord verbergen @@ -106,7 +106,7 @@ Enter a valid Mastodon instance URL - + Geldig Mastodon 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. @@ -201,7 +201,11 @@ Follows you - + Volgt jou + + + Group + Groep @@ -267,7 +271,7 @@ Mention - Vermelden + Vermelden @@ -382,7 +386,15 @@ Conversation - + Conversatie + + + Remove Bookmark + Bookmarken + + + Bookmark + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 @@ Follows you + + Group + + ProfilePage @@ -384,5 +388,13 @@ Conversation + + Remove Bookmark + + + + Bookmark + + 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 "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + Reply Hide Reply - + Hide Reply @@ -201,7 +201,11 @@ Follows you - + Follows you + + + Group + Group @@ -382,7 +386,15 @@ Conversation - + Conversation + + + Remove Bookmark + Remove Bookmark + + + 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 - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Remove Bookmark Elimina segnalibro - + Bookmark Aggiungi segnalibro - - + + Mention Menzionare - + Conversation 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 + Unlisted Non elencato - s + Followers-only Solo ai seguaci @@ -445,43 +445,43 @@ VisualContainer - + Unboost Annulla condivisione - + Boost Condividi - + Unfavorite Annulla apprezzamento - + Favorite Apprezzato - + Remove Bookmark Elimina segnalibro - + Bookmark Aggiungi segnalibro - - + + Mention Menzionare - + Conversation 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 @@ - - icon-s-bot - - - - - - - - - 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 @@ Credits + Translation alternative: "Development" Über @@ -348,10 +349,6 @@ Spanish translation Spanische Übersetzung - - Added README file - Erstellung README-Datei - Use 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 @@ Credits + Translation alternative: "Development" Ευχαριστίες @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Créditos @@ -348,10 +349,6 @@ Spanish translation Traducción al español - - Added README file - Añadido archivo README - Use 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 @@ Hide Reply - Fermer Répondre + Masquer la réponse @@ -318,6 +318,7 @@ Credits + Translation alternative: "Development" Développement @@ -348,10 +349,6 @@ Spanish translation Traduction espagnole - - Added README file - Fichier README ajouté - Use 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 - favourited ha apprezzato - followed you ha iniziato a seguirti - boosted ha condiviso - - said ha detto @@ -28,80 +23,66 @@ ConversationPage - Copy Link to Clipboard Use the translation of "Copy Link" for a shorter PullDownMenu label Copia link - - Reply - "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - Risposta - - - - Hide Reply - Chiudere Risposta - - - Write your warning here Contenuto avviso - What's on your mind? A cosa stai pensando? - Delete Elimina - Public Pubblico - Unlisted Non elencato - Followers-only Solo ai seguaci - Direct Diretto - Toot sent! Toot è stato pubblicato! + + Reply + "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" + Rispondere + + + Hide Reply + Chuidere risposta + CoverPage - New Toot - Nuovo toot + Nuovo Toot EmojiSelect - Emojis Emojis - Tap to insert Tap per inserire @@ -109,7 +90,6 @@ ImageUploader - The file %1 does not exists Il file %1 non esiste @@ -117,27 +97,22 @@ LoginPage - Login Accesso - Instance Istanza - Enter a valid Mastodon instance URL Inserire URL di una istanza Mastodon valida - Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly. Mastodon è un servizio di rete sociale in software libero, costituito in una federazione d'istanze. Mastodon fa parte del più ampio Fediverso, permettendo ai suoi utenti di interagire anche con utenti su diverse piattaforme aperte che supportano lo stesso protocollo. - Reload Ricarica @@ -145,45 +120,37 @@ MainPage - Home Home - Notifications Notifiche - - Local - Locale + New Toot + Nuovo Toot - - Federated - Federazione - - - Search Cerca - @user or #term - @utente o #termine + @utente o #terme - - New Toot - Nuovo toot + Local + Locale + + + Federated + Federazione MediaFullScreen - Error loading Errore durante caricamento @@ -191,17 +158,14 @@ MiniStatus - boosted ha condiviso - favourited ha apprezzato - followed you ha iniziato a seguirti @@ -209,281 +173,225 @@ MyList - - Loading - Caricamento + Load more + Caricare altri - - please wait... - Attendere un momento... - - - Settings Impostazioni - - - New Toot - Nuovo toot + Loading + Caricamento - - Load more - Caricare altri + please wait... + Attendere un momento... + + + New Toot + Nuovo Toot ProfileHeader - - Group - Gruppo + Bot + Bot - Follows you Ti segue - - Bot - Bot + Group + Gruppo ProfilePage - About If there's no good translation for "About", use "Details" (in details about profile). Dettagli - Followers Will show as: "35 Followers" Seguaci - Following Will show as: "23 Following" Segue - Statuses Will show as: "115 Statuses" Toots - - - Mention - Menzionare - - - Unfollow Is a button. Keep it as short as possible. Smetti di seguire - Requested Is a button. Keep it as short as possible. Richiesto - Follow Is a button. Keep it as short as possible. Segui - Unmute Is a button. Keep it as short as possible. Non silenziare - Mute Is a button. Keep it as short as possible. Silenzia - Unblock Is a button. Keep it as short as possible. Sblocca - Block Is a button. Keep it as short as possible. Blocca - Open in Browser Aprire nel browser + + Mention + Menzionare + SettingsPage - Settings Impostazioni - Options Opzioni - Load Images in Toots - Caricare immagini nei toots + Caricare immagini nei Toots - Disable this option if you want to preserve your data connection Disabilitare questa opzione per conservare connessione dati - Account Account - Remove Account Rimozione del account - Add Account Aggiungi account - Deauthorize this app from using your account and remove account data from phone Annullare l'autorizzazione dell'app e rimuovere l'account - Authorize this app to access your Mastodon account Autorizzare l'app all'utilizzo del conto Mastodon - Translate Tradurre - + Credits + Translation alternative: "Development" + Sviluppo + + + UI/UX design and development + Design UI/UX e sviluppo + + + Visual identity + Identità visiva + + + Development and translations + Sviluppo e traduzioni + + + Occitan & French translation + Traduzione francese e occitanica + + + Chinese translation + Traduzione cinese + + + Dutch translation + Traduzione olandese + + + Spanish translation + Traduzione spagnola + + Use 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 - to help with app translation to your language. per aiutare nella traduzione dell'app. - - - Credits - Sviluppo - - - - UI/UX design and development - Design UI/UX e sviluppo - - - - Visual identity - Identità visiva - - - - Development and translations - Sviluppo e traduzioni - - - - Occitan & French translation - Traduzione francese e occitanica - - - - Chinese translation - Traduzione cinese - - - - Dutch translation - Traduzione olandese - - - - Spanish translation - Traduzione spagnola - - - - Added README file - Aggiunto file README - VisualContainer - Unboost - Annulla condivisione + Annuler le partage - Boost - Condividi + Partager - Unfavorite - Annulla apprezzamento + Retirer des favoris - Favorite - Apprezzato + Ajouter aux favoris - - Remove Bookmark - Elimina segnalibro - - - - Bookmark - Aggiungi segnalibro - - - - Mention - Menzionare + Mentionner - Conversation - Conversazione + Conversation + + + Remove Bookmark + Retirer marque-page + + + Bookmark + 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 @@ Credits + Translation alternative: "Development" Credits @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Credits @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Crèdits @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Зачет @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Спомен плоча @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" Erkännanden @@ -348,10 +349,6 @@ Spanish translation - - Added README file - - Use 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 @@ Credits + Translation alternative: "Development" 信誉 @@ -348,10 +349,6 @@ Spanish translation 西班牙语翻译 - - Added README file - 添加 README 文件 - Use 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 @@ Credits + Translation alternative: "Development" Credits @@ -348,10 +349,6 @@ Spanish translation Spanish translation - - Added README file - Added README file - Use 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 Unboost - Annuler le partage + Annulla condivisione Boost - Partager + Condividi Unfavorite - Retirer des favoris + Annulla apprezzamento Favorite - Ajouter aux favoris + Apprezzato Mention - Mentionner + Menzionare Conversation - Conversation + Conversazione Remove Bookmark - Retirer marque-page + Elimina segnalibro Bookmark - 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 "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + 回复 Hide Reply - + 隐藏回复 @@ -197,15 +197,15 @@ ProfileHeader Bot - + <机器人/translation> Follows you - + 关注你 Group - + 群组 @@ -213,7 +213,7 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + 关于 Followers @@ -238,7 +238,7 @@ Requested Is a button. Keep it as short as possible. - + 请求 Follow @@ -271,7 +271,7 @@ Mention - + 提及 @@ -282,7 +282,7 @@ Options - + 选项 Load Images in Toots @@ -314,7 +314,7 @@ Translate - + 翻译 Credits @@ -352,11 +352,11 @@ Use 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. - + 使用 to help with app translation to your language. - + 以帮助翻译软件为你使用的语言 @@ -379,19 +379,19 @@ Mention - + 提及 Conversation - + 对话 Remove Bookmark - + 移除收藏 Bookmark - + 收藏 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 Bot - <机器人/translation> + 机器人 Follows you 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(' - - Delete - Löschen - Public Öffentlich @@ -172,10 +168,6 @@ MyList - - Load more - Lade mehr - Settings Einstellungen @@ -192,6 +184,10 @@ New Toot Neuer Toot + + Reload + 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 @@ What's on your mind? - - Delete - Διαγραφή - Public @@ -114,7 +110,7 @@ Reload - + Επαναφόρτωση @@ -172,10 +168,6 @@ MyList - - Load more - Φόρτωση περισσοτέρων - Settings Ρυθμίσεις @@ -192,6 +184,10 @@ New Toot Νέος + + Reload + Επαναφόρτωση + 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 @@ What's on your mind? ¿En qué estás pensando? - - Delete - Borrar - Public Público @@ -172,10 +168,6 @@ MyList - - Load more - Cargar más - Settings Ajustes @@ -192,6 +184,10 @@ New Toot Nuevo toot + + Reload + 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 @@ What's on your mind? Qu'avez-vous en tête? - - Delete - Supprimer - Public Public @@ -172,10 +168,6 @@ MyList - - Load more - Charger plus - Settings Paramètres @@ -192,6 +184,10 @@ New Toot Nouveau pouet + + Reload + 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 @@ What's on your mind? A cosa stai pensando? - - Delete - Elimina - Public Pubblico @@ -172,10 +168,6 @@ MyList - - Load more - Caricare altri - Settings Impostazioni @@ -192,6 +184,10 @@ New Toot Nuovo Toot + + Reload + 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 @@ What's on your mind? Wat wil je kwijt? - - Delete - Verwijderen - Public Openbaar @@ -172,10 +168,6 @@ MyList - - Load more - Meer laden - Settings Instellingen @@ -192,6 +184,10 @@ New Toot Nieuwe Toot + + Reload + 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 @@ What's on your mind? - - Delete - Verwijderen - Public @@ -172,10 +168,6 @@ MyList - - Load more - Meer laden - Settings Instellingen @@ -192,6 +184,10 @@ New Toot Nieuwen toot + + Reload + 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 @@ What's on your mind? - - Delete - Escafar - Public @@ -172,10 +168,6 @@ MyList - - Load more - Cargar mai - Settings Parmètres @@ -192,6 +184,10 @@ New Toot Nòu Tut + + Reload + + 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 @@ What's on your mind? - - Delete - Usuń - Public @@ -114,7 +110,7 @@ Reload - + Załaduj ponownie @@ -172,10 +168,6 @@ MyList - - Load more - Załaduj więcej - Settings Ustawienia @@ -192,6 +184,10 @@ New Toot Nowy wpis + + Reload + 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 @@ Copy Link to Clipboard Use the translation of "Copy Link" for a shorter PullDownMenu label - + Копировать ссылку Write your warning here - + Текст предупреждения What's on your mind? - - - - Delete - Удалить + О чём думаете? Public - + Публичный Unlisted - + Скрытый Followers-only - + Приватный Direct - + Адресованный Toot sent! - + Поста отправлено! Reply "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + Ответ Hide Reply - + Скрыть ответ @@ -98,7 +94,7 @@ LoginPage Login - + Авторизоваться Instance @@ -114,7 +110,7 @@ Reload - + Перезарядка @@ -152,7 +148,7 @@ MediaFullScreen Error loading - + Ошибка загрузки @@ -172,10 +168,6 @@ MyList - - Load more - Загрузи больше - Settings Настройки @@ -192,20 +184,24 @@ New Toot Новый + + Reload + Перезагрузить + ProfileHeader Bot - + бот Follows you - + Подписан(а) на вас Group - + Группа @@ -213,7 +209,7 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + О профиль Followers @@ -238,7 +234,7 @@ Requested Is a button. Keep it as short as possible. - + Запрошенный Follow @@ -267,11 +263,11 @@ Open in Browser - + Открыть в браузере Mention - + Упоминание @@ -282,7 +278,7 @@ Options - + Параметры Load Images in Toots @@ -379,19 +375,19 @@ Mention - + Упоминание Conversation - + беседа Remove Bookmark - + Убрать из закладок Bookmark - + Добавить в закладки 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 @@ What's on your mind? - - Delete - Обриши - Public @@ -114,7 +110,7 @@ Reload - + учитај још @@ -172,10 +168,6 @@ MyList - - Load more - учитај још - Settings Подешавања @@ -192,6 +184,10 @@ New Toot Novi toot + + Reload + учитај још + 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 @@ What's on your mind? - - Delete - Radera - Public @@ -114,7 +110,7 @@ Reload - + Ladda mer @@ -172,10 +168,6 @@ MyList - - Load more - Ladda mer - Settings Inställningar @@ -192,6 +184,10 @@ New Toot Ny toot + + Reload + 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 @@ What's on your mind? 有何想法? - - Delete - 删除 - Public 公共区域 @@ -62,11 +58,11 @@ Reply "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply" - + 回复 Hide Reply - + 隐藏回复 @@ -172,10 +168,6 @@ MyList - - Load more - 加载更多 - Settings 设置 @@ -192,20 +184,24 @@ New Toot 新嘟嘟 + + Reload + 重新加载 + ProfileHeader Bot - + 机器人 Follows you - + 关注你 Group - + 群组 @@ -213,7 +209,7 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + 关于 Followers @@ -238,7 +234,7 @@ Requested Is a button. Keep it as short as possible. - + 请求 Follow @@ -271,7 +267,7 @@ Mention - + 提及 @@ -282,7 +278,7 @@ Options - + 选项 Load Images in Toots @@ -314,7 +310,7 @@ Translate - + 翻译 Credits @@ -352,11 +348,11 @@ Use 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. - + 使用 to help with app translation to your language. - + 以帮助翻译软件为你使用的语言. @@ -379,19 +375,19 @@ Mention - + 提及 Conversation - + 对话 Remove Bookmark - + 移除收藏 Bookmark - + 收藏 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? What's on your mind? - - Delete - Delete - Public Public @@ -172,10 +168,6 @@ MyList - - Load more - Load more - Settings Settings @@ -192,6 +184,10 @@ New Toot New Toot + + Reload + 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 @@ What's on your mind? + placeholderText in Toot text panel Was gibt's Neues? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tippen um einzufügen + @@ -117,38 +118,38 @@ MainPage Home - Home + Notifications - Benachrichtigungen - - - New Toot - Neuer Toot - - - Search - Suche - - - @user or #term - @Benutzer oder #Ausdruck + Local - Lokal + Federated - Föderation + + + + Search + + + + @user or #term + + + + New Toot + Neuer Toot MediaFullScreen Error loading - Ladefehler + @@ -188,6 +189,10 @@ Reload Neu laden + + Open in Browser + Im Browser öffnen + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - Details + Followers Will show as: "35 Followers" - Folgende + Following Will show as: "23 Following" - Folgt + Statuses Will show as: "115 Statuses" - Beiträge + + + + Mention + Erwähnen Unfollow Is a button. Keep it as short as possible. - Entfolgen + Requested Is a button. Keep it as short as possible. - Angefragt + Follow Is a button. Keep it as short as possible. - Folgen + Unmute Is a button. Keep it as short as possible. - Nicht stumm schalten + Mute Is a button. Keep it as short as possible. - Stumm schalten + Unblock Is a button. Keep it as short as possible. - Nicht blockieren + Block Is a button. Keep it as short as possible. - Blockieren - - - Open in Browser - Im Browser öffnen - - - Mention - 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emoji + Tap to insert - Κτυπήστε για εισαγωγή + @@ -117,32 +118,32 @@ MainPage Home - Οικοσελίδα + Notifications - Ειδοποιήσεις - - - New Toot - Νέος - - - Search - Αναζήτηση - - - @user or #term - @χρήστη ή #όρος + Local - Τοπικός + Federated + + Search + + + + @user or #term + + + + New Toot + Νέος + MediaFullScreen @@ -188,6 +189,10 @@ Reload Επαναφόρτωση + + Open in Browser + + ProfileHeader @@ -214,22 +219,26 @@ Followers Will show as: "35 Followers" - Σας ακολουθούν + Following Will show as: "23 Following" - Σε παρακολούθηση + Statuses Will show as: "115 Statuses" - Κατάσταση + + + + Mention + Unfollow Is a button. Keep it as short as possible. - Αναίρεση παρακολούθησης + Requested @@ -239,34 +248,26 @@ 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 Is a button. Keep it as short as possible. - Φραγή - - - Open in Browser - - - - Mention 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 @@ What's on your mind? + placeholderText in Toot text panel ¿En qué estás pensando? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emoticonos + Tap to insert - Toca para insertar + @@ -117,38 +118,38 @@ MainPage Home - Inicio + Notifications - Notificaciones - - - New Toot - Nuevo toot - - - Search - Buscar - - - @user or #term - @usuario o #término + Local - Local + Federated - Federada + + + + Search + + + + @user or #term + + + + New Toot + Nuevo toot MediaFullScreen Error loading - Error al cargar + @@ -188,6 +189,10 @@ Reload Volver a cargar + + Open in Browser + Abrir en el navegador + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - Detalles + Followers Will show as: "35 Followers" - Seguidores + Following Will show as: "23 Following" - Siguiendo + Statuses Will show as: "115 Statuses" - Estados + + + + Mention + Mencionar Unfollow Is a button. Keep it as short as possible. - Dejar de seguir + Requested Is a button. Keep it as short as possible. - Requerido + Follow Is a button. Keep it as short as possible. - Seguir + Unmute Is a button. Keep it as short as possible. - Dejar de silenciar + Mute Is a button. Keep it as short as possible. - Silenciar + Unblock Is a button. Keep it as short as possible. - Desbloquear + Block Is a button. Keep it as short as possible. - Bloquear - - - Open in Browser - Abrir en el navegador - - - Mention - 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 @@ What's on your mind? + placeholderText in Toot text panel Qu'avez-vous en tête? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Appuyez pour insérer + @@ -117,38 +118,38 @@ MainPage Home - Accueil + Notifications - Notifications + + + + Local + + + + Federated + + + + Search + + + + @user or #term + New Toot Nouveau pouet - - Search - Rechercher - - - @user or #term - @personne ou #terme - - - Local - Fil public local - - - Federated - Fil public global - MediaFullScreen Error loading - Erreur au chargement + @@ -188,6 +189,10 @@ Reload Recharger + + Open in Browser + Ouvrir dans le navigateur + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - Détails + Followers Will show as: "35 Followers" - Abonné(e)s + Following Will show as: "23 Following" - Abonnements + Statuses Will show as: "115 Statuses" - Pouets + + + + Mention + Mentionner Unfollow Is a button. Keep it as short as possible. - Ne plus suivre + Requested Is a button. Keep it as short as possible. - Demandé + Follow Is a button. Keep it as short as possible. - Suivre + Unmute Is a button. Keep it as short as possible. - Démasquer + Mute Is a button. Keep it as short as possible. - Masquer + Unblock Is a button. Keep it as short as possible. - Débloquer + Block Is a button. Keep it as short as possible. - Bloquer - - - Open in Browser - Ouvrir dans le navigateur - - - Mention - 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 @@ What's on your mind? + placeholderText in Toot text panel A cosa stai pensando? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tap per inserire + @@ -117,38 +118,38 @@ MainPage Home - Home + Notifications - Notifiche - - - New Toot - Nuovo Toot - - - Search - Cerca - - - @user or #term - @utente o #terme + Local - Locale + Federated - Federazione + + + + Search + + + + @user or #term + + + + New Toot + Nuovo Toot MediaFullScreen Error loading - Errore durante caricamento + @@ -188,6 +189,10 @@ Reload Ricarica + + Open in Browser + Aprire nel browser + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - Dettagli + Followers Will show as: "35 Followers" - Seguaci + Following Will show as: "23 Following" - Segue + Statuses Will show as: "115 Statuses" - Toots + + + + Mention + Menzionare Unfollow Is a button. Keep it as short as possible. - Smetti di seguire + Requested Is a button. Keep it as short as possible. - Richiesto + Follow Is a button. Keep it as short as possible. - Segui + Unmute Is a button. Keep it as short as possible. - Non silenziare + Mute Is a button. Keep it as short as possible. - Silenzia + Unblock Is a button. Keep it as short as possible. - Sblocca + Block Is a button. Keep it as short as possible. - Blocca - - - Open in Browser - Aprire nel browser - - - Mention - 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 @@ What's on your mind? + placeholderText in Toot text panel Wat wil je kwijt? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tikken om in te voegen + @@ -117,31 +118,31 @@ MainPage Home - Thuis + Notifications - Meldingen - - - New Toot - Nieuwe Toot - - - Search - Zoeken - - - @user or #term - @user of #term + Local - Lokaal + Federated - Gefedereerd + + + + Search + + + + @user or #term + + + + New Toot + Nieuwe Toot @@ -188,6 +189,10 @@ Reload Herladen + + Open in Browser + Open een Browser + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - Gegevens + Followers Will show as: "35 Followers" - Volgers + Following Will show as: "23 Following" - Volgend + Statuses Will show as: "115 Statuses" - Statussen + + + + Mention + Vermelden Unfollow Is a button. Keep it as short as possible. - Ontvolgen + Requested Is a button. Keep it as short as possible. - Gevraagd + Follow Is a button. Keep it as short as possible. - Volgen + Unmute Is a button. Keep it as short as possible. - Ontdempen + Mute Is a button. Keep it as short as possible. - Dempen + Unblock Is a button. Keep it as short as possible. - Deblokkeren + Block Is a button. Keep it as short as possible. - Blokkeren - - - Open in Browser - Open een Browser - - - Mention - 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emoji’s + Tap to insert - Tikt voor in te voegen + @@ -117,31 +118,31 @@ MainPage Home - Thuis + Notifications - Meldingen - - - New Toot - Nieuwen toot - - - Search - Zoeken - - - @user or #term - @gebruiker of #term + Local - Lokaal + Federated - Gefedereerd + + + + Search + + + + @user or #term + + + + New Toot + Nieuwen toot @@ -188,6 +189,10 @@ Reload Herladen + + Open in Browser + + ProfileHeader @@ -214,22 +219,26 @@ Followers Will show as: "35 Followers" - Volgers + Following Will show as: "23 Following" - Volgend + Statuses Will show as: "115 Statuses" - Statussen + + + + Mention + Unfollow Is a button. Keep it as short as possible. - Ontvolgen + Requested @@ -239,34 +248,26 @@ Follow Is a button. Keep it as short as possible. - Volgen + Unmute Is a button. Keep it as short as possible. - Ontdempen + Mute Is a button. Keep it as short as possible. - Dempen + Unblock Is a button. Keep it as short as possible. - Deblokkeren + Block Is a button. Keep it as short as possible. - Blokkeren - - - Open in Browser - - - - Mention 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tustejar per inserir + @@ -117,31 +118,31 @@ MainPage Home - Acuèlh + Notifications - Notificacions - - - New Toot - Nòu Tut - - - Search - Cercar - - - @user or #term - @utilizaire o #tèrm + Local - Local + Federated - Federat + + + + Search + + + + @user or #term + + + + New Toot + Nòu Tut @@ -188,6 +189,10 @@ Reload + + Open in Browser + + ProfileHeader @@ -214,22 +219,26 @@ Followers Will show as: "35 Followers" - Seguidors + Following Will show as: "23 Following" - Abonaments + Statuses Will show as: "115 Statuses" - Estatuts + + + + Mention + Unfollow Is a button. Keep it as short as possible. - Quitar de seguir + Requested @@ -239,34 +248,26 @@ Follow Is a button. Keep it as short as possible. - Seguir + Unmute Is a button. Keep it as short as possible. - Mostrar + Mute Is a button. Keep it as short as possible. - Amagar + Unblock Is a button. Keep it as short as possible. - Desblocar + Block Is a button. Keep it as short as possible. - Blocar - - - Open in Browser - - - - Mention 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emoji + Tap to insert - Dotknij aby wstawić + @@ -117,31 +118,31 @@ MainPage Home - Strona główna + Notifications - Powiadomienia - - - New Toot - Nowy wpis - - - Search - Szukaj - - - @user or #term - @użytkownik lub #tag + Local - Lokalne + Federated - Globalne + + + + Search + + + + @user or #term + + + + New Toot + Nowy wpis @@ -188,6 +189,10 @@ Reload Załaduj ponownie + + Open in Browser + + ProfileHeader @@ -219,17 +224,21 @@ Following Will show as: "23 Following" - Śledzisz + Statuses Will show as: "115 Statuses" + + Mention + + Unfollow Is a button. Keep it as short as possible. - Przestań śledzić + Requested @@ -249,7 +258,7 @@ Mute Is a button. Keep it as short as possible. - Wycisz + Unblock @@ -261,14 +270,6 @@ Is a button. Keep it as short as possible. - - Open in Browser - - - - Mention - - 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 @@ What's on your mind? + placeholderText in Toot text panel О чём думаете? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Cмайликов + Tap to insert - Нажмите, чтобы вставить + @@ -117,38 +118,38 @@ MainPage Home - Главная + Notifications - Уведомления - - - New Toot - Новый - - - Search - Поиск - - - @user or #term - @пользователь или #срок + Local - Локальный + Federated - Федеративные + + + + Search + + + + @user or #term + + + + New Toot + Новый MediaFullScreen Error loading - Ошибка загрузки + @@ -188,6 +189,10 @@ Reload Перезагрузить + + Open in Browser + Открыть в браузере + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - О профиль + Followers Will show as: "35 Followers" - Читают + Following Will show as: "23 Following" - Следующий + Statuses Will show as: "115 Statuses" - Статусы + + + + Mention + Упоминание 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 Is a button. Keep it as short as possible. - Блокировать - - - Open in Browser - Открыть в браузере - - - Mention - Упоминание + 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Емотикони + Tap to insert - Тапни за убацивање + @@ -117,31 +118,31 @@ MainPage Home - Почетна + Notifications - Обавјештење - - - New Toot - Novi toot - - - Search - Претрага - - - @user or #term - @korisnik ili #pojam + Local - Локална + Federated - Федеративна + + + + Search + + + + @user or #term + + + + New Toot + Novi toot @@ -188,6 +189,10 @@ Reload учитај још + + Open in Browser + + ProfileHeader @@ -214,22 +219,26 @@ Followers Will show as: "35 Followers" - Пратиоци + Following Will show as: "23 Following" - Пратите + Statuses Will show as: "115 Statuses" - Статуси + + + + Mention + Unfollow Is a button. Keep it as short as possible. - Одпрати + Requested @@ -239,34 +248,26 @@ 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 Is a button. Keep it as short as possible. - Блокирати - - - Open in Browser - - - - Mention 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 @@ What's on your mind? + placeholderText in Toot text panel @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tryck för att infoga + @@ -117,31 +118,31 @@ MainPage Home - Hem + Notifications - Notifieringar - - - New Toot - Ny toot - - - Search - Sök - - - @user or #term - @user eller #term + Local - Lokalt + Federated - Förenade + + + + Search + + + + @user or #term + + + + New Toot + Ny toot @@ -188,6 +189,10 @@ Reload Ladda mer + + Open in Browser + + ProfileHeader @@ -214,22 +219,26 @@ Followers Will show as: "35 Followers" - Följare + Following Will show as: "23 Following" - Följer + Statuses Will show as: "115 Statuses" - Statusar + + + + Mention + Unfollow Is a button. Keep it as short as possible. - Sluta följa + Requested @@ -239,34 +248,26 @@ Follow Is a button. Keep it as short as possible. - Följ + Unmute Is a button. Keep it as short as possible. - Avtysta + Mute Is a button. Keep it as short as possible. - Tysta + Unblock Is a button. Keep it as short as possible. - Avblockera + Block Is a button. Keep it as short as possible. - Blockera - - - Open in Browser - - - - Mention 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 @@ What's on your mind? + placeholderText in Toot text panel 有何想法? @@ -76,11 +77,11 @@ EmojiSelect Emojis - 表情 + Tap to insert - 点击以插入 + @@ -117,38 +118,38 @@ MainPage Home - 主页 + Notifications - 通知 - - - New Toot - 新嘟嘟 - - - Search - 搜索 - - - @user or #term - @用户或#项目 + Local - 本地 + Federated - 联合 + + + + Search + + + + @user or #term + + + + New Toot + 新嘟嘟 MediaFullScreen Error loading - 加载错误 + @@ -188,6 +189,10 @@ Reload 重新加载 + + Open in Browser + 在浏览器打开个人简介 + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - 关于 + Followers Will show as: "35 Followers" - 关注者 + Following Will show as: "23 Following" - 关注中 + Statuses Will show as: "115 Statuses" - 状态 + + + + Mention + 提及 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 Is a button. Keep it as short as possible. - 封锁 - - - Open in Browser - 在浏览器打开个人简介 - - - Mention - 提及 + 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 @@ What's on your mind? + placeholderText in Toot text panel What's on your mind? @@ -76,11 +77,11 @@ EmojiSelect Emojis - Emojis + Tap to insert - Tap to insert + @@ -117,38 +118,38 @@ MainPage Home - + Notifications - - - - New Toot - - - - Search - - - - @user or #term - + Local - + Federated - + + + + Search + + + + @user or #term + + + + New Toot + New Toot MediaFullScreen Error loading - Error loading + @@ -188,6 +189,10 @@ Reload Reload + + Open in Browser + Open in Browser + ProfileHeader @@ -209,65 +214,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - About + Followers Will show as: "35 Followers" - Followers + Following Will show as: "23 Following" - Following + Statuses Will show as: "115 Statuses" - Statuses + + + + Mention + Mention Unfollow Is a button. Keep it as short as possible. - Unfollow + Requested Is a button. Keep it as short as possible. - Requested + Follow Is a button. Keep it as short as possible. - Follow + Unmute Is a button. Keep it as short as possible. - Unmute + Mute Is a button. Keep it as short as possible. - Mute + Unblock Is a button. Keep it as short as possible. - Unblock + Block Is a button. Keep it as short as possible. - Block - - - Open in Browser - Open in Browser - - - Mention - 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(' @@ -118,38 +119,38 @@ MainPage Home - + Home Notifications - + Benachrichtigungen Local - + Lokal Federated - + Föderiert Search - + Suche @user or #term - + @Benutzer oder #Ausdruck New Toot - Neuer Toot + Neuer Toot MediaFullScreen Error loading - + Ladefehler @@ -191,7 +192,7 @@ Open in Browser - Im Browser öffnen + Im Browser öffnen @@ -214,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Details Followers Will show as: "35 Followers" - + Folgende Following Will show as: "23 Following" - + Folgt Statuses Will show as: "115 Statuses" - + Beiträge Mention - Erwähnen + Erwähnen Unfollow Is a button. Keep it as short as possible. - + Entfolgen Requested Is a button. Keep it as short as possible. - + Angefragt Follow Is a button. Keep it as short as possible. - + Folgen Unmute Is a button. Keep it as short as possible. - + Nicht stumm Mute Is a button. Keep it as short as possible. - + Stumm schalten Unblock Is a button. Keep it as short as possible. - + Zulassen Block 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 @@ Write your warning here + placeholderText in Toot content warning panel @@ -118,15 +119,15 @@ MainPage Home - + Οικοσελίδα Notifications - + Ειδοποιήσεις Local - + Τοπικός Federated @@ -134,15 +135,15 @@ Search - + Αναζήτηση @user or #term - + @χρήστη ή #όρος New Toot - Νέος + Νέος @@ -187,7 +188,7 @@ Reload - Επαναφόρτωση + Φόρτωση περισσοτέρων Open in Browser @@ -219,26 +220,26 @@ Followers Will show as: "35 Followers" - + Σας ακολουθούν Following Will show as: "23 Following" - + Σε παρακολούθηση Statuses Will show as: "115 Statuses" - + Κατάσταση Mention - + Φραγή Unfollow Is a button. Keep it as short as possible. - + Αναίρεση παρακολούθησης Requested @@ -248,22 +249,22 @@ 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 @@ -376,7 +377,7 @@ Mention - + Φραγή Conversation 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 @@ Write your warning here + 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 @@ Write your warning here + placeholderText in Toot content warning panel Rédigez votre alerte ici @@ -77,11 +78,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Appuyez pour insérer @@ -118,27 +119,27 @@ MainPage Home - + Accueil Notifications - + Notifications Local - + Fil public local Federated - + Fil public global Search - + Rechercher @user or #term - + @personne ou #terme New Toot @@ -149,7 +150,7 @@ MediaFullScreen Error loading - + Erreur au chargement @@ -191,7 +192,7 @@ Open in Browser - Ouvrir dans le navigateur + Ouvrir dans le navigateur @@ -214,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Détails Followers Will show as: "35 Followers" - + Abonné(e)s Following Will show as: "23 Following" - + Abonnements Statuses Will show as: "115 Statuses" - + Pouets Mention - Mentionner + Mentionner Unfollow Is a button. Keep it as short as possible. - + Ne plus suivre Requested Is a button. Keep it as short as possible. - + Demandé Follow Is a button. Keep it as short as possible. - + Suivre Unmute Is a button. Keep it as short as possible. - + Démasquer Mute Is a button. Keep it as short as possible. - + Masquer Unblock Is a button. Keep it as short as possible. - + Débloquer Block 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 @@ Write your warning here + placeholderText in Toot content warning panel Contenuto avviso @@ -77,11 +78,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tap per inserire @@ -118,38 +119,38 @@ MainPage Home - + Home Notifications - + Notifiche Local - + Locale Federated - + Federazione Search - + Cerca @user or #term - + @utente o #terme New Toot - Nuovo Toot + Nuovo Toot MediaFullScreen Error loading - + Errore durante caricamento @@ -191,7 +192,7 @@ Open in Browser - Aprire nel browser + Aprire nel browser @@ -214,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Dettagli Followers Will show as: "35 Followers" - + Seguaci Following Will show as: "23 Following" - + Segue Statuses Will show as: "115 Statuses" - + Toots Mention - Menzionare + Menzionare Unfollow Is a button. Keep it as short as possible. - + Smetti di seguire Requested Is a button. Keep it as short as possible. - + Richiesto Follow Is a button. Keep it as short as possible. - + Segui Unmute Is a button. Keep it as short as possible. - + Non silenziare Mute Is a button. Keep it as short as possible. - + Silenzia Unblock Is a button. Keep it as short as possible. - + Sblocca Block 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 @@ Write your warning here + 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 - - Loading - Wird geladen - - - please wait... - bitte warten... - New Toot Neuer Toot @@ -194,6 +186,10 @@ Open in Browser Im Browser öffnen + + Loading... + + 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 @@ Settings Ρυθμίσεις - - Loading - Φόρτωση - - - please wait... - - New Toot Νέος @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings Ajustes - - Loading - Cargando - - - please wait... - por favor, espera... - New Toot Nuevo toot @@ -194,6 +186,10 @@ Open in Browser Abrir en el navegador + + Loading... + + 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 @@ Settings Paramètres - - Loading - Chargement - - - please wait... - patientez... - New Toot Nouveau pouet @@ -194,6 +186,10 @@ Open in Browser Ouvrir dans le navigateur + + Loading... + + 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 @@ Settings Impostazioni - - Loading - Caricamento - - - please wait... - Attendere un momento... - New Toot Nuovo Toot @@ -194,6 +186,10 @@ Open in Browser Aprire nel browser + + Loading... + + 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 @@ Settings Instellingen - - Loading - Laden - - - please wait... - even geduld… - New Toot Nieuwe Toot @@ -194,6 +186,10 @@ Open in Browser Open een Browser + + Loading... + + 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 @@ Settings Instellingen - - Loading - Laden - - - please wait... - efkens geduld… - New Toot Nieuwen toot @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings Parmètres - - Loading - Cargament - - - please wait... - esperatz.... - New Toot Nòu Tut @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings Ustawienia - - Loading - Ładowanie - - - please wait... - proszę czekać… - New Toot Nowy wpis @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings Настройки - - Loading - Загрузка - - - please wait... - Пожалуйста, подождите... - New Toot Новый @@ -194,6 +186,10 @@ Open in Browser Открыть в браузере + + Loading... + + 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 @@ Settings Подешавања - - Loading - Učitavanje - - - please wait... - молимо вас, сачекајте... - New Toot Novi toot @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings Inställningar - - Loading - Laddar - - - please wait... - Vänligen vänta... - New Toot Ny toot @@ -194,6 +186,10 @@ Open in Browser + + Loading... + + 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 @@ Settings 设置 - - Loading - 加载中 - - - please wait... - 稍等片刻...... - New Toot 新嘟嘟 @@ -194,6 +186,10 @@ Open in Browser 在浏览器打开个人简介 + + Loading... + + 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 Settings - - Loading - - - - please wait... - - New Toot New Toot @@ -194,6 +186,10 @@ Open in Browser Open in Browser + + Loading... + + 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 @@ Hide Reply Antwort verbergen + + Open in Browser + Im Browser öffnen + CoverPage @@ -187,8 +191,8 @@ Im Browser öffnen - Loading... - + Nothing found + 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 @@ Hide Reply + + Open in Browser + + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emoji Tap to insert - + Κτυπήστε για εισαγωγή @@ -187,7 +191,7 @@ - Loading... + Nothing found @@ -265,7 +269,7 @@ Block 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 @@ Hide Reply Cerrar respuesta + + Open in Browser + Abrir en el navegador + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emoticonos Tap to insert - + Toca para insertar @@ -119,38 +123,38 @@ MainPage Home - + Inicio Notifications - + Notificaciones Local - + Local Federated - + Federada Search - + Buscar @user or #term - + @usuario o #término New Toot - Nuevo toot + Nuevo toot MediaFullScreen Error loading - + Error al cargar @@ -184,11 +188,11 @@ Open in Browser - Abrir en el navegador + Abrir en el navegador - Loading... - + Nothing found + No encontrado nada @@ -211,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Detalles Followers Will show as: "35 Followers" - + Seguidores Following Will show as: "23 Following" - + Siguiendo Statuses Will show as: "115 Statuses" - + Estados Mention - Mencionar + Mencionar Unfollow Is a button. Keep it as short as possible. - + Dejar de seguir Requested Is a button. Keep it as short as possible. - + Requerido Follow Is a button. Keep it as short as possible. - + Seguir Unmute Is a button. Keep it as short as possible. - + Dejar de silenciar Mute Is a button. Keep it as short as possible. - + Silenciar Unblock Is a button. Keep it as short as possible. - + Desbloquear Block 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 @@ Hide Reply Masquer la réponse + + Open in Browser + Ouvrir dans le navigateur + CoverPage @@ -187,8 +191,8 @@ Ouvrir dans le navigateur - Loading... - + Nothing found + 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 @@ Hide Reply Chuidere risposta + + Open in Browser + Aprire nel browser + CoverPage @@ -187,8 +191,8 @@ Aprire nel browser - Loading... - + Nothing found + 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 @@ Hide Reply Antwoord verbergen + + Open in Browser + Open een Browser + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tikken om in te voegen @@ -119,38 +123,38 @@ MainPage Home - + Thuis Notifications - + Meldingen Local - + Lokaal Federated - + Gefedereerd Search - + Zoeken @user or #term - + @user of #term New Toot - Nieuwe Toot + Nieuwe Toot MediaFullScreen Error loading - + Laadfout @@ -184,11 +188,11 @@ Open in Browser - Open een Browser + Open een Browser - Loading... - + Nothing found + Niets gevonden @@ -211,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Gegevens Followers Will show as: "35 Followers" - + Volgers Following Will show as: "23 Following" - + Volgend Statuses Will show as: "115 Statuses" - + Statussen Mention - Vermelden + Vermelden Unfollow Is a button. Keep it as short as possible. - + Ontvolgen Requested Is a button. Keep it as short as possible. - + Gevraagd Follow Is a button. Keep it as short as possible. - + Volgen Unmute Is a button. Keep it as short as possible. - + Ontdempen Mute Is a button. Keep it as short as possible. - + Dempen Unblock Is a button. Keep it as short as possible. - + Deblokkeren Block Is a button. Keep it as short as possible. - + Blokkeren @@ -321,7 +325,7 @@ Visual identity - + Visuele identiteit Development and translations @@ -329,19 +333,19 @@ Occitan & French translation - + Occitaanse & Franse vertaling Chinese translation - + Chinese vertaling Dutch translation - + Nederlandse vertaling Spanish translation - + Spaanse vertaling Use 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 @@ Hide Reply + + Open in Browser + + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tikt voor in te voegen @@ -119,31 +123,31 @@ MainPage Home - + Thuis Notifications - + Meldingen Local - + Lokaal Federated - + Gefedereerd Search - + Zoeken @user or #term - + @gebruiker of #term New Toot - Nieuwen toot + Nieuwen toot @@ -187,7 +191,7 @@ - Loading... + Nothing found @@ -216,17 +220,17 @@ Followers Will show as: "35 Followers" - + Volgers Following Will show as: "23 Following" - + Volgend Statuses Will show as: "115 Statuses" - + Statussen Mention @@ -235,7 +239,7 @@ Unfollow Is a button. Keep it as short as possible. - + Ontvolgen Requested @@ -245,27 +249,27 @@ Follow Is a button. Keep it as short as possible. - + Volgen Unmute Is a button. Keep it as short as possible. - + Ontdempen Mute Is a button. Keep it as short as possible. - + Dempen Unblock Is a button. Keep it as short as possible. - + Deblokkeren Block 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 @@ Hide Reply + + Open in Browser + + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tustejar per inserir @@ -187,7 +191,7 @@ - Loading... + Nothing found @@ -216,17 +220,17 @@ Followers Will show as: "35 Followers" - + Seguidors Following Will show as: "23 Following" - + Abonaments Statuses Will show as: "115 Statuses" - + Estatuts Mention @@ -235,7 +239,7 @@ Unfollow Is a button. Keep it as short as possible. - + Quitar de seguir Requested @@ -245,27 +249,27 @@ Follow Is a button. Keep it as short as possible. - + Seguir Unmute Is a button. Keep it as short as possible. - + Mostrar Mute Is a button. Keep it as short as possible. - + Amagar Unblock Is a button. Keep it as short as possible. - + Desblocar Block 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 @@ Hide Reply + + Open in Browser + Otwarte w przeglądarce + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emoji Tap to insert - + Dotknij aby wstawić @@ -96,7 +100,7 @@ LoginPage Login - + Login Instance @@ -119,31 +123,31 @@ MainPage Home - + Strona główna Notifications - + Powiadomienia Local - + Lokalne Federated - + Globalne Search - + Szukaj @user or #term - + @użytkownik lub #tag New Toot - Nowy wpis + Nowy wpis @@ -184,11 +188,11 @@ Open in Browser - + Otwarte w przeglądarce - Loading... - + Nothing found + Nic nie znaleziono @@ -221,7 +225,7 @@ Following Will show as: "23 Following" - + Śledzisz Statuses @@ -235,7 +239,7 @@ Unfollow Is a button. Keep it as short as possible. - + Przestań śledzić Requested @@ -255,7 +259,7 @@ Mute Is a button. Keep it as short as possible. - + Wycisz Unblock 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 @@ Hide Reply Скрыть ответ + + Open in Browser + Открыть в браузере + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Cмайликов Tap to insert - + Нажмите, чтобы вставить @@ -100,7 +104,7 @@ Instance - + Экземпляра Enter a valid Mastodon instance URL @@ -119,38 +123,38 @@ MainPage Home - + Главная Notifications - + Уведомления Local - + Локальны Federated - + Федеративные Search - + Поиск @user or #term - + @пользователь или #срок New Toot - Новый + Новый MediaFullScreen Error loading - + Ошибка при загрузке @@ -184,11 +188,11 @@ Open in Browser - Открыть в браузере + Открыть в браузере - Loading... - + Nothing found + Ничего не найдено @@ -211,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + Подробности Followers Will show as: "35 Followers" - + Читают Following Will show as: "23 Following" - + Следующий Statuses Will show as: "115 Statuses" - + Статусы Mention - Упоминание + Упоминание 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 Is a button. Keep it as short as possible. - + Блокировать @@ -321,27 +325,27 @@ Visual identity - + Визуальная идентичность Development and translations - + Разработка и переводы Occitan & French translation - + французский перевод Chinese translation - + Китайский перевод Dutch translation - + Голландский перевод Spanish translation - + Испанский перевод Use 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 @@ Hide Reply + + Open in Browser + + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Емотикони Tap to insert - + Тапни за убацивање @@ -119,31 +123,31 @@ MainPage Home - + Почетна Notifications - + Обавјештење Local - + Локална Federated - + Федеративна Search - + Претрага @user or #term - + @korisnik ili #pojam New Toot - Novi toot + Novi toot @@ -187,7 +191,7 @@ - Loading... + Nothing found @@ -216,17 +220,17 @@ Followers Will show as: "35 Followers" - + Пратиоци Following Will show as: "23 Following" - + Пратите Statuses Will show as: "115 Statuses" - + Статуси Mention @@ -235,7 +239,7 @@ Unfollow Is a button. Keep it as short as possible. - + Одпрати Requested @@ -245,27 +249,27 @@ 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 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 @@ Hide Reply + + Open in Browser + + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tryck för att infoga @@ -119,31 +123,31 @@ MainPage Home - + Hem Notifications - + Notifieringar Local - + Lokalt Federated - + Förenade Search - + Sök @user or #term - + @user eller #term New Toot - Ny toot + Ny toot @@ -187,7 +191,7 @@ - Loading... + Nothing found @@ -216,17 +220,17 @@ Followers Will show as: "35 Followers" - + Följare Following Will show as: "23 Following" - + Följer Statuses Will show as: "115 Statuses" - + Statusar Mention @@ -235,7 +239,7 @@ Unfollow Is a button. Keep it as short as possible. - + Sluta följa Requested @@ -245,27 +249,27 @@ Follow Is a button. Keep it as short as possible. - + Följ Unmute Is a button. Keep it as short as possible. - + Avtysta Mute Is a button. Keep it as short as possible. - + Tysta Unblock Is a button. Keep it as short as possible. - + Avblockera Block 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 @@ 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 - 新嘟嘟 + 新嘟嘟 MediaFullScreen Error loading - + 加载错误 @@ -184,11 +188,11 @@ Open in Browser - 在浏览器打开个人简介 + 在浏览器打开个人简介 - Loading... - + Nothing found + 没有发现任何东西 @@ -211,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + 关于 Followers Will show as: "35 Followers" - + 关注者 Following Will show as: "23 Following" - + 关注中 Statuses Will show as: "115 Statuses" - + 状态 Mention - 提及 + 提及 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 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 Hide Reply + + Open in Browser + Open in Browser + CoverPage @@ -78,11 +82,11 @@ EmojiSelect Emojis - + Emojis Tap to insert - + Tap to insert @@ -119,38 +123,38 @@ MainPage Home - + Home Notifications - + Notifications Local - + Local Federated - + Federated Search - + Search @user or #term - + @user or #term New Toot - New Toot + New Toot MediaFullScreen Error loading - + Error loading @@ -180,15 +184,15 @@ Reload - Reload + Reload Open in Browser - Open in Browser + Open in Browser - Loading... - + Nothing found + Nothing found @@ -211,61 +215,61 @@ About If there's no good translation for "About", use "Details" (in details about profile). - + About Followers Will show as: "35 Followers" - + Followers Following Will show as: "23 Following" - + Following Statuses Will show as: "115 Statuses" - + Statuses Mention - Mention + Mention Unfollow Is a button. Keep it as short as possible. - + Unfollow Requested Is a button. Keep it as short as possible. - + Requested Follow Is a button. Keep it as short as possible. - + Follow Unmute Is a button. Keep it as short as possible. - + Unmute Mute Is a button. Keep it as short as possible. - + Mute Unblock Is a button. Keep it as short as possible. - + Unblock Block 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