pragma ComponentBehavior: Bound import QtQuick import QtCore import QtQuick.Controls as Controls import QtQuick.Layouts import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.formcard as FormCard import org.deprecated.kodereviewer 1.0 Kirigami.ApplicationWindow { id: root title: qsTr("Kode Reviewer") minimumWidth: Kirigami.Units.gridUnit * 20 //minimumHeight: Kirigami.Units.gridUnit * 20 width: minimumWidth height: minimumHeight signal projectSelected() property Project project property bool isProjectSelected: false property NetworkManager connection: NetworkManager { project: root.project } Settings { id: settings property alias width: root.width property alias height: root.height property string githubToken: "" } pageStack.initialPage: initPage Component { id: initPage WelcomePage { onProjectSelected: project => { root.project = project root.projectSelected() } } } Loader { id: treeFileModelLoader active: !!pullRequest property var pullRequest: undefined sourceComponent: TreeFileModel { pullRequest: treeFileModelLoader.pullRequest } onPullRequestChanged: { if (pullRequest) root.connection.getFiles(pullRequest.number) } } contextDrawer: FilesDrawer { id: contextDrawer enabled: treeFileModelLoader.active model: treeFileModelLoader.item onEnabledChanged: { print("Enabled? " + enabled) } } Loader { id: projectListPageLoader active: root.isProjectSelected sourceComponent: Component { ProjectListPage { connection: root.connection project: root.project onPullRequestSelected: number => { const pullRequest = project.pullRequest(number) pullRequestPageLoader.item.pullRequest = pullRequest commentsPageLoader.item.pullRequest = pullRequest reviewListPageLoader.item.pullRequest = pullRequest filesChangedPageLoader.item.pullRequest = pullRequest treeFileModelLoader.pullRequest = pullRequest } } } } Kirigami.PagePool { id: pagePool } Loader { id: commentsPageLoader active: root.isProjectSelected sourceComponent: CommentPage { connection: root.connection } } Loader { id: pullRequestPageLoader active: root.isProjectSelected sourceComponent: PullRequestDescriptionPage { connection: root.connection } } Loader { id: reviewListPageLoader active: root.isProjectSelected sourceComponent: ReviewListPage { connection: root.connection } } Loader { id: filesChangedPageLoader active: root.isProjectSelected sourceComponent: FilesChangedPage { connection: root.connection } } onProjectSelected: { navigationFooter.visible = true root.isProjectSelected = true pageStack.replace(projectListPageLoader.item) pageStack.push(pullRequestPageLoader.item) } footer: Kirigami.NavigationTabBar { id: navigationFooter visible: false actions: [ Kirigami.Action { icon.name: "info" text: i18n("Info") onTriggered: { root.pageStack.pop() root.pageStack.push(pullRequestPageLoader.item) } }, Kirigami.Action { icon.name: "comment-symbolic" text: i18n("Comments") onTriggered: { root.pageStack.pop() root.pageStack.push(commentsPageLoader.item) } }, Kirigami.Action { icon.name: "file-catalog-symbolic" text: i18n("Files") onTriggered: { root.pageStack.pop() root.pageStack.push(filesChangedPageLoader.item) } }, Kirigami.Action { icon.name: "document-preview-symbolic" text: i18n("Reviews") onTriggered: { root.pageStack.pop() root.pageStack.push(reviewListPageLoader.item) } } ] } }