Merge branch 'ui-improvements'

This commit is contained in:
molan-git 2020-07-12 09:23:55 +02:00
commit 42c4964d8f
42 changed files with 1122 additions and 984 deletions

View file

@ -14,9 +14,9 @@ TARGET = harbour-tooterb
CONFIG += sailfishapp
QT += network dbus sql
QT += multimedia
CONFIG += link_pkgconfig
PKGCONFIG += sailfishapp
PKGCONFIG += \
PKGCONFIG += sailfishapp \
nemonotifications-qt5
DEFINES += "APPVERSION=\\\"$${SPECVERSION}\\\""
@ -58,16 +58,16 @@ DISTFILES += qml/harbour-tooterb.qml \
qml/pages/SettingsPage.qml \
qml/pages/components/InfoBanner.qml \
qml/pages/components/MediaFullScreen.qml \
qml/pages/components/MyMedia.qml \
qml/pages/components/NavigationPanel.qml \
qml/pages/components/ProfileImage.qml \
qml/pages/components/VisualContainer.qml \
qml/pages/components/MiniStatus.qml \
qml/pages/components/MiniHeader.qml \
qml/pages/components/ItemUser.qml \
qml/pages/components/MyList.qml \
qml/pages/components/Navigation.qml \
qml/pages/components/ProfileHeader.qml \
qml/pages/components/MediaBlock.qml \
qml/pages/components/MyImage.qml \
qml/cover/CoverPage.qml \
qml/pages/MainPage.qml \
qml/pages/LoginPage.qml \

View file

@ -87,5 +87,4 @@ ApplicationWindow {
activate()
}
}
}

View file

@ -2,8 +2,6 @@
<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"/>
<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.74ZM16,18.55a1.07,1.07,0,0,1,.69.24l9.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.79A1.07,1.07,0,0,1,16,18.55Z" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 776 B

After

Width:  |  Height:  |  Size: 623 B

View file

