summaryrefslogtreecommitdiffstats
path: root/editorlib
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@qt.io>2016-06-10 14:08:02 +0300
committerTomi Korpipää <tomi.korpipaa@qt.io>2016-06-10 11:13:15 +0000
commit1fbbe12f93ca82bdb3a71637db7e1002e80d48ac (patch)
tree9b3a4ca8c90295282878c36189cb61301bb4542f /editorlib
parentbc7739ad0887102a4da38576f96bf2794a6bb15a (diff)
Show dialog on "new" and "open" if there are unsaved changes
Change-Id: Id36f925f911e0c08feca7944e6874c4b8cc4679b Reviewed-by: Titta Heikkala <titta.heikkala@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'editorlib')
-rw-r--r--editorlib/qml/main.qml50
1 files changed, 46 insertions, 4 deletions
diff --git a/editorlib/qml/main.qml b/editorlib/qml/main.qml
index c0c798c..0a043af 100644
--- a/editorlib/qml/main.qml
+++ b/editorlib/qml/main.qml
@@ -143,7 +143,12 @@ ApplicationWindow {
}
function fileLoad() {
- loadFileDialog.open()
+ if (!editorScene.undoHandler.isClean()) {
+ saveUnsavedDialog.newFile = false
+ saveUnsavedDialog.open()
+ } else {
+ loadFileDialog.open()
+ }
}
function fileSave() {
@@ -171,9 +176,14 @@ ApplicationWindow {
}
function fileNew() {
- editorScene.resetScene()
- showNormalYPlane()
- saveFileUrl = ""
+ if (!editorScene.undoHandler.isClean()) {
+ saveUnsavedDialog.newFile = true
+ saveUnsavedDialog.open()
+ } else {
+ editorScene.resetScene()
+ showNormalYPlane()
+ saveFileUrl = ""
+ }
}
function showNormalXPlane() {
@@ -384,6 +394,38 @@ ApplicationWindow {
// Cancel doesn't need to do anything
}
+ MessageDialog {
+ id: saveUnsavedDialog
+ property bool newFile: false
+ icon: StandardIcon.Warning
+ standardButtons: StandardButton.Save | StandardButton.Cancel | StandardButton.Discard
+ title: qsTr("Save changes?") + editorScene.emptyString
+ text: qsTr("There are unsaved changes. Continue without saving?")
+ + editorScene.emptyString
+
+ onAccepted: {
+ if (saveFileUrl == "") {
+ saveFileDialog.open()
+ // No previous autosave file, no need to delete anything
+ } else {
+ editorScene.saveScene(saveFileUrl)
+ editorScene.deleteScene(saveFileUrl, true)
+ }
+ }
+
+ onDiscard: {
+ if (newFile) {
+ editorScene.resetScene()
+ showNormalYPlane()
+ saveFileUrl = ""
+ } else {
+ loadFileDialog.open()
+ }
+ }
+
+ // Cancel doesn't need to do anything
+ }
+
SplitView {
anchors.top: parent.top
anchors.bottom: parent.bottom