Merge

Co-Authored-By: molan-git <molan-git@users.noreply.github.com>
This commit is contained in:
Dusko Angirevic 2020-04-16 00:37:11 +02:00
parent 15653a90a3
commit 45ba338259
35 changed files with 1590 additions and 1626 deletions

View file

@ -114,4 +114,4 @@ TRANSLATIONS += translations/harbour-tooter-pl.ts
TRANSLATIONS += translations/harbour-tooter-ru.ts
TRANSLATIONS += translations/harbour-tooter-sr.ts
TRANSLATIONS += translations/harbour-tooter-sv.ts
TRANSLATIONS += translations/harbour-tooter-zh.ts
TRANSLATIONS += translations/harbour-tooter-zh_CN.ts

View file

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
<title>Artboard 1</title>
<g>
<rect width="64" height="64" fill="#fff" fill-opacity="0"/>
<path d="M32,56.55A24.55,24.55,0,1,1,56.55,32,24.58,24.58,0,0,1,32,56.55Zm0-47A22.45,22.45,0,1,0,54.45,32,22.48,22.48,0,0,0,32,9.55Z" fill="#fff" opacity="0.6" style="isolation: isolate"/>
</g>
<g opacity="0.39">
<g>
<path d="M45.42,29a1.49,1.49,0,0,1-1.49-1.49,3,3,0,1,0-6,0,1.49,1.49,0,0,1-3,0,6,6,0,1,1,11.92,0A1.49,1.49,0,0,1,45.42,29Z" fill="#fff"/>
<path d="M27.53,29A1.49,1.49,0,0,1,26,27.51a3,3,0,1,0-6,0,1.49,1.49,0,0,1-3,0,6,6,0,1,1,11.92,0A1.49,1.49,0,0,1,27.53,29Z" fill="#fff"/>
</g>
<path d="M47.85,37.16a1.48,1.48,0,0,0-1.27-.71H17.42a1.49,1.49,0,0,0-1.33,2.16,17.84,17.84,0,0,0,31.81,0A1.5,1.5,0,0,0,47.85,37.16Z" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 886 B

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="15 0 60 60" enable-background="new 15 0 60 60" xml:space="preserve">
<g>
<circle fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="45" cy="30" r="23.4"/>
<ellipse opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" enable-background="new " cx="45" cy="30" rx="12.4" ry="23.4"/>
<path opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" enable-background="new " d="
M61.5,13.4c-2.6,4.1-9.5,6.9-16.5,6.9s-13.9-2.8-16.5-6.9"/>
<path opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" enable-background="new " d="
M28.5,46.6c2.6-4.1,9.5-6.9,16.5-6.9s13.9,2.8,16.5,6.9"/>
<line opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" enable-background="new " x1="21.6" y1="30" x2="68.4" y2="30"/>
<line opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" enable-background="new " x1="45" y1="6.6" x2="45" y2="53.4"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<path id="Home" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linejoin="round" stroke-miterlimit="10" d="M28.8,8.2L9,24.2
c-0.3,0.3-0.5,0.7-0.5,1.1v30.2c0,0.8,0.7,1.5,1.5,1.5h13.2c0.8,0,1.5-0.7,1.5-1.5V36.4c0-0.8,0.7-1.5,1.5-1.5h11.8
c0.8,0,1.5,0.7,1.5,1.5v19.1c0,0.8,0.7,1.5,1.5,1.5h13.2c0.8,0,1.5-0.7,1.5-1.5V25.3c0-0.4-0.2-0.9-0.5-1.1l-19.7-16
C33.4,6.6,30.6,6.6,28.8,8.2z"/>
<g id="Local" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" cx="32" cy="27.8" r="7.4"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="M32,7.2
c11.4,0,20.6,9.2,20.6,20.6c0,3-0.6,5.8-1.8,8.4c-0.9,2.1-2.2,4-3.8,5.7l-15,15l-15-15c-1.6-1.7-2.9-3.6-3.8-5.7
c-1.1-2.6-1.8-5.4-1.8-8.4C11.4,16.4,20.6,7.2,32,7.2z"/>
</g>
<g id="Federation" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="32" cy="32" r="25"/>
<ellipse display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="32" cy="32" rx="13.2" ry="25"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M49.6,14.3
c-2.8,4.4-10.1,7.4-17.6,7.4s-14.8-3-17.6-7.4"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M14.4,49.7
c2.8-4.4,10.1-7.4,17.6-7.4s14.8,3,17.6,7.4"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="7" y1="32" x2="57" y2="32"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="32" y1="7" x2="32" y2="57"/>
</g>
<g id="Search" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" cx="29.1" cy="29.1" r="20.6"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" x1="55.5" y1="55.5" x2="43.8" y2="43.8"/>
</g>
<path id="Notification_1_" display="none" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="
M44,53.3c2,2.3,4.9,3.7,8.2,3.7c2.2,0,4.2-0.6,5.9-1.8c-3.4-1.9-5.8-5.3-6.5-9.3c2.7-4,4.2-8.8,4.2-13.9c0-13.8-11.2-25-25-25
s-25,11.2-25,25s11.2,25,25,25C35.7,57,40.2,55.6,44,53.3z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="15 0 60 60" enable-background="new 15 0 60 60" xml:space="preserve">
<path id="Home" display="none" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="
M57,7.7l-18.6,15c-0.3,0.3-0.5,0.7-0.5,1V52c0,0.8,0.7,1.4,1.4,1.4h12.4c0.8,0,1.4-0.7,1.4-1.4V34.1c0-0.7,0.7-1.4,1.4-1.4h11.1
c0.8,0,1.4,0.7,1.4,1.4V52c0,0.8,0.7,1.4,1.4,1.4h12.4c0.8,0,1.4-0.7,1.4-1.4V23.7c0-0.4-0.2-0.8-0.5-1l-18.5-15
C61.3,6.2,58.7,6.2,57,7.7z"/>
<g>
<circle opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" enable-background="new " cx="45" cy="26" r="6.9"/>
<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="M45,6.8
c10.7,0,19.3,8.6,19.3,19.3c0,2.8-0.6,5.4-1.7,7.9c-0.8,2-2.1,3.8-3.6,5.3l-14,14L31,39.3c-1.5-1.6-2.7-3.4-3.6-5.3
c-1-2.4-1.7-5.1-1.7-7.9C25.8,15.4,34.3,6.8,45,6.8z"/>
</g>
<g id="Federation" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="60" cy="30" r="23.4"/>
<ellipse display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="60" cy="30" rx="12.4" ry="23.4"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M76.5,13.4
c-2.6,4.1-9.5,6.9-16.5,6.9s-13.9-2.8-16.5-6.9"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M43.5,46.6
c2.6-4.1,9.5-6.9,16.5-6.9s13.9,2.8,16.5,6.9"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="36.6" y1="30" x2="83.4" y2="30"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="60" y1="6.6" x2="60" y2="53.4"/>
</g>
<g id="Search" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" cx="57.3" cy="27.3" r="19.3"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" x1="82" y1="52" x2="71.1" y2="41.1"/>
</g>
<path id="Notification_1_" display="none" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="
M71.3,50c1.9,2.2,4.6,3.5,7.7,3.5c2.1,0,3.9-0.6,5.5-1.7c-3.2-1.8-5.4-5-6.1-8.7c2.5-3.8,3.9-8.2,3.9-13c0-12.9-10.5-23.4-23.4-23.4
S35.4,17.1,35.4,30s10.5,23.4,23.4,23.4C63.5,53.4,67.7,52.1,71.3,50z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 36 36" enable-background="new 0 0 36 36" xml:space="preserve">
<g>
<g>
<path fill="#FFFFFF" d="M23.1,5.9C19.2,2,12.8,2,8.9,5.9C5,9.8,5,16.1,8.9,20.1c3.9,3.9,10.2,3.9,14.1,0C27,16.1,27,9.8,23.1,5.9z
M21.6,18.6c-3.1,3.1-8.2,3.1-11.3,0c-3.1-3.1-3.1-8.2,0-11.3c3.1-3.1,8.2-3.1,11.3,0C24.8,10.4,24.8,15.5,21.6,18.6z M19,32h-2
v-6h-2v6h-2c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h6c0.6,0,1-0.4,1-1C20,32.4,19.6,32,19,32z"/>
</g>
</g>
<path fill="#FFFFFF" d="M15.9,28c-3.9,0-7.7-1.5-10.6-4.4c-0.4-0.4-0.4-1,0-1.4c0.4-0.4,1-0.4,1.4,0c5.1,5.1,13.5,5,18.5,0
c5-5,5-13.4,0-18.5c-0.4-0.4-0.4-1,0-1.4c0.4-0.4,1-0.4,1.4,0c5.9,5.9,5.9,15.4,0,21.3C23.7,26.5,19.8,28,15.9,28z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="18.9 0 60 60" enable-background="new 18.9 0 60 60" xml:space="preserve">
<path id="Home" display="none" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="
M42,7.7l-18.6,15c-0.3,0.3-0.5,0.7-0.5,1V52c0,0.8,0.7,1.4,1.4,1.4h12.4c0.8,0,1.4-0.7,1.4-1.4V34.1c0-0.7,0.7-1.4,1.4-1.4h11.1
c0.8,0,1.4,0.7,1.4,1.4V52c0,0.8,0.7,1.4,1.4,1.4h12.4c0.8,0,1.4-0.7,1.4-1.4V23.7c0-0.4-0.2-0.8-0.5-1l-18.5-15
C46.3,6.2,43.7,6.2,42,7.7z"/>
<g id="Local" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" cx="45" cy="26.1" r="6.9"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="M45,6.8
c10.7,0,19.3,8.6,19.3,19.3c0,2.8-0.6,5.4-1.7,7.9c-0.8,2-2.1,3.8-3.6,5.3L45,53.3L30.9,39.3c-1.5-1.6-2.7-3.4-3.6-5.3
c-1-2.4-1.7-5.1-1.7-7.9C25.7,15.4,34.3,6.8,45,6.8z"/>
</g>
<g id="Federation" display="none">
<circle display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="45" cy="30" r="23.4"/>
<ellipse display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" cx="45" cy="30" rx="12.4" ry="23.4"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M61.5,13.4
c-2.6,4.1-9.5,6.9-16.5,6.9s-13.9-2.8-16.5-6.9"/>
<path display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M28.5,46.6
c2.6-4.1,9.5-6.9,16.5-6.9s13.9,2.8,16.5,6.9"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="21.6" y1="30" x2="68.4" y2="30"/>
<line display="inline" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" x1="45" y1="6.6" x2="45" y2="53.4"/>
</g>
<g>
<circle opacity="0.6" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linejoin="round" stroke-miterlimit="10" cx="46.2" cy="27.3" r="19.3"/>
<line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linejoin="round" stroke-miterlimit="10" x1="70.9" y1="52" x2="60.9" y2="42"/>
</g>
<path id="Notification_1_" display="none" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" stroke-miterlimit="10" d="
M56.3,50c1.9,2.2,4.6,3.5,7.7,3.5c2.1,0,3.9-0.6,5.5-1.7c-3.2-1.8-5.4-5-6.1-8.7c2.5-3.8,3.9-8.2,3.9-13c0-12.9-10.5-23.4-23.4-23.4
S20.4,17.1,20.4,30s10.5,23.4,23.4,23.4C48.5,53.4,52.7,52.1,56.3,50z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -60,6 +60,7 @@ WorkerScript.onMessage = function(msg) {
} else if(msg.action === "notifications") {
// notification
//console.log("Is notification... parsing...")
console.log(JSON.stringify(data[i]))
item = parseNotification(data[i]);
items.push(item)
@ -81,7 +82,7 @@ WorkerScript.onMessage = function(msg) {
console.log("descendants")
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)
@ -148,12 +149,20 @@ function parseNotification(data){
};
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;
case "reblog":
if (!data.status) {
break;
}
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])
@ -162,6 +171,10 @@ function parseNotification(data){
item['typeIcon'] = "image://theme/icon-s-retweet"
break;
case "favourite":
if (!data.status) {
break;
}
item = parseToot(data.status)
item = parseAccounts(item, "reblog_", data["account"])
item = parseAccounts(item, "", data["status"]["account"])

View file

@ -1,284 +0,0 @@
/****************************************************************************************
**
** Copyright (C) 2013 Jolla Ltd.
** Contact: Raine Makelainen <raine.makelainen@jollamobile.com>
** All rights reserved.
**
** This file is part of Sailfish Silica UI component package.
**
** You may use this file under the terms of BSD license as follows:
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** * Neither the name of the Jolla Ltd nor the
** names of its contributors may be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
****************************************************************************************/
import QtQuick 2.0
import QtWebKit 3.0
import Sailfish.Silica 1.0
Page {
id: browser
property string href;
property bool screenReaderMode: true
property bool loaded: false
property string articleContent: ""
property string articleTitle: ""
property string articleDate: ""
property string articleImage: ""
onLoadedChanged: {
pullDownMenu.busy = pullDownMenu2.busy = !loaded
}
onStatusChanged: {
if (status === PageStatus.Active) {
fetchData();
}
}
onScreenReaderModeChanged: {
loaded = false;
fetchData();
}
allowedOrientations: Orientation.All
function fetchData(){
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://mercury.postlight.com/parser?url="+href, true);
xhr.onreadystatechange = function() {
if ( xhr.readyState === xhr.DONE ) {
if ( xhr.status === 200 ) {
console.log(xhr.responseText)
var response = JSON.parse(xhr.responseText);
//if (response.date_published)
//articleDate = new Date(response.date_published.replace(/^(\w+) (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,"$1, $2 $3 $5 $4 GMT"));
if (response.title)
articleTitle = response.title;
if (response.lead_image_url)
articleImage = response.lead_image_url
if (response.content)
articleContent = response.content;
if (response.content && response.lead_image_url)
articleContent = articleContent.replace(articleImage, "")
} else {
}
loaded = true;
}
}
xhr.setRequestHeader("Content-Type", 'application/json');
xhr.setRequestHeader("x-api-key", 'uakC11NlSubREs1r5NjkOCS1NJEkwti6DnDutcYC');
if (screenReaderMode)
xhr.send();
else
webView.url = 'https://mercury.postlight.com/amp?url='+href
}
BusyIndicator {
id: loading
size: BusyIndicatorSize.Large
anchors.centerIn: parent
running: !loaded
}
SilicaWebView {
enabled: !screenReaderMode
visible: !screenReaderMode
id: webView
anchors {
fill: parent
}
PullDownMenu {
id: pullDownMenu
MenuItem {
text: qsTr("Open in Browser")
onClicked: {
Qt.openUrlExternally(href);
}
}
MenuItem {
text: screenReaderMode ? qsTr("Web mode") : qsTr("Reading mode")
onClicked: {
screenReaderMode = !screenReaderMode
}
}
}
opacity: 0
onLoadingChanged: {
switch (loadRequest.status)
{
case WebView.LoadSucceededStatus:
opacity = 1
loaded = true;
break
case WebView.LoadFailedStatus:
opacity = 0
loaded = true;
viewPlaceHolder.errorString = loadRequest.errorString
break
default:
opacity = 0
loaded = false;
break
}
}
FadeAnimation on opacity {}
}
ViewPlaceholder {
id: viewPlaceHolder
property string errorString
enabled: webView.opacity === 0 && loaded && !screenReaderMode
text: errorString
hintText: "Check network connectivity and pull down to reload"
}
SilicaFlickable {
visible: screenReaderMode
enabled: screenReaderMode
anchors {
fill: parent
}
contentHeight: article.height
VerticalScrollDecorator {}
PullDownMenu {
id: pullDownMenu2
MenuItem {
text: qsTr("Copy URL")
onClicked: Clipboard.text = href
}
MenuItem {
text: qsTr("Open in Browser")
onClicked: Qt.openUrlExternally(href);
}
MenuItem {
text: screenReaderMode ? qsTr("Web mode") : qsTr("Reading mode")
onClicked: {
screenReaderMode = !screenReaderMode
}
}
}
Column {
id: article
width: parent.width
Rectangle {
height: Theme.itemSizeExtraSmall/3
width: parent.width
opacity: 0
}
Label {
id: title
text: articleTitle
font.pixelSize: Theme.fontSizeLarge
color: Theme.highlightColor
textFormat: Text.StyledText
wrapMode: Text.WordWrap
font.bold: true
anchors {
left: parent.left
right: parent.right
leftMargin: Theme.paddingLarge
rightMargin: Theme.paddingLarge
}
}
Label {
id: date
visible: articleDate !== ""
text: articleDate
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.secondaryColor
anchors {
left: parent.left
right: parent.right
topMargin: Theme.paddingSmall
bottomMargin: Theme.paddingSmall
leftMargin: Theme.paddingLarge
rightMargin: Theme.paddingLarge
}
}
Rectangle {
height: image.visible ? Theme.itemSizeExtraSmall/3 : 0
width: parent.width
opacity: 0
}
Image {
id: image
visible: articleImage !== "" ? true : false
source: articleImage
width: parent.width
height: Theme.itemSizeExtraLarge
fillMode: Image.PreserveAspectCrop
anchors {
left: parent.left
right: parent.right
}
BusyIndicator {
size: BusyIndicatorSize.Small
anchors.centerIn: parent
running: parent.status != Image.Ready
}
onStatusChanged: if (image.status === Image.Ready) {
var ratio = image.sourceSize.width/image.sourceSize.height
height = width / ratio
}
}
Rectangle {
height: image.visible ? Theme.itemSizeExtraSmall/3 : 0
width: parent.width
opacity: 0
}
Label {
id: content
readonly property string _linkStyle: "<style>a:link { color: " + Theme.primaryColor + "; } h1, h2, h3, h4 { color: " + Theme.highlightColor + "; } img { margin: "+Theme.paddingLarge+" 0; width: 100\%}</style>"
textFormat: Text.RichText
text: _linkStyle + articleContent;
font.pixelSize: Theme.fontSizeSmall
color: Theme.secondaryColor
wrapMode: Text.WordWrap
anchors {
left: parent.left
right: parent.right
topMargin: image.visible ? Theme.paddingSmall : Theme.paddingLarge
leftMargin: Theme.paddingLarge
rightMargin: Theme.paddingLarge
bottomMargin: Theme.paddingLarge
}
}
Rectangle {
height: Theme.itemSizeExtraSmall/3
width: parent.width
opacity: 0
}
}
}
}

View file

@ -6,32 +6,37 @@ import "./components/"
Page {
id: conversationPage
property string type;
property string type
property alias title: header.title
property alias description: header.description
property alias avatar: header.image
property string suggestedUser: ""
property ListModel suggestedModel;
property ListModel suggestedModel
property string toot_id: ""
property int tootMaxChar: 500;
property ListModel mdl;
property ListModel mdl
allowedOrientations: Orientation.All
onSuggestedUserChanged: {
console.log(suggestedUser)
suggestedModel = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
predictionList.visible = false;
suggestedModel = Qt.createQmlObject(
'import QtQuick 2.0; ListModel { }',
Qt.application, 'InternalQmlObject'
)
predictionList.visible = false
if (suggestedUser.length > 0) {
var msg = {
'action' : 'accounts/search',
'method' : 'GET',
'model' : suggestedModel,
'mode' : "append",
'params' : [ {name: "q", data: suggestedUser} ],
'conf' : Logic.conf
};
worker.sendMessage(msg);
predictionList.visible = true;
"action": 'accounts/search',
"method": 'GET',
"model": suggestedModel,
"mode": "append",
"params": [{
"name": "q",
"data": suggestedUser
}],
"conf": Logic.conf
}
worker.sendMessage(msg)
predictionList.visible = true
}
}
@ -59,7 +64,7 @@ Page {
header: PageHeader {
title: qsTr("Conversation")
}
clip: true;
clip: true
anchors {
top: parent.top
bottom: panel.top
@ -74,7 +79,8 @@ Page {
text: Format.formatDate(section, Formatter.DateMedium)
}
}
delegate: VisualContainer {}
delegate: VisualContainer {
}
onCountChanged: {
if (mdl)
for (var i = 0; i < mdl.count; i++) {
@ -84,11 +90,10 @@ Page {
}
}
}
}
Rectangle {
id: predictionList
visible: false;
visible: false
anchors.bottom: panel.top
anchors.left: parent.left
anchors.right: panel.right
@ -102,14 +107,18 @@ Page {
delegate: ItemUser {
onClicked: {
var start = toot.cursorPosition;
var start = toot.cursorPosition
while (toot.text[start] !== "@" && start > 0) {
start--;
start--
}
textOperations.text = toot.text
textOperations.cursorPosition = toot.cursorPosition
textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
toot.text = textOperations.text.substring(0, textOperations.selectionStart) + ' @'+model.account_acct + ' ' + textOperations.text.substring(textOperations.selectionEnd).trim()
toot.text = textOperations.text.substring(0, textOperations.selectionStart)
+ ' @'
+ model.account_acct
+ ' '
+ textOperations.text.substring(textOperations.selectionEnd).trim()
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
}
@ -130,7 +139,9 @@ Page {
}
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
Rectangle {
width: parent.width
@ -145,7 +156,7 @@ Page {
}
Rectangle {
id: progressBar
width: toot.text.length ? panel.width*(toot.text.length/tootMaxChar) : 0;
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
height: Theme.itemSizeSmall * 0.05
color: Theme.highlightBackgroundColor
@ -159,7 +170,7 @@ Page {
TextField {
id: warningContent
visible: false
height: visible ? implicitHeight : 0;
height: visible ? implicitHeight : 0
anchors {
top: parent.top
topMargin: Theme.paddingMedium
@ -168,7 +179,9 @@ Page {
}
autoScrollEnabled: true
labelVisible: false
placeholderText: qsTr("Content warning!")
placeholderText: qsTr("Write your warning here")
placeholderColor: palette.highlightColor
color: palette.highlightColor
horizontalAlignment: Text.AlignLeft
EnterKey.onClicked: {
//tweet()
@ -191,9 +204,13 @@ Page {
autoScrollEnabled: true
labelVisible: false
//focus: true
text: description !== "" && (description.charAt(0) == '@' || description.charAt(0) == '#') ? description+' ' : ''
height: implicitHeight
text: description !== "" && (description.charAt(0) == '@'
|| description.charAt(
0) == '#') ? description + ' ' : ''
height: Math.max(270, Math.min(900, implicitHeight))
//height: implicitHeight
horizontalAlignment: Text.AlignLeft
placeholderText: qsTr("What's on your mind?")
EnterKey.onClicked: {
//tweet()
}
@ -201,12 +218,14 @@ Page {
textOperations.text = toot.text
textOperations.cursorPosition = toot.cursorPosition
textOperations.selectWord()
textOperations.select(textOperations.selectionStart ? textOperations.selectionStart-1 : 0, textOperations.selectionEnd)
textOperations.select(
textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
textOperations.selectionEnd)
//console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
console.log(toot.text.length)
suggestedUser = ""
if (textOperations.selectedText.charAt(0) === "@") {
suggestedUser = textOperations.selectedText.trim().substring(1);
suggestedUser = textOperations.selectedText.trim().substring(1)
}
}
}
@ -218,18 +237,18 @@ Page {
}
anchors {
top: warningContent.bottom
bottom: bottom.top
right: parent.right
rightMargin: Theme.paddingSmall
}
icon.source: "image://theme/icon-s-mms?" + (pressed
? Theme.highlightColor
: (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
icon.source: "../../qml/images/emojiselect.svg" + (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
onClicked: pageStack.push(firstWizardPage)
}
SilicaGridView {
id: uploadedImages
width: parent.width
anchors.top: bottom.toot
anchors.bottom: parent.bottom
height: mediaModel.count ? Theme.itemSizeSmall : 0
model: mediaModel
@ -239,7 +258,9 @@ Page {
id: myDelegate
width: uploadedImages.cellWidth
height: uploadedImages.cellHeight
RemorseItem { id: remorse }
RemorseItem {
id: remorse
}
Image {
anchors.fill: parent
fillMode: Image.PreserveAspectCrop
@ -250,18 +271,34 @@ Page {
var idx = index
console.log(idx)
//mediaModel.remove(idx)
remorse.execute(myDelegate, qsTr("Delete"), function() { mediaModel.remove(idx) } )
remorse.execute(myDelegate, qsTr("Delete"), function () {
mediaModel.remove(idx)
})
}
}
add: Transition {
NumberAnimation { property: "opacity"; from: 0; to: 1.0; duration: 800 }
NumberAnimation {
property: "opacity"
from: 0
to: 1.0
duration: 800
}
}
remove: Transition {
NumberAnimation { property: "opacity"; from: 1.0; to: 0; duration: 800 }
NumberAnimation {
property: "opacity"
from: 1.0
to: 0
duration: 800
}
}
displaced: Transition {
NumberAnimation { properties: "x,y"; duration: 800; easing.type: Easing.InOutBack }
NumberAnimation {
properties: "x,y"
duration: 800
easing.type: Easing.InOutBack
}
}
}
IconButton {
@ -272,9 +309,8 @@ Page {
left: parent.left
leftMargin: Theme.paddingMedium
}
icon.source: "image://theme/icon-s-high-importance?" + (pressed
? Theme.highlightColor
: (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
icon.source: "image://theme/icon-s-warning?"
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
onClicked: warningContent.visible = !warningContent.visible
}
IconButton {
@ -285,21 +321,20 @@ Page {
left: btnContentWarning.right
leftMargin: Theme.paddingSmall
}
icon.source: "image://theme/icon-s-attach?" + (pressed
? Theme.highlightColor
: (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
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 });
btnAddImage.enabled = false
var once = true
var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
imagePicker.selectedContentChanged.connect(function () {
var imagePath = imagePicker.selectedContent;
var imagePath = imagePicker.selectedContent
console.log(imagePath)
imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
imageUploader.setFile(imagePath);
imageUploader.setAuthorizationHeader(Logic.conf.api_user_token);
imageUploader.upload();
});
imageUploader.setFile(imagePath)
imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
imageUploader.upload()
})
}
}
ImageUploader {
@ -312,21 +347,17 @@ Page {
onSuccess: {
uploadProgress.width = 0
console.log(replyData);
console.log(replyData)
mediaModel.append(JSON.parse(replyData))
}
onFailure: {
uploadProgress.width = 0
btnAddImage.enabled = true;
btnAddImage.enabled = true
console.log(status)
console.log(statusText)
}
}
ComboBox {
id: privacy
@ -337,43 +368,51 @@ Page {
right: btnSend.left
}
menu: ContextMenu {
MenuItem { text: qsTr("public") }
MenuItem { text: qsTr("unlisted") }
MenuItem { text: qsTr("followers only") }
MenuItem { text: qsTr("direct") }
MenuItem {
text: qsTr("Public")
}
MenuItem {
text: qsTr("Unlisted")
}
MenuItem {
text: qsTr("Followers-only")
}
MenuItem {
text: qsTr("Direct")
}
}
}
IconButton {
id: btnSend
icon.source: "image://theme/icon-m-enter?" + (pressed
? Theme.highlightColor
: Theme.primaryColor)
icon.source: "image://theme/icon-m-send?"
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
anchors {
top: toot.bottom
right: parent.right
rightMargin: Theme.paddingLarge
rightMargin: Theme.paddingSmall
}
enabled: toot.text !== "" && toot.text.length < tootMaxChar
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
onClicked: {
var visibility = [ "public", "unlisted", "private", "direct"];
var media_ids = [];
var visibility = ["public", "unlisted", "private", "direct"]
var media_ids = []
for (var k = 0; k < mediaModel.count; k++) {
console.log(mediaModel.get(k).id)
media_ids.push(mediaModel.get(k).id)
}
var msg = {
'action' : 'statuses',
'method' : 'POST',
'model' : mdl,
'mode' : "append",
'params' : {
"action": 'statuses',
"method": 'POST',
"model": mdl,
"mode": "append",
"params": {
"status": toot.text,
"visibility": visibility[privacy.currentIndex],
"media_ids": media_ids
},
'conf' : Logic.conf
};
"conf": Logic.conf
}
if (toot_id)
msg.params['in_reply_to_id'] = (toot_id) + ""
@ -382,15 +421,14 @@ Page {
msg.params['spoiler_text'] = warningContent.text
}
worker.sendMessage(msg);
worker.sendMessage(msg)
warningContent.text = ""
toot.text = ""
mediaModel.clear()
pageStack.pop()
}
}
Rectangle {
id: uploadProgress
color: Theme.highlightBackgroundColor
@ -402,45 +440,46 @@ Page {
Component.onCompleted: {
toot.cursorPosition = toot.text.length
if (mdl.count > 0) {
var setIndex = 0;
var setIndex = 0
switch (mdl.get(0).status_visibility) {
case "unlisted":
setIndex = 1;
break;
setIndex = 1
break
case "private":
setIndex = 2;
break;
setIndex = 2
break
case "direct":
privacy.enabled = false;
setIndex = 3;
break;
privacy.enabled = false
setIndex = 3
break
default:
privacy.enabled = true;
setIndex = 0;
privacy.enabled = true
setIndex = 0
}
privacy.currentIndex = setIndex;
privacy.currentIndex = setIndex
}
console.log(JSON.stringify())
worker.sendMessage({
'action' : 'statuses/'+mdl.get(0).status_id+'/context',
'method' : 'GET',
'model' : mdl,
'params' : { },
'conf' : Logic.conf
});
"action": 'statuses/' + mdl.get(0).status_id + '/context',
"method": 'GET',
"model": mdl,
"params": { },
"conf": Logic.conf
})
}
Component {
id: firstWizardPage
Dialog {
id: emoticonsDialog
canAccept: false; //selector.currentIndex >= 0
//acceptDestination: conversationPage
canAccept: false //selector.currentIndex >= 0
//acceptDestination: conversationPage
onAcceptPendingChanged: {
if (acceptPending) {
// Tell the destination page what the selected category is
// acceptDestinationInstance.category = selector.value
}
@ -515,7 +554,6 @@ Page {
ListElement { section: "smileys"; glyph: "🙎" }
ListElement { section: "smileys"; glyph: "🙏" }
ListElement { section: "Transport and map"; glyph: "🚀" }
ListElement { section: "Transport and map"; glyph: "🚃" }
ListElement { section: "Transport and map"; glyph: "🚀" }
@ -561,11 +599,6 @@ Page {
ListElement { section: "Horoscope Signs"; glyph: "♑" }
ListElement { section: "Horoscope Signs"; glyph: "♒" }
ListElement { section: "Horoscope Signs"; glyph: "♓" }
}
delegate: BackgroundItem {
width: gridView.cellWidth
@ -578,11 +611,12 @@ Page {
}
onClicked: {
var cursorPosition = toot.cursorPosition
toot.text = toot.text.substring(0, cursorPosition) + model.glyph + toot.text.substring(cursorPosition)
toot.text = toot.text.substring(
0, cursorPosition) + model.glyph + toot.text.substring(
cursorPosition)
toot.cursorPosition = cursorPosition + model.glyph.length
emoticonsDialog.canAccept = true;
emoticonsDialog.canAccept = true
emoticonsDialog.accept()
}
}
}

View file

@ -69,10 +69,11 @@ Page {
onOpenDrawer: infoPanel.open = setDrawer
}
MyList{
id: tlPublic;
title: qsTr("Federated")
type: "timelines/public"
mdl: Logic.modelTLpublic
id: tlNotifications;
title: qsTr("Notifications")
type: "notifications"
notifier: true
mdl: Logic.modelTLnotifications
width: parent.itemWidth
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
@ -88,11 +89,10 @@ Page {
onOpenDrawer: infoPanel.open = setDrawer
}
MyList{
id: tlNotifications;
title: qsTr("Notifications")
type: "notifications"
notifier: true
mdl: Logic.modelTLnotifications
id: tlPublic;
title: qsTr("Federated")
type: "timelines/public"
mdl: Logic.modelTLpublic
width: parent.itemWidth
height: parent.itemHeight
onOpenDrawer: infoPanel.open = setDrawer
@ -185,7 +185,7 @@ Page {
delegate: ItemUser {
onClicked: {
pageStack.push(Qt.resolvedUrl("Profile.qml"), {
"displayname": model.account_username,
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar
@ -260,8 +260,13 @@ Page {
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
} else if (test.length === 4 && test[3][0] === "@" ) {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
} else {
pageStack.push(Qt.resolvedUrl("Browser.qml"), {"href" : href})
Qt.openUrlExternally(href);
}
}
Component.onCompleted: {

View file

@ -6,7 +6,7 @@ import QtGraphicalEffects 1.0
Page {
property ListModel tweets;
property string displayname : "";
property string display_name : "";
property string username : "";
property string profileImage : "";
property int user_id;
@ -18,6 +18,7 @@ Page {
property int count_moments;
property string profile_background: "";
property string note: "";
property string url: "";
property bool locked : false;
property date created_at;
@ -39,7 +40,7 @@ Page {
followers_count = messageObject.data.followers_count
following_count = messageObject.data.following_count
username = messageObject.data.acct
displayname = messageObject.data.display_name
display_name = messageObject.data.display_name
profileImage = messageObject.data.avatar_static
var msg = {
@ -68,9 +69,10 @@ Page {
following_count = messageObject.data
break;
case 'acct':
// line below was commented out, reason unknown
// username = messageObject.data
break;
case 'locked':
case 'locked':m
locked = messageObject.data
break;
case 'created_at':
@ -82,6 +84,9 @@ Page {
case 'note':
note = messageObject.data
break;
case 'url':
url = messageObject.data
break;
case 'following':
following = messageObject.data
followers_count = followers_count + (following ? 1 : - 1)
@ -135,7 +140,7 @@ Page {
id: list
header: ProfileHeader {
id: header
title: displayname
title: display_name
description: '@'+username
image: profileImage
}
@ -238,10 +243,65 @@ Page {
}
}
/*ExpandingSection {
title: "Tweets"
ExpandingSection {
title: qsTr("Bio")
content.sourceComponent: Column {
spacing: Theme.paddingMedium
anchors.bottomMargin: Theme.paddingLarge
Text {
x: Theme.horizontalPageMargin
width: parent.width - ( 2 * Theme.horizontalPageMargin )
id: txtnote
text: note
font.pixelSize: Theme.fontSizeExtraSmall
color: Theme.secondaryColor
linkColor: Theme.secondaryHighlightColor
wrapMode: Text.Wrap
anchors {
horizontalCenter: parent.horizontalCenter
}
onLinkActivated: {
var test = link.split("/")
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;
if (check)
page.onLinkActivated(link)
return check;
}));
send(link)
} else if (test.length === 4 && test[3][0] === "@" ) {
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
} else {
Qt.openUrlExternally(link);
}
}
}
Column {
spacing: Theme.paddingMedium
anchors.horizontalCenter: parent.horizontalCenter
Button {
id: btnUrl
text: qsTr("Open Profile in Browser")
onClicked: {
Qt.openUrlExternally(url);
}
}
}
Label {
text: " "
}
}
}
}

View file

@ -102,32 +102,38 @@ Page {
}
ListElement {
name: "Miodrag Nikolić"
desc: "visual identity"
desc: qsTr("Visual identity")
mastodon: ""
mail: "micotakis@gmail.com"
}
ListElement {
name: "molan"
desc: qsTr("Development and maintenence")
mastodon: ""
mail: "mol_an@sunrise.ch"
}
ListElement {
name: "Quentin PAGÈS / Quenti ♏"
desc: "Occitan & French translation"
desc: qsTr("Occitan & French translation")
mastodon: "Quenti@framapiaf.org"
mail: ""
}
ListElement {
name: "André Koot"
desc: "Dutch translation"
desc: qsTr("Dutch translation")
mastodon: "meneer@mastodon.social"
mail: "https://twitter.com/meneer"
}
ListElement {
name: "Carlos Gonzalez / Caballlero"
desc: "Español translation"
name: "CarmenFdez"
desc: qsTr("Spanish translation")
mastodon: ""
mail: "carlosgonz@protonmail.com"
mail: ""
}
ListElement {
name: "Mohamed-Touhami MAHDI"
desc: "Added README file"
desc: qsTr("Added README file")
mastodon: "dragnucs@touha.me"
mail: "touhami@touha.me"
}

View file

@ -33,7 +33,7 @@ BackgroundItem {
MouseArea {
anchors.fill: parent
onClicked: pageStack.push(Qt.resolvedUrl("./../Profile.qml"), {
"displayname": model.account_username,
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar
@ -60,7 +60,7 @@ BackgroundItem {
}
}
onClicked: openUser({
"displayname": model.account_username,
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar

View file

@ -15,38 +15,33 @@ SilicaGridView {
id: listModel
ListElement {
icon: "image://theme/icon-m-home"
//icon: "../../images/home.svg"
slug: "home"
name: "Home"
active: true
unread: false
}
ListElement {
//icon: "image://theme/icon-m-region"
icon: "../../images/federated.svg"
slug: "federated"
name: "Federated"
icon: "image://theme/icon-m-alarm"
slug: "notifications"
name: "Notifications"
active: false
unread: false
}
ListElement {
//icon: "image://theme/icon-m-sailfish"
icon: "../../images/local.svg"
icon: "image://theme/icon-m-whereami"
slug: "local"
name: "Local"
active: false
unread: false
}
ListElement {
icon: "image://theme/icon-m-alarm"
//icon: "../../images/notification.svg"
slug: "notifications"
name: "Notifications"
icon: "image://theme/icon-m-website"
slug: "federated"
name: "Federated"
active: false
unread: false
}
ListElement {
icon: "image://theme/icon-m-search"
//icon: "../../images/search.svg"
slug: "search"
name: "Search"
active: false

View file

@ -19,7 +19,7 @@ Item {
}*/
Rectangle {
anchors.fill: parent
opacity: 0.1
opacity: 0.2
gradient: Gradient {
GradientStop { position: 0.0; color: Theme.highlightBackgroundColor }
GradientStop { position: 1.0; color: Theme.highlightBackgroundColor }
@ -51,7 +51,7 @@ Item {
id: ttl
text: title
height: contentHeight
color: Theme.highlightColor
color: Theme.primaryColor
font.pixelSize: Theme.fontSizeLarge
font.family: Theme.fontFamilyHeading
horizontalAlignment: Text.AlignRight
@ -61,7 +61,7 @@ Item {
Label {
height: description === "" ? 0 : contentHeight
text: description
color: Theme.secondaryHighlightColor
color: Theme.primaryColor
font.pixelSize: Theme.fontSizeSmall
font.family: Theme.fontFamilyHeading
horizontalAlignment: Text.AlignRight

View file

@ -63,7 +63,7 @@ BackgroundItem {
anchors.fill: parent
onClicked: {
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
"displayname": account_display_name,
"display_name": account_display_name,
"username": account_username,
"profileImage": account_avatar
})
@ -164,7 +164,7 @@ BackgroundItem {
send(link)
} else {
pageStack.push(Qt.resolvedUrl("../Browser.qml"), {"href" : link})
Qt.openUrlExternally(link);
}

View file

@ -55,7 +55,7 @@ BackgroundItem {
anchors.fill: parent
onClicked: {
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
"displayname": model.account_username,
"display_name": model.account_display_name,
"username": model.account_acct,
"user_id": model.account_id,
"profileImage": model.account_avatar
@ -134,13 +134,12 @@ BackgroundItem {
}));
send(link)
} else if (test.length === 4 && test[3][0] === "@" ) {
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
"name": "",
"username": test[3].substring(1)+"@"+test[2],
"profileImage": ""
})
tlSearch.search = decodeURIComponent("@"+test[3].substring(1)+"@"+test[2])
slideshow.positionViewAtIndex(4, ListView.SnapToItem)
navigation.navigateTo('search')
} else {
pageStack.push(Qt.resolvedUrl("../Browser.qml"), {"href" : link})
Qt.openUrlExternally(link);
}
}
text: content.replace(new RegExp("<a ", 'g'), '<a style="text-decoration: none; color:'+(pressed ? Theme.secondaryColor : Theme.highlightColor)+'" ')

View file

@ -1,6 +1,39 @@
* Wed Apr 15 2020 Dusko Angirevic <dysko@me.com> 1.0.4-0
- Login bugfix merge request
- Updated translations
* Thu Apr 16 2020 Dusko Angirevic <dysko@me.com> 1.0.4-1
- Merge with molan code
* Tue Feb 04 2020 molan <mol_an@sunrise.ch> 1.0.3-8
- Fix for broken translations
- Updated Spanish translation
* Mon Feb 03 2020 molan <mol_an@sunrise.ch> 1.0.3-7
- Updated translations for new language strings
* Thu Jan 30 2020 molan <mol_an@sunrise.ch> 1.0.3-6
- Workaround for opening user profiles in toots
- Show profile descriptions (Bio) with option to open them in Browser
- Updated and improved UI for Conversation page
- Indication for sending toot (move back to previous page)
- New arrangement of main pages (like used in Mastodon websites and other apps)
- Small UI and text/label changes
* Thu Jan 16 2020 molan <mol_an@sunrise.ch> 1.0.3-5 [fork of Tooter 1.0.3]
- Fix for broken profile pages when clicking on usernames in toots
- Fixed navigation icons for inverted ambiences
- Updated Chinese translation (thanks to dashinfantry)
* Wed Jan 15 2020 molan <mol_an@sunrise.ch> 1.0.3-4 [fork of Tooter 1.0.3]
- Website links in toots now open directly in browser since the web scraper service which was used before is discontinued
- Profile page now shows full display name in title instead of user name
- Changed send, content warning and add emoji icon in Conversation page for clarification
- Small update to Chinese translation (thanks to dashinfantry)
- Completed German and French translations
* Mon Jan 06 2020 molan <mol_an@sunrise.ch> 1.0.3-3 [fork of Tooter 1.0.3]
- Update and rename harbour-tooter-zh.ts to harbour-tooter-zh_CN.ts (thanks to dashinfantry)
* Sat Dec 28 2019 molan <mol_an@sunrise.ch> 1.0.3-1 [fork of Tooter 1.0.3]
- Fixed broken Mastodon login (app built with Sailfish SDK 2.4)
- Fixed crash on certain notifications
* Sun Jan 27 2019 Dusko Angirevic <dysko@me.com> 1.0.3-0
- Remorse popup added for account removal

View file

@ -14,7 +14,7 @@ Name: harbour-tooter
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Tooter
Version: 1.0.4
Release: 0
Release: 1
Group: Qt/Qt
License: LICENSE
URL: http://example.org/

View file

@ -1,7 +1,7 @@
Name: harbour-tooter
Summary: Tooter
Version: 1.0.4
Release: 0
Release: 1
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
Group: Qt/Qt

View file

@ -20,51 +20,12 @@
<translation>hat gesagt</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Öffne in Browser</translation>
</message>
<message>
<source>Web mode</source>
<translation>Web-Modus</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Lese-Modus</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Kopiere URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Konversation</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Inhaltswarnung!</translation>
</message>
<message>
<source>public</source>
<translation>öffentlich</translation>
</message>
<message>
<source>unlisted</source>
<translation>nicht aufgeführt</translation>
</message>
<message>
<source>followers only</source>
<translation>nur Follower</translation>
</message>
<message>
<source>direct</source>
<translation>direkt</translation>
</message>
<message>
<source>Delete</source>
<translation>Löschen</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tippen um einzufügen</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Anhänger</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX Design und Implementierung</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>είπε</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Άνοιγμα στον φυλλομετρητή</translation>
</message>
<message>
<source>Web mode</source>
<translation>Λειτουργία ιστού</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Λειτουργία ανάγνωσης</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Αντιγραφή διεύθυνσης URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Συνομιλία</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Προειδοποίηση περιεχομένου!</translation>
</message>
<message>
<source>public</source>
<translation>δημόσιο</translation>
</message>
<message>
<source>unlisted</source>
<translation>μη καταχωρημένο</translation>
</message>
<message>
<source>followers only</source>
<translation>μόνο αυτοί που σας ακολουθούν</translation>
</message>
<message>
<source>direct</source>
<translation>απευθείας</translation>
</message>
<message>
<source>Delete</source>
<translation>Διαγραφή</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Κτυπήστε για εισαγωγή</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Σας ακολουθούν</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX σχεδιασμός και ανάπτυξη</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>dijo</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Abrir en navegador</translation>
</message>
<message>
<source>Web mode</source>
<translation>Modo Web</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Modo lectura</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Copiar URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversación</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Advertencia de contenido</translation>
</message>
<message>
<source>public</source>
<translation>público</translation>
</message>
<message>
<source>unlisted</source>
<translation>sin federar</translation>
</message>
<message>
<source>followers only</source>
<translation>sólo seguidores</translation>
</message>
<message>
<source>direct</source>
<translation>directo</translation>
</message>
<message>
<source>Delete</source>
<translation>Borrar</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Toca para insertar</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Seguidores</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>Diseño UI/UX y desarrollo</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Web mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reading mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Content warning!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>followers only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>direct</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>a dit</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
<message>
<source>Web mode</source>
<translation>Vue internet</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Mode lecture</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Copier l&apos;URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversation</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Contenu sensible !</translation>
</message>
<message>
<source>public</source>
<translation>public</translation>
</message>
<message>
<source>unlisted</source>
<translation>non listé</translation>
</message>
<message>
<source>followers only</source>
<translation>abonnés seulement</translation>
</message>
<message>
<source>direct</source>
<translation>direct</translation>
</message>
<message>
<source>Delete</source>
<translation>Supprimer</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Appuyez pour insérer</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Abonnés</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>design et développement de l&apos;interface</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>zei</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Openen in browser</translation>
</message>
<message>
<source>Web mode</source>
<translation>Webmodus</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Leesmodus</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Kopieer URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Gesprek</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Gevoelige inhoud!</translation>
</message>
<message>
<source>public</source>
<translation>openbaar</translation>
</message>
<message>
<source>unlisted</source>
<translation>niet op lijst</translation>
</message>
<message>
<source>followers only</source>
<translation>alleen volgers</translation>
</message>
<message>
<source>direct</source>
<translation>direct</translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tikken om in te voegen</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Volgers</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX ontwerp en ontwikkeling</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>zei</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Openen in browser</translation>
</message>
<message>
<source>Web mode</source>
<translation>Webmodus</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Leesmodus</translation>
</message>
<message>
<source>Copy URL</source>
<translation>URL kopiëren</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Gesprek</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Gevoeligen inhoud!</translation>
</message>
<message>
<source>public</source>
<translation>openbaar</translation>
</message>
<message>
<source>unlisted</source>
<translation>niet op lijst</translation>
</message>
<message>
<source>followers only</source>
<translation>alleen volgers</translation>
</message>
<message>
<source>direct</source>
<translation>direct</translation>
</message>
<message>
<source>Delete</source>
<translation>Verwijderen</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tikt voor in te voegen</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Volgers</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX-ontwerp en -ontwikkeling</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>a dich</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Dobrir dins lo navigator</translation>
</message>
<message>
<source>Web mode</source>
<translation>Mòde Web</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Mòde lectura</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Copiar l&apos;URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Discutida</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Contengut sensible !</translation>
</message>
<message>
<source>public</source>
<translation>public</translation>
</message>
<message>
<source>unlisted</source>
<translation>pas listat</translation>
</message>
<message>
<source>followers only</source>
<translation>seguidors solament</translation>
</message>
<message>
<source>direct</source>
<translation>dirècte</translation>
</message>
<message>
<source>Delete</source>
<translation>Escafar</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tustejar per inserir</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Seguidors</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX design e desvlopament</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Web mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reading mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy URL</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Content warning!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>followers only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>direct</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>сказал</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Открыть в браузере</translation>
</message>
<message>
<source>Web mode</source>
<translation>Веб-режим</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Режим чтения</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Копировать URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Беседа</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Предупреждение о содержании!</translation>
</message>
<message>
<source>public</source>
<translation>публика</translation>
</message>
<message>
<source>unlisted</source>
<translation>не указан</translation>
</message>
<message>
<source>followers only</source>
<translation>только последователи</translation>
</message>
<message>
<source>direct</source>
<translation>непосредственный</translation>
</message>
<message>
<source>Delete</source>
<translation>Удалить</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Нажмите, чтобы вставить</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Читают</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>Дизайн и разработка UI / UX</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>каже</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Отвори у прегледнику веба</translation>
</message>
<message>
<source>Web mode</source>
<translation>Прегледник веба</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Мод за читање</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Kopiraj link</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Разговор</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Упозорење на садржај</translation>
</message>
<message>
<source>public</source>
<translation>јавно</translation>
</message>
<message>
<source>unlisted</source>
<translation>не приказано</translation>
</message>
<message>
<source>followers only</source>
<translation>само за пратиоце</translation>
</message>
<message>
<source>direct</source>
<translation>директна порука</translation>
</message>
<message>
<source>Delete</source>
<translation>Обриши</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Тапни за убацивање</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Пратиоци</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>интерфејс дизајн и развој</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -20,51 +20,12 @@
<translation>sade</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Öppna i webbläsare</translation>
</message>
<message>
<source>Web mode</source>
<translation>Webbläge</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Läsläge</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Kopiera URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Konversation</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Innehållsvarning!</translation>
</message>
<message>
<source>public</source>
<translation>publik</translation>
</message>
<message>
<source>unlisted</source>
<translation>olistad</translation>
</message>
<message>
<source>followers only</source>
<translation>endast följare</translation>
</message>
<message>
<source>direct</source>
<translation>direkt</translation>
</message>
<message>
<source>Delete</source>
<translation>Radera</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tryck för att infoga</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Följare</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation>UI/UX design och utveckling</translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh">
<TS version="2.1" language="zh_CN">
<context>
<name>API</name>
<message>
@ -13,30 +13,11 @@
</message>
<message>
<source>boosted</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>said</source>
<translation></translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation></translation>
</message>
<message>
<source>Web mode</source>
<translation></translation>
</message>
<message>
<source>Reading mode</source>
<translation></translation>
</message>
<message>
<source>Copy URL</source>
<translation></translation>
<translation></translation>
</message>
</context>
<context>
@ -45,26 +26,6 @@
<source>Conversation</source>
<translation></translation>
</message>
<message>
<source>Content warning!</source>
<translation></translation>
</message>
<message>
<source>public</source>
<translation></translation>
</message>
<message>
<source>unlisted</source>
<translation></translation>
</message>
<message>
<source>followers only</source>
<translation></translation>
</message>
<message>
<source>direct</source>
<translation></translation>
</message>
<message>
<source>Delete</source>
<translation></translation>
@ -75,7 +36,31 @@
</message>
<message>
<source>Tap to insert</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Write your warning here</source>
<translation></translation>
</message>
<message>
<source>Public</source>
<translation></translation>
</message>
<message>
<source>Unlisted</source>
<translation></translation>
</message>
<message>
<source>Followers-only</source>
<translation></translation>
</message>
<message>
<source>Direct</source>
<translation></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation>?</translation>
</message>
</context>
<context>
@ -100,18 +85,18 @@
</message>
<message>
<source>Instance</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enter an Mastodon instance URL</source>
<translation>Mastodon链接实例</translation>
<translation></translation>
</message>
<message>
<source>Mastodon is a free, open-source social network. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly.</source>
<translation>Mastodon Mastodon </translation>
<translation>Mastodon Mastodon </translation>
</message>
<message>
<source>Reload</source>
<translation></translation>
</message>
<message>
<source>Enter an Mastodon instance URL</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -150,7 +135,7 @@
<name>MiniStatus</name>
<message>
<source>boosted</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>favourited</source>
@ -177,18 +162,18 @@
</message>
<message>
<source>please wait...</source>
<translation>......</translation>
<translation>......</translation>
</message>
</context>
<context>
<name>Profile</name>
<message>
<source>Unfollow</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Follow request sent!</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Following</source>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation></translation>
</message>
<message>
<source>Bio</source>
<translation></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -239,50 +232,74 @@
</message>
<message>
<source>Remove Account</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Add Account</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Deauthorize this app and remove your account</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Authorize this app to use your Mastodon account in your behalf</source>
<translation>使Mastodon账户</translation>
</message>
<message>
<source>Load images in toots</source>
<translation></translation>
<translation>使 Mastodon </translation>
</message>
<message>
<source>Disable this option if you want to preserve your data connection</source>
<translation></translation>
</message>
<message>
<source>Translate</source>
<translation></translation>
</message>
<message>
<source>Use Transifex to help with app translation to your language</source>
<translation>使Transifex 使</translation>
<translation></translation>
</message>
<message>
<source>Credits</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>UI/UX design and development</source>
<translation>UI/UX </translation>
<translation>UI/UX设计及开发</translation>
</message>
<message>
<source>Visual identity</source>
<translation></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation>西</translation>
</message>
<message>
<source>Dutch translation</source>
<translation></translation>
</message>
<message>
<source>Spanish translation</source>
<translation>西</translation>
</message>
<message>
<source>Added README file</source>
<translation> README </translation>
</message>
<message>
<source>Load images in toots</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Translate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use Transifex to help with app translation to your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>
<message>
<source>boosted</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>favourited</source>
@ -297,19 +314,19 @@
<name>VisualContainer</name>
<message>
<source>Unboost</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Boost</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Unfavorite</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Favorite</source>
<translation></translation>
<translation></translation>
</message>
</context>
</TS>

View file

@ -20,51 +20,12 @@
<translation>said</translation>
</message>
</context>
<context>
<name>Browser</name>
<message>
<source>Open in Browser</source>
<translation>Open in Browser</translation>
</message>
<message>
<source>Web mode</source>
<translation>Web mode</translation>
</message>
<message>
<source>Reading mode</source>
<translation>Reading mode</translation>
</message>
<message>
<source>Copy URL</source>
<translation>Copy URL</translation>
</message>
</context>
<context>
<name>Conversation</name>
<message>
<source>Conversation</source>
<translation>Conversation</translation>
</message>
<message>
<source>Content warning!</source>
<translation>Content warning!</translation>
</message>
<message>
<source>public</source>
<translation>public</translation>
</message>
<message>
<source>unlisted</source>
<translation>unlisted</translation>
</message>
<message>
<source>followers only</source>
<translation>followers only</translation>
</message>
<message>
<source>direct</source>
<translation>direct</translation>
</message>
<message>
<source>Delete</source>
<translation>Delete</translation>
@ -77,6 +38,30 @@
<source>Tap to insert</source>
<translation>Tap to insert</translation>
</message>
<message>
<source>Write your warning here</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>What&apos;s on your mind?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlisted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Followers-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Direct</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageFullScreen</name>
@ -230,6 +215,14 @@
<source>Followers</source>
<translation>Followers</translation>
</message>
<message>
<source>Bio</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Profile in Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Settings</name>
@ -277,6 +270,30 @@
<source>UI/UX design and development</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Visual identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Occitan &amp; French translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dutch translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Spanish translation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Added README file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Development and maintenence</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Toot</name>