406 lines
14 KiB
QML
406 lines
14 KiB
QML
import QtQuick 2.0
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Controls.Styles 1.4
|
|
import "qrc:/js/news.js" as Newsjs
|
|
import "qrc:/js/helper.js" as Helperjs
|
|
|
|
|
|
Item {
|
|
id: newsitem
|
|
width: parent.width
|
|
height:toprow.height+friendicaActivities.height+controlrow.height+1//Math.max((itemMessage.height+topFlow.height+friendicaActivities.height+4*mm),profileImage.height+user_name.height+mm)
|
|
|
|
Connections{
|
|
target:newstab
|
|
onConversationChanged:{
|
|
newsBusy.running=false;
|
|
if(index==newsStack.conversationIndex){
|
|
if(newstab.conversation.length>0){
|
|
var component = Qt.createComponent("qrc:/qml/newsqml/Conversation.qml");
|
|
var conversation = component.createObject(friendicaActivities,{"news":newstab.conversation});
|
|
}
|
|
else{conversationsymbol.color="grey"}
|
|
}
|
|
}
|
|
}
|
|
|
|
property string attending: ""
|
|
onAttendingChanged: {attendLabel.visible=true;
|
|
attendLabel.text= qsTr("attending: ")+ qsTr(attending)}
|
|
|
|
signal replyto(string parent_id)
|
|
|
|
function showActivityContacts(contacts){
|
|
var component = Qt.createComponent("qrc:/qml/newsqml/FriendicaActivities.qml");
|
|
var imagedialog = component.createObject(friendicaActivities,{"activitymembers": contacts});
|
|
}
|
|
Rectangle{width:newsitem.width; height: 1; anchors.bottom: newsitem.bottom; color:"light grey"}
|
|
|
|
Rectangle{
|
|
width:newsitem.width
|
|
height:newsitem.height-1
|
|
color: (newsitemobject.messagetype==1)?"#ffe6e6" : "white"
|
|
|
|
Row{id:toprow
|
|
Column {
|
|
id: authorcolumn
|
|
width: 8*mm
|
|
|
|
Image {
|
|
id:profileImage
|
|
source: (newsitemobject.user.profile_image!="")? "file://"+newsitemobject.user.profile_image : newsitemobject.user.profile_image_url
|
|
x:1
|
|
width: 7*mm
|
|
height: 7*mm
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked:{
|
|
try{root.currentIndex=1;
|
|
friendstab.active=true;
|
|
root.contactdetailsSignal(newsitemobject.user)} catch (e){Helperjs.showMessage("Error",e,root)}
|
|
}
|
|
}
|
|
onStatusChanged: if (profileImage.status == Image.Error) {source="qrc:/images/defaultcontact.jpg"}
|
|
}
|
|
Label {
|
|
id:user_name
|
|
color: "grey"
|
|
width:parent.width
|
|
font.pixelSize: 1.5*mm
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
text: Qt.atob(newsitemobject.user.name)//+forumname
|
|
}
|
|
}
|
|
Column {
|
|
id:newscolumn
|
|
width: newsitem.width-8*mm
|
|
//anchors.left: authorcolumn.right
|
|
|
|
Flow{
|
|
id:topFlow
|
|
spacing: mm
|
|
width:parent.width
|
|
Label {
|
|
id:messageTypeLabel
|
|
color: "grey"
|
|
text: if (newsitemobject.messagetype==0){qsTr("Source: ")+newsitemobject.source
|
|
} else if (newsitemobject.messagetype==1){ qsTr("Direct Message")} else {" Notification"}
|
|
font.pixelSize: 1.5*mm
|
|
}
|
|
Label {
|
|
id:createdAtLabel
|
|
color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
horizontalAlignment: Label.AlignRight
|
|
text: dateDiff
|
|
}
|
|
Label {
|
|
id:replytoLabel
|
|
color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
horizontalAlignment: Label.AlignRight
|
|
text: try {qsTr("In reply to ")+newsitemobject.reply_user.screen_name
|
|
}catch(e){" "}
|
|
}
|
|
|
|
Label {
|
|
id:newscountLabel
|
|
visible:((newstabstatus=="Conversations")&&(newsitemobject.newscount>1))?true:false
|
|
color: "grey"
|
|
height:3.5*mm
|
|
font.pixelSize: 1.5*mm
|
|
font.bold: true
|
|
horizontalAlignment: Label.AlignRight
|
|
text: try {(newsitemobject.newscount-1)+qsTr(" comments") }catch(e){" "}
|
|
MouseArea{
|
|
anchors.fill:parent
|
|
onClicked: {conversationsymbol.color="black";showConversation(index,newsitemobject)}
|
|
}
|
|
}
|
|
}
|
|
|
|
Text {
|
|
color: "#404040"
|
|
linkColor: "light green"
|
|
id: itemMessage
|
|
textFormat: Text.RichText
|
|
text:Qt.atob(newsitemobject.statusnet_html)
|
|
width: newsitem.width-8*mm-2
|
|
height: implicitHeight
|
|
wrapMode: Text.Wrap
|
|
onLinkActivated:{
|
|
Qt.openUrlExternally(link)}
|
|
Component.onCompleted:{
|
|
if (newsitemobject.attachmentList.length>0){
|
|
for(var attachments in newsitemobject.attachmentList){// (newsitemobject.attachmentList[attachments].url);
|
|
var attachcomponent = Qt.createQmlObject('import QtQuick 2.0; '+
|
|
'AnimatedImage {id:gif;source: "'+newsitemobject.attachmentList[attachments].url+
|
|
'";onStatusChanged: playing = (status == AnimatedImage.Ready)}',
|
|
friendicaActivities,"Attachment"+attachments);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Flow{
|
|
id:friendicaActivities
|
|
anchors.top:toprow.bottom
|
|
width:parent.width
|
|
spacing:mm
|
|
|
|
Label{color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
text: friendica_activities.likeText
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked: { showActivityContacts(newsitemobject.like)}
|
|
}
|
|
}
|
|
Label{color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
text: friendica_activities.dislikeText
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked: { showActivityContacts(newsitemobject.dislike)}
|
|
}
|
|
}
|
|
Label{color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
text: friendica_activities.attendyesText
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked: { showActivityContacts(newsitemobject.attendyes)}
|
|
}}
|
|
Label{color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
text: friendica_activities.attendnoText
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked: { showActivityContacts(newsitemobject.attendno)}
|
|
}
|
|
}
|
|
Label{color: "grey"
|
|
font.pixelSize: 1.5*mm
|
|
text: friendica_activities.attendmaybeText
|
|
MouseArea{
|
|
anchors.fill: parent
|
|
onClicked: { showActivityContacts(newsitemobject.attendmaybe)}
|
|
}
|
|
}
|
|
Label{
|
|
id:attendLabel
|
|
//visible: false
|
|
color: "grey"
|
|
height:3.5*mm
|
|
font.pixelSize: 1.5*mm
|
|
horizontalAlignment: Label.AlignRight
|
|
text: (friendica_activities.self.attending)?(qsTr("Attending: ")+ qsTr(friendica_activities.self.attending)):""
|
|
}
|
|
}
|
|
Row{id:controlrow
|
|
anchors.top:friendicaActivities.bottom
|
|
|
|
CheckBox{
|
|
id:likeCheckbox
|
|
//height:3*mm
|
|
width:8*mm
|
|
visible: (newsitemobject.messagetype==0)? true:false
|
|
checked:(friendica_activities.self.liked==1)?true:false
|
|
style: CheckBoxStyle {
|
|
background: Rectangle {
|
|
implicitWidth: 6*mm
|
|
implicitHeight: 3*mm
|
|
color:"white"
|
|
}
|
|
indicator: Rectangle{
|
|
implicitWidth: 3*mm
|
|
implicitHeight:3*mm
|
|
color:control.checked?"yellow":"white"
|
|
x: 4*mm
|
|
Text{
|
|
anchors.centerIn: parent
|
|
font.pixelSize: 2.5*mm
|
|
font.family:fontAwesome.name
|
|
color:control.checked?"black": "grey"
|
|
text:"\uf118"
|
|
}}
|
|
}
|
|
onClicked: {
|
|
if(likeCheckbox.checked==true){Newsjs.like(root.login,root.db,1,"like",newsitemobject.status_id,root);dislikeCheckbox.checked=false; model.friendica_activities.self.liked=0 }
|
|
else{Newsjs.like(root.login,root.db,0,"like",newsitemobject.status_id,root); model.friendica_activities.self.liked=1}}
|
|
}
|
|
CheckBox{
|
|
id: dislikeCheckbox
|
|
//height:3*mm
|
|
width:8*mm
|
|
visible: (newsitemobject.messagetype==0)? true:false
|
|
checked: (friendica_activities.self.disliked==1)?true:false
|
|
style: CheckBoxStyle {
|
|
background: Rectangle {
|
|
implicitWidth: 6*mm
|
|
implicitHeight:3*mm
|
|
color:"white"
|
|
}
|
|
indicator: Rectangle{
|
|
implicitWidth: 3*mm
|
|
implicitHeight:3*mm
|
|
color:control.checked?"yellow":"white"
|
|
x:4*mm
|
|
Text{
|
|
anchors.centerIn: parent
|
|
font.pixelSize: 2.5*mm
|
|
font.family:fontAwesome.name
|
|
color:control.checked?"black": "grey"
|
|
text: "\uf119"
|
|
}}
|
|
}
|
|
onClicked: {
|
|
if (dislikeCheckbox.checked==true){Newsjs.like(root.login,root.db,1,"dislike",newsitemobject.status_id,root);likeCheckbox.checked=false; model.friendica_activities.self.disliked=0}
|
|
else {Newsjs.like(root.login,root.db,0,"dislike",newsitemobject.status_id,root); model.friendica_activities.self.disliked=1}}
|
|
}
|
|
|
|
// Rectangle{
|
|
// width: 8*mm
|
|
// height: 3*mm
|
|
// color:"transparent"
|
|
// Text{
|
|
// id:trashsymbol
|
|
// color: "grey"
|
|
// anchors.centerIn: parent
|
|
// font.pixelSize: 2*mm
|
|
// font.bold: true
|
|
// text: "\uf1f8"
|
|
// }
|
|
// MouseArea{
|
|
// anchors.fill:parent
|
|
// onClicked: {
|
|
// Newsjs.deleteNews(root.login,root.db,newsitemobject.status_id,newsitemobject.messagetype,root,function(reply){
|
|
// newsModel.remove(index)})
|
|
// }}
|
|
// }
|
|
CheckBox {
|
|
id:favoritedCheckbox
|
|
visible:(newsitemobject.messagetype==0)
|
|
width: 8*mm
|
|
style: CheckBoxStyle {
|
|
background: Rectangle {
|
|
implicitWidth: 6*mm
|
|
implicitHeight:3*mm
|
|
color:"transparent"
|
|
}
|
|
indicator:Rectangle{
|
|
x:3*mm
|
|
width: 3*mm
|
|
implicitHeight:3*mm
|
|
Text{
|
|
color: control.checked?"black":"grey"
|
|
font.pixelSize: 2.5*mm
|
|
text:"\uf005"
|
|
}}
|
|
}
|
|
checked:(newsitemobject.favorited>0)
|
|
onClicked:{
|
|
if(favoritedCheckbox.checkedState==Qt.Checked){
|
|
Newsjs.favorite(login,true,newsitemobject.status_id,root); model.newsitemobject.favorited=1}
|
|
else if(favoritedCheckbox.checkedState==Qt.Unchecked){
|
|
Newsjs.favorite(login,false,newsitemobject.status_id,root);model.newsitemobject.favorited=0}
|
|
}
|
|
}
|
|
Rectangle{
|
|
width: 8*mm
|
|
height: 3*mm
|
|
color:"transparent"
|
|
Text{
|
|
id:newsmenusymbol
|
|
color: "grey"
|
|
anchors.centerIn: parent
|
|
font.pixelSize: 2*mm
|
|
font.bold: true
|
|
text: "\u22EE"
|
|
}
|
|
MouseArea{
|
|
anchors.fill:parent
|
|
onClicked: {newsmenu.popup()}}
|
|
}
|
|
Rectangle{
|
|
width: 8*mm
|
|
height: 3*mm
|
|
visible:newstab.newstabstatus!="Conversation"
|
|
color:"transparent"
|
|
Text{
|
|
id:conversationsymbol
|
|
color: "grey"
|
|
anchors.centerIn: parent
|
|
font.pixelSize: 2.5*mm
|
|
font.family: fontAwesome.name
|
|
text: "\uf086"
|
|
}
|
|
MouseArea{
|
|
anchors.fill:parent
|
|
onClicked:{
|
|
conversationsymbol.color="black";
|
|
showConversation(index,newsitemobject)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Menu {
|
|
id:newsmenu
|
|
MenuItem {
|
|
text: qsTr("Reply")
|
|
onTriggered: {
|
|
var directmessage=0;
|
|
if (newsitemobject.messagetype==1){ directmessage=1}
|
|
newsStack.push({item:"qrc:/qml/newsqml/MessageSend.qml",properties:{"reply_to_user": newsitemobject.user.screen_name,"parentId":newsitemobject.status_id,"login":root.login,"directmessage":directmessage}});
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("DM")
|
|
onTriggered: {
|
|
root.directmessageSignal(newsitemobject.user.screen_name);
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Repost")
|
|
onTriggered: {
|
|
Newsjs.retweetNews(root.login,db,newsitemobject.status_id,root,function(reply){
|
|
print(reply)})
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Conversation")
|
|
onTriggered: showConversation(index,newsitemobject)
|
|
}
|
|
|
|
Menu{
|
|
title: qsTr("Attending")
|
|
MenuItem{
|
|
text:qsTr("yes")
|
|
onTriggered: {Newsjs.attend(root.login,db,"yes",newsitemobject.status_id,root,function(){
|
|
model.friendica_activities.self.attending="yes";attending="yes"})
|
|
}
|
|
}
|
|
MenuItem{text:qsTr("maybe")
|
|
onTriggered: {Newsjs.attend(root.login,db,"maybe",newsitemobject.status_id,root,function(){
|
|
model.friendica_activities.self.attending="maybe";attending="maybe"})
|
|
}
|
|
}
|
|
MenuItem{text:qsTr("no")
|
|
onTriggered: {Newsjs.attend(root.login,db,"no",newsitemobject.status_id,root,function(){
|
|
model.friendica_activities.self.attending="no";attending="no"})}
|
|
}
|
|
}
|
|
|
|
MenuItem {
|
|
text: qsTr("Delete")
|
|
onTriggered: {
|
|
Newsjs.deleteNews(root.login,root.db,newsitemobject.status_id,newsitemobject.messagetype,root,function(reply){
|
|
newsModel.remove(index)})
|
|
}
|
|
}
|
|
}
|
|
}}
|