Merge branch 'ui-improvements'

This commit is contained in:
molan-git 2020-05-25 18:13:55 +02:00
commit 7d5cf6f9d2
28 changed files with 256 additions and 235 deletions

View file

@ -9,8 +9,8 @@
# - icon definition filename in desktop file must be changed
# - translation filenames have to be changed
# The name of your application
TARGET = harbour-tooterb
# The name of your application
TARGET = harbour-tooterb
CONFIG += sailfishapp
@ -23,7 +23,7 @@ PKGCONFIG += \
DEFINES += "APPVERSION=\\\"$${SPECVERSION}\\\""
DEFINES += "APPNAME=\\\"$${TARGET}\\\""
!exists( src/dbusAdaptor.h ) {
!exists( src/dbusAdaptor.h ) {
system(qdbusxml2cpp config/ba.dysko.harbour.tooterb.xml -i dbus.h -a src/dbusAdaptor)
}
@ -37,10 +37,9 @@ dbus_services.path = /usr/share/dbus-1/services/
dbus_services.files = config/ba.dysko.harbour.tooterb.service
interfaces.path = /usr/share/dbus-1/interfaces/
interfaces.files = config/ba.dysko.harbour.tooterb.xml
interfaces.files = config/ba.dysko.harbourb.tooter.xml
SOURCES += \
src/harbour-tooterb.cpp
SOURCES += src/harbour-tooterb.cpp
SOURCES += src/imageuploader.cpp
SOURCES += src/filedownloader.cpp
SOURCES += src/notifications.cpp
@ -52,10 +51,9 @@ HEADERS += src/filedownloader.h
HEADERS += src/notifications.h
HEADERS += src/dbusAdaptor.h
HEADERS += src/dbus.h
DISTFILES += qml/harbour-tooterb.qml \
config/icon-lock-harbour-tooterb.png \
qml/images/tooterb.svg \
qml/pages/components/InfoBanner.qml \
qml/pages/components/VisualContainer.qml \
qml/pages/components/MiniStatus.qml \
qml/pages/components/MiniHeader.qml \
@ -77,19 +75,21 @@ DISTFILES += qml/harbour-tooterb.qml \
qml/lib/API.js \
qml/images/notification.svg \
qml/images/verified.svg \
qml/images/boosted.svg \
qml/images/boosted.svg \
qml/images/tooter.svg \
qml/images/emojiselect.svg \
qml/images/icon-m-profile.svg \
qml/images/icon-l-profile.svg \
qml/lib/Mastodon.js \
qml/lib/Worker.js \
qml/lib/Worker.js \
config/icon-lock-harbour-tooterb.png \
config/x-harbour.tooterb.activity.conf \
rpm/harbour-tooterb.changes \
rpm/harbour-tooterb.changes.run.in \
rpm/harbour-tooterb.spec \
rpm/harbour-tooterb.yaml \
translations/*.ts \
harbour-tooterb.desktop
harbour-tooter.desktop
SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
@ -100,7 +100,7 @@ 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.
# modify the localized app name in the the .desktop file.
TRANSLATIONS += translations/harbour-tooterb-de.ts
TRANSLATIONS += translations/harbour-tooterb-el.ts
TRANSLATIONS += translations/harbour-tooterb-es.ts

View file

@ -132,11 +132,13 @@ function parseAccounts(collection, prefix, data){
res[prefix + 'account_username'] = data["username"]
res[prefix + 'account_acct'] = data["acct"]
res[prefix + 'account_display_name'] = data["display_name"]
res[prefix + 'account_discoverable'] = data["discoverable"]
res[prefix + 'account_locked'] = data["locked"]
res[prefix + 'account_created_at'] = data["created_at"]
res[prefix + 'account_avatar'] = data["avatar"]
res[prefix + 'account_header'] = data["header"]
// /console.log(JSON.stringify(res))
// console.log(JSON.stringify(res))
return (res);
}
@ -226,6 +228,7 @@ function parseToot (data){
item['highlight'] = false
item['status_id'] = data["id"]
item['status_uri'] = data["uri"]
item['status_url'] = data["url"]
item['status_in_reply_to_id'] = data["in_reply_to_id"]
item['status_in_reply_to_account_id'] = data["in_reply_to_account_id"]
item['status_reblog'] = data["reblog"] ? true : false
@ -236,6 +239,7 @@ function parseToot (data){
item['favourites_count'] = data["favourites_count"]
item['reblogged'] = data["reblogged"]
item['favourited'] = data["favourited"]
item['bookmarked'] = data["bookmarked"]
item['status_sensitive'] = data["sensitive"]
item['status_spoiler_text'] = data["spoiler_text"]
item['status_visibility'] = data["visibility"]

View file

@ -4,16 +4,18 @@ import harbour.tooterb.Uploader 1.0
import "../lib/API.js" as Logic
import "./components/"
Page {
id: conversationPage
property string type
property string headerTitle: ""
property string type
property alias title: header.title
property alias description: header.description
property alias avatar: header.image
property string suggestedUser: ""
property ListModel suggestedModel
property string toot_id: ""
property string uri: ""
property string toot_id: ""
property string toot_url: ""
property int tootMaxChar: 500;
property ListModel mdl
allowedOrientations: Orientation.All
@ -41,6 +43,10 @@ Page {
}
}
InfoBanner {
id: sentBanner
}
ListModel {
id: mediaModel
onCountChanged: {
@ -63,7 +69,7 @@ Page {
SilicaListView {
id: conversationList
header: PageHeader {
title: qsTr("Conversation")
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
}
clip: true
anchors {
@ -92,13 +98,15 @@ Page {
}
}
PullDownMenu {
MenuItem {
visible: type == "reply" && toot_url != ""
/* MenuItem {
text: qsTr("Open in Browser")
onClicked: Qt.openUrlExternally(uri);
}
onClicked: Qt.openUrlExternally(toot_url);
} */
// ! url isn't always fetched. Needs a solution.
MenuItem {
text: qsTr("Copy URL to Clipboard")
onClicked: Clipboard.text = uri;
text: qsTr("Copy Link to Clipboard")
onClicked: Clipboard.text = toot_url;
}
}
}
@ -115,7 +123,6 @@ Page {
anchors.fill: parent
model: suggestedModel
clip: true
delegate: ItemUser {
onClicked: {
var start = toot.cursorPosition
@ -219,7 +226,6 @@ Page {
|| description.charAt(
0) == '#') ? description + ' ' : ''
height: Math.max(270, Math.min(900, implicitHeight))
//height: implicitHeight
horizontalAlignment: Text.AlignLeft
placeholderText: qsTr("What's on your mind?")
font.pixelSize: Theme.fontSizeSmall
@ -315,7 +321,6 @@ Page {
}
}
IconButton {
id: btnContentWarning
anchors {
top: toot.bottom
@ -437,11 +442,11 @@ Page {
msg.params['spoiler_text'] = warningContent.text
}
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
mediaModel.clear()
pageStack.pop()
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
mediaModel.clear();
sentBanner.showText(qsTr("Toot sent!"))
}
}

View file

@ -34,15 +34,11 @@ import Sailfish.Silica 1.0
import "../lib/API.js" as Logic
Page {
id: loginPage
// The effective value will be restricted by ApplicationWindow.allowedOrientations
allowedOrientations: Orientation.All
SilicaFlickable {
anchors.fill: parent
contentHeight: column.height + Theme.paddingLarge
@ -52,8 +48,9 @@ Page {
Column {
id: column
width: parent.width
PageHeader { title: qsTr("Login") }
PageHeader {
title: qsTr("Login")
}
SectionHeader {
text: qsTr("Instance")
@ -83,7 +80,6 @@ Page {
conf.instance = instance.text;
conf.login = false;
/*conf['login'] = false;
conf['mastodon_client_id'] = data['mastodon_client_id'];
conf['mastodon_client_secret'] = data['mastodon_client_secret'];

View file

@ -57,6 +57,7 @@ Page {
}
}
}
VisualItemModel {
id: visualModel
MyList{
@ -188,7 +189,8 @@ Page {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar
"profileImage": model.account_avatar,
"profileBackground": model.account_header
})
}
}
@ -246,7 +248,7 @@ Page {
visible: !isPortrait ? true : !infoPanel.open
icon.source: "image://theme/icon-l-add"
onClicked: {
pageStack.push(Qt.resolvedUrl("Conversation.qml"), {title: qsTr("New Toot"), type: "new"})
pageStack.push(Qt.resolvedUrl("Conversation.qml"), {headerTitle: qsTr("New Toot"), type: "new"})
}
}

View file

@ -17,7 +17,7 @@ Page {
property int favourites_count;
property int reblogs_count;
property int count_moments;
property string profile_background: "";
property string profileBackground: "";
property string note: "";
property string url: "";
property bool locked : false;
@ -42,6 +42,7 @@ Page {
username = messageObject.data.acct
display_name = messageObject.data.display_name
profileImage = messageObject.data.avatar_static
profileBackground = messageObject.data.header_static
var msg = {
'action' : "accounts/relationships/",
@ -141,6 +142,7 @@ Page {
title: display_name
description: username
image: profileImage
bg: profileBackground
}
anchors {
@ -157,7 +159,6 @@ Page {
conf: Logic.conf
}
ExpandingSectionGroup {
id: expander
//currentIndex: 0
@ -271,10 +272,10 @@ Page {
return check;
}));
send(link)
} else if (test.length === 4 && test[3][0] === "@" ) {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
// function still missing for user accounts
// } else if (test.length === 4 && test[3][0] === "@" ) {
} else {
Qt.openUrlExternally(link);
}

View file

@ -2,7 +2,7 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
import QtMultimedia 5.0
Page {
FullscreenContentPage {
id: imagePage
property string type: ""
property string previewURL: ""
@ -22,6 +22,26 @@ Page {
videoFlickable.visible = true;
}
}
Item {
id: overlay
z: 100
property bool active: true
enabled: active
anchors.fill: parent
opacity: active ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {}}
IconButton {
y: Theme.paddingLarge
anchors {
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
icon.source: "image://theme/icon-m-dismiss"
onClicked: pageStack.pop()
}
}
Flickable {
id: videoFlickable
visible: false
@ -49,7 +69,6 @@ Page {
case MediaPlayer.EndOfMedia:
console.log("EndOfMedia")
return;
}
}
@ -68,7 +87,6 @@ Page {
}
}
onPositionChanged: function(){
//console.log(duration)
//console.log(bufferProgress)
@ -81,15 +99,17 @@ Page {
}
}
onStopped: function(){
play()
}
IconButton {
id: playerIcon
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.leftMargin: Theme.paddingLarge
anchors.bottomMargin: Theme.paddingMedium
anchors.bottomMargin: Theme.paddingLarge*1.5
icon.source: "image://theme/icon-m-play"
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState)
@ -104,10 +124,9 @@ Page {
id: playerProgress
anchors.left: playerIcon.right
anchors.right: videoDlBtn.left
anchors.verticalCenter: playerIcon.verticalCenter
anchors.leftMargin: 0
anchors.bottomMargin: Theme.paddingMedium
anchors.bottomMargin: Theme.paddingLarge*1.5
}
IconButton {
id: videoDlBtn
@ -115,9 +134,9 @@ Page {
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.rightMargin: Theme.paddingLarge
anchors.bottomMargin: Theme.paddingMedium
//width: Theme.iconSizeMedium+Theme.paddingMedium*2
icon.source: "image://theme/icon-m-cloud-download"
anchors.bottomMargin: Theme.paddingLarge*1.5
icon.source: "image://theme/icon-m-device-download"
icon.opacity: 0.0
onClicked: {
var filename = mediaURL.split("/");
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);
@ -135,7 +154,7 @@ Page {
anchors.centerIn: parent
id: videoError
width: parent.width - 2*Theme.paddingMedium
wrapMode: Text.WordWrap
wrapMode: Text.Wrap
height: contentHeight
visible: false;
font.pixelSize: Theme.fontSizeSmall;
@ -165,7 +184,6 @@ Page {
clip: true
onHeightChanged: if (imagePreview.status === Image.Ready) imagePreview.fitToScreen();
Item {
id: imageContainer
width: Math.max(imagePreview.width * imagePreview.scale, imageFlickable.width)
@ -173,22 +191,18 @@ Page {
Image {
id: imagePreview
property real prevScale
function fitToScreen() {
scale = Math.min(imageFlickable.width / width, imageFlickable.height / height, 1)
pinchArea.minScale = scale
prevScale = scale
}
anchors.centerIn: parent
fillMode: Image.PreserveAspectFit
cache: true
asynchronous: true
sourceSize.height: 1000;
smooth: false
onStatusChanged: {
if (status == Image.Ready) {
fitToScreen()
@ -224,7 +238,6 @@ Page {
opacity: 0.3
property real minScale: 1.0
property real maxScale: 3.0
anchors.fill: parent
enabled: imagePreview.status === Image.Ready
pinch.target: imagePreview
@ -267,11 +280,9 @@ Page {
Component {
id: loadingIndicator
Item {
height: childrenRect.height
width: imagePage.width
ProgressCircle {
id: imageLoadingIndicator
anchors.horizontalCenter: parent.horizontalCenter
@ -293,9 +304,8 @@ Page {
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.rightMargin: Theme.paddingLarge
anchors.bottomMargin: Theme.paddingMedium
//width: Theme.iconSizeMedium+Theme.paddingMedium*2
icon.source: "image://theme/icon-m-cloud-download"
anchors.bottomMargin: Theme.paddingLarge*1.5
icon.source: "image://theme/icon-m-device-download"
onClicked: {
var filename = mediaURL.split("/");
FileDownloader.downloadFile(mediaURL, filename[filename.length-1]);

View file

@ -0,0 +1,61 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
DockedPanel {
id: root
z: 100
width: parent.width
height: content.height
dock: Dock.Top
Rectangle {
id: content
width: root.width
height: infoLabel.height + 5*Theme.paddingMedium
//anchors.topMargin: 20
color: Theme.highlightBackgroundColor
opacity: 1.0
Label {
id: infoLabel
text : ""
color: Theme.primaryColor
font.family: Theme.fontFamilyHeading
font.pixelSize: Theme.fontSizeMedium
//font.weight: Font.Bold
width: parent.width
wrapMode: Text.WrapAnywhere
anchors {
left: parent.left
leftMargin: Theme.horizontalPageMargin*2
right: parent.right
rightMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
}
MouseArea {
anchors.fill: parent
onClicked: {
root.hide()
autoClose.stop()
}
}
}
function showText(text) {
infoLabel.text = text
root.show()
autoClose.start()
}
Timer {
id: autoClose
interval: 6000
running: false
onTriggered: {
root.hide()
stop()
}
}
}

View file

@ -74,8 +74,6 @@ Item {
}
}
MyImage {
id: placeholder1
width: 2

View file

@ -41,7 +41,6 @@ Item {
: Theme.primaryColor)
}
Label {
id: lblScreenName
anchors {

View file

@ -169,7 +169,5 @@ SilicaGridView {
}
VerticalScrollDecorator {}
}

View file

@ -10,21 +10,22 @@ Item {
//property string bg: "";
width: parent.width
height: icon.height + Theme.paddingLarge*2
/*Image {
anchors.fill: parent
asynchronous: true
fillMode: Image.PreserveAspectCrop
source: bg
opacity: 0.3
}*/
Rectangle {
id: bgImage
anchors.fill: parent
opacity: 0.2
gradient: Gradient {
GradientStop { position: 0.0; color: Theme.highlightBackgroundColor }
GradientStop { position: 1.0; color: Theme.highlightBackgroundColor }
GradientStop { position: 1.0; color: Theme.highlightBackgroundColor }
}
Image {
anchors.fill: bgImage
asynchronous: true
fillMode: Image.PreserveAspectCrop
source: bg
opacity: 0.8
}
}
Image {
id: icon

View file

@ -3,7 +3,6 @@ import Sailfish.Silica 1.0
import "../../lib/API.js" as Logic
BackgroundItem {
id: delegate
signal send (string notice)
signal navigateTo(string link)
@ -28,6 +27,7 @@ BackgroundItem {
topMargin: Theme.paddingMedium
}
}
Image {
id: avatar
anchors {
@ -50,7 +50,6 @@ BackgroundItem {
? Theme.highlightColor
: Theme.primaryColor)
}
MouseArea {
anchors.fill: parent
onClicked: {
@ -58,12 +57,12 @@ BackgroundItem {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar
"profileImage": model.account_avatar,
"profileBackground": model.account_header
})
}
}
Image {
id: iconTR
anchors {
@ -75,7 +74,7 @@ BackgroundItem {
width: Theme.iconSizeExtraSmall
height: width
source: "image://theme/icon-s-retweet"
}
}
Rectangle {
color: Theme.highlightDimmerColor
width: Theme.iconSizeSmall
@ -138,13 +137,21 @@ BackgroundItem {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
// Original component
/* pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
"name": "",
"username": test[3].substring(1)+"@"+test[2],
"profileImage": ""
}) */
} else {
Qt.openUrlExternally(link);
}
}
text: content.replace(new RegExp("<a ", 'g'), '<a style="text-decoration: none; color:'+(pressed ? Theme.secondaryColor : Theme.highlightColor)+'" ')
linkColor : Theme.highlightColor
wrapMode: Text.WordWrap
wrapMode: Text.Wrap
textFormat: Text.RichText
font.pixelSize: Theme.fontSizeSmall
color: (pressed ? Theme.highlightColor : (!highlight ? Theme.primaryColor : Theme.secondaryColor))
@ -169,7 +176,7 @@ BackgroundItem {
width: parent.width
truncationMode: TruncationMode.Fade
color: Theme.highlightColor
wrapMode: Text.WordWrap
wrapMode: Text.Wrap
text: model.status_spoiler_text
}
MouseArea {
@ -179,6 +186,7 @@ BackgroundItem {
}
}
MediaBlock {
id: media
anchors {
@ -191,6 +199,7 @@ BackgroundItem {
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: 100
}
ContextMenu {
id: mnu
MenuItem {
@ -269,16 +278,14 @@ BackgroundItem {
}
}
onClicked: {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
m.append(mdl.get(index))
pageStack.push(Qt.resolvedUrl("../Conversation.qml"), {
headerTitle: "Conversation",
toot_id: status_id,
uri: status_uri,
toot_url: status_url,
title: account_display_name,
description: '@'+account_acct,
avatar: account_avatar,

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Konversation</translation>
</message>
<message>
<source>Delete</source>
<translation>Löschen</translation>
@ -63,19 +59,19 @@
<translation>Was gibt&apos;s Neues?</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Im Browser öffnen</translation>
<source>Toot sent!</source>
<translation>Toot gesendet!</translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<translation>Link in Zwischenablage kopieren</translation>
<source>Copy Link to Clipboard</source>
<translation>Link kopieren</translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Fehler beim Laden</translation>
<translation>Ladefehler</translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Συνομιλία</translation>
</message>
<message>
<source>Delete</source>
<translation>Διαγραφή</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Σφάλμα φόρτωσης</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversación</translation>
</message>
<message>
<source>Delete</source>
<translation>Borrar</translation>
@ -63,19 +59,19 @@
<translation>¿En qué estás pensando?</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Abrir en el navegador</translation>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<translation>Copiar enlace</translation>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Error al cargar</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversation</translation>
</message>
<message>
<source>Delete</source>
<translation>Supprimer</translation>
@ -63,11 +59,11 @@
<translation>Qu&apos;avez-vous en tête?</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Ouvrir dans le navigateur</translation>
<source>Toot sent!</source>
<translation>Pouet envoyé !</translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation>Copier le lien</translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Erreur de chargement</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -28,62 +28,57 @@
<context>
<name>Conversation</name>
<message>
<location filename="../qml/pages/Conversation.qml" line="66"/>
<source>Conversation</source>
<translation>Conversazione</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="96"/>
<source>Open in Browser</source>
<translation>Aprire nel browser</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="100"/>
<source>Copy URL to Clipboard</source>
<location filename="../qml/pages/Conversation.qml" line="108"/>
<source>Copy Link to Clipboard</source>
<translation>Copia link</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="193"/>
<location filename="../qml/pages/Conversation.qml" line="200"/>
<source>Write your warning here</source>
<translation>Contenuto avviso</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="224"/>
<location filename="../qml/pages/Conversation.qml" line="230"/>
<source>What&apos;s on your mind?</source>
<translation>A cosa stai pensando?</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="287"/>
<location filename="../qml/pages/Conversation.qml" line="293"/>
<source>Delete</source>
<translation>Elimina</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="387"/>
<location filename="../qml/pages/Conversation.qml" line="392"/>
<source>Public</source>
<translation>Pubblico</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="390"/>
<location filename="../qml/pages/Conversation.qml" line="395"/>
<source>Unlisted</source>
<translation>Non elencato</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="393"/>
<location filename="../qml/pages/Conversation.qml" line="398"/>
<source>Followers-only</source>
<translation>Solo ai seguaci</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="396"/>
<location filename="../qml/pages/Conversation.qml" line="401"/>
<source>Direct</source>
<translation>Diretto</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="510"/>
<location filename="../qml/pages/Conversation.qml" line="449"/>
<source>Toot sent!</source>
<translation>Toot è stato pubblicato!</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="515"/>
<source>Emojis</source>
<translation>Emojis</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="511"/>
<location filename="../qml/pages/Conversation.qml" line="516"/>
<source>Tap to insert</source>
<translation>Tap per inserire</translation>
</message>
@ -91,9 +86,9 @@
<context>
<name>ImageFullScreen</name>
<message>
<location filename="../qml/pages/components/ImageFullScreen.qml" line="287"/>
<location filename="../qml/pages/components/ImageFullScreen.qml" line="298"/>
<source>Error loading</source>
<translation>Errore caricamento</translation>
<translation>Errore durante caricamento</translation>
</message>
</context>
<context>
@ -107,27 +102,27 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../qml/pages/LoginPage.qml" line="56"/>
<location filename="../qml/pages/LoginPage.qml" line="52"/>
<source>Login</source>
<translation>Accesso</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="59"/>
<location filename="../qml/pages/LoginPage.qml" line="56"/>
<source>Instance</source>
<translation>Istanza</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="65"/>
<location filename="../qml/pages/LoginPage.qml" line="62"/>
<source>Enter a valid Mastodon instance URL</source>
<translation>Inserire URL di una istanza Mastodon valida</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="123"/>
<location filename="../qml/pages/LoginPage.qml" line="119"/>
<source>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.</source>
<translation>Mastodon è un servizio di rete sociale in software libero, costituito in una federazione d&apos;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.</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="194"/>
<location filename="../qml/pages/LoginPage.qml" line="190"/>
<source>Reload</source>
<translation>Ricarica</translation>
</message>
@ -135,37 +130,37 @@
<context>
<name>MainPage</name>
<message>
<location filename="../qml/pages/MainPage.qml" line="64"/>
<location filename="../qml/pages/MainPage.qml" line="65"/>
<source>Home</source>
<translation>Home</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="73"/>
<location filename="../qml/pages/MainPage.qml" line="74"/>
<source>Notifications</source>
<translation>Notifiche</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="83"/>
<location filename="../qml/pages/MainPage.qml" line="84"/>
<source>Local</source>
<translation>Locale</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="93"/>
<location filename="../qml/pages/MainPage.qml" line="94"/>
<source>Federated</source>
<translation>Federazione</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="120"/>
<location filename="../qml/pages/MainPage.qml" line="121"/>
<source>Search</source>
<translation>Cerca</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="125"/>
<location filename="../qml/pages/MainPage.qml" line="126"/>
<source>@user or #term</source>
<translation>@utente o #termine</translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="249"/>
<location filename="../qml/pages/MainPage.qml" line="251"/>
<source>New Toot</source>
<translation>Nuovo toot</translation>
</message>
@ -279,7 +274,7 @@
<translation>Biografia</translation>
</message>
<message>
<location filename="../qml/pages/Profile.qml" line="287"/>
<location filename="../qml/pages/Profile.qml" line="291"/>
<source>Open Profile in Browser</source>
<translation>Aprire profile nel browser</translation>
</message>
@ -398,22 +393,22 @@
<context>
<name>VisualContainer</name>
<message>
<location filename="../qml/pages/components/VisualContainer.qml" line="198"/>
<location filename="../qml/pages/components/VisualContainer.qml" line="204"/>
<source>Unboost</source>
<translation>Annulla condivisione</translation>
</message>
<message>
<location filename="../qml/pages/components/VisualContainer.qml" line="198"/>
<location filename="../qml/pages/components/VisualContainer.qml" line="204"/>
<source>Boost</source>
<translation>Condividi</translation>
</message>
<message>
<location filename="../qml/pages/components/VisualContainer.qml" line="235"/>
<location filename="../qml/pages/components/VisualContainer.qml" line="241"/>
<source>Unfavorite</source>
<translation>Annulla apprezzamento</translation>
</message>
<message>
<location filename="../qml/pages/components/VisualContainer.qml" line="235"/>
<location filename="../qml/pages/components/VisualContainer.qml" line="241"/>
<source>Favorite</source>
<translation>Apprezzato</translation>
</message>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Gesprek</translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Fout bij laden</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Gesprek</translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Fout bij laden</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Discutida</translation>
</message>
<message>
<source>Delete</source>
<translation>Escafar</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Error en cargar</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Konwersacja</translation>
</message>
<message>
<source>Delete</source>
<translation>Usuń</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Błąd ładowania</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Беседа</translation>
</message>
<message>
<source>Delete</source>
<translation>Удалить</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Ошибка при загрузке</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Разговор</translation>
</message>
<message>
<source>Delete</source>
<translation>Обриши</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Greška u učitavanju</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Konversation</translation>
</message>
<message>
<source>Delete</source>
<translation>Radera</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Problem att ladda</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation></translation>
</message>
<message>
<source>Delete</source>
<translation></translation>
@ -63,11 +59,11 @@
<translation>?</translation>
</message>
<message>
<source>Open in Browser</source>
<translation></translation>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -22,10 +22,6 @@
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversation</translation>
</message>
<message>
<source>Delete</source>
<translation>Delete</translation>
@ -63,11 +59,11 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL to Clipboard</source>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -75,7 +71,7 @@
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>