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 var pullRequest property NetworkManager connection Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.inherit: false property string currentView: "info" title: pullRequest ? pullRequest.title : "" actions: [ Kirigami.Action { id: reviewChangesAction text: "Review changes" icon.name: "preview-symbolic" enabled: !!root.pullRequest onTriggered: reviewChangesDialog.open() }, Kirigami.Action { id: openFiles text: "Files" icon.name: "file-catalog-symbolic" enabled: !!root.pullRequest onTriggered: { if(contextDrawer.opened) { contextDrawer.close() } else { contextDrawer.open() } } } ] ReviewDialog { id: reviewChangesDialog onAccepted: { root.connection.createReview( root.pullRequest.number, root.pullRequest.last_commit, reviewBodyText, event ) clearForm() } } Loader { id: commentModelLoader active: !!root.pullRequest sourceComponent: CommentModel { id: commentModel pullRequest: root.pullRequest onPullRequestChanged: root.connection.getPullRequestComments(root.pullRequest.number) } } Loader { id: reviewLoader active: !!root.pullRequest sourceComponent: ReviewModel { id: reviewModel pullRequest: root.pullRequest onPullRequestChanged: root.connection.getPullRequestReviews(root.pullRequest.number) } } Loader { id: fileModelLoader active: !!root.pullRequest sourceComponent: FileModel { id: fileModel pullRequest: root.pullRequest onPullRequestChanged: root.connection.getFiles(root.pullRequest.number) } } Kirigami.PlaceholderMessage { visible: !root.pullRequest anchors.centerIn: parent icon.name: "org.deprecated.kodereviewer" text: "Select a pull request" } ColumnLayout { id: mainLayout anchors.fill: parent PullRequestDescription { visible: !!root.pullRequest && root.currentView == "info" pullRequest: root.pullRequest Layout.fillWidth: true Layout.fillHeight: true //anchors.fill: parent } Kirigami.CardsListView { id: commentsListView Layout.fillWidth: true Layout.fillHeight: true visible: !!root.pullRequest && root.currentView == "comments" model: commentModelLoader.item delegate: CommentDelegate {} footerPositioning: ListView.OverlayFooter } ReviewList { id: reviewListView visible: !!root.pullRequest && root.currentView == "reviews" Layout.fillWidth: true Layout.fillHeight: true model: reviewLoader.item } Editor { id: editor visible: !!root.pullRequest && root.currentView == "files" Layout.fillWidth: true Layout.fillHeight: true text: "" file: "" } } Connections { target: contextDrawer function onFileSelected(filename, text) { console.log("file changed!") editor.filename = filename + '.diff' editor.text = text } } footer: Kirigami.NavigationTabBar { actions: [ Kirigami.Action { icon.name: "info" text: i18n("Info") onTriggered: { root.currentView = "info" //root.flickable = mainLayout } }, Kirigami.Action { icon.name: "comment-symbolic" text: i18n("Comments") onTriggered: { root.currentView = "comments" //root.flickable = commentsListView } }, Kirigami.Action { icon.name: "file-catalog-symbolic" text: i18n("Files") onTriggered: { root.currentView = "files" //root.flickable = reviewListView } }, Kirigami.Action { icon.name: "document-preview-symbolic" text: i18n("Reviews") onTriggered: { root.currentView = "reviews" //root.flickable = mainLayout } } ] } }