@ -9,6 +9,7 @@ var mediator = (function(){
mediator.channels[channel].push({ context : this, callback : fn });
return this;
};
var publish = function(channel){
if(!mediator.channels[channel]) return false;
var args = Array.prototype.slice.call(arguments, 1);
@ -18,6 +19,7 @@ var mediator = (function(){
};
return this;
};
return {
channels : {},
publish : publish,
@ -28,6 +30,7 @@ var mediator = (function(){
}
};
}());
var init = function(){
console.log("db.version: "+db.version);
if(db.version === '') {
@ -35,7 +38,7 @@ var init = function(){
tx.executeSql('CREATE TABLE IF NOT EXISTS settings ('
+ ' key TEXT UNIQUE, '
+ ' value TEXT '
+');');
+ ');');
//tx.executeSql('INSERT INTO settings (key, value) VALUES (?, ?)', ["conf", "{}"]);
});
db.changeVersion('', '0.1', function(tx) {
@ -103,6 +106,7 @@ var tootParser = function(data){
console.log(ret)
}
var test = 1;
Qt.include("Mastodon.js")
@ -161,6 +165,7 @@ var notifier = function(item){
key: item.id
}
break;
case "follow":
msg = {
urgency: "critical",
@ -182,6 +187,7 @@ var notifier = function(item){
key: item.id
}
break;
case "mention":
msg = {
urgency: "critical",
@ -193,6 +199,7 @@ var notifier = function(item){
key: item.id
}
break;
default:
//console.log(JSON.stringify(messageObject.data))
return;

View file

@ -10,10 +10,12 @@ var mastodonAPI = function(config) {
// modify initial config afterwards
config[key] = value;
},
getConfig: function(key) {
//get config key
return config[key];
},
get: function (endpoint) {
// for GET API calls
// can be called with two or three parameters
@ -67,6 +69,7 @@ var mastodonAPI = function(config) {
}
http.send();
},
post: function (endpoint) {
// for POST API calls
var postData, callback;
@ -113,6 +116,7 @@ var mastodonAPI = function(config) {
}
});*/
},
delete: function (endpoint, callback) {
// for DELETE API calls.
$.ajax({
@ -125,6 +129,7 @@ var mastodonAPI = function(config) {
}
});
},
stream: function (streamType, onData) {
// Event Stream Support
// websocket streaming is undocumented. i had to reverse engineer the fucking web client.
@ -132,7 +137,7 @@ var mastodonAPI = function(config) {
// user for your local home TL and notifications
// public for your federated TL
// public:local for your home TL
// hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump
// hashtag&tag=mastodonrocks for the stream of #mastodonrocks
// callback gets called whenever new data ist recieved
// callback { event: (eventtype), payload: {mastodon object as described in the api docs} }
// eventtype could be notification (=notification) or update (= new toot in TL)
@ -147,12 +152,10 @@ var mastodonAPI = function(config) {
onData(event);
};
es.onmessage = listener;
},
registerApplication: function (client_name, redirect_uri, scopes, website, callback) {
//register a new application
// OAuth Auth flow:
// First register the application
// 2) get a access code from a user (using the link, generation function below!)
@ -191,10 +194,12 @@ var mastodonAPI = function(config) {
}
http.send(params);
},
generateAuthLink: function (client_id, redirect_uri, responseType, scopes) {
return config.instance + "/oauth/authorize?client_id=" + client_id + "&redirect_uri=" + redirect_uri +
"&response_type=" + responseType + "&scope=" + scopes.join("+");
},
getAccessTokenFromAuthCode: function (client_id, client_secret, redirect_uri, code, callback) {
/*$.ajax({
url: config.instance + "/oauth/token",

View file

@ -10,7 +10,7 @@ WorkerScript.onMessage = function(msg) {
console.log("Conf > " + JSON.stringify(msg.conf))
console.log("Params > " + JSON.stringify(msg.params))
// order notifications in ASC order
/** order notifications in ASC order */
function orderNotifications(items){
for (var i = items.length-1; i > 0; i--) {
if (items[i].id > 0 ) //msg.conf.notificationLastID)
@ -18,14 +18,17 @@ WorkerScript.onMessage = function(msg) {
}
}
/** Logged-in status */
if (!msg.conf || !msg.conf.login) {
console.log("Not loggedin")
return;
}
/** Load images */
if (typeof msg.conf['loadImages'] !== "undefined")
loadImages = msg.conf['loadImages']
/** POST statuses */
var API = mastodonAPI({ instance: msg.conf.instance, api_user_token: msg.conf.api_user_token});
if (msg.method === "POST"){
API.post(msg.action, msg.params, function(data) {
@ -63,7 +66,7 @@ WorkerScript.onMessage = function(msg) {
} else if(msg.action === "notifications") {
// notification
// console.log("Is notification... parsing...")
console.log("Get notification list")
console.log(JSON.stringify(data[i]))
item = parseNotification(data[i]);
items.push(item)
@ -73,7 +76,9 @@ WorkerScript.onMessage = function(msg) {
console.log("ancestors")
for (var j = 0; j < data[i].length; j ++) {
item = parseToot(data[i][j]);
item['id'] = item['status_id']
item['id'] = item['status_id'];
if (typeof item['attachments'] === "undefined")
item['attachments'] = [];
items.push(item)
console.log(JSON.stringify(data[i][j]))
}
@ -82,7 +87,7 @@ WorkerScript.onMessage = function(msg) {
//console.log(JSON.stringify(i))
} else if(msg.action.indexOf("statuses") >-1 && msg.action.indexOf("context") >-1 && i === "descendants") {
// status ancestors toots - conversation
// status descendants toots - conversation
console.log("descendants")
for (var j = 0; j < data[i].length; j ++) {
item = parseToot(data[i][j]);
@ -94,16 +99,19 @@ WorkerScript.onMessage = function(msg) {
}
addDataToModel (msg.model, "append", items);
items = [];
} else if (data[i].hasOwnProperty("content")){
// console.log("Is toot... parsing...")
//console.log("Get Toot")
item = parseToot(data[i]);
item['id'] = item['status_id']
items.push(item)
} else {
WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i] })
}
}
}
if(msg.model && items.length)
addDataToModel(msg.model, msg.mode, items)
/*if(msg.action === "notifications")
@ -123,11 +131,10 @@ function addDataToModel (model, mode, items) {
model.insert(0,items[i])
}
}
model.sync()
}
// Get Account Data: Represents a user of Mastodon and their associated profile.
/** Function: Get Account Data */
function parseAccounts(collection, prefix, data) {
var res = collection;
@ -153,13 +160,12 @@ function parseAccounts(collection, prefix, data) {
//res[prefix + 'account_fields'] = data["fields"]
res[prefix + 'account_bot'] = data["bot"]
res[prefix + 'account_group'] = data["group"]
res[prefix + 'account_source'] = data["source"]
//console.log(JSON.stringify(res))
return (res);
}
// Get Notification Data
/** Function: Get Notification Data */
function parseNotification(data){
//console.log(JSON.stringify(data))
var item = {
@ -168,12 +174,12 @@ function parseNotification(data){
attachments: []
};
switch (item['type']){
case "mention":
if (!data.status) {
break;
}
item = parseToot(data.status)
item['typeIcon'] = "image://theme/icon-s-retweet"
item['typeIcon'] = "image://theme/icon-s-alarm"
item['type'] = "mention"
break;
@ -197,19 +203,18 @@ function parseNotification(data){
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])
item['status_reblog'] = true;
item['status_reblog'] = true
item['type'] = "favourite"
item['typeIcon'] = "image://theme/icon-s-favorite"
item['type'] = "favourite";
//item['retweetScreenName'] = item['reblog_account_username'];
break;
case "follow":
item['type'] = "follow";
item = parseAccounts(item, "", data["account"])
item = parseAccounts(item, "reblog_", data["account"])
item['content'] = data['account']['note']
//item['content'] = data['account']['note']
item['typeIcon'] = "../../images/icon-s-follow.svg"
item['attachments'] = []
//item['attachments'] = []
break;
default:
@ -222,6 +227,7 @@ function parseNotification(data){
return item;
}
/** Function: */
function collect() {
var ret = {};
var len = arguments.length;
@ -235,12 +241,13 @@ function collect() {
return ret;
}
/** Function: Get Status date */
function getDate(dateStr) {
var ts = new Date(dateStr);
return new Date(ts.getFullYear(), ts.getMonth(), ts.getDate(), 0, 0, 0)
}
// Get Status / Toot Data
/** Function: Get Status data */
function parseToot (data) {
var i = 0;
var item = {};
@ -253,7 +260,6 @@ function parseToot (data) {
item['status_spoiler_text'] = data["spoiler_text"]
item['status_visibility'] = data["visibility"]
item['status_language'] = data["language"]
item['status_uri'] = data["uri"]
item['status_url'] = data["url"]
item['status_replies_count'] = data["replies_count"]
@ -262,34 +268,39 @@ function parseToot (data) {
item['status_favourited'] = data["favourited"]
item['status_reblogged'] = data["reblogged"]
item['status_bookmarked'] = data["bookmarked"]
item['status_content'] = data["content"]
item['attachments'] = data['media_attachments']
item['status_in_reply_to_id'] = data["in_reply_to_id"]
item['status_in_reply_to_account_id'] = data["in_reply_to_account_id"]
item['status_reblog'] = data["reblog"] ? true : false
item['section'] = getDate(data["created_at"])
// If Toot is a Reblog
/** If Toot is a Reblog */
if(item['status_reblog']) {
item['type'] = "reblog";
item['typeIcon'] = "image://theme/icon-s-retweet"
item['status_id'] = data["reblog"]["id"];
item['status_spoiler_text'] = data["reblog"]["spoiler_text"]
item['status_id'] = data["reblog"]["id"]
item['status_sensitive'] = data["reblog"]["sensitive"]
item['status_spoiler_text'] = data["reblog"]["spoiler_text"]
item['status_replies_count'] = data["reblog"]["replies_count"]
item['status_reblogs_count'] = data["reblog"]["reblogs_count"]
item['status_favourites_count'] = data["reblog"]["favourites_count"]
item = parseAccounts(item, "", data['reblog']["account"])
item = parseAccounts(item, "reblog_", data["account"])
} else {
item = parseAccounts(item, "", data["account"])
}
/** Replace HTML content in Toots */
item['content'] = data['content']
.replaceAll('</span><span class="invisible">', '')
.replaceAll('<span class="invisible">', '')
.replaceAll('</span><span class="ellipsis">', '')
.replaceAll('class=""', '');
item['attachments'] = [];
// Media attachements in Toots
for(i = 0; i < data['media_attachments'].length ; i++) {
/** Media attachements in Toots */
item['attachments'] = [];
for(i = 0; i < data['media_attachments'].length; i++) {
var attachments = data['media_attachments'][i];
item['content'] = item['content'].replaceAll(attachments['text_url'], '')
var tmp = {
@ -301,7 +312,7 @@ function parseToot (data) {
item['attachments'].push(tmp)
}
// Media attachements in Reblogs
/** Media attachements in Reblogs */
if(item['status_reblog']) {
for(i = 0; i < data['reblog']['media_attachments'].length ; i++) {
var attachments = data['reblog']['media_attachments'][i];
@ -319,7 +330,7 @@ function parseToot (data) {
return addEmojis(item, data);
}
// Display function for custom Emojis in Toots
/** Function: Display custom Emojis in Toots */
function addEmojis(item, data) {
var emoji, i;
for (i = 0; i < data["emojis"].length; i++) {

View file

@ -8,28 +8,37 @@ import "./components/"
Page {
id: conversationPage
property string type
property string description: ""
property string headerTitle: ""
property string suggestedUser: ""
property ListModel suggestedModel
property string toot_id: ""
property string toot_url: ""
property string toot_uri: ""
property int tootMaxChar: 500;
property ListModel mdl
property int tootMaxChar: 500
property bool bot: false //otherwise ReferenceError ProfileHeader.qml
property bool followed_by: false //otherwise ReferenceError ProfileHeader.qml
property bool locked: false //otherwise ReferenceError ProfileHeader.qml
property bool group: false //otherwise ReferenceError ProfileHeader.qml
property ListModel mdl
property string type
property string username: ""
property string headerTitle: ""
property string suggestedUser: ""
property string status_id: ""
property string status_url: ""
property string status_uri: ""
property string status_link:
if (status_url === "") {
var test = status_uri.split("/")
console.log(status_uri)
console.log(JSON.stringify(test))
console.log(JSON.stringify(test.length))
if (test.length === 8 && (test[7] === "activity")) {
var urialt = status_uri.replace("activity", "")
status_link = urialt
}
else status_link = status_uri
} else status_link = status_url
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
console.log(suggestedUser)
suggestedModel = Qt.createQmlObject(
'import QtQuick 2.0; ListModel { }',
Qt.application, 'InternalQmlObject'
)
suggestedModel = Qt.createQmlObject( 'import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject' )
predictionList.visible = false
if (suggestedUser.length > 0) {
var msg = {
@ -58,18 +67,12 @@ Page {
WorkerScript {
id: worker
source: "../lib/Worker.js"
onMessage: {
console.log(JSON.stringify(messageObject))
}
}
ProfileHeader {
id: header
visible: false
onMessage: { console.log(JSON.stringify(messageObject)) }
}
SilicaListView {
id: myList
header: PageHeader {
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
}
@ -90,12 +93,11 @@ Page {
text: Format.formatDate(section, Formatter.DateMedium)
}
}
delegate: VisualContainer {
}
delegate: VisualContainer {}
onCountChanged: {
if (mdl)
for (var i = 0; i < mdl.count; i++) {
if (mdl.get(i).status_id === toot_id) {
if (mdl.get(i).status_id === status_id) {
console.log(mdl.get(i).status_id)
positionViewAtIndex(i, ListView.Center)
}
@ -106,31 +108,25 @@ Page {
id: pulleyConversation
visible: type === "reply"
MenuItem {
text: qsTr("Open in Browser")
onClicked: {
Qt.openUrlExternally(status_link)
}
}
MenuItem {
//: Use the translation of "Copy Link" for a shorter PullDownMenu label
text: qsTr("Copy Link to Clipboard")
onClicked: if (toot_url === "") {
var test = toot_uri.split("/")
console.log(toot_uri)
console.log(JSON.stringify(test))
console.log(JSON.stringify(test.length))
if (test.length === 8 && (test[7] === "activity")) {
var urialt = toot_uri.replace("activity", "")
Clipboard.text = urialt
}
else Clipboard.text = toot_uri
} else Clipboard.text = toot_url
onClicked: Clipboard.text = status_link
}
MenuItem {
//: "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
text: !panel.open ? qsTr("Reply") : qsTr("Hide Reply")
visible: type == "reply"
onClicked: if (!panel.open) {
panel.open = true
} else panel.open = false
onClicked: !panel.open ? panel.open = true : panel.open = false
}
}
}
@ -142,20 +138,16 @@ Page {
anchors {
left: panel.left
right: panel.right
bottom: if (panel.open == true) {
panel.top
} else {
hiddenPanel.top
}
bottom: panel.open == true ? panel.top : hiddenPanel.top
}
SilicaListView {
rotation: 180
id: predictionResults
rotation: 180 // shows best matching result on the bottom
anchors.fill: parent
model: suggestedModel
clip: true
quickScroll: false
VerticalScrollDecorator {}
delegate: ItemUser {
rotation: 180
onClicked: {
@ -171,7 +163,6 @@ Page {
+ model.account_acct
+ ' '
+ textOperations.text.substring(textOperations.selectionEnd).trim()
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
}
}
@ -180,21 +171,20 @@ Page {
positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
}
}
VerticalScrollDecorator {}
}
}
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)
height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0) + btnContentWarning.height + Theme.paddingMedium + (warningContent.visible ? warningContent.height : 0)
dock: Dock.Bottom
open: true
animationDuration: 300
Rectangle {
id: progressBarBg
width: parent.width
height: progressBar.height
color: Theme.highlightBackgroundColor
@ -225,17 +215,18 @@ Page {
autoScrollEnabled: true
labelVisible: false
font.pixelSize: Theme.fontSizeSmall
//: placeholderText in Toot content warning panel
placeholderText: qsTr("Write your warning here")
placeholderColor: palette.highlightColor
color: palette.highlightColor
horizontalAlignment: Text.AlignLeft
EnterKey.onClicked: {}
anchors {
top: parent.top
topMargin: Theme.paddingMedium
left: parent.left
right: parent.right
}
EnterKey.onClicked: {}
}
TextInput {
@ -247,18 +238,19 @@ Page {
id: toot
autoScrollEnabled: true
labelVisible: false
text: description !== "" && (description.charAt(0) === '@'
|| description.charAt(
0) === '#') ? description + ' ' : ''
height: if (type !== "reply") {
Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight))
}
else {
Math.max(conversationPage.height / 4, Math.min(conversationPage.height * 0.65, implicitHeight))
}
horizontalAlignment: Text.AlignLeft
//: placeholderText in Toot text panel
placeholderText: qsTr("What's on your mind?")
font.pixelSize: Theme.fontSizeSmall
text: username !== "" && (username.charAt(0) === '@'
|| username.charAt(
0) === '#') ? username + ' ' : ''
height: if (type !== "reply") {
isPortrait ? Math.max(conversationPage.height / 3, Math.min(conversationPage.height * 0.65, implicitHeight)) : Math.max(conversationPage.height / 2, Math.min(conversationPage.height * 0.65, implicitHeight))
}
else {
isPortrait ? Math.max(conversationPage.height / 4, Math.min(conversationPage.height * 0.65, implicitHeight)) : Math.max(conversationPage.height / 2.5, Math.min(conversationPage.height * 0.65, implicitHeight))
}
horizontalAlignment: Text.AlignLeft
anchors {
top: warningContent.bottom
topMargin: Theme.paddingMedium
@ -274,7 +266,6 @@ Page {
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) === "@") {
@ -302,7 +293,7 @@ Page {
rightMargin: Theme.paddingSmall
}
onSelectionChanged: { console.log(selection) }
onClicked: pageStack.push(emojiSelect)
onClicked: pageStack.push(emojiDialog)
}
SilicaGridView {
@ -313,13 +304,14 @@ Page {
height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
model: mediaModel
cellWidth: uploadedImages.width / 4
cellHeight: Theme.itemSizeExtraLarge
cellHeight: isPortrait ? cellWidth : Theme.itemSizeExtraLarge
delegate: BackgroundItem {
id: myDelegate
width: uploadedImages.cellWidth
height: uploadedImages.cellHeight
RemorseItem {
id: remorse
cancelText: ""
}
Image {
@ -331,7 +323,7 @@ Page {
var idx = index
console.log(idx)
//mediaModel.remove(idx)
remorse.execute(myDelegate, qsTr("Delete"), function () {
remorse.execute(myDelegate, "", function () {
mediaModel.remove(idx)
})
}
@ -363,32 +355,30 @@ Page {
IconButton {
id: btnContentWarning
icon.source: "image://theme/icon-s-warning?" + ( pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor) )
onClicked: warningContent.visible = !warningContent.visible
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
}
IconButton {
id: btnAddImage
enabled: mediaModel.count < 4
icon.source: "image://theme/icon-s-attach?" + ( pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor) )
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})
var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", { "allowedOrientations": Orientation.All })
imagePicker.selectedContentChanged.connect(function () {
var imagePath = imagePicker.selectedContent
console.log(imagePath)
@ -421,12 +411,6 @@ Page {
ComboBox {
id: privacy
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
left: btnAddImage.right
right: btnSend.left
}
menu: ContextMenu {
MenuItem {
text: qsTr("Public")
@ -441,19 +425,24 @@ Page {
text: qsTr("Direct")
}
}
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
left: btnAddImage.right
right: btnSend.left
}
}
IconButton {
id: btnSend
icon.source: "image://theme/icon-m-send?"
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
icon.source: "image://theme/icon-m-send?" + (pressed ? Theme.highlightColor : Theme.primaryColor)
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
anchors {
top: toot.bottom
topMargin: -Theme.paddingSmall * 1.5
right: parent.right
rightMargin: Theme.paddingSmall
}
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
onClicked: {
var visibility = ["public", "unlisted", "private", "direct"]
var media_ids = []
@ -473,8 +462,8 @@ Page {
},
"conf": Logic.conf
}
if (toot_id)
msg.params['in_reply_to_id'] = (toot_id) + ""
if (status_id)
msg.params['in_reply_to_id'] = (status_id) + ""
if (warningContent.visible && warningContent.text.length > 0) {
msg.params['sensitive'] = 1
@ -492,9 +481,11 @@ Page {
Rectangle {
id: uploadProgress
color: Theme.highlightBackgroundColor
anchors.bottom: parent.bottom
anchors.left: parent.left
height: Theme.itemSizeSmall * 0.05
anchors {
bottom: parent.bottom
left: parent.left
}
}
}
@ -564,9 +555,9 @@ Page {
color: Theme.highlightBackgroundColor
opacity: 0.2
anchors {
top: parent.top
left: parent.left
right: parent.right
top: parent.top
}
}
@ -577,15 +568,15 @@ Page {
color: Theme.highlightBackgroundColor
opacity: 0.7
anchors {
left: parent.left
top: parent.top
left: parent.left
}
}
}
EmojiSelect {
id: emojiSelect
id: emojiDialog
}
InfoBanner {

View file

@ -72,38 +72,35 @@ Page {
);
}
}
Label {
id: serviceDescr
text: qsTr("Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly.")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
wrapMode: Text.WordWrap
width: parent.width
anchors {
left: parent.left
right: parent.right
topMargin: Theme.paddingMedium
left: parent.left
leftMargin: Theme.horizontalPageMargin
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
width: parent.width
wrapMode: Text.WordWrap
color: Theme.highlightColor
font.pixelSize: Theme.fontSizeExtraSmall
text: qsTr("Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly.")
}
}
}
SilicaWebView {
id: webView
visible: false
opacity: 0
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
}
opacity: 0
onLoadingChanged: {
console.log(url)
if (
@ -154,6 +151,7 @@ Page {
}
FadeAnimation on opacity {}
PullDownMenu {
MenuItem {
text: qsTr("Reload")

View file

@ -12,14 +12,15 @@ Page {
allowedOrientations: Orientation.All
// Docked Navigation panel
DockedPanel {
id: infoPanel
open: true
width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
width: isPortrait ? parent.width : Theme.itemSizeLarge
height: isPortrait ? Theme.itemSizeLarge : parent.height
dock: isPortrait ? Dock.Bottom : Dock.Right
Navigation {
NavigationPanel {
id: navigation
isPortrait: !mainPage.isPortrait
onSlideshowShow: {
@ -32,46 +33,46 @@ Page {
VisualItemModel {
id: visualModel
MyList{
MyList {
id: tlHome
title: qsTr("Home")
type: "timelines/home"
mdl: Logic.modelTLhome
width: parent.itemWidth
width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
MyList{
MyList {
id: tlNotifications
title: qsTr("Notifications")
type: "notifications"
notifier: true
mdl: Logic.modelTLnotifications
width: parent.itemWidth
width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
MyList{
MyList {
id: tlLocal
title: qsTr("Local")
type: "timelines/public?local=true"
//params: ["local", true]
mdl: Logic.modelTLlocal
width: parent.itemWidth
width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
MyList{
MyList {
id: tlPublic
title: qsTr("Federated")
type: "timelines/public"
mdl: Logic.modelTLpublic
width: parent.itemWidth
width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
}
Item {
@ -80,7 +81,7 @@ Page {
property ListModel mdl: ListModel {}
property string search
width: parent.itemWidth
width: isPortrait ? parent.itemWidth : parent.itemWidth - Theme.itemSizeLarge
height: parent.itemHeight
onSearchChanged: {
console.log(search)
@ -134,7 +135,7 @@ Page {
mdl: ListModel {}
width: parent.width
height: parent.height
onOpenDrawer: infoPanel.open = setDrawer
onOpenDrawer: isPortrait ? infoPanel.open = setDrawer : infoPanel.open = true
anchors.fill: parent
currentIndex: -1 // otherwise currentItem will steal focus
header: Item {
@ -233,16 +234,16 @@ Page {
itemWidth: isTablet ? Math.round(parent.width) : parent.width
itemHeight: height
clip: true
model: visualModel
onCurrentIndexChanged: {
navigation.slideshowIndexChanged(currentIndex)
}
anchors {
fill: parent
top: parent.top
rightMargin: mainPage.isPortrait ? 0 : infoPanel.visibleSize
bottomMargin: mainPage.isPortrait ? infoPanel.visibleSize : 0
rightMargin: isPortrait ? 0 : infoPanel.visibleSize
bottomMargin: isPortrait ? infoPanel.visibleSize : 0
}
model: visualModel
Component.onCompleted: {
}
}
@ -255,7 +256,7 @@ Page {
icon.source: "image://theme/icon-l-add"
anchors {
right: (mainPage.isPortrait ? parent.right : infoPanel.left)
rightMargin: Theme.paddingLarge
rightMargin: isPortrait ? Theme.paddingLarge : Theme.paddingLarge * 0.8
bottom: (mainPage.isPortrait ? infoPanel.top : parent.bottom)
bottomMargin: Theme.paddingLarge
}

View file

@ -182,9 +182,9 @@ Page {
id: txtNote
text: note
textFormat: Text.StyledText
color: Theme.secondaryColor
color: Theme.secondaryHighlightColor
font.pixelSize: Theme.fontSizeExtraSmall
linkColor: Theme.highlightColor
linkColor: Theme.secondaryColor
wrapMode: Text.Wrap
width: parent.width - ( 2 * Theme.horizontalPageMargin )
anchors.horizontalCenter: parent.horizontalCenter
@ -227,37 +227,43 @@ Page {
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
Text {
Label {
id: txtFollowers
visible: true //followers_count ? true : false
text: followers_count+" "+
//: Will show as: "35 Followers"
qsTr("Followers")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
color: Theme.primaryColor
wrapMode: Text.Wrap
}
Text {
Label {
id: txtFollowing
visible: true //following_count ? true : false
text: following_count+" "+
//: Will show as: "23 Following"
qsTr("Following")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
color: Theme.primaryColor
wrapMode: Text.Wrap
}
Text {
Label {
id: txtStatuses
visible: true //statuses_count ? true : false
text: statuses_count+" "+
//: Will show as: "115 Statuses"
qsTr("Statuses")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.highlightColor
color: pressed ? Theme.highlightColor : Theme.primaryColor
wrapMode: Text.Wrap
MouseArea {
anchors.fill: parent
onClicked: expandingSection1.expanded = false
}
}
}
@ -299,7 +305,6 @@ Page {
'conf' : Logic.conf
};
worker.sendMessage(msg);
// to-do: create notification banner "Follow request sent!"
}
}
@ -338,20 +343,10 @@ Page {
'params' : [],
'action' : "accounts/" + user_id + (blocking ? '/unblock':'/block'),
'conf' : Logic.conf
};
worker.sendMessage(msg);
}
worker.sendMessage(msg)
}
}
Button {
id: btnBrowser
text: qsTr("Open in Browser")
preferredWidth: Theme.buttonWidthMedium
anchors.horizontalCenter: parent.horizontalCenter
onClicked: {
Qt.openUrlExternally(url)
}
}
Rectangle { // dummy item for spacing

View file

@ -2,11 +2,9 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
Component {
id: emojiComponent
Dialog {
id: emoticonsDialog
Dialog {
id: emojiDialog
allowedOrientations: Orientation.All
canAccept: false //selector.currentIndex >= 0
onAcceptPendingChanged: {
if (acceptPending) {
@ -14,6 +12,13 @@ Component {
// acceptDestinationInstance.category = selector.value
}
}
anchors.top: parent.top
Column {
id: emojiColumn
spacing: Theme.paddingLarge
width: parent.width
height: parent.height
SilicaGridView {
id: gridView
@ -21,75 +26,175 @@ Component {
title: qsTr("Emojis")
description: qsTr("Tap to insert")
}
cellWidth: gridView.width / 6
cellWidth: isPortrait ? gridView.width / 6 : gridView.width / 10
cellHeight: cellWidth
anchors.fill: parent
width: parent.width
height: parent.height
model: ListModel {
ListElement { section: "smileys"; glyph: "😁" }
ListElement { section: "smileys"; glyph: "😂" }
ListElement { section: "smileys"; glyph: "😃" }
ListElement { section: "smileys"; glyph: "😄" }
ListElement { section: "smileys"; glyph: "😅" }
ListElement { section: "smileys"; glyph: "😆" }
ListElement { section: "smileys"; glyph: "😉" }
ListElement { section: "smileys"; glyph: "😊" }
ListElement { section: "smileys"; glyph: "😋" }
ListElement { section: "smileys"; glyph: "😎" }
ListElement { section: "smileys"; glyph: "😌" }
ListElement { section: "smileys"; glyph: "😍" }
ListElement { section: "smileys"; glyph: "😘" }
ListElement { section: "smileys"; glyph: "😏" }
ListElement { section: "smileys"; glyph: "😒" }
ListElement { section: "smileys"; glyph: "😓" }
ListElement { section: "smileys"; glyph: "😔" }
ListElement { section: "smileys"; glyph: "😖" }
ListElement { section: "smileys"; glyph: "😚" }
ListElement { section: "smileys"; glyph: "😜" }
ListElement { section: "smileys"; glyph: "😝" }
ListElement { section: "smileys"; glyph: "😞" }
ListElement { section: "smileys"; glyph: "😠" }
ListElement { section: "smileys"; glyph: "😡" }
ListElement { section: "smileys"; glyph: "😢" }
ListElement { section: "smileys"; glyph: "😣" }
ListElement { section: "smileys"; glyph: "😤" }
ListElement { section: "smileys"; glyph: "😥" }
ListElement { section: "smileys"; glyph: "😨" }
ListElement { section: "smileys"; glyph: "😩" }
ListElement { section: "smileys"; glyph: "😪" }
ListElement { section: "smileys"; glyph: "😫" }
ListElement { section: "smileys"; glyph: "😭" }
ListElement { section: "smileys"; glyph: "😰" }
ListElement { section: "smileys"; glyph: "😱" }
ListElement { section: "smileys"; glyph: "😲" }
ListElement { section: "smileys"; glyph: "😳" }
ListElement { section: "smileys"; glyph: "😵" }
ListElement { section: "smileys"; glyph: "😷" }
ListElement { section: "smileys"; glyph: "😸" }
ListElement { section: "smileys"; glyph: "😹" }
ListElement { section: "smileys"; glyph: "😺" }
ListElement { section: "smileys"; glyph: "😻" }
ListElement { section: "smileys"; glyph: "😼" }
ListElement { section: "smileys"; glyph: "😽" }
ListElement { section: "smileys"; glyph: "😾" }
ListElement { section: "smileys"; glyph: "😿" }
ListElement { section: "smileys"; glyph: "🙀" }
ListElement { section: "Smileys"; glyph: "😄" }
ListElement { section: "Smileys"; glyph: "😃" }
ListElement { section: "Smileys"; glyph: "😀" }
ListElement { section: "Smileys"; glyph: "😊" }
ListElement { section: "Smileys"; glyph: "☺" }
ListElement { section: "Smileys"; glyph: "😉" }
ListElement { section: "Smileys"; glyph: "😍" }
ListElement { section: "Smileys"; glyph: "😘" }
ListElement { section: "Smileys"; glyph: "😚" }
ListElement { section: "Smileys"; glyph: "😗" }
ListElement { section: "Smileys"; glyph: "😙" }
ListElement { section: "Smileys"; glyph: "😜" }
ListElement { section: "Smileys"; glyph: "😝" }
ListElement { section: "Smileys"; glyph: "😛" }
ListElement { section: "Smileys"; glyph: "😳" }
ListElement { section: "Smileys"; glyph: "😁" }
ListElement { section: "Smileys"; glyph: "😔" }
ListElement { section: "Smileys"; glyph: "😌" }
ListElement { section: "Smileys"; glyph: "😒" }
ListElement { section: "Smileys"; glyph: "😞" }
ListElement { section: "Smileys"; glyph: "😣" }
ListElement { section: "Smileys"; glyph: "😢" }
ListElement { section: "Smileys"; glyph: "😂" }
ListElement { section: "Smileys"; glyph: "😭" }
ListElement { section: "Smileys"; glyph: "😪" }
ListElement { section: "Smileys"; glyph: "😥" }
ListElement { section: "Smileys"; glyph: "😰" }
ListElement { section: "Smileys"; glyph: "😅" }
ListElement { section: "Smileys"; glyph: "😩" }
ListElement { section: "Smileys"; glyph: "😫" }
ListElement { section: "Smileys"; glyph: "😨" }
ListElement { section: "Smileys"; glyph: "😱" }
ListElement { section: "Smileys"; glyph: "😠" }
ListElement { section: "Smileys"; glyph: "😡" }
ListElement { section: "Smileys"; glyph: "😤" }
ListElement { section: "Smileys"; glyph: "😖" }
ListElement { section: "Smileys"; glyph: "😆" }
ListElement { section: "Smileys"; glyph: "😋" }
ListElement { section: "Smileys"; glyph: "😷" }
ListElement { section: "Smileys"; glyph: "😎" }
ListElement { section: "Smileys"; glyph: "😴" }
ListElement { section: "Smileys"; glyph: "😵" }
ListElement { section: "Smileys"; glyph: "😲" }
ListElement { section: "Smileys"; glyph: "😟" }
ListElement { section: "Smileys"; glyph: "😦" }
ListElement { section: "Smileys"; glyph: "😧" }
ListElement { section: "Smileys"; glyph: "😈" }
ListElement { section: "Smileys"; glyph: "👿" }
ListElement { section: "Smileys"; glyph: "😮" }
ListElement { section: "Smileys"; glyph: "😬" }
ListElement { section: "Smileys"; glyph: "😐" }
ListElement { section: "Smileys"; glyph: "😕" }
ListElement { section: "Smileys"; glyph: "😯" }
ListElement { section: "Smileys"; glyph: "😶" }
ListElement { section: "Smileys"; glyph: "😇" }
ListElement { section: "Smileys"; glyph: "😏" }
ListElement { section: "Smileys"; glyph: "😑" }
ListElement { section: "People and Fantasy"; glyph: "🙅" }
ListElement { section: "People and Fantasy"; glyph: "🙆" }
ListElement { section: "People and Fantasy"; glyph: "🙇" }
ListElement { section: "People and Fantasy"; glyph: "🙈" }
ListElement { section: "People and Fantasy"; glyph: "🙉" }
ListElement { section: "People and Fantasy"; glyph: "🙊" }
ListElement { section: "People and Fantasy"; glyph: "🙋" }
ListElement { section: "People and Fantasy"; glyph: "🙍" }
ListElement { section: "People and Fantasy"; glyph: "🙎" }
ListElement { section: "People and Fantasy"; glyph: "👍" }
ListElement { section: "People and Fantasy"; glyph: "👎" }
ListElement { section: "People and Fantasy"; glyph: "🙌" }
ListElement { section: "People and Fantasy"; glyph: "✊" }
ListElement { section: "People and Fantasy"; glyph: "💪" }
ListElement { section: "People and Fantasy"; glyph: "👉" }
ListElement { section: "People and Fantasy"; glyph: "🙏" }
ListElement { section: "Cat Faces"; glyph: "😺" }
ListElement { section: "Cat Faces"; glyph: "😸" }
ListElement { section: "Cat Faces"; glyph: "😻" }
ListElement { section: "Cat Faces"; glyph: "😽" }
ListElement { section: "Cat Faces"; glyph: "😼" }
ListElement { section: "Cat Faces"; glyph: "🙀" }
ListElement { section: "Cat Faces"; glyph: "😿" }
ListElement { section: "Cat Faces"; glyph: "😹" }
ListElement { section: "Cat Faces"; glyph: "😾" }
ListElement { section: "Other Faces"; glyph: "👹" }
ListElement { section: "Other Faces"; glyph: "👺" }
ListElement { section: "Other Faces"; glyph: "🙈" }
ListElement { section: "Other Faces"; glyph: "🙉" }
ListElement { section: "Other Faces"; glyph: "🙊" }
ListElement { section: "Other Faces"; glyph: "💀" }
ListElement { section: "Other Faces"; glyph: "👽" }
ListElement { section: "Misc Emoji"; glyph: "🔥" }
ListElement { section: "Misc Emoji"; glyph: "✨" }
ListElement { section: "Misc Emoji"; glyph: "🌟" }
ListElement { section: "Misc Emoji"; glyph: "💫" }
ListElement { section: "Misc Emoji"; glyph: "💥" }
ListElement { section: "Misc Emoji"; glyph: "💢" }
ListElement { section: "Misc Emoji"; glyph: "💦" }
ListElement { section: "Misc Emoji"; glyph: "💧" }
ListElement { section: "Misc Emoji"; glyph: "💤" }
ListElement { section: "Misc Emoji"; glyph: "💨" }
ListElement { section: "Misc Emoji"; glyph: "👂" }
ListElement { section: "Misc Emoji"; glyph: "👀" }
ListElement { section: "Misc Emoji"; glyph: "👃" }
ListElement { section: "Misc Emoji"; glyph: "👅" }
ListElement { section: "Misc Emoji"; glyph: "👄" }
ListElement { section: "Misc Emoji"; glyph: "👍" }
ListElement { section: "Misc Emoji"; glyph: "👎" }
ListElement { section: "Misc Emoji"; glyph: "👌" }
ListElement { section: "Misc Emoji"; glyph: "👊" }
ListElement { section: "Misc Emoji"; glyph: "✊" }
ListElement { section: "Misc Emoji"; glyph: "✌" }
ListElement { section: "Misc Emoji"; glyph: "👋" }
ListElement { section: "Misc Emoji"; glyph: "✋" }
ListElement { section: "Misc Emoji"; glyph: "👐" }
ListElement { section: "Misc Emoji"; glyph: "👆" }
ListElement { section: "Misc Emoji"; glyph: "👇" }
ListElement { section: "Misc Emoji"; glyph: "👉" }
ListElement { section: "Misc Emoji"; glyph: "👈" }
ListElement { section: "Misc Emoji"; glyph: "🙌" }
ListElement { section: "Misc Emoji"; glyph: "🙏" }
ListElement { section: "Misc Emoji"; glyph: "☝" }
ListElement { section: "Misc Emoji"; glyph: "👏" }
ListElement { section: "Misc Emoji"; glyph: "💪" }
ListElement { section: "Animals Emoji"; glyph: "🐶" }
ListElement { section: "Animals Emoji"; glyph: "🐺" }
ListElement { section: "Animals Emoji"; glyph: "🐱" }
ListElement { section: "Animals Emoji"; glyph: "🐭" }
ListElement { section: "Animals Emoji"; glyph: "🐹" }
ListElement { section: "Animals Emoji"; glyph: "🐰" }
ListElement { section: "Animals Emoji"; glyph: "🐸" }
ListElement { section: "Animals Emoji"; glyph: "🐯" }
ListElement { section: "Animals Emoji"; glyph: "🐨" }
ListElement { section: "Animals Emoji"; glyph: "🐘" }
ListElement { section: "Animals Emoji"; glyph: "🐼" }
ListElement { section: "Animals Emoji"; glyph: "🐧" }
ListElement { section: "Animals Emoji"; glyph: "🐦" }
ListElement { section: "Animals Emoji"; glyph: "🐤" }
ListElement { section: "Animals Emoji"; glyph: "🐥" }
ListElement { section: "Animals Emoji"; glyph: "🐣" }
ListElement { section: "Animals Emoji"; glyph: "🐔" }
ListElement { section: "Animals Emoji"; glyph: "🐍" }
ListElement { section: "Animals Emoji"; glyph: "🐢" }
ListElement { section: "Animals Emoji"; glyph: "🐛" }
ListElement { section: "Animals Emoji"; glyph: "🐝" }
ListElement { section: "Animals Emoji"; glyph: "🐜" }
ListElement { section: "Animals Emoji"; glyph: "🐞" }
ListElement { section: "Animals Emoji"; glyph: "🐌" }
ListElement { section: "Animals Emoji"; glyph: "🐙" }
ListElement { section: "Animals Emoji"; glyph: "🐚" }
ListElement { section: "Animals Emoji"; glyph: "🐠" }
ListElement { section: "Animals Emoji"; glyph: "🐟" }
ListElement { section: "Animals Emoji"; glyph: "🐬" }
ListElement { section: "Animals Emoji"; glyph: "🐳" }
ListElement { section: "Animals Emoji"; glyph: "🐋" }
ListElement { section: "Animals Emoji"; glyph: "🐄" }
ListElement { section: "Animals Emoji"; glyph: "🐏" }
ListElement { section: "Animals Emoji"; glyph: "🐀" }
ListElement { section: "Animals Emoji"; glyph: "🐃" }
ListElement { section: "Animals Emoji"; glyph: "🐅" }
ListElement { section: "Animals Emoji"; glyph: "🐇" }
ListElement { section: "Animals Emoji"; glyph: "🐉" }
ListElement { section: "Animals Emoji"; glyph: "🐎" }
ListElement { section: "Animals Emoji"; glyph: "🐐" }
ListElement { section: "Animals Emoji"; glyph: "🐓" }
ListElement { section: "Animals Emoji"; glyph: "🐕" }
ListElement { section: "Animals Emoji"; glyph: "🐖" }
ListElement { section: "Animals Emoji"; glyph: "🐁" }
ListElement { section: "Animals Emoji"; glyph: "🐂" }
ListElement { section: "Animals Emoji"; glyph: "🐲" }
ListElement { section: "Animals Emoji"; glyph: "🐡" }
ListElement { section: "Animals Emoji"; glyph: "🐊" }
ListElement { section: "Animals Emoji"; glyph: "🐫" }
ListElement { section: "Animals Emoji"; glyph: "🐪" }
ListElement { section: "Animals Emoji"; glyph: "🐆" }
ListElement { section: "Animals Emoji"; glyph: "🐈" }
ListElement { section: "Animals Emoji"; glyph: "🐩" }
ListElement { section: "Animals Emoji"; glyph: "🐾" }
ListElement { section: "Transport and Map"; glyph: "🚀" }
ListElement { section: "Transport and Map"; glyph: "🚃" }
@ -137,6 +242,7 @@ Component {
ListElement { section: "Horoscope Signs"; glyph: "♒" }
ListElement { section: "Horoscope Signs"; glyph: "♓" }
}
delegate: BackgroundItem {
width: gridView.cellWidth
height: gridView.cellHeight
@ -144,21 +250,21 @@ Component {
Label {
text: glyph
font.pixelSize: Theme.fontSizeLarge
color: (highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
color: highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
anchors.centerIn: parent
}
onClicked: {
var cursorPosition = toot.cursorPosition
toot.text = toot.text.substring(
0, cursorPosition) + model.glyph + toot.text.substring(
cursorPosition)
toot.cursorPosition = cursorPosition + model.glyph.length
emoticonsDialog.canAccept = true
emoticonsDialog.accept()
emojiDialog.canAccept = true
emojiDialog.accept()
}
}
VerticalScrollDecorator {flickable: listEmojis }
VerticalScrollDecorator { flickable: gridView }
}
}
}

View file

@ -5,8 +5,9 @@ import Sailfish.Silica 1.0
DockedPanel {
id: root
dock: Dock.Top
width: parent.width
width: isPortrait ? parent.width : Theme.buttonWidthLarge * 1.5
height: content.height
anchors.horizontalCenter: parent.horizontalCenter
Rectangle {
id: content

View file

@ -10,16 +10,14 @@ BackgroundItem {
width: parent.width
height: Theme.itemSizeMedium
Rectangle {
Item {
id: avatar
color: "transparent"
width: Theme.itemSizeExtraSmall
height: width
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: Theme.horizontalPageMargin
Image {
id: img
opacity: status === Image.Ready ? 1.0 : 0.0
@ -50,13 +48,14 @@ 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
})
}
}
Item {
id: userdescription
id: userDescription
height: account_acct.height + display_name.height
anchors.left: avatar.right
anchors.leftMargin: Theme.paddingLarge
@ -72,7 +71,6 @@ BackgroundItem {
truncationMode: TruncationMode.Fade
width: parent.width - Theme.paddingMedium
anchors.top: parent.top
}
Label {

View file

@ -14,7 +14,7 @@ Item {
height: height
Component.onCompleted: {
if (model && model.count && model.get(0).type === "video") {
while (model.count>1){
while (model.count>1) {
model.remove(model.count-1)
}
//console.log(JSON.stringify(model.get(0)))
@ -79,7 +79,7 @@ Item {
}
}
MyImage {
MyMedia {
id: placeholder1
width: 2
height: 1
@ -98,7 +98,7 @@ Item {
}
}
MyImage {
MyMedia {
id: placeholder2
width: 2
height: 1
@ -117,7 +117,7 @@ Item {
}
}
MyImage {
MyMedia {
id: placeholder3
width: 2
height: 1
@ -136,7 +136,7 @@ Item {
}
}
MyImage {
MyMedia {
id: placeholder4
width: 2
height: 1

View file

@ -1,6 +1,6 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import QtMultimedia 5.0
import QtMultimedia 5.6
FullscreenContentPage {
@ -21,15 +21,17 @@ FullscreenContentPage {
} else {
video.source = mediaURL
video.fillMode = VideoOutput.PreserveAspectFit
video.play()
videoFlickable.visible = true
playerIcon.visible = true
playerProgress.visible = true
video.play()
hideTimer.start()
}
}
Flickable {
SilicaFlickable {
id: videoFlickable
visible: false
clip: true
contentWidth: imageContainer.width
contentHeight: imageContainer.height
anchors.fill: parent
@ -49,7 +51,7 @@ FullscreenContentPage {
}
onStatusChanged: {
console.log(status)
switch (status){
switch (status) {
case MediaPlayer.Loading:
console.log("loading")
return;
@ -84,49 +86,27 @@ FullscreenContentPage {
}
}
onStopped: function() {
if (type != 'video')
if (type == 'gifv') {
video.play()
else
} else {
video.stop()
}
IconButton {
id: playerIcon
icon.source: "image://theme/icon-m-play"
anchors {
left: parent.left
bottom: parent.bottom
leftMargin: Theme.horizontalPageMargin
bottomMargin: Theme.horizontalPageMargin
}
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState)
video.pause()
else
video.play()
overlayIcons.active = true
hideTimer.stop()
}
}
ProgressBar {
id: playerProgress
indeterminate: true
width: 400
anchors {
verticalCenter: playerIcon.verticalCenter
left: playerIcon.right
right: parent.right
rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
bottomMargin: Theme.horizontalPageMargin
}
}
MouseArea {
anchors.fill: parent
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState)
if (video.playbackState === MediaPlayer.PlayingState) {
video.pause()
else
overlayIcons.active = true
hideTimer.stop()
} else {
video.play()
hideTimer.start()
}
}
}
@ -155,12 +135,11 @@ FullscreenContentPage {
}
Flickable {
SilicaFlickable {
id: imageFlickable
visible: false
contentWidth: imageContainer.width
contentHeight: imageContainer.height
clip: true
anchors.fill: parent
onHeightChanged: if (imagePreview.status === Image.Ready) {
imagePreview.fitToScreen()
@ -224,7 +203,6 @@ FullscreenContentPage {
property real minScale: 1.0
property real maxScale: 3.0
opacity: 0.3
anchors.fill: parent
enabled: imagePreview.status === Image.Ready
pinch.target: imagePreview
@ -250,6 +228,11 @@ FullscreenContentPage {
property: "scale"
from: imagePreview.scale
}
MouseArea {
anchors.fill: parent
onClicked: overlayIcons.active = !overlayIcons.active
}
}
}
@ -292,32 +275,86 @@ FullscreenContentPage {
}
}
Item {
id: overlayIcons
property bool active: true
enabled: active
anchors.fill: parent
opacity: active ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {}}
IconButton {
id: dismissBtn
y: Theme.paddingLarge
icon.source: "image://theme/icon-m-dismiss"
onClicked: pageStack.pop()
anchors {
top: parent.top
topMargin: Theme.horizontalPageMargin
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
onClicked: pageStack.pop()
}
IconButton {
id: mediaDlBtn
icon.source: "image://theme/icon-m-cloud-download"
anchors {
right: parent.right
rightMargin: Theme.horizontalPageMargin
bottom: parent.bottom
bottomMargin: Theme.horizontalPageMargin
}
icon.source: "image://theme/icon-m-cloud-download"
onClicked: {
var filename = mediaURL.split("/")
FileDownloader.downloadFile(mediaURL, filename[filename.length-1])
}
}
IconButton {
id: playerIcon
visible: false
icon.source: "image://theme/icon-m-play"
anchors {
left: parent.left
bottom: parent.bottom
leftMargin: Theme.horizontalPageMargin
bottomMargin: Theme.horizontalPageMargin
}
onClicked: function() {
if (video.playbackState === MediaPlayer.PlayingState) {
video.pause()
hideTimer.stop()
} else {
video.play()
hideTimer.start()
}
}
}
ProgressBar {
id: playerProgress
visible: false
indeterminate: true
width: 400
anchors {
verticalCenter: playerIcon.verticalCenter
left: playerIcon.right
right: parent.right
rightMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium
bottomMargin: Theme.horizontalPageMargin
}
}
Timer {
id: hideTimer
running: false
interval: 2000
onTriggered: {
overlayIcons.active = !overlayIcons.active
}
}
}
VerticalScrollDecorator { flickable: imageFlickable }
}

View file

@ -48,9 +48,9 @@ Item {
width: parent.width - Theme.paddingMedium
truncationMode: TruncationMode.Fade
anchors {
top: lblName.bottom
left: parent.left
leftMargin: Theme.paddingMedium
top: lblName.bottom
}
}

View file

@ -5,8 +5,8 @@ import Sailfish.Silica 1.0
Item {
id: miniStatus
visible: true
height: icon.height+Theme.paddingMedium
width: parent.width
height: icon.height+Theme.paddingMedium
Icon {
id: icon
@ -18,9 +18,9 @@ Item {
anchors {
top: parent.top
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingMedium
left: parent.left
leftMargin: Theme.horizontalPageMargin + Theme.iconSizeMedium - width
bottomMargin: Theme.paddingMedium
}
}

View file

@ -9,8 +9,6 @@ SilicaListView {
property string type
property string title
property string vwPlaceholderText: qsTr("Loading")
property string vwPlaceholderHint: qsTr("please wait...")
property string description
property ListModel mdl: []
property variant params: []
@ -29,7 +27,6 @@ SilicaListView {
onNotify: {
console.log(what + " - " + num)
}
signal openDrawer (bool setDrawer)
onOpenDrawer: {
//console.log("Open drawer: " + setDrawer)
@ -39,28 +36,41 @@ SilicaListView {
console.log("LIST send signal emitted with notice: " + notice)
}
header: PageHeader {
title: myList.title
description: myList.description
}
BusyIndicator {
size: BusyIndicatorSize.Large
running: myList.model.count === 0 && !viewPlaceHolder.visible
anchors.centerIn: parent
BusyLabel {
id: myListBusyLabel
running: model.count === 0
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
Timer {
interval: 5000
running: true
onTriggered: {
myListBusyLabel.visible = false
loadStatusPlaceholder.visible = true
}
}
}
ViewPlaceholder {
id: viewPlaceHolder
id: loadStatusPlaceholder
visible: false
enabled: model.count === 0
text: vwPlaceholderText
hintText: vwPlaceholderHint
text: qsTr("Nothing found")
}
PullDownMenu {
id: mainPulleyMenu
MenuItem {
text: qsTr("Settings")
visible: !profilePage
onClicked: {
pageStack.push(Qt.resolvedUrl("../SettingsPage.qml"), {})
}
@ -68,6 +78,7 @@ SilicaListView {
MenuItem {
text: qsTr("New Toot")
visible: !profilePage
onClicked: {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
headerTitle: qsTr("New Toot"),
@ -77,7 +88,15 @@ SilicaListView {
}
MenuItem {
text: qsTr("Load more")
text: qsTr("Open in Browser")
visible: !mainPage
onClicked: {
Qt.openUrlExternally(url)
}
}
MenuItem {
text: qsTr("Reload")
onClicked: {
loadData("prepend")
}
@ -101,7 +120,7 @@ SilicaListView {
console.log("CountChanged!")*/
}
footer: Item{
footer: Item {
visible: autoLoadMore
width: parent.width
height: Theme.itemSizeLarge
@ -116,10 +135,13 @@ SilicaListView {
}
BusyIndicator {
running: loadStarted
visible: myListBusyLabel.running ? false : true
size: BusyIndicatorSize.Small
running: loadStarted;
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
}
}
@ -163,10 +185,10 @@ SilicaListView {
function loadData(mode) {
var p = []
if (params.length)
if (params.length) {
for(var i = 0; i<params.length; i++)
p.push(params[i])
}
if (mode === "append" && model.count) {
p.push({name: 'max_id', data: model.get(model.count-1).id})
}
@ -180,7 +202,8 @@ SilicaListView {
'model' : model,
'mode' : mode,
'conf' : Logic.conf
};
}
console.log(JSON.stringify(msg))
if (type !== "")
worker.sendMessage(msg)

View file

@ -4,20 +4,39 @@ import QtMultimedia 5.0
Item {
id: myImage
id: myMedia
property string type : ""
property string previewURL: ""
property string mediaURL: ""
Rectangle {
opacity: 0.2
opacity: 0.4
color: Theme.highlightDimmerColor
anchors.fill: parent
}
Image {
source: "image://theme/icon-m-image"
visible: type == 'image'
opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
source: "image://theme/icon-m-image?"
anchors.centerIn: parent
}
Image {
visible: type == 'video' || type == "gifv"
opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
source: "image://theme/icon-m-file-video?"
anchors.centerIn: parent
}
Image {
visible: type == 'audio'
//opacity: img.status === Image.Ready ? 0.0 : 1.0
Behavior on opacity { FadeAnimator {} }
source: "image://theme/icon-m-file-audio?"
anchors.centerIn: parent
}
@ -31,6 +50,7 @@ Item {
Image {
id: img
visible: type != 'audio'
asynchronous: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
@ -59,30 +79,31 @@ Item {
Image {
id: videoIcon
visible: type === "video" || type === "gifv"
source: "image://theme/icon-l-play"
source: "image://theme/icon-l-play?"
anchors.centerIn: parent
}
BusyIndicator {
id: mediaLoader
visible: type != 'audio'
size: BusyIndicatorSize.Large
running: img.status !== Image.Ready
opacity: img.status === Image.Ready ? 0.0 : 1.0
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
}
Rectangle {
id: mediaWarning
color: Theme.highlightDimmerColor
visible: typeof status_sensitive != 'undefined' && status_sensitive ? true : false
anchors.fill: parent
visible: typeof status_sensitive != "undefined" && status_sensitive ? true : false
Image {
source: "image://theme/icon-l-attention?"+Theme.highlightColor
anchors.centerIn: parent
}
anchors.fill: parent
MouseArea {
anchors.fill: parent
onClicked: parent.visible = false

View file

@ -17,7 +17,7 @@ SilicaGridView {
ListModel {
id: listModel
ListElement {
icon: "image://theme/icon-m-home"
icon: "image://theme/icon-m-home?"
slug: "home"
name: "Home"
active: true
@ -25,14 +25,14 @@ SilicaGridView {
}
ListElement {
icon: "image://theme/icon-m-alarm"
icon: "image://theme/icon-m-alarm?"
slug: "notifications"
name: "Notifications"
active: false
}
ListElement {
icon: "image://theme/icon-m-whereami"
icon: "image://theme/icon-m-whereami?"
slug: "local"
name: "Local"
active: false
@ -40,7 +40,7 @@ SilicaGridView {
}
ListElement {
icon: "image://theme/icon-m-website"
icon: "image://theme/icon-m-website?"
slug: "federated"
name: "Federated"
active: false
@ -48,7 +48,7 @@ SilicaGridView {
}
ListElement {
icon: "image://theme/icon-m-search"
icon: "image://theme/icon-m-search?"
slug: "search"
name: "Search"
active: false
@ -100,54 +100,19 @@ SilicaGridView {
}
}
OpacityRampEffect {
sourceItem: label
offset: 0.5
}
ColorOverlay {
source: image
color: (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
anchors.fill: image
}
Image {
id: image
visible: false
source: model.icon // +'?'+ (highlighted ? Theme.highlightColor : (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
source: model.icon
sourceSize.width: Theme.iconSizeMedium
sourceSize.height: Theme.iconSizeMedium
anchors.centerIn: parent
}
Text {
visible: false
text: model.name
font.pixelSize: Theme.fontSizeExtraSmall/2
color: (highlighted
? Theme.highlightColor
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
horizontalAlignment: Text.AlignHCenter
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
bottomMargin: Theme.paddingSmall
}
}
Label {
id: label
visible: false
color: (highlighted ? Theme.highlightColor : Theme.secondaryHighlightColor)
text: {
return model.name.toUpperCase();
}
font.pixelSize: Theme.fontSizeExtraSmall
font.family: Theme.fontFamilyHeading
width: parent.width
horizontalAlignment : Text.AlignHCenter
anchors.bottom: parent.bottom
ColorOverlay {
source: image
color: (highlighted ? Theme.highlightColor : (model.active ? Theme.secondaryHighlightColor : Theme.primaryColor))
anchors.fill: image
}
onClicked: {

View file

@ -12,14 +12,14 @@ Item {
property string bg: ""
width: parent.width
height: avatarImage.height + Theme.paddingLarge*3 + infoLbl.height
height: isPortrait ? (avatarImage.height + Theme.paddingLarge*3 + infoLbl.height) : (avatarImage.height + Theme.paddingLarge*2.5 + infoLbl.height)
Rectangle {
id: bgImage
opacity: 0.2
opacity: 0.7
gradient: Gradient {
GradientStop { position: 0.0; color: Theme.highlightBackgroundColor }
GradientStop { position: 1.0; color: Theme.highlightBackgroundColor }
GradientStop { position: 0.0; color: Theme.highlightDimmerColor }
GradientStop { position: 2.0; color: Theme.highlightBackgroundColor }
}
anchors.fill: parent
@ -27,6 +27,7 @@ Item {
asynchronous: true
fillMode: Image.PreserveAspectCrop
source: bg
opacity: 0.6
anchors.fill: parent
}
}
@ -35,11 +36,9 @@ Item {
id: avatarImage
asynchronous: true
source: if (avatarImage.status === Image.Error)
source = "../../images/icon-l-profile.svg?" + (pressed
? Theme.highlightColor
: Theme.primaryColor)
source = "../../images/icon-l-profile.svg?" + Theme.primaryColor
else image
width: Theme.iconSizeLarge
width: isPortrait ? Theme.iconSizeLarge : Theme.iconSizeExtraLarge
height: width
anchors {
left: parent.left
@ -96,7 +95,7 @@ Item {
color: Theme.secondaryHighlightColor
truncationMode: TruncationMode.Fade
width: parent.width
height: description === "" ? 0 : contentHeight
height: contentHeight
horizontalAlignment: Text.AlignRight
}
}
@ -108,7 +107,7 @@ Item {
height: followed_by || locked || bot || group ? Theme.iconSizeSmall + Theme.paddingSmall : 0
anchors {
top: avatarImage.bottom
topMargin: Theme.paddingMedium
topMargin: isPortrait ? Theme.paddingMedium : 0
left: parent.left
leftMargin: Theme.horizontalPageMargin
right: parent.right
@ -183,8 +182,10 @@ Item {
text: qsTr("Bot")
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.primaryColor
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
}
}
}

View file

@ -16,12 +16,12 @@ FullscreenContentPage {
IconButton {
icon.source: "image://theme/icon-m-dismiss"
onClicked: pageStack.pop()
anchors {
top: profileImage.top
topMargin: Theme.horizontalPageMargin
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
onClicked: pageStack.pop()
}
}

View file

@ -9,7 +9,6 @@ BackgroundItem {
signal send (string notice)
signal navigateTo(string link)
width: parent.width
height: if (myList.type === "notifications" && ( model.type === "favourite" || model.type === "reblog" )) {
mnu.height + miniHeader.height + Theme.paddingLarge + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0)
} else mnu.height + miniHeader.height + (typeof attachments !== "undefined" && attachments.count ? media.height + Theme.paddingLarge + Theme.paddingMedium: Theme.paddingLarge) + lblContent.height + Theme.paddingLarge + (miniStatus.visible ? miniStatus.height : 0) + (iconDirectMsg.visible ? iconDirectMsg.height : 0)
@ -19,7 +18,7 @@ BackgroundItem {
id: bgDirect
x: 0
y: 0
visible: status_visibility === "direct"
visible: model.status_visibility === "direct"
width: parent.width
height: parent.height
opacity: 0.3
@ -43,7 +42,6 @@ BackgroundItem {
// Account avatar
Image {
id: avatar
visible: true
opacity: status === Image.Ready ? 1.0 : 0.0
Behavior on opacity { FadeAnimator {} }
asynchronous: true
@ -59,9 +57,7 @@ BackgroundItem {
}
onStatusChanged: {
if (avatar.status === Image.Error)
source = "../../images/icon-m-profile.svg?" + (pressed
? Theme.highlightColor
: Theme.primaryColor)
source = "../../images/icon-m-profile.svg?" + Theme.primaryColor
}
MouseArea {
@ -98,7 +94,7 @@ BackgroundItem {
visible: status_visibility === "direct"
width: Theme.iconSizeMedium
height: width
source: "image://theme/icon-m-mail?"
source: "image://theme/icon-m-mail?" + Theme.primaryColor
color: Theme.primaryColor
anchors {
horizontalCenter: avatar.horizontalCenter
@ -192,7 +188,7 @@ BackgroundItem {
left: miniHeader.left
leftMargin: Theme.paddingMedium
right: miniHeader.right
rightMargin: Theme.horizontalPageMargin
rightMargin: Theme.horizontalPageMargin + Theme.paddingMedium
top: miniHeader.bottom
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingLarge
@ -202,7 +198,6 @@ BackgroundItem {
console.log(link)
console.log(JSON.stringify(test))
console.log(JSON.stringify(test.length))
if (test.length === 5 && (test[3] === "tags" || test[3] === "tag") ) {
pageStack.pop(pageStack.find(function(page) {
var check = page.isFirstPage === true;
@ -255,21 +250,20 @@ BackgroundItem {
anchors.fill: parent
onClicked: parent.visible = false
}
}
}
// Displays media in Toots
MediaBlock {
id: media
visible: if (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) {
false
} else true
visible: (myList.type === "notifications" && ( type === "favourite" || type === "reblog" )) ? false : true
model: typeof attachments !== "undefined" ? attachments : Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject')
height: Theme.iconSizeExtraLarge * 2
anchors {
left: lblContent.left
leftMargin: isPortrait ? 0 : Theme.itemSizeSmall
right: lblContent.right
rightMargin: isPortrait ? 0 : Theme.itemSizeLarge * 1.2
top: lblContent.bottom
topMargin: Theme.paddingMedium
bottomMargin: Theme.paddingLarge
@ -283,7 +277,7 @@ BackgroundItem {
MenuItem {
id: mnuBoost
visible: model.type !== "follow"
enabled: status_visibility !== "direct"
enabled: model.status_visibility !== "direct"
text: typeof model.status_reblogged !== "undefined" && model.status_reblogged ? qsTr("Unboost") : qsTr("Boost")
onClicked: {
var status = typeof model.status_reblogged !== "undefined" && model.status_reblogged
@ -301,7 +295,7 @@ BackgroundItem {
Icon {
id: icRT
source: "image://theme/icon-s-retweet?" + (!model.status_reblogged ? Theme.highlightColor : Theme.primaryColor)
width: Theme.iconSizeExtraSmall
width: Theme.iconSizeSmall
height: width
anchors {
leftMargin: Theme.horizontalPageMargin
@ -311,8 +305,8 @@ BackgroundItem {
}
Label {
text: status_reblogs_count // from API.js
font.pixelSize: Theme.fontSizeExtraSmall
text: status_reblogs_count
font.pixelSize: Theme.fontSizeSmall
color: !model.status_reblogged ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icRT.right
@ -342,18 +336,18 @@ BackgroundItem {
Icon {
id: icFA
source: "image://theme/icon-s-favorite?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
width: Theme.iconSizeExtraSmall
width: Theme.iconSizeSmall
height: width
anchors {
leftMargin: Theme.horizontalPageMargin
left: parent.left
leftMargin: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
}
Label {
text: status_favourites_count
font.pixelSize: Theme.fontSizeExtraSmall
font.pixelSize: Theme.fontSizeSmall
color: !model.status_favourited ? Theme.highlightColor : Theme.primaryColor
anchors {
left: icFA.right
@ -383,7 +377,7 @@ BackgroundItem {
id: icBM
source: "../../images/icon-s-bookmark.svg?"
color: !model.status_bookmarked ? Theme.highlightColor : Theme.primaryColor
width: Theme.iconSizeExtraSmall
width: Theme.iconSizeSmall
height: width
anchors {
left: parent.left
@ -393,7 +387,6 @@ BackgroundItem {
}
}
MenuItem {
id: mnuMention
visible: model.type === "follow"
@ -409,7 +402,7 @@ BackgroundItem {
Icon {
id: icMT
source: "image://theme/icon-s-chat?" + (!model.status_favourited ? Theme.highlightColor : Theme.primaryColor)
width: Theme.iconSizeExtraSmall
width: Theme.iconSizeSmall
height: width
anchors {
left: parent.left
@ -420,21 +413,39 @@ BackgroundItem {
}
}
// Open ConversationPage and show other Toots in thread (if available)
// Open ConversationPage and show other Toots in thread (if available) or ProfilePage if new Follower
onClicked: {
var m = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
if (typeof mdl !== "undefined")
m.append(mdl.get(index))
if (model.type !== "follow") {
pageStack.push(Qt.resolvedUrl("../ConversationPage.qml"), {
headerTitle: qsTr("Conversation"),
"toot_id": status_id,
"toot_url": status_url,
"toot_uri": status_uri,
"description": '@'+account_acct,
"status_id": status_id,
"status_url": status_url,
"status_uri": status_uri,
"username": '@'+account_acct,
mdl: m,
type: "reply"
})
} else pageStack.push(Qt.resolvedUrl("../ProfilePage.qml"), {
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar,
"profileBackground": model.account_header,
"note": model.account_note,
"url": model.account_url,
"followers_count": model.account_followers_count,
"following_count": model.account_following_count,
"statuses_count": model.account_statuses_count,
"locked": model.account_locked,
"bot": model.account_bot,
"group": model.account_group
} )
}
onPressAndHold: {
console.log(JSON.stringify(mdl.get(index)))
mnu.open(delegate)

View file

@ -25,7 +25,10 @@ BuildRequires: pkgconfig(sailfishapp) >= 1.0.2
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Multimedia)
BuildRequires: pkgconfig(nemonotifications-qt5)
BuildRequires: pkgconfig(openssl)
BuildRequires: desktop-file-utils
%description

View file

@ -25,12 +25,14 @@ PkgConfigBR:
- Qt5Core
- Qt5Qml
- Qt5Quick
- Qt5DBus
- Qt5Multimedia
- nemonotifications-qt5
- openssl
# Build dependencies without a pkgconfig setup can be listed here
# PkgBR:
# - package-needed-to-build
# - qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
# Runtime dependencies which are not automatically detected
Requires:

View file

@ -24,7 +24,7 @@ class FileDownloader : public QObject
{
Q_OBJECT
public:
explicit FileDownloader(QQmlEngine *engine, QObject *parent = 0);
explicit FileDownloader(QQmlEngine *engine, QObject *parent = nullptr);
Q_INVOKABLE void downloadFile(QUrl url, QString filename);
Q_INVOKABLE void open(QString filename);

View file

@ -8,7 +8,6 @@
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
//static const QUrl IMGUR_UPLOAD_URL("https://httpbin.org/post");
//static const QUrl IMGUR_UPLOAD_URL();
ImageUploader::ImageUploader(QObject *parent) : QObject(parent), m_networkAccessManager(nullptr), m_reply(nullptr) {
@ -101,12 +100,8 @@ void ImageUploader::upload() {
//imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(fileInfo));
//POST data
QNetworkRequest request(m_uploadUrl);
request.setRawHeader("Authorization", m_authorizationHeader);
m_reply = m_networkAccessManager->post(request, multiPart);
@ -114,8 +109,6 @@ void ImageUploader::upload() {
connect(m_reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));
//connect(m_reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
//connect(m_reply, SIGNAL(finished()), this, SLOT(replyFinished()));*/
}

View file

@ -12,7 +12,7 @@ class ImageUploader : public QObject
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged)
public:
explicit ImageUploader(QObject *parent = 0);
explicit ImageUploader(QObject *parent = nullptr);
~ImageUploader();
Q_INVOKABLE void setFile(const QString &fileName);

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Inhaltswarnung</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>Was gibt&apos;s Neues?</translation>
</message>
<message>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
<source>Public</source>
<translation>Öffentlich</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Antwort verbergen</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Im Browser öffnen</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation>Benachrichtigungen</translation>
</message>
<message>
<source>New Toot</source>
<translation>Neuer Toot</translation>
<source>Local</source>
<translation>Lokal</translation>
</message>
<message>
<source>Federated</source>
<translation>Föderiert</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@Benutzer oder #Ausdruck</translation>
</message>
<message>
<source>Local</source>
<translation>Lokal</translation>
</message>
<message>
<source>Federated</source>
<translation>Föderation</translation>
<source>New Toot</source>
<translation>Neuer Toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Lade mehr</translation>
</message>
<message>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<source>Loading</source>
<translation>Wird geladen</translation>
</message>
<message>
<source>please wait...</source>
<translation>bitte warten...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Neuer Toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Neu laden</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Im Browser öffnen</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Nichts gefunden</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Beiträge</translation>
</message>
<message>
<source>Mention</source>
<translation>Erwähnen</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blockieren</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Im Browser öffnen</translation>
</message>
<message>
<source>Mention</source>
<translation>Erwähnen</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Διαγραφή</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -114,7 +116,7 @@
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Επαναφόρτωση</translation>
</message>
</context>
<context>
@ -128,8 +130,12 @@
<translation>Ειδοποιήσεις</translation>
</message>
<message>
<source>New Toot</source>
<translation>Νέος</translation>
<source>Local</source>
<translation>Τοπικός</translation>
</message>
<message>
<source>Federated</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@χρήστη ή #όρος</translation>
</message>
<message>
<source>Local</source>
<translation>Τοπικός</translation>
</message>
<message>
<source>Federated</source>
<translation type="unfinished"></translation>
<source>New Toot</source>
<translation>Νέος</translation>
</message>
</context>
<context>
@ -172,25 +174,25 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Φόρτωση περισσοτέρων</translation>
</message>
<message>
<source>Settings</source>
<translation>Ρυθμίσεις</translation>
</message>
<message>
<source>Loading</source>
<translation>Φόρτωση</translation>
<source>New Toot</source>
<translation>Νέος</translation>
</message>
<message>
<source>please wait...</source>
<source>Reload</source>
<translation>Φόρτωση περισσοτέρων</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>New Toot</source>
<translation>Νέος</translation>
<source>Nothing found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Κατάσταση</translation>
</message>
<message>
<source>Mention</source>
<translation>Φραγή</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Φραγή</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
@ -379,7 +377,7 @@
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Φραγή</translation>
</message>
<message>
<source>Conversation</source>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Escribe aquí tu advertencia</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>¿En qué estás pensando?</translation>
</message>
<message>
<source>Delete</source>
<translation>Borrar</translation>
</message>
<message>
<source>Public</source>
<translation>Público</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Cerrar respuesta</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Abrir en el navegador</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation>Notificaciones</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nuevo toot</translation>
<source>Local</source>
<translation>Local</translation>
</message>
<message>
<source>Federated</source>
<translation>Federada</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@usuario o #término</translation>
</message>
<message>
<source>Local</source>
<translation>Local</translation>
</message>
<message>
<source>Federated</source>
<translation>Federada</translation>
<source>New Toot</source>
<translation>Nuevo toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Cargar más</translation>
</message>
<message>
<source>Settings</source>
<translation>Ajustes</translation>
</message>
<message>
<source>Loading</source>
<translation>Cargando</translation>
</message>
<message>
<source>please wait...</source>
<translation>por favor, espera...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nuevo toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Volver a cargar</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Abrir en el navegador</translation>
</message>
<message>
<source>Nothing found</source>
<translation>No encontrado nada</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Estados</translation>
</message>
<message>
<source>Mention</source>
<translation>Mencionar</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Bloquear</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Abrir en el navegador</translation>
</message>
<message>
<source>Mention</source>
<translation>Mencionar</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Rédigez votre alerte ici</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>Qu&apos;avez-vous en tête?</translation>
</message>
<message>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
<message>
<source>Public</source>
<translation>Public</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Masquer la réponse</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation>Notifications</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nouveau pouet</translation>
<source>Local</source>
<translation>Fil public local</translation>
</message>
<message>
<source>Federated</source>
<translation>Fil public global</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@personne ou #terme</translation>
</message>
<message>
<source>Local</source>
<translation>Fil public local</translation>
</message>
<message>
<source>Federated</source>
<translation>Fil public global</translation>
<source>New Toot</source>
<translation>Nouveau pouet</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Charger plus</translation>
</message>
<message>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<source>Loading</source>
<translation>Chargement</translation>
</message>
<message>
<source>please wait...</source>
<translation>patientez...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nouveau pouet</translation>
</message>
<message>
<source>Reload</source>
<translation>Recharger</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Rien trouvé</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Pouets</translation>
</message>
<message>
<source>Mention</source>
<translation>Mentionner</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Bloquer</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
<message>
<source>Mention</source>
<translation>Mentionner</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Contenuto avviso</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>A cosa stai pensando?</translation>
</message>
<message>
<source>Delete</source>
<translation>Elimina</translation>
</message>
<message>
<source>Public</source>
<translation>Pubblico</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Chuidere risposta</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Aprire nel browser</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation>Notifiche</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nuovo Toot</translation>
<source>Local</source>
<translation>Locale</translation>
</message>
<message>
<source>Federated</source>
<translation>Federazione</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@utente o #terme</translation>
</message>
<message>
<source>Local</source>
<translation>Locale</translation>
</message>
<message>
<source>Federated</source>
<translation>Federazione</translation>
<source>New Toot</source>
<translation>Nuovo Toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Caricare altri</translation>
</message>
<message>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<source>Loading</source>
<translation>Caricamento</translation>
</message>
<message>
<source>please wait...</source>
<translation>Attendere un momento...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nuovo Toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Ricarica</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Aprire nel browser</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Niente trovato</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Toots</translation>
</message>
<message>
<source>Mention</source>
<translation>Menzionare</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blocca</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Aprire nel browser</translation>
</message>
<message>
<source>Mention</source>
<translation>Menzionare</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Waarschuwingstekst</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>Wat wil je kwijt?</translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
</message>
<message>
<source>Public</source>
<translation>Openbaar</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Antwoord verbergen</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open een Browser</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation>Meldingen</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nieuwe Toot</translation>
<source>Local</source>
<translation>Lokaal</translation>
</message>
<message>
<source>Federated</source>
<translation>Gefedereerd</translation>
</message>
<message>
<source>Search</source>
@ -140,19 +146,15 @@
<translation>@user of #term</translation>
</message>
<message>
<source>Local</source>
<translation>Lokaal</translation>
</message>
<message>
<source>Federated</source>
<translation>Gefedereerd</translation>
<source>New Toot</source>
<translation>Nieuwe Toot</translation>
</message>
</context>
<context>
<name>MediaFullScreen</name>
<message>
<source>Error loading</source>
<translation type="unfinished"></translation>
<translation>Laadfout</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Meer laden</translation>
</message>
<message>
<source>Settings</source>
<translation>Instellingen</translation>
</message>
<message>
<source>Loading</source>
<translation>Laden</translation>
</message>
<message>
<source>please wait...</source>
<translation>even geduld</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nieuwe Toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Herladen</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open een Browser</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Niets gevonden</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Statussen</translation>
</message>
<message>
<source>Mention</source>
<translation>Vermelden</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blokkeren</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open een Browser</translation>
</message>
<message>
<source>Mention</source>
<translation>Vermelden</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
@ -327,7 +325,7 @@
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
<translation>Visuele identiteit</translation>
</message>
<message>
<source>Development and translations</source>
@ -335,19 +333,19 @@
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
<translation>Occitaanse &amp; Franse vertaling</translation>
</message>
<message>
<source>Chinese translation</source>
<translation type="unfinished"></translation>
<translation>Chinese vertaling</translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
<translation>Nederlandse vertaling</translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
<translation>Spaanse vertaling</translation>
</message>
<message>
<source>Use</source>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -80,7 +82,7 @@
<name>EmojiSelect</name>
<message>
<source>Emojis</source>
<translation>Emojis</translation>
<translation>Emojis</translation>
</message>
<message>
<source>Tap to insert</source>
@ -128,8 +130,12 @@
<translation>Meldingen</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nieuwen toot</translation>
<source>Local</source>
<translation>Lokaal</translation>
</message>
<message>
<source>Federated</source>
<translation>Gefedereerd</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@gebruiker of #term</translation>
</message>
<message>
<source>Local</source>
<translation>Lokaal</translation>
</message>
<message>
<source>Federated</source>
<translation>Gefedereerd</translation>
<source>New Toot</source>
<translation>Nieuwen toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Meer laden</translation>
</message>
<message>
<source>Settings</source>
<translation>Instellingen</translation>
</message>
<message>
<source>Loading</source>
<translation>Laden</translation>
</message>
<message>
<source>please wait...</source>
<translation>efkens geduld</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nieuwen toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Herladen</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Statussen</translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blokkeren</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Escafar</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -121,31 +123,31 @@
<name>MainPage</name>
<message>
<source>Home</source>
<translation>Acuèlh</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Notifications</source>
<translation>Notificacions</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nòu Tut</translation>
</message>
<message>
<source>Search</source>
<translation>Cercar</translation>
</message>
<message>
<source>@user or #term</source>
<translation>@utilizaire o #tèrm</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Local</source>
<translation>Local</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Federated</source>
<translation>Federat</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>@user or #term</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>New Toot</source>
<translation type="unfinished">Nòu Tut</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Cargar mai</translation>
</message>
<message>
<source>Settings</source>
<translation>Parmètres</translation>
</message>
<message>
<source>Loading</source>
<translation>Cargament</translation>
</message>
<message>
<source>please wait...</source>
<translation>esperatz....</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nòu Tut</translation>
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Estatuts</translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blocar</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Usuń</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished">Otwarte w przeglądarce</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -98,7 +100,7 @@
<name>LoginPage</name>
<message>
<source>Login</source>
<translation type="unfinished"></translation>
<translation>Login</translation>
</message>
<message>
<source>Instance</source>
@ -114,7 +116,7 @@
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Załaduj ponownie</translation>
</message>
</context>
<context>
@ -128,8 +130,12 @@
<translation>Powiadomienia</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nowy wpis</translation>
<source>Local</source>
<translation>Lokalne</translation>
</message>
<message>
<source>Federated</source>
<translation>Globalne</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@użytkownik lub #tag</translation>
</message>
<message>
<source>Local</source>
<translation>Lokalne</translation>
</message>
<message>
<source>Federated</source>
<translation>Globalne</translation>
<source>New Toot</source>
<translation>Nowy wpis</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Załaduj więcej</translation>
</message>
<message>
<source>Settings</source>
<translation>Ustawienia</translation>
</message>
<message>
<source>Loading</source>
<translation>Ładowanie</translation>
</message>
<message>
<source>please wait...</source>
<translation>proszę czekać</translation>
</message>
<message>
<source>New Toot</source>
<translation>Nowy wpis</translation>
</message>
<message>
<source>Reload</source>
<translation>Załaduj ponownie</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Otwarte w przeglądarce</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Nic nie znaleziono</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -25,48 +25,50 @@
<message>
<source>Copy Link to Clipboard</source>
<extracomment>Use the translation of &quot;Copy Link&quot; for a shorter PullDownMenu label</extracomment>
<translation type="unfinished"></translation>
<translation>Копировать ссылку</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Текст предупреждения</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Удалить</translation>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>О чём думаете?</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
<translation>Публичный</translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
<translation>Скрытый</translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
<translation>Приватный</translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
<translation>Адресованный</translation>
</message>
<message>
<source>Toot sent!</source>
<translation type="unfinished"></translation>
<translation>Поста отправлено!</translation>
</message>
<message>
<source>Reply</source>
<extracomment>&quot;Reply&quot; will show the Toot text entry Panel. &quot;Hide Reply&quot; closes it. Alternative: Use &quot;Close Reply&quot;</extracomment>
<translation type="unfinished"></translation>
<translation>Ответ</translation>
</message>
<message>
<source>Hide Reply</source>
<translation type="unfinished"></translation>
<translation>Скрыть ответ</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Открыть в браузере</translation>
</message>
</context>
<context>
@ -98,11 +100,11 @@
<name>LoginPage</name>
<message>
<source>Login</source>
<translation type="unfinished"></translation>
<translation>Авторизоваться</translation>
</message>
<message>
<source>Instance</source>
<translation type="unfinished"></translation>
<translation>Экземпляра</translation>
</message>
<message>
<source>Enter a valid Mastodon instance URL</source>
@ -114,7 +116,7 @@
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
<translation>Перезарядка</translation>
</message>
</context>
<context>
@ -128,8 +130,12 @@
<translation>Уведомления</translation>
</message>
<message>
<source>New Toot</source>
<translation>Новый</translation>
<source>Local</source>
<translation>Локальны</translation>
</message>
<message>
<source>Federated</source>
<translation>Федеративные</translation>
</message>
<message>
<source>Search</source>
@ -140,19 +146,15 @@
<translation>@пользователь или #срок</translation>
</message>
<message>
<source>Local</source>
<translation>Локальный</translation>
</message>
<message>
<source>Federated</source>
<translation>Федеративные</translation>
<source>New Toot</source>
<translation>Новый</translation>
</message>
</context>
<context>
<name>MediaFullScreen</name>
<message>
<source>Error loading</source>
<translation type="unfinished"></translation>
<translation>Ошибка при загрузке</translation>
</message>
</context>
<context>
@ -172,40 +174,40 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Загрузи больше</translation>
</message>
<message>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<source>Loading</source>
<translation>Загрузка</translation>
</message>
<message>
<source>please wait...</source>
<translation>Пожалуйста, подождите...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Новый</translation>
</message>
<message>
<source>Reload</source>
<translation>Перезагрузить</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Открыть в браузере</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Ничего не найдено</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
<message>
<source>Bot</source>
<translation type="unfinished"></translation>
<translation>бот</translation>
</message>
<message>
<source>Follows you</source>
<translation type="unfinished"></translation>
<translation>Подписан(а) на вас</translation>
</message>
<message>
<source>Group</source>
<translation type="unfinished"></translation>
<translation>Группа</translation>
</message>
</context>
<context>
@ -213,7 +215,7 @@
<message>
<source>About</source>
<extracomment>If there&apos;s no good translation for &quot;About&quot;, use &quot;Details&quot; (in details about profile).</extracomment>
<translation type="unfinished"></translation>
<translation>Подробности</translation>
</message>
<message>
<source>Followers</source>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Статусы</translation>
</message>
<message>
<source>Mention</source>
<translation>Упоминание</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -238,7 +244,7 @@
<message>
<source>Requested</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation type="unfinished"></translation>
<translation>Запрошенный</translation>
</message>
<message>
<source>Follow</source>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Блокировать</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
@ -282,7 +280,7 @@
</message>
<message>
<source>Options</source>
<translation type="unfinished"></translation>
<translation>Параметры</translation>
</message>
<message>
<source>Load Images in Toots</source>
@ -327,27 +325,27 @@
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
<translation>Визуальная идентичность</translation>
</message>
<message>
<source>Development and translations</source>
<translation type="unfinished"></translation>
<translation>Разработка и переводы</translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
<translation>французский перевод</translation>
</message>
<message>
<source>Chinese translation</source>
<translation type="unfinished"></translation>
<translation>Китайский перевод</translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
<translation>Голландский перевод</translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
<translation>Испанский перевод</translation>
</message>
<message>
<source>Use</source>
@ -379,19 +377,19 @@
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
<translation>Упоминание</translation>
</message>
<message>
<source>Conversation</source>
<translation type="unfinished"></translation>
<translation>беседа</translation>
</message>
<message>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
<translation>Убрать из закладок</translation>
</message>
<message>
<source>Bookmark</source>
<translation type="unfinished"></translation>
<translation>Добавить в закладки</translation>
</message>
</context>
</TS>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Обриши</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -114,7 +116,7 @@
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
<translation type="unfinished">учитај још</translation>
</message>
</context>
<context>
@ -128,8 +130,12 @@
<translation>Обавјештење</translation>
</message>
<message>
<source>New Toot</source>
<translation>Novi toot</translation>
<source>Local</source>
<translation>Локална</translation>
</message>
<message>
<source>Federated</source>
<translation>Федеративна</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@korisnik ili #pojam</translation>
</message>
<message>
<source>Local</source>
<translation>Локална</translation>
</message>
<message>
<source>Federated</source>
<translation>Федеративна</translation>
<source>New Toot</source>
<translation>Novi toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>учитај још</translation>
</message>
<message>
<source>Settings</source>
<translation>Подешавања</translation>
</message>
<message>
<source>Loading</source>
<translation>Učitavanje</translation>
</message>
<message>
<source>please wait...</source>
<translation>молимо вас, сачекајте...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Novi toot</translation>
</message>
<message>
<source>Reload</source>
<translation>учитај још</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Статуси</translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Блокирати</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation>Radera</translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -114,7 +116,7 @@
</message>
<message>
<source>Reload</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Ladda mer</translation>
</message>
</context>
<context>
@ -128,8 +130,12 @@
<translation>Notifieringar</translation>
</message>
<message>
<source>New Toot</source>
<translation>Ny toot</translation>
<source>Local</source>
<translation>Lokalt</translation>
</message>
<message>
<source>Federated</source>
<translation>Förenade</translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@user eller #term</translation>
</message>
<message>
<source>Local</source>
<translation>Lokalt</translation>
</message>
<message>
<source>Federated</source>
<translation>Förenade</translation>
<source>New Toot</source>
<translation>Ny toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Ladda mer</translation>
</message>
<message>
<source>Settings</source>
<translation>Inställningar</translation>
</message>
<message>
<source>Loading</source>
<translation>Laddar</translation>
</message>
<message>
<source>please wait...</source>
<translation>Vänligen vänta...</translation>
</message>
<message>
<source>New Toot</source>
<translation>Ny toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Ladda mer</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Statusar</translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Blockera</translation>
</message>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mention</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>?</translation>
</message>
<message>
<source>Delete</source>
<translation></translation>
</message>
<message>
<source>Public</source>
<translation></translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation></translation>
</message>
<message>
<source>Open in Browser</source>
<translation></translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -128,8 +130,12 @@
<translation></translation>
</message>
<message>
<source>New Toot</source>
<translation></translation>
<source>Local</source>
<translation></translation>
</message>
<message>
<source>Federated</source>
<translation></translation>
</message>
<message>
<source>Search</source>
@ -140,12 +146,8 @@
<translation>@用户或#</translation>
</message>
<message>
<source>Local</source>
<translation></translation>
</message>
<message>
<source>Federated</source>
<translation></translation>
<source>New Toot</source>
<translation></translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation></translation>
</message>
<message>
<source>Settings</source>
<translation></translation>
</message>
<message>
<source>Loading</source>
<translation></translation>
</message>
<message>
<source>please wait...</source>
<translation>......</translation>
</message>
<message>
<source>New Toot</source>
<translation></translation>
</message>
<message>
<source>Reload</source>
<translation></translation>
</message>
<message>
<source>Open in Browser</source>
<translation></translation>
</message>
<message>
<source>Nothing found</source>
<translation>西</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation></translation>
</message>
<message>
<source>Mention</source>
<translation></translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation></translation>
</message>
<message>
<source>Open in Browser</source>
<translation></translation>
</message>
<message>
<source>Mention</source>
<translation></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
@ -356,7 +354,7 @@
</message>
<message>
<source>to help with app translation to your language.</source>
<translation>使</translation>
<translation>使.</translation>
</message>
</context>
<context>

View file

@ -29,16 +29,14 @@
</message>
<message>
<source>Write your warning here</source>
<extracomment>placeholderText in Toot content warning panel</extracomment>
<translation>Write your warning here</translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<extracomment>placeholderText in Toot text panel</extracomment>
<translation>What&apos;s on your mind?</translation>
</message>
<message>
<source>Delete</source>
<translation>Delete</translation>
</message>
<message>
<source>Public</source>
<translation>Public</translation>
@ -68,6 +66,10 @@
<source>Hide Reply</source>
<translation>Hide Reply</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open in Browser</translation>
</message>
</context>
<context>
<name>CoverPage</name>
@ -121,31 +123,31 @@
<name>MainPage</name>
<message>
<source>Home</source>
<translation></translation>
<translation>Home</translation>
</message>
<message>
<source>Notifications</source>
<translation></translation>
</message>
<message>
<source>New Toot</source>
<translation></translation>
</message>
<message>
<source>Search</source>
<translation></translation>
</message>
<message>
<source>@user or #term</source>
<translation></translation>
<translation>Notifications</translation>
</message>
<message>
<source>Local</source>
<translation></translation>
<translation>Local</translation>
</message>
<message>
<source>Federated</source>
<translation></translation>
<translation>Federated</translation>
</message>
<message>
<source>Search</source>
<translation>Search</translation>
</message>
<message>
<source>@user or #term</source>
<translation>@user or #term</translation>
</message>
<message>
<source>New Toot</source>
<translation>New Toot</translation>
</message>
</context>
<context>
@ -172,26 +174,26 @@
</context>
<context>
<name>MyList</name>
<message>
<source>Load more</source>
<translation>Load more</translation>
</message>
<message>
<source>Settings</source>
<translation>Settings</translation>
</message>
<message>
<source>Loading</source>
<translation></translation>
</message>
<message>
<source>please wait...</source>
<translation></translation>
</message>
<message>
<source>New Toot</source>
<translation>New Toot</translation>
</message>
<message>
<source>Reload</source>
<translation>Reload</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open in Browser</translation>
</message>
<message>
<source>Nothing found</source>
<translation>Nothing found</translation>
</message>
</context>
<context>
<name>ProfileHeader</name>
@ -230,6 +232,10 @@
<extracomment>Will show as: &quot;115 Statuses&quot;</extracomment>
<translation>Statuses</translation>
</message>
<message>
<source>Mention</source>
<translation>Mention</translation>
</message>
<message>
<source>Unfollow</source>
<extracomment>Is a button. Keep it as short as possible.</extracomment>
@ -265,14 +271,6 @@
<extracomment>Is a button. Keep it as short as possible.</extracomment>
<translation>Block</translation>
</message>
<message>
<source>Open in Browser</source>
<translation>Open in Browser</translation>
</message>
<message>
<source>Mention</source>
<translation>Mention</translation>
</message>
</context>
<context>
<name>SettingsPage</name>