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
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)