RibbonUI/example/qml/Qt6/pages/SettingsMenuPage.qml

113 lines
4.1 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Window
import RibbonUI
RibbonBackStagePage{
id: page
pageName: qsTr("Settings")
ColumnLayout{
anchors{
top: parent.top
left: parent.left
right: parent.right
}
spacing: 100
RibbonBackStageGroup{
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: theme_combo.height + 40
Layout.fillWidth: true
groupName: qsTr("Theme")
ColumnLayout{
RowLayout{
RibbonText{
text: qsTr("Current Theme: ")
}
RibbonComboBox{
id: theme_combo
model: ListModel {
id: model_theme
ListElement { text: "Light" }
ListElement { text: "Dark" }
ListElement { text: "System" }
}
iconSource: RibbonIcons.DarkTheme
Component.onCompleted: update_state()
onActivated: {
if (currentText === "System")
RibbonTheme.themeMode = RibbonThemeType.System
else if (currentText === "Light")
RibbonTheme.themeMode = RibbonThemeType.Light
else
RibbonTheme.themeMode = RibbonThemeType.Dark
}
Connections{
target: RibbonTheme
function onThemeModeChanged(){
theme_combo.update_state()
}
}
function update_state(){
let str = (RibbonTheme.themeMode === RibbonThemeType.System ? "System" : RibbonTheme.themeMode === RibbonThemeType.Light ? "Light" : "Dark")
currentIndex = find(str)
}
}
}
RowLayout{
RibbonText{
text: qsTr("Current Style: ")
}
RibbonSwitchButton{
text: qsTr("Style")
grabberText: checked ? qsTr("Modern") : qsTr("Classic")
onClicked: RibbonTheme.modernStyle = checked
checked: RibbonTheme.modernStyle
}
}
}
}
RibbonBackStageGroup{
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: render_btn.height + 40
Layout.fillWidth: true
groupName: qsTr("Text Render")
RowLayout{
RibbonText{
text: qsTr("Current Text Render: ")
}
RibbonSwitchButton{
id: render_btn
text: "Render"
grabberText: RibbonTheme.nativeText ? "Native" : "Qt"
checked: true
Layout.alignment: Qt.AlignHCenter
onClicked: {
RibbonTheme.nativeText = checked
}
}
}
}
RibbonBackStageGroup{
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: render_btn.height + 40
Layout.fillWidth: true
groupName: qsTr("TitleBar")
RowLayout{
RibbonText{
text: qsTr("Show TitleBar Icon: ")
}
RibbonSwitchButton{
text: "Icon"
grabberText: RibbonTheme.nativeText ? "Show" : "Hide"
checked: true
Layout.alignment: Qt.AlignHCenter
onClicked: {
Window.window.titleBar.titleIcon.visible = checked
}
}
}
}
}
}