ui-improvements

New image/video viewer
Send-message
Profile background images
This commit is contained in:
molan-git 2020-05-25 17:54:02 +02:00
parent c8ad3f02cc
commit 41041a77aa
28 changed files with 197 additions and 177 deletions

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

@ -15,6 +15,7 @@ Page {
property string suggestedUser: ""
property ListModel suggestedModel
property string toot_id: ""
property string toot_url: ""
property int tootMaxChar: 500;
property ListModel mdl
allowedOrientations: Orientation.All
@ -96,6 +97,18 @@ Page {
}
}
}
PullDownMenu {
visible: type == "reply" && toot_url != ""
/* MenuItem {
text: qsTr("Open in Browser")
onClicked: Qt.openUrlExternally(toot_url);
} */
// ! url isn't always fetched. Needs a solution.
MenuItem {
text: qsTr("Copy Link to Clipboard")
onClicked: Clipboard.text = toot_url;
}
}
}
Rectangle {
id: predictionList
@ -110,7 +123,6 @@ Page {
anchors.fill: parent
model: suggestedModel
clip: true
delegate: ItemUser {
onClicked: {
var start = toot.cursorPosition
@ -433,7 +445,7 @@ Page {
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
mediaModel.clear()
mediaModel.clear();
sentBanner.showText(qsTr("Toot sent!"))
}
}

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
})
}
}

View file

@ -16,7 +16,7 @@ Page {
property int favourites_count;
property int reblogs_count;
property int count_moments;
property string profile_background: "";
property string profileBackground: "";
property string note: "";
property string url: "";
@ -42,6 +42,7 @@ Page {
username = messageObject.data.acct
display_name = messageObject.data.display_name
profileImage = messageObject.data.avatar_static
profileBackground = messageObject.data.header_static
var msg = {
'action' : "accounts/relationships/",
@ -135,7 +136,6 @@ Page {
}
MyList {
id: list
header: ProfileHeader {
@ -143,6 +143,7 @@ Page {
title: display_name
description: username
image: profileImage
bg: profileBackground
}
anchors {
@ -159,7 +160,6 @@ Page {
conf: Logic.conf
}
ExpandingSectionGroup {
id: expander
//currentIndex: 0
@ -275,10 +275,8 @@ Page {
}));
send(link)
} else if (test.length === 4 && test[3][0] === "@" ) {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
// function still missing for user accounts
// } else if (test.length === 4 && test[3][0] === "@" ) {
} else {
Qt.openUrlExternally(link);
@ -290,7 +288,6 @@ Page {
spacing: Theme.paddingMedium
anchors.horizontalCenter: parent.horizontalCenter
Button {
id: btnUrl
text: qsTr("Open Profile in Browser")
onClicked: {
Qt.openUrlExternally(url);

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

@ -4,16 +4,15 @@ import Sailfish.Silica 1.0
DockedPanel {
id: root
z: 100;
width: parent.width //- Theme.paddingLarge*4
//x: Theme.paddingLarge*2
z: 100
width: parent.width
height: content.height
dock: Dock.Bottom
dock: Dock.Top
Rectangle {
id: content
width: root.width
height: infoLabel.height + 4*Theme.paddingMedium
height: infoLabel.height + 5*Theme.paddingMedium
//anchors.topMargin: 20
color: Theme.highlightBackgroundColor
opacity: 1.0
@ -29,7 +28,7 @@ DockedPanel {
wrapMode: Text.WrapAnywhere
anchors {
left: parent.left
leftMargin: Theme.horizontalPageMargin
leftMargin: Theme.horizontalPageMargin*2
right: parent.right
rightMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter

View file

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

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
@ -137,14 +136,19 @@ BackgroundItem {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
// Original component
/* pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
"name": "",
"username": test[3].substring(1)+"@"+test[2],
"profileImage": ""
}) */
} else {
Qt.openUrlExternally(link);
}
}
text: content.replace(new RegExp("<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 +173,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 +183,7 @@ BackgroundItem {
}
}
MediaBlock {
id: media
anchors {
@ -191,6 +196,7 @@ BackgroundItem {
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
height: 100
}
ContextMenu {
id: mnu
MenuItem {
@ -269,9 +275,6 @@ BackgroundItem {
}
}
onClicked: {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
@ -279,6 +282,7 @@ BackgroundItem {
pageStack.push(Qt.resolvedUrl("../Conversation.qml"), {
headerTitle: "Conversation",
toot_id: status_id,
toot_url: status_url,
title: account_display_name,
description: '@'+account_acct,
avatar: account_avatar,

View file

@ -60,14 +60,18 @@
</message>
<message>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
<translation>Toot gesendet!</translation>
</message>
<message>
<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

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Σφάλμα φόρτωσης</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<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

@ -62,6 +62,10 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>

View file

@ -60,14 +60,18 @@
</message>
<message>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
<translation>Pouet envoyé !</translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation>Copier le lien</translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Erreur de chargement</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -28,52 +28,57 @@
<context>
<name>Conversation</name>
<message>
<location filename="../qml/pages/Conversation.qml" line="188"/>
<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="200"/>
<source>Write your warning here</source>
<translation>Contenuto avviso</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="218"/>
<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="281"/>
<location filename="../qml/pages/Conversation.qml" line="293"/>
<source>Delete</source>
<translation>Elimina</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="380"/>
<location filename="../qml/pages/Conversation.qml" line="392"/>
<source>Public</source>
<translation>Pubblico</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="383"/>
<location filename="../qml/pages/Conversation.qml" line="395"/>
<source>Unlisted</source>
<translation>Non elencato</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="386"/>
<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="389"/>
<location filename="../qml/pages/Conversation.qml" line="401"/>
<source>Direct</source>
<translation>Diretto</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="437"/>
<location filename="../qml/pages/Conversation.qml" line="449"/>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
<translation>Toot è stato pubblicato!</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="503"/>
<location filename="../qml/pages/Conversation.qml" line="515"/>
<source>Emojis</source>
<translation>Emojis</translation>
</message>
<message>
<location filename="../qml/pages/Conversation.qml" line="504"/>
<location filename="../qml/pages/Conversation.qml" line="516"/>
<source>Tap to insert</source>
<translation>Tap per inserire</translation>
</message>
@ -81,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>
@ -97,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>
@ -125,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>
@ -269,7 +274,7 @@
<translation>Biografia</translation>
</message>
<message>
<location filename="../qml/pages/Profile.qml" line="294"/>
<location filename="../qml/pages/Profile.qml" line="291"/>
<source>Open Profile in Browser</source>
<translation>Aprire profile nel browser</translation>
</message>
@ -388,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

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Fout bij laden</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Fout bij laden</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Error en cargar</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Błąd ładowania</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Ошибка при загрузке</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Greška u učitavanju</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation>Problem att ladda</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -62,12 +62,16 @@
<source>Toot sent!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Link to Clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
<message>
<source>Error loading</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>