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() } } } } } }