9import QtQuick.Controls as QQC2
10import QtQuick.Templates as T
11import org.kde.kirigami as Kirigami
12import org.kde.kirigami.templates.private as TP
88 property int position: InlineMessage.Position.Inline
94 signal linkHovered(string link)
100 signal linkActivated(string link)
105 readonly property alias hoveredLink: label.hoveredLink
112 property int type: Kirigami.MessageType.Information
123 property TP.IconPropertiesGroup icon: TP.IconPropertiesGroup {}
135 property bool showCloseButton: false
142 property list<T.Action>
actions
147 readonly
property bool animating: _animating
149 property bool _animating:
false
151 implicitHeight: visible ? (contentLayout.implicitHeight + topPadding + bottomPadding) : 0
153 padding: Kirigami.
Units.smallSpacing
155 Accessible.role: Accessible.AlertMessage
156 Accessible.ignored: !visible
158 Behavior on implicitHeight {
159 enabled: !root.visible
161 SequentialAnimation {
162 PropertyAction { targets: root; property:
"_animating"; value:
true }
163 NumberAnimation { duration: Kirigami.Units.longDuration }
169 contentLayout.opacity = 0;
173 opacity: visible ? 1 : 0
175 Behavior on opacity {
176 enabled: !root.visible
178 NumberAnimation { duration: Kirigami.Units.shortDuration }
183 contentLayout.opacity = 0;
184 }
else if (opacity === 1) {
185 contentLayout.opacity = 1;
189 onImplicitHeightChanged: {
190 height = implicitHeight;
198 property bool complete:
false
200 Behavior on opacity {
201 enabled: root.visible && contentLayout.complete
203 SequentialAnimation {
204 NumberAnimation { duration: Kirigami.Units.shortDuration * 2 }
205 PropertyAction { targets: root; property:
"_animating"; value:
false }
210 let maximumTopHeight = Math.max(
label.implicitHeight, icon.implicitHeight, (root.showCloseButton ? closeButton.implicitHeight : 0))
212 return maximumTopHeight + actionsLayout.implicitHeight + Kirigami.Units.smallSpacing
214 return Math.max(maximumTopHeight, actionsLayout.implicitHeight)
218 Accessible.ignored:
true
220 readonly
property real fixedContentWidth: icon.width + Kirigami.Units.smallSpacing * 3 + (root.showCloseButton ? closeButton.width + Kirigami.Units.smallSpacing : 0)
221 readonly property real remainingWidth: width - fixedContentWidth -
label.implicitWidth
222 readonly property bool multiline: remainingWidth <= 0 || atBottom
223 readonly property bool atBottom: (root.actions.length > 0) && (
label.lineCount > 1 || actionsLayout.implicitWidth > remainingWidth)
228 width: Kirigami.
Units.iconSizes.smallMedium
229 height: Kirigami.
Units.iconSizes.smallMedium
233 leftMargin: Kirigami.
Units.smallSpacing
234 topMargin: Kirigami.
Units.smallSpacing
240 when: contentLayout.atBottom ||
label.height > icon.height * 1.7
243 anchors.top: icon.parent.top
244 anchors.verticalCenter: undefined
254 anchors.top: undefined
255 anchors.verticalCenter: parent.verticalCenter
261 if (root.icon.name) {
262 return root.icon.name;
263 }
else if (root.icon.source) {
264 return root.icon.source;
268 case Kirigami.MessageType.Positive:
269 return
"emblem-success";
270 case Kirigami.MessageType.Warning:
271 return
"emblem-warning";
272 case Kirigami.MessageType.Error:
273 return
"emblem-error";
275 return
"emblem-information";
279 color: root.icon.color
281 Accessible.ignored: !root.
visible
284 case Kirigami.MessageType.Positive:
285 return qsTr(
"Success");
286 case Kirigami.MessageType.Warning:
287 return qsTr(
"Warning");
288 case Kirigami.MessageType.Error:
289 return qsTr(
"Error");
296 Kirigami.SelectableLabel {
301 leftMargin: Kirigami.Units.largeSpacing
303 bottom: parent.bottom
306 width: Math.min(parent.width - parent.fixedContentWidth, implicitWidth)
308 color: Kirigami.Theme.textColor
309 wrapMode: Text.WordWrap
313 verticalAlignment: Text.AlignVCenter
321 when: contentLayout.multiline
324 anchors.bottom: undefined
328 height:
label.implicitHeight
333 onLinkHovered:
link => root.linkHovered(link)
334 onLinkActivated:
link => root.linkActivated(link)
336 Accessible.ignored: !root.visible
339 Kirigami.ActionToolBar {
343 actions: root.actions
344 visible: root.actions.length > 0
345 Accessible.ignored: !visible || !root.visible
346 alignment:
Qt.AlignRight
349 bottom: parent.bottom
350 right: (!contentLayout.atBottom && root.showCloseButton) ? closeButton.left : parent.
right
351 rightMargin: !contentLayout.atBottom && root.showCloseButton ? Kirigami.
Units.smallSpacing : 0
354 width: Math.min(implicitWidth, parent.width)
360 visible: root.showCloseButton
363 verticalCenter: parent.verticalCenter
371 when: contentLayout.atBottom
374 anchors.top: parent.top
375 anchors.verticalCenter: undefined
380 display: QQC2.ToolButton.IconOnly
381 icon.
name:
"dialog-close"
383 onClicked: root.visible = false
385 Accessible.ignored: !root.visible
388 Component.onCompleted: complete = true
Class for rendering an icon in UI.
listTAction actions
This property holds the list of actions to show.
bool animating
This property holds whether the current message item is animating.
KIOCORE_EXPORT CopyJob * link(const QList< QUrl > &src, const QUrl &destDir, JobFlags flags=DefaultFlags)
QString name(StandardAction id)
QString label(StandardShortcut id)
QTextStream & left(QTextStream &stream)
QTextStream & right(QTextStream &stream)