summaryrefslogtreecommitdiff
path: root/kodereviewer/qml/CommentPage.qml
blob: 756f5da26dcedb9b68cbc63c8645386494d7486b (plain)
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
pragma ComponentBehavior: Bound
import QtQuick
import QtCore
import QtQuick.Controls as QQC2
import QtQuick.Layouts

import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.components as KirigamiComponents
import org.deprecated.kodereviewer 1.0


Kirigami.ScrollablePage {
    id: root

    property PullRequest pullRequest
    property NetworkManager connection

    Kirigami.Theme.colorSet: Kirigami.Theme.View
    Kirigami.Theme.inherit: false

    title: pullRequest ? `#${pullRequest.number}` : ""

    actions: commonActions

    Timer {
        // Ten minutes?
        id: getCommentsTimer
        interval: 1000 * 60 * 10
        running: false
        repeat: true
        triggeredOnStart: true
        onTriggered: {
            console.log("Getting comments from timer")
            root.connection.getPullRequestComments(root.pullRequest.number)
        }
    }

    Loader {
        id: commentModelLoader
        active: !!root.pullRequest
        sourceComponent: CommentModel {
            id: commentModel
            pullRequest: root.pullRequest

            onPullRequestChanged: getCommentsTimer.restart()
        }
        onActiveChanged: console.log("active? " + active + " pull request: " + root.pullRequest)
    }

    Kirigami.CardsListView {
        id: commentsListView
        Layout.fillWidth: true
        Layout.fillHeight: true
        visible: !!root.pullRequest
        model: commentModelLoader.item
        delegate: CommentDelegate {}
        footerPositioning: ListView.InlineFooter
        footer: Item {
            id: rootFooter
            anchors.left: parent.left
            anchors.right: parent.right
            height: footerLayout.implicitHeight
            RowLayout {
                id: footerLayout
                anchors.fill: parent
                anchors.topMargin: Kirigami.Units.largeSpacing * 2

                MarkdownTextArea {
                    id: newCommentTextArea
                    Layout.fillWidth: true
                }
                QQC2.Button {
                    icon.name: "document-send-symbolic"
                    enabled: newCommentTextArea.text != ''
                    Layout.fillHeight: true

                    onClicked: {
                        if (newCommentTextArea.text == '') {
                            return
                        }

                        root.connection.createComment(root.pullRequest.number, newCommentTextArea.text)
                        newCommentTextArea.text == ''
                        getCommentsTimer.restart()
                    }
                }
            }

        }
    }
}