2017-06-08 01:53:54 +03:00
|
|
|
import QtQuick 2.0
|
|
|
|
import Sailfish.Silica 1.0
|
2017-07-06 01:59:00 +03:00
|
|
|
import harbour.tooter.Uploader 1.0
|
2017-06-08 01:53:54 +03:00
|
|
|
import "../lib/API.js" as Logic
|
|
|
|
import "./components/"
|
|
|
|
|
2020-05-24 20:54:46 +03:00
|
|
|
|
2017-06-08 01:53:54 +03:00
|
|
|
Page {
|
2020-06-18 19:40:24 +03:00
|
|
|
id: conversationPage
|
2020-06-03 12:52:07 +03:00
|
|
|
|
2020-05-24 20:54:46 +03:00
|
|
|
property string type
|
2020-06-15 11:42:10 +03:00
|
|
|
property string description: ""
|
|
|
|
property string headerTitle: ""
|
2020-06-18 19:40:24 +03:00
|
|
|
property string suggestedUser: ""
|
|
|
|
property ListModel suggestedModel
|
|
|
|
property string toot_id: ""
|
2020-05-25 18:54:02 +03:00
|
|
|
property string toot_url: ""
|
2020-06-09 19:46:36 +03:00
|
|
|
property string toot_uri: ""
|
2018-10-25 15:00:19 +03:00
|
|
|
property int tootMaxChar: 500;
|
2020-06-15 11:42:10 +03:00
|
|
|
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
|
2020-06-18 19:40:24 +03:00
|
|
|
property bool group: false //otherwise ReferenceError ProfileHeader.qml
|
2020-06-09 19:46:36 +03:00
|
|
|
property ListModel mdl
|
2020-06-03 12:52:07 +03:00
|
|
|
|
2020-06-18 19:40:24 +03:00
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
onSuggestedUserChanged: {
|
|
|
|
console.log(suggestedUser)
|
|
|
|
suggestedModel = Qt.createQmlObject(
|
|
|
|
'import QtQuick 2.0; ListModel { }',
|
|
|
|
Qt.application, 'InternalQmlObject'
|
|
|
|
)
|
|
|
|
predictionList.visible = false
|
|
|
|
if (suggestedUser.length > 0) {
|
|
|
|
var msg = {
|
|
|
|
"action": 'accounts/search',
|
|
|
|
"method": 'GET',
|
|
|
|
"model": suggestedModel,
|
|
|
|
"mode": "append",
|
|
|
|
"params": [{
|
|
|
|
"name": "q",
|
|
|
|
"data": suggestedUser
|
|
|
|
}],
|
|
|
|
"conf": Logic.conf
|
|
|
|
}
|
|
|
|
worker.sendMessage(msg)
|
|
|
|
predictionList.visible = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ListModel {
|
|
|
|
id: mediaModel
|
|
|
|
onCountChanged: {
|
|
|
|
btnAddImage.enabled = mediaModel.count < 4
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
WorkerScript {
|
|
|
|
id: worker
|
|
|
|
source: "../lib/Worker.js"
|
|
|
|
onMessage: {
|
|
|
|
console.log(JSON.stringify(messageObject))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ProfileHeader {
|
|
|
|
id: header
|
|
|
|
visible: false
|
|
|
|
}
|
2020-05-29 21:05:05 +03:00
|
|
|
|
2020-06-07 00:17:27 +03:00
|
|
|
SilicaListView {
|
|
|
|
id: myList
|
2020-06-18 19:40:24 +03:00
|
|
|
header: PageHeader {
|
2020-05-24 20:54:46 +03:00
|
|
|
title: headerTitle // pageTitle pushed from MainPage.qml or VisualContainer.qml
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
clip: true
|
2020-06-03 08:34:33 +03:00
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.bottom: if (panel.open == true) {
|
|
|
|
panel.top
|
|
|
|
} else {
|
|
|
|
hiddenPanel.top
|
|
|
|
}
|
2020-06-18 19:40:24 +03:00
|
|
|
model: mdl
|
|
|
|
section {
|
|
|
|
property: 'section'
|
|
|
|
delegate: SectionHeader {
|
|
|
|
height: Theme.itemSizeExtraSmall
|
|
|
|
text: Format.formatDate(section, Formatter.DateMedium)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
delegate: VisualContainer {
|
|
|
|
}
|
|
|
|
onCountChanged: {
|
|
|
|
if (mdl)
|
|
|
|
for (var i = 0; i < mdl.count; i++) {
|
|
|
|
if (mdl.get(i).status_id === toot_id) {
|
|
|
|
console.log(mdl.get(i).status_id)
|
|
|
|
positionViewAtIndex(i, ListView.Center)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-06-11 15:22:09 +03:00
|
|
|
|
|
|
|
PullDownMenu {
|
|
|
|
id: pulleyConversation
|
|
|
|
visible: type === "reply"
|
2020-06-15 14:29:01 +03:00
|
|
|
|
2020-06-11 15:22:09 +03:00
|
|
|
MenuItem {
|
2020-06-18 09:32:52 +03:00
|
|
|
//: Use the translation of "Copy Link" for a shorter PullDownMenu label
|
2020-06-11 15:22:09 +03:00
|
|
|
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
|
2020-06-15 14:29:01 +03:00
|
|
|
} else Clipboard.text = toot_url
|
|
|
|
}
|
2020-06-11 15:22:09 +03:00
|
|
|
|
2020-06-15 14:29:01 +03:00
|
|
|
MenuItem {
|
2020-06-18 09:32:52 +03:00
|
|
|
//: "Reply" will show the Toot text entry Panel. "Hide Reply" closes it. Alternative: Use "Close Reply"
|
2020-06-15 14:29:01 +03:00
|
|
|
text: !panel.open ? qsTr("Reply") : qsTr("Hide Reply")
|
|
|
|
visible: type == "reply"
|
|
|
|
onClicked: if (!panel.open) {
|
|
|
|
panel.open = true
|
|
|
|
} else panel.open = false
|
2020-06-11 15:22:09 +03:00
|
|
|
}
|
2020-06-15 14:29:01 +03:00
|
|
|
|
2020-06-11 15:22:09 +03:00
|
|
|
}
|
2020-06-09 19:46:36 +03:00
|
|
|
}
|
2020-05-29 21:05:05 +03:00
|
|
|
|
2020-06-18 19:40:24 +03:00
|
|
|
Rectangle {
|
|
|
|
id: predictionList
|
|
|
|
visible: false
|
2020-06-03 12:52:07 +03:00
|
|
|
color: Theme.highlightDimmerColor
|
|
|
|
height: parent.height - panel.height - (Theme.paddingLarge * 4.5)
|
|
|
|
anchors {
|
|
|
|
left: panel.left
|
|
|
|
right: panel.right
|
|
|
|
bottom: if (panel.open == true) {
|
|
|
|
panel.top
|
|
|
|
} else {
|
|
|
|
hiddenPanel.top
|
|
|
|
}
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-06-03 12:52:07 +03:00
|
|
|
SilicaListView {
|
2020-06-03 08:34:33 +03:00
|
|
|
rotation: 180
|
2020-06-03 12:52:07 +03:00
|
|
|
anchors.fill: parent
|
2020-06-18 19:40:24 +03:00
|
|
|
model: suggestedModel
|
|
|
|
clip: true
|
2020-05-29 21:05:05 +03:00
|
|
|
quickScroll: false
|
|
|
|
VerticalScrollDecorator {}
|
2020-06-18 19:40:24 +03:00
|
|
|
delegate: ItemUser {
|
2020-06-03 08:34:33 +03:00
|
|
|
rotation: 180
|
2020-06-18 19:40:24 +03:00
|
|
|
onClicked: {
|
|
|
|
var start = toot.cursorPosition
|
|
|
|
while (toot.text[start] !== "@" && start > 0) {
|
|
|
|
start--
|
|
|
|
}
|
|
|
|
textOperations.text = toot.text
|
|
|
|
textOperations.cursorPosition = toot.cursorPosition
|
|
|
|
textOperations.moveCursorSelection(start - 1, TextInput.SelectWords)
|
|
|
|
toot.text = textOperations.text.substring(0, textOperations.selectionStart)
|
|
|
|
+ ' @'
|
|
|
|
+ model.account_acct
|
|
|
|
+ ' '
|
|
|
|
+ textOperations.text.substring(textOperations.selectionEnd).trim()
|
|
|
|
|
|
|
|
toot.cursorPosition = toot.text.indexOf('@' + model.account_acct)
|
2020-06-16 17:09:28 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
onCountChanged: {
|
|
|
|
if (count > 0) {
|
|
|
|
positionViewAtBeginning(suggestedModel.count - 1, ListView.Beginning)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-06-18 19:40:24 +03:00
|
|
|
DockedPanel {
|
|
|
|
id: panel
|
|
|
|
width: parent.width
|
2020-05-29 21:05:05 +03:00
|
|
|
height: progressBar.height + toot.height + (mediaModel.count ? uploadedImages.height : 0)
|
2020-06-18 19:40:24 +03:00
|
|
|
+ btnContentWarning.height + Theme.paddingMedium
|
|
|
|
+ (warningContent.visible ? warningContent.height : 0)
|
2020-05-29 21:05:05 +03:00
|
|
|
dock: Dock.Bottom
|
2020-06-18 19:40:24 +03:00
|
|
|
open: true
|
2020-06-15 14:29:01 +03:00
|
|
|
|
|
|
|
animationDuration: 300
|
2020-05-29 21:05:05 +03:00
|
|
|
|
|
|
|
Rectangle {
|
2020-06-18 19:40:24 +03:00
|
|
|
width: parent.width
|
|
|
|
height: progressBar.height
|
|
|
|
color: Theme.highlightBackgroundColor
|
|
|
|
opacity: 0.2
|
|
|
|
anchors {
|
|
|
|
left: parent.left
|
|
|
|
right: parent.right
|
|
|
|
top: parent.top
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
id: progressBar
|
|
|
|
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
|
2020-05-29 21:05:05 +03:00
|
|
|
height: Theme.itemSizeSmall * 0.05
|
2020-06-18 19:40:24 +03:00
|
|
|
color: Theme.highlightBackgroundColor
|
|
|
|
opacity: 0.7
|
|
|
|
anchors {
|
|
|
|
left: parent.left
|
2020-05-29 21:05:05 +03:00
|
|
|
top: parent.top
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TextField {
|
|
|
|
id: warningContent
|
|
|
|
visible: false
|
|
|
|
height: visible ? implicitHeight : 0
|
|
|
|
anchors {
|
2020-05-29 21:05:05 +03:00
|
|
|
top: parent.top
|
2020-06-18 19:40:24 +03:00
|
|
|
topMargin: Theme.paddingMedium
|
|
|
|
left: parent.left
|
|
|
|
right: parent.right
|
|
|
|
}
|
|
|
|
autoScrollEnabled: true
|
|
|
|
labelVisible: false
|
2020-05-04 15:55:52 +03:00
|
|
|
font.pixelSize: Theme.fontSizeSmall
|
2020-01-25 00:00:04 +03:00
|
|
|
placeholderText: qsTr("Write your warning here")
|
|
|
|
placeholderColor: palette.highlightColor
|
|
|
|
color: palette.highlightColor
|
2020-06-18 19:40:24 +03:00
|
|
|
horizontalAlignment: Text.AlignLeft
|
|
|
|
EnterKey.onClicked: {}
|
|
|
|
}
|
|
|
|
|
|
|
|
TextInput {
|
|
|
|
id: textOperations
|
|
|
|
visible: false
|
|
|
|
}
|
|
|
|
|
|
|
|
TextArea {
|
|
|
|
id: toot
|
|
|
|
anchors {
|
|
|
|
top: warningContent.bottom
|
|
|
|
topMargin: Theme.paddingMedium
|
|
|
|
left: parent.left
|
2020-05-04 15:55:52 +03:00
|
|
|
right: parent.right
|
|
|
|
rightMargin: Theme.paddingLarge * 2
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
autoScrollEnabled: true
|
|
|
|
labelVisible: false
|
2020-05-29 21:05:05 +03:00
|
|
|
text: description !== "" && (description.charAt(0) === '@'
|
2020-06-18 19:40:24 +03:00
|
|
|
|| description.charAt(
|
|
|
|
0) === '#') ? description + ' ' : ''
|
2020-05-29 21:05:05 +03:00
|
|
|
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))
|
|
|
|
}
|
2020-05-04 12:48:29 +03:00
|
|
|
horizontalAlignment: Text.AlignLeft
|
2020-01-30 15:24:27 +03:00
|
|
|
placeholderText: qsTr("What's on your mind?")
|
2020-05-04 12:48:29 +03:00
|
|
|
font.pixelSize: Theme.fontSizeSmall
|
2020-05-29 21:05:05 +03:00
|
|
|
EnterKey.onClicked: {}
|
2020-06-18 19:40:24 +03:00
|
|
|
onTextChanged: {
|
|
|
|
textOperations.text = toot.text
|
|
|
|
textOperations.cursorPosition = toot.cursorPosition
|
|
|
|
textOperations.selectWord()
|
|
|
|
textOperations.select(
|
|
|
|
textOperations.selectionStart ? textOperations.selectionStart - 1 : 0,
|
|
|
|
textOperations.selectionEnd)
|
|
|
|
//console.log(textOperations.text.substr(textOperations.selectionStart, textOperations.selectionEnd))
|
|
|
|
console.log(toot.text.length)
|
|
|
|
suggestedUser = ""
|
|
|
|
if (textOperations.selectedText.charAt(0) === "@") {
|
|
|
|
suggestedUser = textOperations.selectedText.trim().substring(1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
IconButton {
|
|
|
|
id: btnSmileys
|
2020-06-10 11:17:51 +03:00
|
|
|
|
2020-05-29 21:05:05 +03:00
|
|
|
property string selection
|
2020-06-10 11:17:51 +03:00
|
|
|
|
2020-06-03 08:34:33 +03:00
|
|
|
opacity: 0.7
|
|
|
|
icon {
|
2020-06-18 19:40:24 +03:00
|
|
|
source: "../../qml/images/icon-m-emoji.svg?"
|
2020-06-04 20:44:12 +03:00
|
|
|
color: Theme.secondaryColor
|
2020-06-03 08:34:33 +03:00
|
|
|
width: Theme.iconSizeSmallPlus
|
|
|
|
fillMode: Image.PreserveAspectFit
|
2020-05-29 21:05:05 +03:00
|
|
|
}
|
2020-06-18 19:40:24 +03:00
|
|
|
anchors {
|
2020-01-31 10:48:08 +03:00
|
|
|
top: warningContent.bottom
|
2020-06-18 19:40:24 +03:00
|
|
|
bottom: bottom.top
|
|
|
|
right: parent.right
|
|
|
|
rightMargin: Theme.paddingSmall
|
|
|
|
}
|
2020-06-10 11:17:51 +03:00
|
|
|
onSelectionChanged: { console.log(selection) }
|
2020-05-29 21:05:05 +03:00
|
|
|
onClicked: pageStack.push(emojiSelect)
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
2020-05-29 21:05:05 +03:00
|
|
|
|
2020-06-18 19:40:24 +03:00
|
|
|
SilicaGridView {
|
|
|
|
id: uploadedImages
|
|
|
|
width: parent.width
|
2020-01-30 12:09:11 +03:00
|
|
|
anchors.top: bottom.toot
|
2020-06-18 19:40:24 +03:00
|
|
|
anchors.bottom: parent.bottom
|
2020-05-29 21:05:05 +03:00
|
|
|
height: mediaModel.count ? Theme.itemSizeExtraLarge : 0
|
|
|
|
model: mediaModel
|
2020-06-18 19:40:24 +03:00
|
|
|
cellWidth: uploadedImages.width / 4
|
2020-05-29 21:05:05 +03:00
|
|
|
cellHeight: Theme.itemSizeExtraLarge
|
2020-06-18 19:40:24 +03:00
|
|
|
delegate: BackgroundItem {
|
|
|
|
id: myDelegate
|
|
|
|
width: uploadedImages.cellWidth
|
|
|
|
height: uploadedImages.cellHeight
|
|
|
|
RemorseItem {
|
2020-05-29 21:05:05 +03:00
|
|
|
id: remorse
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
Image {
|
|
|
|
anchors.fill: parent
|
|
|
|
fillMode: Image.PreserveAspectCrop
|
|
|
|
source: model.preview_url
|
|
|
|
}
|
|
|
|
onClicked: {
|
|
|
|
var idx = index
|
|
|
|
console.log(idx)
|
|
|
|
//mediaModel.remove(idx)
|
|
|
|
remorse.execute(myDelegate, qsTr("Delete"), function () {
|
|
|
|
mediaModel.remove(idx)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
add: Transition {
|
|
|
|
NumberAnimation {
|
|
|
|
property: "opacity"
|
|
|
|
from: 0
|
|
|
|
to: 1.0
|
|
|
|
duration: 800
|
|
|
|
}
|
|
|
|
}
|
|
|
|
remove: Transition {
|
|
|
|
NumberAnimation {
|
|
|
|
property: "opacity"
|
|
|
|
from: 1.0
|
|
|
|
to: 0
|
|
|
|
duration: 800
|
|
|
|
}
|
|
|
|
}
|
|
|
|
displaced: Transition {
|
|
|
|
NumberAnimation {
|
|
|
|
properties: "x,y"
|
|
|
|
duration: 800
|
|
|
|
easing.type: Easing.InOutBack
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
IconButton {
|
|
|
|
id: btnContentWarning
|
|
|
|
anchors {
|
2020-05-04 12:48:29 +03:00
|
|
|
top: toot.bottom
|
|
|
|
topMargin: -Theme.paddingSmall * 1.5
|
2020-06-18 19:40:24 +03:00
|
|
|
left: parent.left
|
|
|
|
leftMargin: Theme.paddingMedium
|
|
|
|
}
|
|
|
|
icon.source: "image://theme/icon-s-warning?"
|
|
|
|
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
|
|
|
onClicked: warningContent.visible = !warningContent.visible
|
|
|
|
}
|
|
|
|
|
|
|
|
IconButton {
|
|
|
|
id: btnAddImage
|
|
|
|
enabled: mediaModel.count < 4
|
|
|
|
anchors {
|
2020-05-04 12:48:29 +03:00
|
|
|
top: toot.bottom
|
|
|
|
topMargin: -Theme.paddingSmall * 1.5
|
2020-06-18 19:40:24 +03:00
|
|
|
left: btnContentWarning.right
|
|
|
|
leftMargin: Theme.paddingSmall
|
|
|
|
}
|
|
|
|
icon.source: "image://theme/icon-s-attach?"
|
|
|
|
+ (pressed ? Theme.highlightColor : (warningContent.visible ? Theme.secondaryHighlightColor : Theme.primaryColor))
|
|
|
|
onClicked: {
|
|
|
|
btnAddImage.enabled = false
|
|
|
|
var once = true
|
|
|
|
var imagePicker = pageStack.push("Sailfish.Pickers.ImagePickerPage", {"allowedOrientations": Orientation.All})
|
|
|
|
imagePicker.selectedContentChanged.connect(function () {
|
|
|
|
var imagePath = imagePicker.selectedContent
|
|
|
|
console.log(imagePath)
|
|
|
|
imageUploader.setUploadUrl(Logic.conf.instance + "/api/v1/media")
|
|
|
|
imageUploader.setFile(imagePath)
|
|
|
|
imageUploader.setAuthorizationHeader(Logic.conf.api_user_token)
|
|
|
|
imageUploader.upload()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ImageUploader {
|
|
|
|
id: imageUploader
|
|
|
|
onProgressChanged: {
|
|
|
|
console.log("progress " + progress)
|
|
|
|
uploadProgress.width = parent.width * progress
|
|
|
|
}
|
|
|
|
onSuccess: {
|
|
|
|
uploadProgress.width = 0
|
|
|
|
console.log(replyData)
|
|
|
|
mediaModel.append(JSON.parse(replyData))
|
|
|
|
}
|
|
|
|
onFailure: {
|
|
|
|
uploadProgress.width = 0
|
|
|
|
btnAddImage.enabled = true
|
|
|
|
console.log(status)
|
|
|
|
console.log(statusText)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ComboBox {
|
2020-05-29 21:05:05 +03:00
|
|
|
id: privacy
|
2020-06-18 19:40:24 +03:00
|
|
|
anchors {
|
2020-01-30 15:24:27 +03:00
|
|
|
top: toot.bottom
|
2020-05-04 12:48:29 +03:00
|
|
|
topMargin: -Theme.paddingSmall * 1.5
|
2020-06-18 19:40:24 +03:00
|
|
|
left: btnAddImage.right
|
2020-05-29 21:05:05 +03:00
|
|
|
right: btnSend.left
|
|
|
|
}
|
|
|
|
menu: ContextMenu {
|
2020-06-18 19:40:24 +03:00
|
|
|
MenuItem {
|
2020-01-30 12:09:11 +03:00
|
|
|
text: qsTr("Public")
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
2020-01-30 12:09:11 +03:00
|
|
|
text: qsTr("Unlisted")
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
2020-01-30 12:09:11 +03:00
|
|
|
text: qsTr("Followers-only")
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
2020-01-30 12:09:11 +03:00
|
|
|
text: qsTr("Direct")
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
IconButton {
|
|
|
|
id: btnSend
|
|
|
|
icon.source: "image://theme/icon-m-send?"
|
|
|
|
+ (pressed ? Theme.highlightColor : Theme.primaryColor)
|
|
|
|
anchors {
|
2017-06-08 01:53:54 +03:00
|
|
|
top: toot.bottom
|
2020-05-07 17:58:06 +03:00
|
|
|
topMargin: -Theme.paddingSmall * 1.5
|
2020-06-18 19:40:24 +03:00
|
|
|
right: parent.right
|
2020-01-30 12:09:11 +03:00
|
|
|
rightMargin: Theme.paddingSmall
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
enabled: toot.text !== "" && toot.text.length < tootMaxChar && uploadProgress.width == 0
|
|
|
|
onClicked: {
|
2020-01-30 12:09:11 +03:00
|
|
|
var visibility = ["public", "unlisted", "private", "direct"]
|
2020-06-18 19:40:24 +03:00
|
|
|
var media_ids = []
|
|
|
|
for (var k = 0; k < mediaModel.count; k++) {
|
|
|
|
console.log(mediaModel.get(k).id)
|
|
|
|
media_ids.push(mediaModel.get(k).id)
|
|
|
|
}
|
|
|
|
var msg = {
|
|
|
|
"action": 'statuses',
|
|
|
|
"method": 'POST',
|
|
|
|
"model": mdl,
|
|
|
|
"mode": "append",
|
|
|
|
"params": {
|
|
|
|
"status": toot.text,
|
|
|
|
"visibility": visibility[privacy.currentIndex],
|
|
|
|
"media_ids": media_ids
|
|
|
|
},
|
|
|
|
"conf": Logic.conf
|
|
|
|
}
|
|
|
|
if (toot_id)
|
|
|
|
msg.params['in_reply_to_id'] = (toot_id) + ""
|
|
|
|
|
|
|
|
if (warningContent.visible && warningContent.text.length > 0) {
|
|
|
|
msg.params['sensitive'] = 1
|
|
|
|
msg.params['spoiler_text'] = warningContent.text
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-05-24 20:54:46 +03:00
|
|
|
worker.sendMessage(msg)
|
|
|
|
warningContent.text = ""
|
|
|
|
toot.text = ""
|
2020-05-29 21:05:05 +03:00
|
|
|
mediaModel.clear()
|
2020-05-24 20:54:46 +03:00
|
|
|
sentBanner.showText(qsTr("Toot sent!"))
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-06-18 19:40:24 +03:00
|
|
|
Rectangle {
|
|
|
|
id: uploadProgress
|
|
|
|
color: Theme.highlightBackgroundColor
|
2020-05-29 21:05:05 +03:00
|
|
|
anchors.bottom: parent.bottom
|
2020-06-18 19:40:24 +03:00
|
|
|
anchors.left: parent.left
|
2020-05-29 21:05:05 +03:00
|
|
|
height: Theme.itemSizeSmall * 0.05
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
toot.cursorPosition = toot.text.length
|
|
|
|
if (mdl.count > 0) {
|
|
|
|
var setIndex = 0
|
|
|
|
switch (mdl.get(0).status_visibility) {
|
|
|
|
case "unlisted":
|
|
|
|
setIndex = 1
|
|
|
|
break
|
|
|
|
case "private":
|
|
|
|
setIndex = 2
|
|
|
|
break
|
|
|
|
case "direct":
|
|
|
|
privacy.enabled = false
|
|
|
|
setIndex = 3
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
privacy.enabled = true
|
|
|
|
setIndex = 0
|
|
|
|
}
|
|
|
|
privacy.currentIndex = setIndex
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log(JSON.stringify())
|
|
|
|
|
|
|
|
worker.sendMessage({
|
|
|
|
"action": 'statuses/' + mdl.get(0).status_id + '/context',
|
|
|
|
"method": 'GET',
|
|
|
|
"model": mdl,
|
|
|
|
"params": { },
|
|
|
|
"conf": Logic.conf
|
|
|
|
})
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-05-29 21:05:05 +03:00
|
|
|
BackgroundItem {
|
2020-06-03 08:34:33 +03:00
|
|
|
id: hiddenPanel
|
2020-05-29 21:05:05 +03:00
|
|
|
visible: !panel.open
|
2020-06-15 14:29:01 +03:00
|
|
|
height: Theme.paddingLarge * 0.7
|
2020-05-29 21:05:05 +03:00
|
|
|
width: parent.width
|
2020-06-03 08:34:33 +03:00
|
|
|
opacity: enabled ? 0.6 : 0.0
|
|
|
|
Behavior on opacity { FadeAnimator { duration: 400 } }
|
2020-05-29 21:05:05 +03:00
|
|
|
anchors {
|
|
|
|
horizontalCenter: parent.horizontalCenter
|
|
|
|
bottom: parent.bottom
|
|
|
|
}
|
|
|
|
|
|
|
|
MouseArea {
|
|
|
|
anchors.fill: parent
|
|
|
|
onClicked: panel.open = !panel.open
|
|
|
|
}
|
|
|
|
|
|
|
|
Rectangle {
|
2020-06-03 08:34:33 +03:00
|
|
|
id: hiddenPanelBackground
|
2020-05-29 21:05:05 +03:00
|
|
|
width: parent.width
|
2020-06-03 08:34:33 +03:00
|
|
|
height: parent.height
|
2020-05-29 21:05:05 +03:00
|
|
|
color: Theme.highlightBackgroundColor
|
2020-06-03 08:34:33 +03:00
|
|
|
opacity: 0.4
|
|
|
|
anchors.fill: parent
|
2020-05-29 21:05:05 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
Rectangle {
|
2020-06-03 08:34:33 +03:00
|
|
|
id: progressBarBackground
|
|
|
|
width: parent.width
|
|
|
|
height: progressBarHiddenPanel.height
|
2020-05-29 21:05:05 +03:00
|
|
|
color: Theme.highlightBackgroundColor
|
|
|
|
opacity: 0.2
|
|
|
|
anchors {
|
2020-06-03 08:34:33 +03:00
|
|
|
left: parent.left
|
|
|
|
right: parent.right
|
2020-05-29 21:05:05 +03:00
|
|
|
top: parent.top
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Rectangle {
|
2020-06-03 08:34:33 +03:00
|
|
|
id: progressBarHiddenPanel
|
2020-05-29 21:05:05 +03:00
|
|
|
width: toot.text.length ? panel.width * (toot.text.length / tootMaxChar) : 0
|
|
|
|
height: Theme.itemSizeSmall * 0.05
|
|
|
|
color: Theme.highlightBackgroundColor
|
|
|
|
opacity: 0.7
|
|
|
|
anchors {
|
|
|
|
left: parent.left
|
|
|
|
top: parent.top
|
|
|
|
}
|
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-05-29 21:05:05 +03:00
|
|
|
}
|
2020-01-30 12:09:11 +03:00
|
|
|
|
2020-05-29 21:05:05 +03:00
|
|
|
EmojiSelect {
|
|
|
|
id: emojiSelect
|
2020-06-18 19:40:24 +03:00
|
|
|
}
|
2020-05-29 21:05:05 +03:00
|
|
|
|
2020-06-03 08:34:33 +03:00
|
|
|
InfoBanner {
|
|
|
|
id: sentBanner
|
|
|
|
}
|
2017-06-08 01:53:54 +03:00
|
|
|
}
|