mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
QML UI: use stackView to show sub windows
QML on Android doesn't support multiple windows, so dialogs that work on the desktop are not a good solution on Android. A much more natural way to present sub windows is a stackView. In order to do this Preferences needs to be an item and the structure of the ApplicationWindow needs to change a bit. This also removes the hard coded sizes and instead tries to design this in a resolution independent manner. The diff appears larger than the actual change because of an increase of indentation for the ApplicationWindow content. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
57e9784d27
commit
164cafe5d3
2 changed files with 66 additions and 52 deletions
|
@ -5,7 +5,7 @@ import QtQuick.Dialogs 1.2
|
||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
import org.subsurfacedivelog.mobile 1.0
|
import org.subsurfacedivelog.mobile 1.0
|
||||||
|
|
||||||
Window {
|
Item {
|
||||||
id: loginWindow
|
id: loginWindow
|
||||||
|
|
||||||
signal accept
|
signal accept
|
||||||
|
@ -14,8 +14,6 @@ Window {
|
||||||
property string password: password.text;
|
property string password: password.text;
|
||||||
property bool issave: savePassword.checked;
|
property bool issave: savePassword.checked;
|
||||||
|
|
||||||
flags: Qt.Dialog
|
|
||||||
modality: Qt.WindowModal
|
|
||||||
GridLayout {
|
GridLayout {
|
||||||
columns: 2
|
columns: 2
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
@ -66,8 +64,7 @@ Window {
|
||||||
manager.cloudUserName = login.text
|
manager.cloudUserName = login.text
|
||||||
manager.cloudPassword = password.text
|
manager.cloudPassword = password.text
|
||||||
manager.savePreferences()
|
manager.savePreferences()
|
||||||
loginWindow.close();
|
stackView.pop()
|
||||||
loginWindow.accept();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +77,7 @@ Window {
|
||||||
text: "Cancel"
|
text: "Cancel"
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
loginWindow.close();
|
stackView.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,58 +10,75 @@ ApplicationWindow {
|
||||||
property bool fullscreen: true
|
property bool fullscreen: true
|
||||||
visible: true
|
visible: true
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: stackView
|
||||||
|
anchors.fill: parent
|
||||||
|
focus: true
|
||||||
|
Keys.onReleased: if (event.key == Qt.Key_Back && stackView.depth > 1) {
|
||||||
|
stackView.pop()
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
initialItem: Item {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: awLayout
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: prefsButton.height * 0.1
|
||||||
|
Rectangle {
|
||||||
|
id: topPart
|
||||||
|
Layout.minimumHeight: prefsButton.height * 1.2
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.bottom: detailsPage.top
|
||||||
|
anchors.bottomMargin: prefsButton.height * 0.1
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
anchors.bottom: topPart.bottom
|
||||||
|
anchors.bottomMargin: prefsButton.height * 0.1
|
||||||
|
anchors.left: topPart.left
|
||||||
|
anchors.leftMargin: prefsButton.height * 0.1
|
||||||
|
Button {
|
||||||
|
id: prefsButton
|
||||||
|
text: "Preferences"
|
||||||
|
onClicked: {
|
||||||
|
stackView.push(prefsWindow)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: loadDivesButton
|
||||||
|
text: "Load Dives"
|
||||||
|
onClicked: {
|
||||||
|
manager.loadDives();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: detailsPage
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
DiveList {
|
||||||
|
anchors.fill: detailsPage
|
||||||
|
id: diveDetails
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QMLManager {
|
QMLManager {
|
||||||
id: manager
|
id: manager
|
||||||
}
|
}
|
||||||
|
|
||||||
Preferences {
|
Preferences {
|
||||||
id: prefsWindow
|
id: prefsWindow
|
||||||
|
visible: false
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
id: layout
|
|
||||||
anchors.fill: parent
|
|
||||||
spacing: 4
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: topPart
|
|
||||||
height: 35
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.maximumHeight: 35
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
Button {
|
|
||||||
id: prefsButton
|
|
||||||
text: "Preferences"
|
|
||||||
onClicked: {
|
|
||||||
prefsWindow.show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
id: loadDivesButton
|
|
||||||
text: "Load Dives"
|
|
||||||
onClicked: {
|
|
||||||
manager.loadDives();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: detailsPage
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.minimumWidth: 100
|
|
||||||
Layout.preferredHeight: 400
|
|
||||||
Layout.preferredWidth: 200
|
|
||||||
|
|
||||||
DiveList {
|
|
||||||
anchors.fill: detailsPage
|
|
||||||
id: diveDetails
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue