import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Controls.Material 2.2 import QtQuick.Layouts 1.3 Item { id: root property alias iconName: colorIcon.name property alias fallbackIconName: fallbackIcon.name property alias iconColor: colorIcon.color property string text property bool disconnected: false property bool batteryCritical: false property alias contentItem: innerContent.children signal clicked(); signal pressAndHold(); Pane { anchors.fill: parent anchors.margins: app.margins / 2 Material.elevation: 1 padding: 0 contentItem: ItemDelegate { padding: 0; topPadding: 0; bottomPadding: 0 onClicked: root.clicked() onPressAndHold: root.pressAndHold() contentItem: ColumnLayout { spacing: 0 ColumnLayout { Layout.fillHeight: true Layout.margins: app.margins Item { Layout.fillWidth: true Layout.fillHeight: true ColorIcon { id: colorIcon anchors.centerIn: parent height: app.iconSize * 1.3 width: height ColorIcon { id: fallbackIcon anchors.fill: parent color: root.iconColor visible: parent.status === Image.Error } } } Item { Layout.fillWidth: true Layout.fillHeight: true Label { id: label anchors.centerIn: parent width: parent.width text: root.text.toUpperCase() font.pixelSize: app.smallFont font.letterSpacing: 1 wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter maximumLineCount: 2 elide: Text.ElideRight } } } MouseArea { id: innerContent Layout.fillWidth: true Layout.preferredHeight: app.iconSize + app.margins * 2 visible: root.contentItem.length > 1 Rectangle { anchors.fill: parent color: Material.foreground opacity: 0.05 } } } } } Row { id: quickAlertPane anchors { top: parent.top; right: parent.right; margins: app.margins } ColorIcon { height: app.iconSize / 2 width: height name: "../images/dialog-warning-symbolic.svg" color: "red" visible: root.disconnected } ColorIcon { height: app.iconSize / 2 width: height name: "../images/battery/battery-010.svg" visible: root.batteryCritical } } }