forked from lubuwest/Friendiqa
267 lines
9.5 KiB
QML
267 lines
9.5 KiB
QML
import QtQuick 2.0
|
|
//import QtQuick.Dialogs 1.2
|
|
import QtQuick.Controls 1.2
|
|
//import QtQuick.LocalStorage 2.0 as Sql
|
|
//import "qrc:/qml"
|
|
import "qrc:/qml/genericqml"
|
|
import "qrc:/js/news.js" as Newsjs
|
|
import "qrc:/js/helper.js" as Helperjs
|
|
import "qrc:/js/service.js" as Service
|
|
|
|
Item {
|
|
Connections{
|
|
target:newstab
|
|
onNewstabstatusChanged:{
|
|
newstabstatusButton.text= qsTr(newstab.newstabstatus)
|
|
}
|
|
}
|
|
|
|
Connections{
|
|
target:newstab
|
|
onConversationChanged:{
|
|
newsBusy.running=false;
|
|
newstab.newstabstatus="Conversation";
|
|
newsStack.push({item:"qrc:/qml/newsqml/Conversation.qml",properties:{"news": conversation}})
|
|
}
|
|
}
|
|
|
|
Connections{
|
|
target:root
|
|
onCurrentContactChanged:{
|
|
if (root.newContacts.length>0){
|
|
if(root.currentContact<root.newContacts.length){
|
|
downloadNotice.text= qsTr("Download profile image for ")+ root.newContacts[root.currentContact].name;
|
|
print(root.newContacts[root.currentContact].name)
|
|
}
|
|
}else{downloadNotice.text=""}
|
|
}
|
|
}
|
|
|
|
Connections{
|
|
target:xhr
|
|
onError:{if (data=="contact"){downloadNotice.text=downloadNotice.text+"... Error!"}}
|
|
}
|
|
|
|
function showNews(newsToShow){
|
|
if (newsStack.depth>1){newsStack.pop()}
|
|
newsBusy.running=false;
|
|
var currentTime= new Date();
|
|
var msg = {'currentTime': currentTime, 'model': newsModel,'news':newsToShow};
|
|
newsWorker.sendMessage(msg);
|
|
}
|
|
|
|
function onFriendsMessages(friend){
|
|
newstab.newstabstatus="Contact"
|
|
Newsjs.newsfromdb(db,root.login.username, function(dbnews){showNews(dbnews)},friend)
|
|
}
|
|
|
|
function onDirectMessage(friend){
|
|
newstab.newstabstatus="SendMessage"
|
|
newsStack.push({item:"qrc:/qml/newsqml/MessageSend.qml",properties:{"reply_to_user": friend,"directmessage":1,"login":root.login}});
|
|
}
|
|
|
|
|
|
|
|
StackView{
|
|
id: newsStack
|
|
anchors.fill:parent
|
|
|
|
initialItem:Rectangle {
|
|
y:1
|
|
color: "white"
|
|
width:root.width-2*mm
|
|
height:root.height-8*mm
|
|
|
|
BlueButton{
|
|
id:newstabstatusButton
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 0.5*mm
|
|
text: qsTr(newstab.newstabstatus)
|
|
onClicked: {newstabmenu.popup()}
|
|
}
|
|
|
|
Row{
|
|
spacing: mm
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 0.5*mm
|
|
anchors.right: parent.right
|
|
|
|
BlueButton {
|
|
id: newMessageButton
|
|
width:10*mm
|
|
text: qsTr("+")
|
|
onClicked: {
|
|
var groups=[];
|
|
Helperjs.readData(root.db,"groups",root.login.username,function(groupobject){
|
|
groups=groupobject});
|
|
newstab.newstabstatus="SendMessage";
|
|
Helperjs.readData(root.db,"contacts",root.login.username,function(friends){
|
|
newsStack.push({item:"qrc:/qml/newsqml/MessageSend.qml",properties:{"contacts": friends,"login":root.login}})
|
|
},"isFriend",1);
|
|
}
|
|
}
|
|
BlueButton {
|
|
id: quitButton
|
|
width:10*mm
|
|
text: qsTr("Quit")
|
|
onClicked: {Service.cleanNews(root.db,function(){Qt.quit() })}
|
|
}
|
|
BlueButton {
|
|
id: update
|
|
text: "Update"
|
|
onClicked: {
|
|
newsBusy.running=true;
|
|
newstab.newstabstatus=login.newsViewType;
|
|
root.contactLoadType="news";
|
|
var onlynew=true;
|
|
Newsjs.getFriendsTimeline(login,db,contactlist,onlynew,newstab,function(ns,nc){
|
|
root.news=ns;root.newContacts=nc;root.currentContact=0;
|
|
if (ns.length==0){// update last 20 existing news for changes and likes
|
|
onlynew=false;
|
|
Newsjs.getFriendsTimeline(login,db,contactlist,onlynew,newstab,function(rns,rnc){
|
|
root.contactLoadType="news";
|
|
root.news=rns;root.newContacts=rnc;root.currentContact=0})
|
|
}
|
|
})}
|
|
}
|
|
|
|
}
|
|
Component { id:footerComponent
|
|
Rectangle{
|
|
border.color: "#EEEEEE"
|
|
border.width: 1
|
|
width:parent.width
|
|
height:6*mm
|
|
Text{
|
|
font.pixelSize: 1.5*mm
|
|
anchors.centerIn: parent
|
|
text:qsTr("More")
|
|
}
|
|
MouseArea{anchors.fill:parent
|
|
onClicked:{
|
|
var currentTime= new Date();
|
|
if(newstab.newstabstatus=="Timeline"){
|
|
var lastnews_id=newsModel.get(newsModel.count-1).newsitemobject.created_at;
|
|
Newsjs.newsfromdb(root.db,root.login.username, function(news){
|
|
var msg = {'currentTime': currentTime, 'model': newsModel,'news':news,'appendnews':true};
|
|
newsWorker.sendMessage(msg);
|
|
},false,lastnews_id)}
|
|
if(newstab.newstabstatus=="Tree"){
|
|
var lastnews_id=newsModel.get(newsModel.count-1).newsitemobject.created_at;
|
|
Newsjs.chatsfromdb(root.db,root.login.username, function(news){
|
|
var msg = {'currentTime': currentTime, 'model': newsModel,'news':news,'appendnews':true};
|
|
newsWorker.sendMessage(msg);
|
|
},lastnews_id)}
|
|
else if(newstab.newstabstatus=="Contact"){
|
|
Newsjs.newsfromdb(root.db,root.login.username, function(news){
|
|
var msg = {'currentTime': currentTime, 'model': newsModel,'news':news,'appendnews':true};
|
|
newsWorker.sendMessage(msg);
|
|
},newsModel.get(newsModel.count-1).newsitemobject.uid,newsModel.get(newsModel.count-1).newsitemobject.created_at)}
|
|
}}
|
|
}
|
|
}
|
|
ListView {
|
|
id: newsView
|
|
anchors.fill: parent
|
|
anchors.topMargin: 8*root.mm
|
|
anchors.leftMargin: 3*root.mm; anchors.rightMargin: root.mm
|
|
anchors.bottomMargin: 1*root.mm
|
|
clip: true
|
|
spacing: 0
|
|
footer: footerComponent
|
|
model: newsModel
|
|
delegate: Newsitem{}
|
|
}
|
|
|
|
ListModel{id: newsModel}
|
|
|
|
WorkerScript {
|
|
id: newsWorker
|
|
source: "qrc:/js/newsworker.js"
|
|
}
|
|
|
|
BusyIndicator{
|
|
id: newsBusy
|
|
anchors.horizontalCenter: newsView.horizontalCenter
|
|
anchors.top:newsView.top
|
|
anchors.topMargin: 2*mm
|
|
width:10*mm
|
|
height: 10*mm
|
|
}
|
|
Rectangle{
|
|
id:downloadNotice
|
|
property alias text: noticeText.text
|
|
color:"white"
|
|
border.color:"grey"
|
|
z:1
|
|
anchors.horizontalCenter: newsView.horizontalCenter
|
|
anchors.bottom:newsView.bottom
|
|
anchors.bottomMargin: 2*mm
|
|
width: noticeText.width+2*mm
|
|
height: noticeText.height+2*mm
|
|
visible: (downloadNotice.text!="")
|
|
|
|
Text{
|
|
id:noticeText
|
|
color: "grey"
|
|
anchors.centerIn: parent
|
|
width: contentWidth
|
|
height: contentHeight
|
|
font.pixelSize: 2*mm
|
|
text:""
|
|
}
|
|
}
|
|
Menu {
|
|
id:newstabmenu
|
|
MenuItem {
|
|
text: qsTr("Timeline")
|
|
onTriggered: {
|
|
newstab.newstabstatus="Timeline";
|
|
newsModel.clear();
|
|
Newsjs.newsfromdb(root.db,root.login.username, function(dbnews){
|
|
showNews(dbnews)
|
|
})}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Favorites")
|
|
onTriggered:{
|
|
newstab.newstabstatus="Favorites";
|
|
root.contactLoadType="favorites";
|
|
newsBusy.running=true;
|
|
Newsjs.requestFavorites(root.login,db,root.contactlist,root,function(ns,nc){
|
|
root.news=ns; root.newContacts=nc;root.currentContact=0;
|
|
})
|
|
}
|
|
}
|
|
|
|
MenuItem {
|
|
text: qsTr("Tree")
|
|
onTriggered:{
|
|
newsModel.clear();
|
|
newstab.newstabstatus="Tree";
|
|
Newsjs.chatsfromdb(db,root.login.username,function(news){showNews(news)})
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Notifications")
|
|
onTriggered:{
|
|
newstab.newstabstatus="Notifications";
|
|
newsBusy.running=true;
|
|
Newsjs.getNotifications(root.login,db,root,function(news){
|
|
showNews(news)}
|
|
)}
|
|
}
|
|
}
|
|
Component.onCompleted: {
|
|
root.messageSignal.connect(onFriendsMessages);
|
|
root.directmessageSignal.connect(onDirectMessage);
|
|
root.newsSignal.connect(showNews);
|
|
try{newsModel.clear()} catch(e){}
|
|
newstab.newstabstatus=login.newsViewType;
|
|
if(login.newsViewType=="Timeline"){Newsjs.newsfromdb(db,login.username,function(dbnews){showNews(dbnews)})}
|
|
else{Newsjs.chatsfromdb(db,login.username,function(dbnews){showNews(dbnews)})}
|
|
}
|
|
}
|
|
}
|
|
}
|