Files
metabuilder/qml/Material/MaterialAlert.qml
johndoe6345789 786f91ec64 Add QML Material lib, demo email UI, and QML refactor
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.
2026-03-19 10:18:09 +00:00

76 lines
2.1 KiB
QML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import "MaterialPalette.qml" as MaterialPalette
Rectangle {
id: alert
property alias title: titleText.text
property alias message: messageText.text
property string severity: "info"
property bool dismissible: false
signal dismissed()
radius: 12
color: severity === "success" ? MaterialPalette.primaryContainer :
severity === "error" ? MaterialPalette.error :
severity === "warning" ? MaterialPalette.secondaryContainer :
MaterialPalette.surfaceVariant
border.color: MaterialPalette.outline
border.width: 1
padding: 18
implicitHeight: content.implicitHeight + 12
RowLayout {
id: content
anchors.fill: parent
spacing: 12
Rectangle {
width: 28
height: 28
radius: 14
color: severity === "success" ? MaterialPalette.primary :
severity === "error" ? MaterialPalette.error :
severity === "warning" ? MaterialPalette.secondary : MaterialPalette.primary
Text {
anchors.centerIn: parent
text: severity === "success" ? "✓" : severity === "error" ? "!" : severity === "warning" ? "!" : ""
color: "#fff"
font.pixelSize: 16
font.bold: true
}
}
ColumnLayout {
spacing: 4
Text {
id: titleText
font.pixelSize: 16
font.bold: true
color: MaterialPalette.onSurface
}
Text {
id: messageText
font.pixelSize: 14
color: MaterialPalette.onSurface
wrapMode: Text.Wrap
}
}
Item {
Layout.fillWidth: true
}
Button {
visible: dismissible
text: "Close"
font.pixelSize: 12
background: Rectangle {
color: "transparent"
}
onClicked: alert.dismissed()
}
}
}