diff options
author | Tomi Korpipää <tomi.korpipaa@qt.io> | 2016-06-10 14:08:02 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2016-06-10 11:13:15 +0000 |
commit | 1fbbe12f93ca82bdb3a71637db7e1002e80d48ac (patch) | |
tree | 9b3a4ca8c90295282878c36189cb61301bb4542f /editorlib | |
parent | bc7739ad0887102a4da38576f96bf2794a6bb15a (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.qml | 50 |
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 |