aboutsummaryrefslogtreecommitdiff
path: root/qml/NewChatPage.qml
blob: 482b89f94fc3113ee8f417a6a052bded94b338e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import DeltaChat 1.0
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import org.kde.kirigami 2.13 as Kirigami

Kirigami.ScrollablePage {
    id: root

    required property DcContext context

    function updateContacts() {
        let contacts = context.getContacts(0, searchField.text);
        contactsModel.clear();
        for (let i = 0; i < contacts.length; i++) {
            let contactId = contacts[i];
            const item = {
                "contactId": contactId
            };
            contactsModel.insert(i, item);
        }
    }

    title: "New chat"
    Component.onCompleted: {
        root.updateContacts();
    }

    ListModel {
        id: contactsModel
    }

    ListView {
        id: contactsList

        anchors.fill: parent
        model: contactsModel
        currentIndex: -1
        onCurrentItemChanged: {
            if (currentIndex == -1)
                return ;

            let contactId = contactsModel.get(contactsList.currentIndex).contactId;
            console.log("Creating chat with " + contactId);
            context.createChatByContactId(contactId);
            pageStack.layers.pop();
        }

        Kirigami.PlaceholderMessage {
            anchors.centerIn: parent
            visible: contactsList.count == 0 && searchField.text == ""
            text: "You have no contacts in addressbook yet"
        }

        Kirigami.PlaceholderMessage {
            anchors.centerIn: parent
            visible: contactsList.count == 0 && searchField.text != ""
            text: "Contact " + searchField.text + " is not in your address book."

            helpfulAction: Kirigami.Action {
                icon.name: "list-add"
                text: "Add contact"
                onTriggered: {
                    let contactId = root.context.createContact("", searchField.text);
                    context.createChatByContactId(contactId);
                    pageStack.layers.pop();
                }
            }

        }

        delegate: Kirigami.AbstractListItem {
            property DcContact contact: context.getContact(model.contactId)
            property string profileImage: contact.getProfileImage()

            RowLayout {
                Kirigami.Avatar {
                    name: contact.displayName
                    color: contact.color
                    source: profileImage ? "file:" + profileImage : ""
                }

                ColumnLayout {
                    Layout.fillWidth: true

                    Label {
                        text: contact.displayName
                        font.weight: Font.Bold
                        Layout.fillWidth: true
                    }

                    Label {
                        text: contact.addr
                        font: Kirigami.Theme.smallFont
                        Layout.fillWidth: true
                    }

                }

            }

        }

    }

    header: Kirigami.SearchField {
        id: searchField

        onTextChanged: root.updateContacts()
    }

}