MainWindowSavedState.qml 2.35 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2
/****************************************************************************
 *
Gus Grubba's avatar
Gus Grubba committed
3
 * (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
Don Gagne's avatar
Don Gagne committed
4 5 6 7 8 9 10 11 12 13 14
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

import QtQuick          2.11
import QtQuick.Window   2.11
import QtQuick.Controls 2.4
import Qt.labs.settings 1.0

15 16
import QGroundControl               1.0
import QGroundControl.ScreenTools   1.0
Don Gagne's avatar
Don Gagne committed
17 18 19 20

Item {
    property Window window

21 22
    property bool _enabled: !ScreenTools.isMobile && QGroundControl.corePlugin.options.enableSaveMainWindowPosition

Don Gagne's avatar
Don Gagne committed
23 24 25 26 27 28 29 30 31 32 33 34
    Settings {
        id:         s
        category:   "MainWindowState"

        property int x
        property int y
        property int width
        property int height
        property int visibility
    }

    Component.onCompleted: {
35
        if (_enabled && s.width && s.height) {
Don Gagne's avatar
Don Gagne committed
36 37 38 39 40 41 42 43 44
            window.x = s.x;
            window.y = s.y;
            window.width = s.width;
            window.height = s.height;
            window.visibility = s.visibility;
        }
    }

    Connections {
45 46 47 48 49 50
        target:                 window
        onXChanged:             if(_enabled) saveSettingsTimer.restart()
        onYChanged:             if(_enabled) saveSettingsTimer.restart()
        onWidthChanged:         if(_enabled) saveSettingsTimer.restart()
        onHeightChanged:        if(_enabled) saveSettingsTimer.restart()
        onVisibilityChanged:    if(_enabled) saveSettingsTimer.restart()
Don Gagne's avatar
Don Gagne committed
51 52 53 54 55 56 57 58 59 60
    }

    Timer {
        id:             saveSettingsTimer
        interval:       1000
        repeat:         false
        onTriggered:    saveSettings()
    }

    function saveSettings() {
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
        if(_enabled) {
            switch(window.visibility) {
            case ApplicationWindow.Windowed:
                s.x = window.x;
                s.y = window.y;
                s.width = window.width;
                s.height = window.height;
                s.visibility = window.visibility;
                break;
            case ApplicationWindow.FullScreen:
                s.visibility = window.visibility;
                break;
            case ApplicationWindow.Maximized:
                s.visibility = window.visibility;
                break;
            }
Don Gagne's avatar
Don Gagne committed
77 78 79
        }
    }
}