summaryrefslogtreecommitdiff
path: root/examples/location/places/items/MainMenu.qml
blob: 6eda9a5e9ea2ff771de95af7e384d5dd955f3153 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtQuick.Controls
import QtLocation

MenuBar {
    property var providerMenu: providerMenu
    property var settingsMenu: settingsMenu

    signal selectProvider(providerName: string)
    signal selectSetting(settings: string);

    function getMenuItem(menuText, parentItem) {
        var menuItem = Qt.createQmlObject('import QtQuick; import QtQuick.Controls; MenuItem {}', parent)
        menuItem.text = qsTr(menuText)
        return menuItem
    }

    function clearMenu(menu) {
        while (menu.contentData.length > 0)
            menu.removeItem(menu.itemAt(0))
    }

    Menu {
        id: providerMenu
        title: qsTr("Provider")

        function create(plugins) {
            clearMenu(providerMenu)
            for (var i = 0; i < plugins.length; i++) {
                createProvider(plugins[i])
            }
        }

        function createProvider(itemVal) {
            var item = getMenuItem(itemVal, providerMenu)
            addItem(item)
            item.triggered.connect(function(){selectProvider(itemVal)})
        }
    }

    Menu {
        id: settingsMenu
        title: qsTr("Settings")

        function create(settings) {
            clearMenu(settingsMenu)
            for (var i = 0; i < settings.length; i++) {
                createSetting(settings[i])
            }
        }

        function createSetting(itemVal) {
            var item = getMenuItem(itemVal, providerMenu)
            addItem(item)
            item.triggered.connect(function(){selectSetting(itemVal)})
        }
    }
}