import QtQuick import QtQuick.Controls.Material import QtQuick.Layouts import QtQml.Models Window { property bool discardChangesOnExit: false property bool isDataModified: !appUndoStack.isClean property string titleClean: `${Application.name}` property string titleDirty: `${Application.name}` + " *" id: window width: 480 height: 800 visible: true title: appUndoStack.clean ? titleClean : titleDirty property int fontSize: 16 property color textColor: "black" property color wccDarkDark: "#010101" property color wccDarkDefault: "#3C3B3B" property color wccDarkLight: "#828282" property color wccPurpleDark: "#631A61" property color wccPurpleDefault: "#A834A5" property color wccPurpleLight: "#E88FE5" property color wccLavenderDark: "#8C52FF" property color wccLavenderDefault: "#9D74EE" property color wccLavenderLight: "#BC9AFF" ListPage { id: listPage anchors.fill: parent } Component.onCompleted: { // core.displayStatusMessage.connect(displayStatusMessage) appUndoStack.cleanChanged.connect(cleanChanged) // core.userConfigChanged.connect(onUserConfigChanged) } function cleanChanged() { let clean = appUndoStack.clean console.debug("Clean state changed to: " + clean) // if (!clean) { // footerText.text = "" // } } onClosing: event => { if (appUndoStack.clean) { console.debug("Closing on a clean undo stack.") } else { console.debug("Closing on an unclean undo stack!") if (!window.discardChangesOnExit) { event.accepted = false exitOnUnsavedChangesDialog.open() } } } Dialog { id: exitOnUnsavedChangesDialog title: "Unsaved Changes" modal: false anchors.centerIn: parent width: 300 standardButtons: Dialog.Yes | Dialog.Cancel | Dialog.Discard contentItem: Label { text: "Do you want save your changes?" } onAccepted: { core.saveItems() window.close() } onDiscarded: { window.discardChangesOnExit = true window.close() } onRejected: { console.debug("Canceling exit...") } } }