mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
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.
86 lines
2.4 KiB
QML
86 lines
2.4 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import QmlComponents 1.0
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string username: ""
|
|
property string password: ""
|
|
property string label: ""
|
|
property int level: 1
|
|
property color accent: "#6366F1"
|
|
property bool isDark: false
|
|
|
|
signal login()
|
|
|
|
readonly property color surfaceContainerHigh: isDark ? Qt.rgba(1, 1, 1, 0.08) : Qt.rgba(0.31, 0.31, 0.44, 0.10)
|
|
readonly property color surfaceContainerHighest: isDark ? Qt.rgba(1, 1, 1, 0.12) : Qt.rgba(0.31, 0.31, 0.44, 0.14)
|
|
readonly property color onSurface: Theme.text
|
|
readonly property color onSurfaceVariant: Theme.textSecondary
|
|
readonly property color outlineVariant: isDark ? Qt.rgba(1, 1, 1, 0.06) : Qt.rgba(0, 0, 0, 0.08)
|
|
|
|
implicitHeight: 60
|
|
radius: 16
|
|
color: cMA.containsMouse ? surfaceContainerHighest : surfaceContainerHigh
|
|
border.color: cMA.containsMouse ? accent : outlineVariant
|
|
border.width: 1
|
|
|
|
Behavior on color { ColorAnimation { duration: 150 } }
|
|
Behavior on border.color { ColorAnimation { duration: 150 } }
|
|
|
|
MouseArea {
|
|
id: cMA
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: root.login()
|
|
}
|
|
|
|
RowLayout {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: 14
|
|
anchors.rightMargin: 14
|
|
spacing: 12
|
|
|
|
Rectangle {
|
|
width: 32; height: 32; radius: 10
|
|
color: Qt.rgba(accent.r, accent.g, accent.b, isDark ? 0.2 : 0.15)
|
|
|
|
CText {
|
|
anchors.centerIn: parent
|
|
text: root.level.toString()
|
|
font.pixelSize: 13
|
|
font.weight: Font.Bold
|
|
color: accent
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 1
|
|
|
|
CText {
|
|
text: root.label
|
|
font.pixelSize: 14
|
|
font.weight: Font.DemiBold
|
|
color: onSurface
|
|
}
|
|
CText {
|
|
text: root.username + " / " + root.password
|
|
font.pixelSize: 11
|
|
font.family: "monospace"
|
|
color: onSurfaceVariant
|
|
}
|
|
}
|
|
|
|
CText {
|
|
text: "\u2192"
|
|
font.pixelSize: 18
|
|
color: onSurfaceVariant
|
|
opacity: cMA.containsMouse ? 1.0 : 0.3
|
|
Behavior on opacity { NumberAnimation { duration: 150 } }
|
|
}
|
|
}
|
|
}
|