// This file is part of Friendiqa // https://git.friendi.ca/lubuwest/Friendiqa // Copyright (C) 2017 Marco R. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // In addition, as a special exception, the copyright holders give // permission to link the code of portions of this program with the // OpenSSL library under certain conditions as described in each // individual source file, and distribute linked combinations including // the two. // // You must obey the GNU General Public License in all respects for all // of the code used other than OpenSSL. If you modify file(s) with this // exception, you may extend this exception to your version of the // file(s), but you are not obligated to do so. If you do not wish to do // so, delete this exception statement from your version. If you delete // this exception statement from all source files in the program, then // also delete it here. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . import QtQuick 2.0 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.4 import QtQuick.LocalStorage 2.0 import "qrc:/js/helper.js" as Helperjs import "qrc:/js/news.js" as Newsjs import "qrc:/js/service.js" as Service import "qrc:/qml/contactqml" import "qrc:/qml/genericqml" Rectangle { y:1 color: "white" function showContactdetails(contact){ var component = Qt.createComponent("qrc:/qml/contactqml/ContactDetailsComponent.qml"); if(contact.isFriend){ friendsTabView.currentIndex=1; var contactDetails = component.createObject(friendstab,{"contact": contact}) } else{friendsTabView.currentIndex=2; var contactDetails = component.createObject(friendstab,{"contact": contact}) } } function showProfile(callback){ var profile=({}); Helperjs.readData(db,"profiles",login.username,function(profileobject){ var profilearray=[]; for (var i in profileobject){ profilearray.push(JSON.parse(Qt.atob(profileobject[i].profiledata))); } profile.profiles=profilearray; }); Helperjs.readData(db,"contacts",login.username,function(owner){ profile.friendica_owner=owner[0]; },"isFriend",2); callback(profile) } TabView{ id:friendsTabView tabPosition: Qt.TopEdge x:mm y:mm width: root.width-2*mm height: root.height-10*mm currentIndex: 1 signal contactsSignal(var contact) signal groupsSignal(var username) onCurrentIndexChanged:{ if (currentIndex==1){ contactsSignal("") } else if (currentIndex==2){ contactsSignal("") } else if (currentIndex==3){groupsSignal(root.login.username)} } style: TabViewStyle { frameOverlap: 1 tab: Rectangle { color: "white" implicitWidth: root.width/4-2*mm implicitHeight: 4*mm Text { id: text anchors.centerIn: parent text: styleData.title color: "dark grey" font.pixelSize:2.5*mm font.bold: styleData.selected } } frame: Rectangle { color: "light grey" } tabsAlignment:Qt.AlignHCenter } Tab{ id:profileGridTab title: qsTr("Me") Component.onCompleted:{ showProfile(function(profile){ var component = Qt.createComponent("qrc:/qml/contactqml/ProfileComponent.qml"); var profilecomp = component.createObject(profileGridTab,{"profile": profile}); }); } } Tab{ title: qsTr("Friends") Rectangle{ id: friendsGridTab property int currentContact:0 function showFriends(contact){ try {friendsModel.clear()} catch(e){print(e)}; Helperjs.readData(root.db,"contacts",login.username,function(friendsobject){ for (var i=0;i1){ friendsobject[i].screen_name=friendsobject[i].screen_name+"+"+friendsobject[i].cid } friendsModel.append({"contact":friendsobject[i]}); } },"isFriend",1,"screen_name ASC"); } Connections{ target:xhr onDownloaded:{ if(type=="contactlist"){ //print(url+" "+filename+" "+i) currentContact=i+1; if(currentContact==root.newContacts.length){showFriends(root.login.username)} } } } BlueButton { id: updateFriendsButton text: "\uf021" anchors.top: parent.top anchors.topMargin: mm anchors.right: parent.right onClicked: { try {friendsModel.clear()} catch(e){print(e)}; //root.contactLoadType="friends"; Newsjs.requestFriends(root.login,db,root,function(nc){ root.newContacts=nc }) } } ProgressBar{ id: newContactsProgress width: 15*mm height: updateFriendsButton.height anchors.top: parent.top anchors.right:updateFriendsButton.left anchors.rightMargin:mm visible: (currentContact!=(root.newContacts.length))?true:false value: currentContact/root.newContacts.length } //GridView { ListView{ id: friendsView x:mm y:updateFriendsButton.height+2*mm width:friendsGridTab.width-2*mm height:friendsGridTab.height-updateFriendsButton.height-2*mm clip: true spacing: 2 //add: Transition { // NumberAnimation { properties: "x,y"; from: 300; duration: 1000 } // } model: friendsModel delegate: ContactComponent { } } ListModel{id:friendsModel} Component.onCompleted: { root.friendsSignal.connect(showFriends); friendsTabView.contactsSignal.connect(showFriends); showFriends(root.login.username); root.newContacts=[] } } } Tab{ title: qsTr("Contacts") Rectangle{ id: contactsGridTab function showContacts(contact){ try {contactsModel.clear()} catch(e){print(e)}; Helperjs.readData(db, "contacts",root.login.username,function(contactsobject){ for (var j=0;j