= QML Modules
:toc:

== Main.qml

Main `Kirigami.ApplicationWindow`. This window has a property `project` that tells the application which page should display.

In case `project` is `null` (this is when the application starts), it will show a <<WelcomePage.qml, Welcome Page>>.

If a project is selected, it will show a <<ProjectListPage.qml, Project List page>> and a <<PullRequestDescriptionPage.qml, Pull request description page>>.

In the footer it will show a `Kirigami.NavigationTabBar` with four items. Selecting one will `pop` the current page and will push it related page.

image::images/main-navigation-tab-bar.png[NavigationTabBar]

Info :: Info of the current pull request. See <<PullRequestDescriptionPage.qml, Pull request description page>>.
Comments :: All comments of the pull request. See <<CommentPage.qml, Comment page>>.
Files :: Diff view of the files in the pull request. See <<FilesChangedPage.qml, Files changed page>>.
Reviews :: Reviews made to the pull request. See <<ReviewListPage.qml, Review list page>>.

== WelcomePage.qml

This page list the following items

- Latest projects
- Button to add a project
- Settings page

== SettingsPage.qml

General settings of the application.

Has the authorization token for github API.

== ProjectListPage.qml

`Kirigami.ScrollablePage` that list all pull requests in a project.

image::images/ProjectListPage.png[ProjectListPage]

Selecting a pull request the list will trigger a `pullRequestSelected` signal.

=== Key actions

* [x] Refresh pull request list
* [ ] Search pull requests

== PullRequestDescriptionPage.qml

Shows all the information of a selected pull request

image::images/PullRequestDescriptionPage.png[PullRequestDescriptionPage]

=== PullRequestDescription.qml

`Kirigami.FormLayout` with all the info about the pull request.

The `pullRequest` variable is of a type xref:data.adoc#PullRequest[`kodereviewer.data.PullRequest`]

=== Key actions

None. This page is informational only.

== CommentPage.qml

== FilesChangedPage.qml

== ReviewListPage.qml
