mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +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 org.subsurfacedivelog.mobile 1.0
|
||||
|
||||
Window {
|
||||
Item {
|
||||
id: loginWindow
|
||||
|
||||
signal accept
|
||||
|
@ -14,8 +14,6 @@ Window {
|
|||
property string password: password.text;
|
||||
property bool issave: savePassword.checked;
|
||||
|
||||
flags: Qt.Dialog
|
||||
modality: Qt.WindowModal
|
||||
GridLayout {
|
||||
columns: 2
|
||||
anchors.centerIn: parent
|
||||
|
@ -66,8 +64,7 @@ Window {
|
|||
manager.cloudUserName = login.text
|
||||
manager.cloudPassword = password.text
|
||||
manager.savePreferences()
|
||||
loginWindow.close();
|
||||
loginWindow.accept();
|
||||
stackView.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +77,7 @@ Window {
|
|||
text: "Cancel"
|
||||
|
||||
onClicked: {
|
||||
loginWindow.close();
|
||||
stackView.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,31 +10,39 @@ ApplicationWindow {
|
|||
property bool fullscreen: true
|
||||
visible: true
|
||||
|
||||
QMLManager {
|
||||
id: manager
|
||||
}
|
||||
|
||||
Preferences {
|
||||
id: prefsWindow
|
||||
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: layout
|
||||
id: awLayout
|
||||
anchors.fill: parent
|
||||
spacing: 4
|
||||
|
||||
spacing: prefsButton.height * 0.1
|
||||
Rectangle {
|
||||
id: topPart
|
||||
height: 35
|
||||
Layout.minimumHeight: prefsButton.height * 1.2
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumHeight: 35
|
||||
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: {
|
||||
prefsWindow.show()
|
||||
stackView.push(prefsWindow)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,9 +61,6 @@ ApplicationWindow {
|
|||
id: detailsPage
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
Layout.minimumWidth: 100
|
||||
Layout.preferredHeight: 400
|
||||
Layout.preferredWidth: 200
|
||||
|
||||
DiveList {
|
||||
anchors.fill: detailsPage
|
||||
|
@ -64,4 +69,16 @@ ApplicationWindow {
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QMLManager {
|
||||
id: manager
|
||||
}
|
||||
|
||||
Preferences {
|
||||
id: prefsWindow
|
||||
visible: false
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue