mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-07 03:59:35 +00:00
786f91ec64
Add a large set of QML components (qml/Material, qml/MetaBuilder, qml/dbal) and a QmlComponents symlink for local development; migrate many frontends/qt6 files into qml/qt6. Replace the email client bootloader with a self-contained demo UI using FakeMUI primitives (MailboxLayout, ThreadList, EmailHeader, ComposeWindow), demo data, handlers, and new folder-navigation styles in globals.css. Update several QML component APIs to new signal/handler names (e.g. selectAllChanged→selectAllToggled, pageChanged→pageRequested, *Changed→*Edited) to standardize events. Add find_config_files() to frontends/qt6/generate_cmake.py to include config JS/JSON in QML/files and resources. Also add /frontends/qt6/_build to .gitignore.
81 lines
2.3 KiB
QML
81 lines
2.3 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import QmlComponents 1.0
|
|
|
|
ColumnLayout {
|
|
id: root
|
|
spacing: 16
|
|
|
|
property var dropdown: null
|
|
signal fieldChanged(string field, var value)
|
|
|
|
CText { variant: "body2"; text: "General"; font.bold: true }
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 12
|
|
|
|
CTextField {
|
|
label: "Name"
|
|
placeholderText: "dropdown_name"
|
|
text: root.dropdown ? root.dropdown.name : ""
|
|
Layout.fillWidth: true
|
|
onTextChanged: {
|
|
if (root.dropdown && text !== root.dropdown.name)
|
|
root.fieldChanged("name", text)
|
|
}
|
|
}
|
|
|
|
CTextField {
|
|
label: "Description"
|
|
placeholderText: "What is this dropdown for?"
|
|
text: root.dropdown ? root.dropdown.description : ""
|
|
Layout.fillWidth: true
|
|
onTextChanged: {
|
|
if (root.dropdown && text !== root.dropdown.description)
|
|
root.fieldChanged("description", text)
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 24
|
|
|
|
RowLayout {
|
|
spacing: 8
|
|
Switch {
|
|
checked: root.dropdown ? root.dropdown.allowCustom : false
|
|
onCheckedChanged: {
|
|
if (root.dropdown && checked !== root.dropdown.allowCustom)
|
|
root.fieldChanged("allowCustom", checked)
|
|
}
|
|
}
|
|
CText { variant: "body2"; text: "Allow custom values" }
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: 8
|
|
Switch {
|
|
checked: root.dropdown ? root.dropdown.required : false
|
|
onCheckedChanged: {
|
|
if (root.dropdown && checked !== root.dropdown.required)
|
|
root.fieldChanged("required", checked)
|
|
}
|
|
}
|
|
CText { variant: "body2"; text: "Required" }
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
CBadge {
|
|
text: (root.dropdown && root.dropdown.required ? "Required" : "Optional")
|
|
accent: root.dropdown ? root.dropdown.required : false
|
|
}
|
|
CBadge {
|
|
text: (root.dropdown && root.dropdown.allowCustom ? "Custom allowed" : "Fixed options")
|
|
}
|
|
}
|
|
}
|