//  This file is part of Friendiqa
//  https://git.friendi.ca/lubuwest/Friendiqa
//  Copyright (C) 2020 Marco R. <thomasschmidt45@gmx.net>
//
//  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 <http://www.gnu.org/licenses/>.

import QtQuick 2.11
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.11
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"

Item{
    id: contactsGridTab
    Layout.fillWidth:true
    Layout.fillHeight: true
    function showContacts(contact){
        try {contactsModel.clear()} catch(e){print(e)};
        Helperjs.readData(db, "contacts",root.login.username,function(contactsobject){
            for (var j=0;j<contactsobject.length;j++){
                contactsobject[j].description=Qt.atob(contactsobject[j].description);
                contactsobject[j].name=Qt.atob(contactsobject[j].name);
                 contactsModel.append({"contact":contactsobject[j]});
                }
        },"isFriend",0,"screen_name ASC");
    }
    MButton {
        id: cleanButton
        text:  "\uf021"
        anchors.top: parent.top
        anchors.topMargin: mm
        anchors.right: parent.right
        onClicked: {
            Service.cleanContacts(root.login,root.db,function(){
                try {contactsModel.clear()} catch(e){print(e)};
                Helperjs.readData(db, "contacts",root.login.username,function(contactsobject){
                    for (var j=0;j<contactsobject.length;j++){
                        contactsobject[j].description=Qt.atob(contactsobject[j].description);
                        contactsobject[j].name=Qt.atob(contactsobject[j].name);
                         contactsModel.append({"contact":contactsobject[j]});
                        }
                },"isFriend",0,"screen_name ASC");
            })
        }
    }
    ListView {
        id: contactsView
        x:mm
        y:cleanButton.height+2*mm
        width:contactsGridTab.width-2*mm
        height:contactsGridTab.height-cleanButton.height-2*mm
        spacing: 2
        clip: true
        function processContactSelection(contactobject){showContactdetails(contactobject)}
             //add: Transition {
              //        NumberAnimation { properties: "x,y"; from: 300; duration: 1000 }
              //    }
        model: contactsModel
        delegate: ContactComponent { }
    }

    ListModel{id: contactsModel}
    Component.onCompleted: {
        friendsTabView.contactsSignal.connect(showContacts);
        showContacts()
    }
}