gpt4all

Форк
0
/
MySettingsStack.qml 
127 строк · 3.5 Кб
1
import QtCore
2
import QtQuick
3
import QtQuick.Controls
4
import QtQuick.Controls.Basic
5
import QtQuick.Layouts
6
import QtQuick.Dialogs
7
import Qt.labs.folderlistmodel
8
import mysettings
9

10
Item {
11
    id: settingsStack
12

13
    Theme {
14
        id: theme
15
    }
16

17
    property alias title: titleLabelText.text
18
    property ListModel tabTitlesModel: ListModel { }
19
    property list<Component> tabs: [ ]
20

21
    Rectangle {
22
        id: titleLabel
23
        anchors.top: parent.top
24
        anchors.leftMargin: 20
25
        anchors.rightMargin: 15
26
        anchors.left: parent.left
27
        anchors.right: parent.right
28
        height: titleLabelText.height
29
        color: "transparent"
30
        Label {
31
            id: titleLabelText
32
            anchors.left: parent.left
33
            color: theme.titleTextColor
34
            topPadding: 10
35
            bottomPadding: 10
36
            font.pixelSize: theme.fontSizeLargest
37
            font.bold: true
38
        }
39
    }
40

41
    Rectangle {
42
        anchors.top: titleLabel.bottom
43
        anchors.leftMargin: 20
44
        anchors.rightMargin: 15
45
        anchors.left: parent.left
46
        anchors.right: parent.right
47
        height: 3
48
        color: theme.accentColor
49
    }
50

51
    TabBar {
52
        id: settingsTabBar
53
        anchors.top: titleLabel.bottom
54
        anchors.topMargin: 15
55
        anchors.horizontalCenter: parent.horizontalCenter
56
        width: parent.width / 1.75
57
        z: 200
58
        visible: tabTitlesModel.count > 1
59
        background: Rectangle {
60
            color: "transparent"
61
        }
62
        Repeater {
63
            model: settingsStack.tabTitlesModel
64
            TabButton {
65
                id: tabButton
66
                padding: 10
67
                contentItem: IconLabel {
68
                    color: theme.textColor
69
                    font.pixelSize: theme.fontSizeLarge
70
                    font.bold: tabButton.checked
71
                    text: model.title
72
                }
73
                background: Rectangle {
74
                    color: "transparent"
75
                }
76
                Accessible.role: Accessible.Button
77
                Accessible.name: model.title
78
            }
79
        }
80
    }
81

82
    Rectangle {
83
        id: dividerTabBar
84
        visible: tabTitlesModel.count > 1
85
        anchors.top: settingsTabBar.bottom
86
        anchors.topMargin: 15
87
        anchors.bottomMargin: 15
88
        anchors.leftMargin: 15
89
        anchors.rightMargin: 15
90
        anchors.left: parent.left
91
        anchors.right: parent.right
92
        height: 3
93
        color: theme.accentColor
94
    }
95

96
    FolderDialog {
97
        id: folderDialog
98
        title: qsTr("Please choose a directory")
99
    }
100

101
    function openFolderDialog(currentFolder, onAccepted) {
102
        folderDialog.currentFolder = currentFolder;
103
        folderDialog.accepted.connect(function() { onAccepted(folderDialog.currentFolder); });
104
        folderDialog.open();
105
    }
106

107
    StackLayout {
108
        id: stackLayout
109
        anchors.top: tabTitlesModel.count > 1 ? dividerTabBar.bottom : titleLabel.bottom
110
        anchors.left: parent.left
111
        anchors.right: parent.right
112
        anchors.bottom: parent.bottom
113
        currentIndex: settingsTabBar.currentIndex
114

115
        Repeater {
116
            model: settingsStack.tabs
117
            delegate: Loader {
118
                id: loader
119
                sourceComponent: model.modelData
120
                onLoaded: {
121
                    settingsStack.tabTitlesModel.append({ "title": loader.item.title });
122
                    item.openFolderDialog = settingsStack.openFolderDialog;
123
                }
124
            }
125
        }
126
    }
127
}
128

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.