From 9e7d735a3b672ee2eb5f8eb871495c306f8eb6e2 Mon Sep 17 00:00:00 2001 From: molan-git Date: Mon, 29 Jun 2020 10:48:06 +0200 Subject: [PATCH] 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 +