new features / ui improvements
- add Toots to bookmarks
This commit is contained in:
parent
f77d539f5a
commit
72c49c3777
26 changed files with 706 additions and 490 deletions
|
@ -75,6 +75,7 @@ DISTFILES += qml/harbour-tooter.qml \
|
|||
qml/lib/API.js \
|
||||
qml/images/icon-s-bot.svg \
|
||||
qml/images/icon-s-following \
|
||||
qml/images/icon-s-bookmark \
|
||||
qml/images/icon-m-emoji.svg \
|
||||
qml/images/icon-m-profile.svg \
|
||||
qml/images/icon-l-profile.svg \
|
||||
|
@ -93,7 +94,7 @@ SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
|
|||
|
||||
# to disable building translations every time, comment out the
|
||||
# following CONFIG line
|
||||
# CONFIG += sailfishapp_i18n
|
||||
CONFIG += sailfishapp_i18n
|
||||
|
||||
TRANSLATIONS += translations/harbour-tooter.ts \
|
||||
translations/harbour-tooter-de.ts \
|
||||
|
|
9
qml/images/icon-s-bookmark.svg
Normal file
9
qml/images/icon-s-bookmark.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<title>icon-s-bookmark</title>
|
||||
<g>
|
||||
<rect width="32" height="32" fill="#fff" fill-opacity="0"/>
|
||||
<path d="M20.81,10H11.19a1,1,0,1,1,0-2h9.63a1,1,0,0,1,0,2Z" fill="#fff"/>
|
||||
<path d="M20.81,14.62H11.19a1,1,0,0,1,0-2h9.63a1,1,0,0,1,0,2Z" fill="#fff"/>
|
||||
<path d="M26.85,29.74a1,1,0,0,1-.66-.25L16,20.82,5.81,29.48a1,1,0,0,1-1,.2c-.7-.22-.7-.76-.7-1.58,0-.63,0-1.88,0-4.38V4.48A2.41,2.41,0,0,1,6.44,2H25.56a2.41,2.41,0,0,1,2.29,2.5V23.73c0,2.5,0,3.75,0,4.38,0,.82,0,1.36-.7,1.58A1,1,0,0,1,26.85,29.74Zm-10.16-11,9.16,7.79c0-.7,0-1.62,0-2.84V4.48c0-.3-.18-.5-.29-.5H6.44c-.12,0-.29.2-.29.5V23.73c0,1.22,0,2.14,0,2.84l9.16-7.79h0a1.11,1.11,0,0,1,1.39,0Z" fill="#fff" opacity="0.6"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 776 B |
|
@ -95,6 +95,8 @@ var tootParser = function(data){
|
|||
ret.reblogged = data.reblogged ? true : false
|
||||
ret.status_reblogs_count = data.reblogs_count ? data.reblogs_count : false
|
||||
|
||||
ret.bookmarked = data.bookmarked ? true : false
|
||||
|
||||
ret.muted = data.muted ? true : false
|
||||
ret.sensitive = data.sensitive ? true : false
|
||||
ret.visibility = data.visibility ? data.visibility : false
|
||||
|
|
|
@ -152,6 +152,7 @@ function parseAccounts(collection, prefix, data) {
|
|||
// Optional attributes
|
||||
//res[prefix + 'account_fields'] = data["fields"]
|
||||
res[prefix + 'account_bot'] = data["bot"]
|
||||
res[prefix + 'account_group'] = data["group"]
|
||||
res[prefix + 'account_source'] = data["source"]
|
||||
|
||||
//console.log(JSON.stringify(res))
|
||||
|
|
|
@ -6,73 +6,74 @@ import "./components/"
|
|||
|
||||
|
||||
Page {
|
||||
id: conversationPage
|
||||
id: conversationPage
|
||||
|
||||
property string type
|
||||
property string description: ""
|
||||
property string headerTitle: ""
|
||||
property string suggestedUser: ""
|
||||
property ListModel suggestedModel
|
||||
property string toot_id: ""
|
||||
property string suggestedUser: ""
|
||||
property ListModel suggestedModel
|
||||
property string toot_id: ""
|
||||
property string toot_url: ""
|
||||
property string toot_uri: ""
|
||||
property int tootMaxChar: 500;
|
||||
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
|
||||
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
|
||||
property bool locked: false //otherwise ReferenceError ProfileHeader.qml
|
||||
property bool group: false //otherwise ReferenceError ProfileHeader.qml
|
||||
property ListModel mdl
|
||||
|
||||
allowedOrientations: Orientation.All
|
||||
onSuggestedUserChanged: {
|
||||
console.log(suggestedUser)
|
||||
suggestedModel = Qt.createQmlObject(
|
||||
'import QtQuick 2.0; ListModel { }',
|
||||
Qt.application, 'InternalQmlObject'
|
||||
)
|
||||
predictionList.visible = false
|
||||
if (suggestedUser.length > 0) {
|
||||
var msg = {
|
||||
"action": 'accounts/search',
|
||||
"method": 'GET',
|
||||
"model": suggestedModel,
|
||||
"mode": "append",
|
||||
"params": [{
|
||||
"name": "q",
|
||||
"data": suggestedUser
|
||||
}],
|
||||
"conf": Logic.conf
|
||||
}
|
||||
worker.sendMessage(msg)
|
||||
predictionList.visible = true
|
||||
}
|
||||
}
|
||||
allowedOrientations: Orientation.All
|
||||
onSuggestedUserChanged: {
|
||||
console.log(suggestedUser)
|
||||
suggestedModel = Qt.createQmlObject(
|
||||
'import QtQuick 2.0; ListModel { }',
|
||||
Qt.application, 'InternalQmlObject'
|
||||
)
|
||||
predictionList.visible = false
|
||||
if (suggestedUser.length > 0) {
|
||||
var msg = {
|
||||
"action": 'accounts/search',
|
||||
"method": 'GET',
|
||||
"model": suggestedModel,
|
||||
"mode": "append",
|
||||
"params": [{
|
||||
"name": "q",
|
||||
"data": suggestedUser
|
||||
}],
|
||||
"conf": Logic.conf
|
||||
}
|
||||
worker.sendMessage(msg)
|
||||
predictionList.visible = true
|
||||
}
|
||||
}
|
||||
|
||||
ListModel {
|
||||
id: mediaModel
|
||||
onCountChanged: {
|
||||
btnAddImage.enabled = mediaModel.count < 4
|
||||
}
|
||||
}
|
||||
ListModel {
|
||||
id: mediaModel
|
||||
onCountChanged: {
|
||||
btnAddImage.enabled = mediaModel.count < 4
|
||||
}
|
||||
}
|
||||
|
||||
WorkerScript {
|
||||
id: worker
|
||||
source: "../lib/Worker.js"
|
||||
onMessage: {
|
||||
console.log(JSON.stringify(messageObject))
|
||||
}
|
||||
}
|
||||
WorkerScript {
|
||||
id: worker
|
||||
source: "../lib/Worker.js"
|
||||
onMessage: {
|
||||
console.log(JSON.stringify(messageObject))
|
||||
}
|
||||
}
|
||||
|
||||
ProfileHeader {
|
||||
id: header
|
||||
visible: false
|
||||
}
|
||||
ProfileHeader {
|
||||
id: header
|
||||
visible: false
|
||||
}
|
||||
|
||||
SilicaListView {
|
||||
id: myList
|
||||
header: PageHeader {
|
||||
header: PageHeader {
|
||||
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
|
||||
}
|
||||
clip: true
|
||||
}
|
||||
clip: true
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
@ -81,25 +82,25 @@ Page {
|
|||
} else {
|
||||
hiddenPanel.top
|
||||
}
|
||||
model: mdl
|
||||
section {
|
||||
property: 'section'
|
||||
delegate: SectionHeader {
|
||||
height: Theme.itemSizeExtraSmall
|
||||
text: Format.formatDate(section, Formatter.DateMedium)
|
||||
}
|
||||
}
|
||||
delegate: VisualContainer {
|
||||
}
|
||||
onCountChanged: {
|
||||
if (mdl)
|
||||
for (var i = 0; i < mdl.count; i++) {
|
||||
if (mdl.get(i).status_id === toot_id) {
|
||||
console.log(mdl.get(i).status_id)
|
||||
positionViewAtIndex(i, ListView.Center)
|
||||
}
|
||||
}
|
||||
}
|
||||
model: mdl
|
||||
section {
|
||||
property: 'section'
|
||||
delegate: SectionHeader {
|
||||
height: Theme.itemSizeExtraSmall
|
||||
text: Format.formatDate(section, Formatter.DateMedium)
|
||||
}
|
||||
}
|
||||
delegate: VisualContainer {
|
||||
}
|
||||
onCountChanged: {
|
||||
if (mdl)
|
||||
for (var i = 0; i < mdl.count; i++) {
|
||||
if (mdl.get(i).status_id === toot_id) {
|
||||
console.log(mdl.get(i).status_id)
|
||||
positionViewAtIndex(i, ListView.Center)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PullDownMenu {
|
||||
id: pulleyConversation
|
||||
|
@ -133,9 +134,9 @@ Page {
|
|||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: predictionList
|
||||
visible: false
|
||||
Rectangle {
|
||||
id: predictionList
|
||||
visible: false
|
||||
color: Theme.highlightDimmerColor
|
||||
height: parent.height - panel.height - (Theme.paddingLarge * 4.5)
|
||||
anchors {
|
||||
|
@ -151,27 +152,27 @@ Page {
|
|||
SilicaListView {
|
||||
rotation: 180
|
||||
anchors.fill: parent
|
||||
model: suggestedModel
|
||||
clip: true
|
||||
model: suggestedModel
|
||||
clip: true
|
||||
quickScroll: false
|
||||
VerticalScrollDecorator {}
|
||||
delegate: ItemUser {
|
||||
delegate: ItemUser {
|
||||
rotation: 180
|
||||
onClicked: {
|
||||
var start = toot.cursorPosition
|
||||
while (toot.text[start] !== "@" && start > 0) {
|
||||
start--
|
||||
}
|
||||
textOperations.text = toot.text
|
||||
textOperations.cursorPosition = toot.cursorPosition
|
||||
textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
|
||||
toot.text = textOperations.text.substring(0, textOperations.selectionStart)
|
||||
+ ' @'
|
||||
+ model.account_acct
|
||||
+ ' '
|
||||
+ textOperations.text.substring(textOperations.selectionEnd).trim()
|
||||
onClicked: {
|
||||
var start = toot.cursorPosition
|
||||
while (toot.text[start] !== "@" && start > 0) {
|
||||
start--
|
||||
}
|
||||
textOperations.text = toot.text
|
||||
textOperations.cursorPosition = toot.cursorPosition
|
||||
textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
|
||||
toot.text = textOperations.text.substring(0, textOperations.selectionStart)
|
||||
+ ' @'
|
||||
+ model.account_acct
|
||||
+ ' '
|
||||
+ textOperations.text.substring(textOperations.selectionEnd).trim()
|
||||
|
||||
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
|
||||
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
|
||||
}
|
||||
}
|
||||
onCountChanged: {
|
||||
|
@ -182,82 +183,80 @@ Page {
|
|||
}
|
||||
}
|
||||
|
||||
DockedPanel {
|
||||
id: panel
|
||||
width: parent.width
|
||||
DockedPanel {
|
||||
id: panel
|
||||
width: parent.width
|
||||
height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
|
||||
+ btnContentWarning.height + Theme.paddingMedium
|
||||
+ (warningContent.visible ? warningContent.height : 0)
|
||||
+ btnContentWarning.height + Theme.paddingMedium
|
||||
+ (warningContent.visible ? warningContent.height : 0)
|
||||
dock: Dock.Bottom
|
||||
open: if (type == "new") {
|
||||
true
|
||||
} else false
|
||||
open: true
|
||||
|
||||
animationDuration: 300
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: progressBar.height
|
||||
color: Theme.highlightBackgroundColor
|
||||
opacity: 0.2
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
}
|
||||
}
|
||||
width: parent.width
|
||||
height: progressBar.height
|
||||
color: Theme.highlightBackgroundColor
|
||||
opacity: 0.2
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: progressBar
|
||||
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
|
||||
Rectangle {
|
||||
id: progressBar
|
||||
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
|
||||
height: Theme.itemSizeSmall * 0.05
|
||||
color: Theme.highlightBackgroundColor
|
||||
opacity: 0.7
|
||||
anchors {
|
||||
left: parent.left
|
||||
color: Theme.highlightBackgroundColor
|
||||
opacity: 0.7
|
||||
anchors {
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: warningContent
|
||||
visible: false
|
||||
height: visible ? implicitHeight : 0
|
||||
anchors {
|
||||
TextField {
|
||||
id: warningContent
|
||||
visible: false
|
||||
height: visible ? implicitHeight : 0
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: Theme.paddingMedium
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
autoScrollEnabled: true
|
||||
labelVisible: false
|
||||
topMargin: Theme.paddingMedium
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
autoScrollEnabled: true
|
||||
labelVisible: false
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
placeholderText: qsTr("Write your warning here")
|
||||
placeholderColor: palette.highlightColor
|
||||
color: palette.highlightColor
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
EnterKey.onClicked: {}
|
||||
}
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
EnterKey.onClicked: {}
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: textOperations
|
||||
visible: false
|
||||
}
|
||||
TextInput {
|
||||
id: textOperations
|
||||
visible: false
|
||||
}
|
||||
|
||||
TextArea {
|
||||
id: toot
|
||||
anchors {
|
||||
top: warningContent.bottom
|
||||
topMargin: Theme.paddingMedium
|
||||
left: parent.left
|
||||
TextArea {
|
||||
id: toot
|
||||
anchors {
|
||||
top: warningContent.bottom
|
||||
topMargin: Theme.paddingMedium
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingLarge * 2
|
||||
}
|
||||
autoScrollEnabled: true
|
||||
labelVisible: false
|
||||
}
|
||||
autoScrollEnabled: true
|
||||
labelVisible: false
|
||||
text: description !== "" && (description.charAt(0) === '@'
|
||||
|| description.charAt(
|
||||
0) === '#') ? description + ' ' : ''
|
||||
|| description.charAt(
|
||||
0) === '#') ? description + ' ' : ''
|
||||
height: if (type !== "reply") {
|
||||
Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
|
||||
}
|
||||
|
@ -268,269 +267,269 @@ Page {
|
|||
placeholderText: qsTr("What's on your mind?")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
EnterKey.onClicked: {}
|
||||
onTextChanged: {
|
||||
textOperations.text = toot.text
|
||||
textOperations.cursorPosition = toot.cursorPosition
|
||||
textOperations.selectWord()
|
||||
textOperations.select(
|
||||
textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
|
||||
textOperations.selectionEnd)
|
||||
//console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
|
||||
console.log(toot.text.length)
|
||||
suggestedUser = ""
|
||||
if (textOperations.selectedText.charAt(0) === "@") {
|
||||
suggestedUser = textOperations.selectedText.trim().substring(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
onTextChanged: {
|
||||
textOperations.text = toot.text
|
||||
textOperations.cursorPosition = toot.cursorPosition
|
||||
textOperations.selectWord()
|
||||
textOperations.select(
|
||||
textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
|
||||
textOperations.selectionEnd)
|
||||
//console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
|
||||
console.log(toot.text.length)
|
||||
suggestedUser = ""
|
||||
if (textOperations.selectedText.charAt(0) === "@") {
|
||||
suggestedUser = textOperations.selectedText.trim().substring(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IconButton {
|
||||
id: btnSmileys
|
||||
IconButton {
|
||||
id: btnSmileys
|
||||
|
||||
property string selection
|
||||
|
||||
opacity: 0.7
|
||||
icon {
|
||||
source: "../../qml/images/icon-m-emoji.svg?"
|
||||
color: Theme.secondaryColor
|
||||
width: Theme.iconSizeSmallPlus
|
||||
fillMode: Image.PreserveAspectFit
|
||||
source: "../../qml/images/icon-m-emoji.svg"
|
||||
}
|
||||
anchors {
|
||||
anchors {
|
||||
top: warningContent.bottom
|
||||
bottom: bottom.top
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingSmall
|
||||
}
|
||||
bottom: bottom.top
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingSmall
|
||||
}
|
||||
onSelectionChanged: { console.log(selection) }
|
||||
onClicked: pageStack.push(emojiSelect)
|
||||
}
|
||||
}
|
||||
|
||||
SilicaGridView {
|
||||
id: uploadedImages
|
||||
width: parent.width
|
||||
SilicaGridView {
|
||||
id: uploadedImages
|
||||
width: parent.width
|
||||
anchors.top: bottom.toot
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
|
||||
model: mediaModel
|
||||
cellWidth: uploadedImages.width / 4
|
||||
cellWidth: uploadedImages.width / 4
|
||||
cellHeight: Theme.itemSizeExtraLarge
|
||||
delegate: BackgroundItem {
|
||||
id: myDelegate
|
||||
width: uploadedImages.cellWidth
|
||||
height: uploadedImages.cellHeight
|
||||
RemorseItem {
|
||||
delegate: BackgroundItem {
|
||||
id: myDelegate
|
||||
width: uploadedImages.cellWidth
|
||||
height: uploadedImages.cellHeight
|
||||
RemorseItem {
|
||||
id: remorse
|
||||
}
|
||||
}
|
||||
|
||||
Image {
|
||||
anchors.fill: parent
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
source: model.preview_url
|
||||
}
|
||||
onClicked: {
|
||||
var idx = index
|
||||
console.log(idx)
|
||||
//mediaModel.remove(idx)
|
||||
remorse.execute(myDelegate, qsTr("Delete"), function () {
|
||||
mediaModel.remove(idx)
|
||||
})
|
||||
}
|
||||
}
|
||||
add: Transition {
|
||||
NumberAnimation {
|
||||
property: "opacity"
|
||||
from: 0
|
||||
to: 1.0
|
||||
duration: 800
|
||||
}
|
||||
}
|
||||
remove: Transition {
|
||||
NumberAnimation {
|
||||
property: "opacity"
|
||||
from: 1.0
|
||||
to: 0
|
||||
duration: 800
|
||||
}
|
||||
}
|
||||
displaced: Transition {
|
||||
NumberAnimation {
|
||||
properties: "x,y"
|
||||
duration: 800
|
||||
easing.type: Easing.InOutBack
|
||||
}
|
||||
}
|
||||
}
|
||||
Image {
|
||||
anchors.fill: parent
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
source: model.preview_url
|
||||
}
|
||||
onClicked: {
|
||||
var idx = index
|
||||
console.log(idx)
|
||||
//mediaModel.remove(idx)
|
||||
remorse.execute(myDelegate, qsTr("Delete"), function () {
|
||||
mediaModel.remove(idx)
|
||||
})
|
||||
}
|
||||
}
|
||||
add: Transition {
|
||||
NumberAnimation {
|
||||
property: "opacity"
|
||||
from: 0
|
||||
to: 1.0
|
||||
duration: 800
|
||||
}
|
||||
}
|
||||
remove: Transition {
|
||||
NumberAnimation {
|
||||
property: "opacity"
|
||||
from: 1.0
|
||||
to: 0
|
||||
duration: 800
|
||||
}
|
||||
}
|
||||
displaced: Transition {
|
||||
NumberAnimation {
|
||||
properties: "x,y"
|
||||
duration: 800
|
||||
easing.type: Easing.InOutBack
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IconButton {
|
||||
id: btnContentWarning
|
||||
anchors {
|
||||
IconButton {
|
||||
id: btnContentWarning
|
||||
anchors {
|
||||
top: toot.bottom
|
||||
topMargin: -Theme.paddingSmall * 1.5
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingMedium
|
||||
}
|
||||
icon.source: "image://theme/icon-s-warning?"
|
||||
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
||||
onClicked: warningContent.visible = !warningContent.visible
|
||||
}
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingMedium
|
||||
}
|
||||
icon.source: "image://theme/icon-s-warning?"
|
||||
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
||||
onClicked: warningContent.visible = !warningContent.visible
|
||||
}
|
||||
|
||||
IconButton {
|
||||
id: btnAddImage
|
||||
enabled: mediaModel.count < 4
|
||||
anchors {
|
||||
IconButton {
|
||||
id: btnAddImage
|
||||
enabled: mediaModel.count < 4
|
||||
anchors {
|
||||
top: toot.bottom
|
||||
topMargin: -Theme.paddingSmall * 1.5
|
||||
left: btnContentWarning.right
|
||||
leftMargin: Theme.paddingSmall
|
||||
}
|
||||
icon.source: "image://theme/icon-s-attach?"
|
||||
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
||||
onClicked: {
|
||||
btnAddImage.enabled = false
|
||||
var once = true
|
||||
var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
|
||||
imagePicker.selectedContentChanged.connect(function () {
|
||||
var imagePath = imagePicker.selectedContent
|
||||
console.log(imagePath)
|
||||
imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
|
||||
imageUploader.setFile(imagePath)
|
||||
imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
|
||||
imageUploader.upload()
|
||||
})
|
||||
}
|
||||
}
|
||||
left: btnContentWarning.right
|
||||
leftMargin: Theme.paddingSmall
|
||||
}
|
||||
icon.source: "image://theme/icon-s-attach?"
|
||||
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
||||
onClicked: {
|
||||
btnAddImage.enabled = false
|
||||
var once = true
|
||||
var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
|
||||
imagePicker.selectedContentChanged.connect(function () {
|
||||
var imagePath = imagePicker.selectedContent
|
||||
console.log(imagePath)
|
||||
imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
|
||||
imageUploader.setFile(imagePath)
|
||||
imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
|
||||
imageUploader.upload()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
ImageUploader {
|
||||
id: imageUploader
|
||||
onProgressChanged: {
|
||||
console.log("progress " + progress)
|
||||
uploadProgress.width = parent.width * progress
|
||||
}
|
||||
onSuccess: {
|
||||
uploadProgress.width = 0
|
||||
console.log(replyData)
|
||||
mediaModel.append(JSON.parse(replyData))
|
||||
}
|
||||
onFailure: {
|
||||
uploadProgress.width = 0
|
||||
btnAddImage.enabled = true
|
||||
console.log(status)
|
||||
console.log(statusText)
|
||||
}
|
||||
}
|
||||
ImageUploader {
|
||||
id: imageUploader
|
||||
onProgressChanged: {
|
||||
console.log("progress " + progress)
|
||||
uploadProgress.width = parent.width * progress
|
||||
}
|
||||
onSuccess: {
|
||||
uploadProgress.width = 0
|
||||
console.log(replyData)
|
||||
mediaModel.append(JSON.parse(replyData))
|
||||
}
|
||||
onFailure: {
|
||||
uploadProgress.width = 0
|
||||
btnAddImage.enabled = true
|
||||
console.log(status)
|
||||
console.log(statusText)
|
||||
}
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
ComboBox {
|
||||
id: privacy
|
||||
anchors {
|
||||
anchors {
|
||||
top: toot.bottom
|
||||
topMargin: -Theme.paddingSmall * 1.5
|
||||
left: btnAddImage.right
|
||||
left: btnAddImage.right
|
||||
right: btnSend.left
|
||||
}
|
||||
menu: ContextMenu {
|
||||
MenuItem {
|
||||
MenuItem {
|
||||
text: qsTr("Public")
|
||||
}
|
||||
MenuItem {
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("Unlisted")
|
||||
}
|
||||
MenuItem {
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("Followers-only")
|
||||
}
|
||||
MenuItem {
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("Direct")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IconButton {
|
||||
id: btnSend
|
||||
icon.source: "image://theme/icon-m-send?"
|
||||
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||
anchors {
|
||||
IconButton {
|
||||
id: btnSend
|
||||
icon.source: "image://theme/icon-m-send?"
|
||||
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||
anchors {
|
||||
top: toot.bottom
|
||||
topMargin: -Theme.paddingSmall * 1.5
|
||||
right: parent.right
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingSmall
|
||||
}
|
||||
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
|
||||
onClicked: {
|
||||
}
|
||||
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
|
||||
onClicked: {
|
||||
var visibility = ["public", "unlisted", "private", "direct"]
|
||||
var media_ids = []
|
||||
for (var k = 0; k < mediaModel.count; k++) {
|
||||
console.log(mediaModel.get(k).id)
|
||||
media_ids.push(mediaModel.get(k).id)
|
||||
}
|
||||
var msg = {
|
||||
"action": 'statuses',
|
||||
"method": 'POST',
|
||||
"model": mdl,
|
||||
"mode": "append",
|
||||
"params": {
|
||||
"status": toot.text,
|
||||
"visibility": visibility[privacy.currentIndex],
|
||||
"media_ids": media_ids
|
||||
},
|
||||
"conf": Logic.conf
|
||||
}
|
||||
if (toot_id)
|
||||
msg.params['in_reply_to_id'] = (toot_id) + ""
|
||||
var media_ids = []
|
||||
for (var k = 0; k < mediaModel.count; k++) {
|
||||
console.log(mediaModel.get(k).id)
|
||||
media_ids.push(mediaModel.get(k).id)
|
||||
}
|
||||
var msg = {
|
||||
"action": 'statuses',
|
||||
"method": 'POST',
|
||||
"model": mdl,
|
||||
"mode": "append",
|
||||
"params": {
|
||||
"status": toot.text,
|
||||
"visibility": visibility[privacy.currentIndex],
|
||||
"media_ids": media_ids
|
||||
},
|
||||
"conf": Logic.conf
|
||||
}
|
||||
if (toot_id)
|
||||
msg.params['in_reply_to_id'] = (toot_id) + ""
|
||||
|
||||
if (warningContent.visible && warningContent.text.length > 0) {
|
||||
msg.params['sensitive'] = 1
|
||||
msg.params['spoiler_text'] = warningContent.text
|
||||
}
|
||||
if (warningContent.visible && warningContent.text.length > 0) {
|
||||
msg.params['sensitive'] = 1
|
||||
msg.params['spoiler_text'] = warningContent.text
|
||||
}
|
||||
|
||||
worker.sendMessage(msg)
|
||||
warningContent.text = ""
|
||||
toot.text = ""
|
||||
mediaModel.clear()
|
||||
sentBanner.showText(qsTr("Toot sent!"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: uploadProgress
|
||||
color: Theme.highlightBackgroundColor
|
||||
Rectangle {
|
||||
id: uploadProgress
|
||||
color: Theme.highlightBackgroundColor
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.left: parent.left
|
||||
height: Theme.itemSizeSmall * 0.05
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
toot.cursorPosition = toot.text.length
|
||||
if (mdl.count > 0) {
|
||||
var setIndex = 0
|
||||
switch (mdl.get(0).status_visibility) {
|
||||
case "unlisted":
|
||||
setIndex = 1
|
||||
break
|
||||
case "private":
|
||||
setIndex = 2
|
||||
break
|
||||
case "direct":
|
||||
privacy.enabled = false
|
||||
setIndex = 3
|
||||
break
|
||||
default:
|
||||
privacy.enabled = true
|
||||
setIndex = 0
|
||||
}
|
||||
privacy.currentIndex = setIndex
|
||||
}
|
||||
Component.onCompleted: {
|
||||
toot.cursorPosition = toot.text.length
|
||||
if (mdl.count > 0) {
|
||||
var setIndex = 0
|
||||
switch (mdl.get(0).status_visibility) {
|
||||
case "unlisted":
|
||||
setIndex = 1
|
||||
break
|
||||
case "private":
|
||||
setIndex = 2
|
||||
break
|
||||
case "direct":
|
||||
privacy.enabled = false
|
||||
setIndex = 3
|
||||
break
|
||||
default:
|
||||
privacy.enabled = true
|
||||
setIndex = 0
|
||||
}
|
||||
privacy.currentIndex = setIndex
|
||||
}
|
||||
|
||||
console.log(JSON.stringify())
|
||||
console.log(JSON.stringify())
|
||||
|
||||
worker.sendMessage({
|
||||
"action": 'statuses/' + mdl.get(0).status_id + '/context',
|
||||
"method": 'GET',
|
||||
"model": mdl,
|
||||
"params": { },
|
||||
"conf": Logic.conf
|
||||
})
|
||||
}
|
||||
worker.sendMessage({
|
||||
"action": 'statuses/' + mdl.get(0).status_id + '/context',
|
||||
"method": 'GET',
|
||||
"model": mdl,
|
||||
"params": { },
|
||||
"conf": Logic.conf
|
||||
})
|
||||
}
|
||||
|
||||
BackgroundItem {
|
||||
id: hiddenPanel
|
||||
|
@ -587,7 +586,7 @@ Page {
|
|||
|
||||
EmojiSelect {
|
||||
id: emojiSelect
|
||||
}
|
||||
}
|
||||
|
||||
InfoBanner {
|
||||
id: sentBanner
|
||||
|
|
|
@ -184,7 +184,8 @@ Page {
|
|||
"following_count": model.account_following_count,
|
||||
"statuses_count": model.account_statuses_count,
|
||||
"locked": model.account_locked,
|
||||
"bot": model.account_bot
|
||||
"bot": model.account_bot,
|
||||
"group": model.account_group
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ Page {
|
|||
property int followers_count
|
||||
property bool locked: false
|
||||
property bool bot: false
|
||||
property bool group: false
|
||||
property bool following: false
|
||||
property bool followed_by: false
|
||||
property bool requested: false
|
||||
|
@ -68,16 +69,9 @@ Page {
|
|||
case 'following_count':
|
||||
following_count = messageObject.data
|
||||
break;
|
||||
case 'acct':
|
||||
// line below was commented out, reason unknown
|
||||
// username = messageObject.data
|
||||
break;
|
||||
case 'locked':
|
||||
locked = messageObject.data
|
||||
break;
|
||||
case 'bot':
|
||||
bot = messageObject.data
|
||||
break;
|
||||
/* case 'acct':
|
||||
username = messageObject.data
|
||||
break; */
|
||||
case 'created_at':
|
||||
created_at = messageObject.data
|
||||
break;
|
||||
|
@ -99,10 +93,7 @@ Page {
|
|||
break;
|
||||
case 'blocking':
|
||||
blocking = messageObject.data
|
||||
followers_count = followers_count + (blocking ? -1 : 0)
|
||||
break;
|
||||
case 'followed_by':
|
||||
followed_by = messageObject.data
|
||||
// followers_count = followers_count + (blocking ? -1 : 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -121,13 +112,6 @@ Page {
|
|||
}
|
||||
worker.sendMessage(msg)
|
||||
|
||||
// reason for crashes when opening ProfilePage.qml
|
||||
/* msg = {
|
||||
'action' : "accounts/"+user_id,
|
||||
'conf' : Logic.conf
|
||||
}
|
||||
worker.sendMessage(msg) */
|
||||
|
||||
} else {
|
||||
var instance = Logic.conf['instance'].split("//")
|
||||
msg = {
|
||||
|
@ -160,13 +144,10 @@ Page {
|
|||
}
|
||||
}
|
||||
|
||||
ExpandingSectionGroup { // ProfilePage ExpandingSection
|
||||
// ProfilePage ExpandingSection
|
||||
ExpandingSectionGroup {
|
||||
id: profileExpander
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
ExpandingSection {
|
||||
id: expandingSection1
|
||||
|
@ -174,13 +155,12 @@ Page {
|
|||
//: If there's no good translation for "About", use "Details" (in details about profile).
|
||||
qsTr("About")
|
||||
content.sourceComponent: Column {
|
||||
height: Math.min( txtContainer, parent.height * 0.7 )
|
||||
spacing: Theme.paddingLarge
|
||||
|
||||
Item {
|
||||
id: txtContainer
|
||||
width: parent.width
|
||||
height: Math.min( txtNote.height, parent.height * 0.55 )
|
||||
height: profilePage.isPortrait ? Math.min( txtNote.height, parent.height * 0.5 ) : Math.min( txtNote.height, parent.height * 0.2 )
|
||||
visible: {
|
||||
if ((note.text === "") || ( note.text === "<p></p>" )) {
|
||||
false
|
||||
|
|
|
@ -31,7 +31,7 @@ BackgroundItem {
|
|||
size: BusyIndicatorSize.Small
|
||||
opacity: img.status === Image.Ready ? 0.0 : 1.0
|
||||
Behavior on opacity { FadeAnimator {} }
|
||||
running: avatar.status !== Image.Ready;
|
||||
running: avatar.status !== Image.Ready
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
|
@ -105,6 +105,7 @@ BackgroundItem {
|
|||
"following_count": model.account_following_count,
|
||||
"statuses_count": model.account_statuses_count,
|
||||
"locked": model.account_locked,
|
||||
"bot": model.account_bot
|
||||
"bot": model.account_bot,
|
||||
"group": model.account_group
|
||||
} )
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@ Item {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
placeholder1.visible = true;
|
||||
placeholder2.visible = true;
|
||||
placeholder1.visible = true
|
||||
placeholder2.visible = true
|
||||
placeholder1.width = (holder.width-Theme.paddingSmall)/2
|
||||
placeholder1.height = placeholder1.width
|
||||
placeholder2.width = placeholder1.width
|
||||
|
@ -43,10 +43,10 @@ Item {
|
|||
break;
|
||||
|
||||
case 3:
|
||||
placeholder1.visible = true;
|
||||
placeholder2.visible = true;
|
||||
placeholder3.visible = true;
|
||||
placeholder4.visible = false;
|
||||
placeholder1.visible = true
|
||||
placeholder2.visible = true
|
||||
placeholder3.visible = true
|
||||
placeholder4.visible = false
|
||||
|
||||
placeholder1.width = holder.width - Theme.paddingSmall - Theme.itemSizeLarge;
|
||||
placeholder1.height = Theme.itemSizeLarge*2+Theme.paddingSmall
|
||||
|
@ -59,16 +59,16 @@ Item {
|
|||
break;
|
||||
|
||||
case 4:
|
||||
placeholder1.visible = true;
|
||||
placeholder2.visible = true;
|
||||
placeholder3.visible = true;
|
||||
placeholder4.visible = true;
|
||||
placeholder1.visible = true
|
||||
placeholder2.visible = true
|
||||
placeholder3.visible = true
|
||||
placeholder4.visible = true
|
||||
|
||||
placeholder1.width = placeholder2.width = placeholder3.width = placeholder4.width = (holder.width - 3*Theme.paddingSmall)/4
|
||||
placeholder1.height = placeholder2.height = placeholder3.height = placeholder4.height = Theme.itemSizeLarge*2+Theme.paddingSmall
|
||||
placeholder2.x = 1*(placeholder1.width)+ 1*Theme.paddingSmall;
|
||||
placeholder3.x = 2*(placeholder1.width)+ 2*Theme.paddingSmall;
|
||||
placeholder4.x = 3*(placeholder1.width)+ 3*Theme.paddingSmall;
|
||||
placeholder2.x = 1*(placeholder1.width)+ 1*Theme.paddingSmall
|
||||
placeholder3.x = 2*(placeholder1.width)+ 2*Theme.paddingSmall
|
||||
placeholder4.x = 3*(placeholder1.width)+ 3*Theme.paddingSmall
|
||||
|
||||
holder.height = placeholder1.height
|
||||
break;
|
||||
|
|
|
@ -20,10 +20,11 @@ Item {
|
|||
anchors.left: parent.left
|
||||
}
|
||||
|
||||
Image {
|
||||
Icon {
|
||||
id: icnBot
|
||||
visible: account_bot
|
||||
source: "../../images/icon-s-bot.svg?" + ( pressed ? Theme.highlightColor : Theme.primaryColor )
|
||||
color: Theme.primaryColor
|
||||
width: account_bot ? Theme.iconSizeExtraSmall * 1.3 : 0
|
||||
height: width
|
||||
y: Theme.paddingLarge
|
||||
|
|
|
@ -12,7 +12,7 @@ Item {
|
|||
property string bg: ""
|
||||
|
||||
width: parent.width
|
||||
height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height + Theme.paddingLarge
|
||||
height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height
|
||||
|
||||
Rectangle {
|
||||
id: bgImage
|
||||
|
@ -27,7 +27,6 @@ Item {
|
|||
asynchronous: true
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
source: bg
|
||||
opacity: 0.8
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
||||
|
@ -40,11 +39,11 @@ Item {
|
|||
? Theme.highlightColor
|
||||
: Theme.primaryColor)
|
||||
else image
|
||||
width: description === "" ? Theme.iconSizeMedium : Theme.iconSizeLarge
|
||||
width: Theme.iconSizeLarge
|
||||
height: width
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingLarge
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
top: parent.top
|
||||
topMargin: Theme.paddingLarge * 1.5
|
||||
}
|
||||
|
@ -69,11 +68,11 @@ Item {
|
|||
Column {
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: Theme.paddingLarge * 1.5
|
||||
topMargin: Theme.paddingLarge
|
||||
left: avatarImage.right
|
||||
leftMargin: Theme.paddingLarge
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingLarge
|
||||
rightMargin: Theme.horizontalPageMargin
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
|
@ -106,14 +105,32 @@ Item {
|
|||
id: infoLbl
|
||||
spacing: Theme.paddingLarge
|
||||
layoutDirection: Qt.RightToLeft
|
||||
height: followed_by || locked || bot ? Theme.iconSizeSmall + Theme.paddingSmall : 0
|
||||
height: followed_by || locked || bot || group ? Theme.iconSizeSmall + Theme.paddingSmall : 0
|
||||
anchors {
|
||||
top: avatarImage.bottom
|
||||
topMargin: Theme.paddingLarge
|
||||
topMargin: Theme.paddingMedium
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingLarge
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
right: parent.right
|
||||
rightMargin: Theme.paddingLarge
|
||||
rightMargin: Theme.horizontalPageMargin
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: groupBg
|
||||
visible: (group ? true : false)
|
||||
radius: Theme.paddingSmall
|
||||
color: Theme.secondaryHighlightColor
|
||||
width: groupLbl.width + 2*Theme.paddingLarge
|
||||
height: parent.height
|
||||
|
||||
Label {
|
||||
id: groupLbl
|
||||
text: qsTr("Group")
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
color: Theme.primaryColor
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
|
|
@ -93,7 +93,8 @@ BackgroundItem {
|
|||
"following_count": model.account_following_count,
|
||||
"statuses_count": model.account_statuses_count,
|
||||
"locked": model.account_locked,
|
||||
"bot": model.account_bot
|
||||
"bot": model.account_bot,
|
||||
"group": model.account_group
|
||||
} )
|
||||
}
|
||||
}
|
||||
|
@ -123,7 +124,7 @@ BackgroundItem {
|
|||
visible: status_visibility === "direct"
|
||||
width: Theme.iconSizeMedium
|
||||
height: width
|
||||
source: "image://theme/icon-m-mail"
|
||||
source: "../../images/icon-m-mail.svg?"
|
||||
anchors {
|
||||
horizontalCenter: avatar.horizontalCenter
|
||||
top: avatar.bottom
|
||||
|
@ -172,7 +173,8 @@ BackgroundItem {
|
|||
"following_count": model.reblog_account_following_count,
|
||||
"statuses_count": model.reblog_account_statuses_count,
|
||||
"locked": model.reblog_account_locked,
|
||||
"bot": model.reblog_account_bot
|
||||
"bot": model.reblog_account_bot,
|
||||
"group": model.reblog_account_group
|
||||
} )
|
||||
}
|
||||
}
|
||||
|
@ -213,7 +215,7 @@ BackgroundItem {
|
|||
Theme.paddingLarge
|
||||
} else if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
|
||||
Math.min( implicitHeight, Theme.itemSizeExtraLarge * 1.5 )
|
||||
} else content.length ? (contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight) : 0
|
||||
} else content.length ? ( contentWarningLabel.paintedHeight > paintedHeight ? contentWarningLabel.paintedHeight : paintedHeight ) : 0
|
||||
anchors {
|
||||
left: miniHeader.left
|
||||
right: miniHeader.right
|
||||
|
@ -249,6 +251,7 @@ BackgroundItem {
|
|||
|
||||
// Content warning cover for Toots
|
||||
Rectangle {
|
||||
id: contentWarningBg
|
||||
color: Theme.highlightDimmerColor
|
||||
visible: status_spoiler_text.length > 0
|
||||
anchors.fill: parent
|
||||
|
@ -320,7 +323,7 @@ BackgroundItem {
|
|||
model.reblogged = !model.reblogged
|
||||
}
|
||||
|
||||
Image {
|
||||
Icon {
|
||||
id: icRT
|
||||
source: "image://theme/icon-s-retweet?" + (!model.reblogged ? Theme.highlightColor : Theme.primaryColor)
|
||||
width: Theme.iconSizeExtraSmall
|
||||
|
@ -347,9 +350,9 @@ BackgroundItem {
|
|||
MenuItem {
|
||||
id: mnuFavourite
|
||||
visible: model.type !== "follow"
|
||||
text: typeof model.favourited !== "undefined" && model.favourited ? qsTr("Unfavorite") : qsTr("Favorite")
|
||||
text: typeof model.status_favourited !== "undefined" && model.status_favourited ? qsTr("Unfavorite") : qsTr("Favorite")
|
||||
onClicked: {
|
||||
var status = typeof model.favourited !== "undefined" && model.favourited
|
||||
var status = typeof model.status_favourited !== "undefined" && model.status_favourited
|
||||
worker.sendMessage({
|
||||
"conf" : Logic.conf,
|
||||
"params" : [],
|
||||
|
@ -358,25 +361,25 @@ BackgroundItem {
|
|||
"action" : "statuses/"+model.status_id+"/" + (status ? "unfavourite" : "favourite")
|
||||
})
|
||||
model.status_favourites_count = !status ? model.status_favourites_count+1 : (model.status_favourites_count > 0 ? model.status_favourites_count-1 : model.status_favourites_count);
|
||||
model.favourited = !model.favourited
|
||||
model.status_favourited = !model.status_favourited
|
||||
}
|
||||
|
||||
Image {
|
||||
Icon {
|
||||
id: icFA
|
||||
source: "image://theme/icon-s-favorite?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
|
||||
width: Theme.iconSizeExtraSmall
|
||||
height: width
|
||||
anchors {
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
width: Theme.iconSizeExtraSmall
|
||||
height: width
|
||||
source: "image://theme/icon-s-favorite?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
|
||||
}
|
||||
|
||||
Label {
|
||||
text: status_favourites_count // from API.js
|
||||
text: status_favourites_count
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
color: !model.favourited ? Theme.highlightColor : Theme.primaryColor
|
||||
color: !model.status_favourited ? Theme.highlightColor : Theme.primaryColor
|
||||
anchors {
|
||||
left: icFA.right
|
||||
leftMargin: Theme.paddingMedium
|
||||
|
@ -385,6 +388,36 @@ BackgroundItem {
|
|||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
id: mnuBookmark
|
||||
visible: model.type !== "follow"
|
||||
text: typeof model.status_bookmarked !== "undefined" && model.status_bookmarked ? qsTr("Remove Bookmark") : qsTr("Bookmark")
|
||||
onClicked: {
|
||||
var status = typeof model.status_bookmarked !== "undefined" && model.status_bookmarked
|
||||
worker.sendMessage({
|
||||
"conf" : Logic.conf,
|
||||
"params" : [],
|
||||
"method" : "POST",
|
||||
"bgAction": true,
|
||||
"action" : "statuses/"+model.status_id+"/" + (status ? "unbookmark" : "bookmark")
|
||||
})
|
||||
model.status_bookmarked = !model.status_bookmarked
|
||||
}
|
||||
|
||||
Icon {
|
||||
source: "../../images/icon-s-bookmark.svg?"
|
||||
color: !model.status_bookmarked ? Theme.highlightColor : Theme.primaryColor
|
||||
width: Theme.iconSizeExtraSmall
|
||||
height: width
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MenuItem {
|
||||
id: mnuMention
|
||||
visible: model.type === "follow"
|
||||
|
@ -397,16 +430,16 @@ BackgroundItem {
|
|||
})
|
||||
}
|
||||
|
||||
Image {
|
||||
Icon {
|
||||
id: icMT
|
||||
source: "image://theme/icon-s-chat?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
|
||||
width: Theme.iconSizeExtraSmall
|
||||
height: width
|
||||
anchors {
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
leftMargin: Theme.horizontalPageMargin + Theme.paddingMedium
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
width: Theme.iconSizeExtraSmall
|
||||
height: width
|
||||
source: "image://theme/icon-s-chat?" + (!model.favourited ? Theme.highlightColor : Theme.primaryColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation>Folgt dir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Gruppe</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation>Konversation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Lesezeichen entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation>Lesezeichen</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -62,11 +62,11 @@
|
|||
<message>
|
||||
<source>Reply</source>
|
||||
<extracomment>"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Respuesta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Reply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cerrar respuesta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -201,7 +201,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Te sigue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Grupo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -234,7 +238,7 @@
|
|||
<message>
|
||||
<source>Requested</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Requerido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Follow</source>
|
||||
|
@ -267,7 +271,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Mention</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mencionar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -378,11 +382,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Mention</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mencionar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Conversación</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Eliminar marcador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation>Marcador</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation>Vous suit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Groupe</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation>Conversation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Retirer marque-page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation>Ajouter aux marque-pages</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -4,23 +4,23 @@
|
|||
<context>
|
||||
<name>API</name>
|
||||
<message>
|
||||
<location filename="../qml/lib/API.js" line="156"/>
|
||||
<location filename="../qml/lib/API.js" line="158"/>
|
||||
<source>favourited</source>
|
||||
<translation>ha apprezzato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/lib/API.js" line="167"/>
|
||||
<location filename="../qml/lib/API.js" line="169"/>
|
||||
<source>followed you</source>
|
||||
<translation>ha iniziato a seguirti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/lib/API.js" line="177"/>
|
||||
<location filename="../qml/lib/API.js" line="179"/>
|
||||
<source>boosted</source>
|
||||
<translation>ha condiviso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/lib/API.js" line="187"/>
|
||||
<location filename="../qml/lib/API.js" line="189"/>
|
||||
<location filename="../qml/lib/API.js" line="191"/>
|
||||
<source>said</source>
|
||||
<translation>ha detto</translation>
|
||||
</message>
|
||||
|
@ -28,59 +28,59 @@
|
|||
<context>
|
||||
<name>ConversationPage</name>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="110"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="111"/>
|
||||
<source>Copy Link to Clipboard</source>
|
||||
<extracomment>Use the translation of "Copy Link" for a shorter PullDownMenu label</extracomment>
|
||||
<translation>Copia link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="126"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="127"/>
|
||||
<source>Reply</source>
|
||||
<extracomment>"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"</extracomment>
|
||||
<translation>Risposta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="126"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="127"/>
|
||||
<source>Hide Reply</source>
|
||||
<translation>Chiudere Risposta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="235"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="234"/>
|
||||
<source>Write your warning here</source>
|
||||
<translation>Contenuto avviso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="268"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="267"/>
|
||||
<source>What's on your mind?</source>
|
||||
<translation>A cosa stai pensando?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="335"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="334"/>
|
||||
<source>Delete</source>
|
||||
<translation>Elimina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="433"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="432"/>
|
||||
<source>Public</source>
|
||||
<translation>Pubblico</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="436"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="435"/>
|
||||
<source>Unlisted</source>
|
||||
<translation>Non elencato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="439"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="438"/>
|
||||
<source>Followers-only</source>
|
||||
<translation>Solo ai seguaci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="442"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="441"/>
|
||||
<source>Direct</source>
|
||||
<translation>Diretto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="489"/>
|
||||
<location filename="../qml/pages/ConversationPage.qml" line="488"/>
|
||||
<source>Toot sent!</source>
|
||||
<translation>Toot è stato pubblicato!</translation>
|
||||
</message>
|
||||
|
@ -175,7 +175,7 @@
|
|||
<translation>@utente o #termine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/MainPage.qml" line="263"/>
|
||||
<location filename="../qml/pages/MainPage.qml" line="264"/>
|
||||
<source>New Toot</source>
|
||||
<translation>Nuovo toot</translation>
|
||||
</message>
|
||||
|
@ -238,12 +238,17 @@
|
|||
<context>
|
||||
<name>ProfileHeader</name>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/ProfileHeader.qml" line="129"/>
|
||||
<location filename="../qml/pages/components/ProfileHeader.qml" line="128"/>
|
||||
<source>Group</source>
|
||||
<translation>Gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/ProfileHeader.qml" line="146"/>
|
||||
<source>Follows you</source>
|
||||
<translation>Ti segue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/ProfileHeader.qml" line="166"/>
|
||||
<location filename="../qml/pages/components/ProfileHeader.qml" line="183"/>
|
||||
<source>Bot</source>
|
||||
<translation>Bot</translation>
|
||||
</message>
|
||||
|
@ -251,79 +256,79 @@
|
|||
<context>
|
||||
<name>ProfilePage</name>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="175"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="156"/>
|
||||
<source>About</source>
|
||||
<extracomment>If there's no good translation for "About", use "Details" (in details about profile).</extracomment>
|
||||
<translation>Dettagli</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="255"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="235"/>
|
||||
<source>Followers</source>
|
||||
<extracomment>Will show as: "35 Followers"</extracomment>
|
||||
<translation>Seguaci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="266"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="246"/>
|
||||
<source>Following</source>
|
||||
<extracomment>Will show as: "23 Following"</extracomment>
|
||||
<translation>Segue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="277"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="257"/>
|
||||
<source>Statuses</source>
|
||||
<extracomment>Will show as: "115 Statuses"</extracomment>
|
||||
<translation>Toots</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="293"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="296"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="273"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="276"/>
|
||||
<source>Mention</source>
|
||||
<translation>Menzionare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="308"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="288"/>
|
||||
<source>Unfollow</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Smetti di seguire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="310"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="290"/>
|
||||
<source>Requested</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Richiesto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="312"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="292"/>
|
||||
<source>Follow</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Segui</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="331"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="311"/>
|
||||
<source>Unmute</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Non silenziare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="333"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="313"/>
|
||||
<source>Mute</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Silenzia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="351"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="331"/>
|
||||
<source>Unblock</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Sblocca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="353"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="333"/>
|
||||
<source>Block</source>
|
||||
<extracomment>Is a button. Keep it as short as possible.</extracomment>
|
||||
<translation>Blocca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="369"/>
|
||||
<location filename="../qml/pages/ProfilePage.qml" line="349"/>
|
||||
<source>Open in Browser</source>
|
||||
<translation>Aprire nel browser</translation>
|
||||
</message>
|
||||
|
@ -440,33 +445,43 @@
|
|||
<context>
|
||||
<name>VisualContainer</name>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="309"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="312"/>
|
||||
<source>Unboost</source>
|
||||
<translation>Annulla condivisione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="309"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="312"/>
|
||||
<source>Boost</source>
|
||||
<translation>Condividi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="350"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="353"/>
|
||||
<source>Unfavorite</source>
|
||||
<translation>Annulla apprezzamento</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="350"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="353"/>
|
||||
<source>Favorite</source>
|
||||
<translation>Apprezzato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="391"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="394"/>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Elimina segnalibro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="394"/>
|
||||
<source>Bookmark</source>
|
||||
<translation>Aggiungi segnalibro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="424"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="427"/>
|
||||
<source>Mention</source>
|
||||
<translation>Menzionare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="420"/>
|
||||
<location filename="../qml/pages/components/VisualContainer.qml" line="453"/>
|
||||
<source>Conversation</source>
|
||||
<translation>Conversazione</translation>
|
||||
</message>
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Write your warning here</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Waarschuwingstekst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>What's on your mind?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Wat wil je kwijt?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete</source>
|
||||
|
@ -41,32 +41,32 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Public</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Openbaar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlisted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Minder openbaar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Followers-only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Alleen volgers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Direct</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Direct</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toot sent!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Toot verzonden!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reply</source>
|
||||
<extracomment>"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Antwoord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Reply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Antwoord verbergen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -106,7 +106,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Enter a valid Mastodon instance URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Geldig Mastodon URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
|
@ -201,7 +201,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Volgt jou</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Groep</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -267,7 +271,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Mention</source>
|
||||
<translation type="unfinished">Vermelden</translation>
|
||||
<translation>Vermelden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -382,7 +386,15 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Conversatie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Bookmarken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation>Bladwijzer verwijderen</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -203,6 +203,10 @@
|
|||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ProfilePage</name>
|
||||
|
@ -384,5 +388,13 @@
|
|||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -62,11 +62,11 @@
|
|||
<message>
|
||||
<source>Reply</source>
|
||||
<extracomment>"Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Reply</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Reply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Hide Reply</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -201,7 +201,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Follows you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Follows you</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Group</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -382,7 +386,15 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Conversation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Conversation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Bookmark</source>
|
||||
<translation>Remove Bookmark</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bookmark</source>
|
||||
<translation>Bookmark</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
Loading…
Reference in a new issue