Warning, /libraries/kirigami-addons/src/components/MessageDialog.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Claudio Cambra <claudio.cambra@gmail.com> 0002 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu> 0003 // SPDX-License-Identifier: LGPL-2.1-or-later 0004 0005 import QtQuick 0006 import QtQuick.Controls as QQC2 0007 import QtQuick.Templates as T 0008 import QtQuick.Layouts 0009 import org.kde.kirigami as Kirigami 0010 import org.kde.kirigamiaddons.components as Components 0011 import org.kde.kirigamiaddons.delegates as Delegates 0012 0013 T.Dialog { 0014 id: root 0015 0016 enum DialogType { 0017 Sucess, 0018 Warning, 0019 Error, 0020 Information 0021 } 0022 0023 property int dialogType: MessageDialog.Sucess 0024 0025 property string iconName: '' 0026 0027 x: Math.round((parent.width - width) / 2) 0028 y: Math.round((parent.height - height) / 2) 0029 0030 parent: applicationWindow().QQC2.Overlay.overlay 0031 0032 width: Math.min(parent.width - Kirigami.Units.gridUnit * 4, Kirigami.Units.gridUnit * 30) 0033 height: Math.min(parent.height - Kirigami.Units.gridUnit * 4, Kirigami.Units.gridUnit * 30) 0034 0035 z: Kirigami.OverlayZStacking.z 0036 0037 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 0038 contentWidth + leftPadding + rightPadding, 0039 implicitHeaderWidth, 0040 implicitFooterWidth) 0041 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 0042 contentHeight + topPadding + bottomPadding 0043 + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) 0044 + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) 0045 0046 padding: Kirigami.Units.gridUnit 0047 0048 header: ColumnLayout { 0049 spacing: Kirigami.Units.largeSpacing 0050 Kirigami.Icon { 0051 source: { 0052 if (root.iconName.length > 0) { 0053 return root.iconName 0054 } 0055 switch (root.dialogType) { 0056 case MessageDialog.Sucess: 0057 return "data-sucess"; 0058 case MessageDialog.Warning: 0059 return "data-warning"; 0060 case MessageDialog.Error: 0061 return "data-error"; 0062 case MessageDialog.Information: 0063 return "data-information"; 0064 default: 0065 return "data-warning"; 0066 } 0067 } 0068 Layout.preferredWidth: Kirigami.Units.iconSizes.huge 0069 Layout.preferredHeight: Kirigami.Units.iconSizes.huge 0070 Layout.topMargin: Kirigami.Units.gridUnit 0071 Layout.alignment: Qt.AlignHCenter 0072 } 0073 0074 Kirigami.Heading { 0075 text: root.title 0076 visible: root.title 0077 elide: QQC2.Label.ElideRight 0078 bottomPadding: 0 0079 horizontalAlignment: Text.AlignHCenter 0080 0081 Layout.fillWidth: true 0082 } 0083 } 0084 0085 enter: Transition { 0086 NumberAnimation { 0087 property: "opacity" 0088 from: 0 0089 to: 1 0090 easing.type: Easing.InOutQuad 0091 duration: Kirigami.Units.longDuration 0092 } 0093 } 0094 0095 exit: Transition { 0096 NumberAnimation { 0097 property: "opacity" 0098 from: 1 0099 to: 0 0100 easing.type: Easing.InOutQuad 0101 duration: Kirigami.Units.longDuration 0102 } 0103 } 0104 0105 modal: true 0106 focus: true 0107 0108 background: Components.DialogRoundedBackground {} 0109 footer: Components.MessageDialogButtonBox {} 0110 0111 // black background, fades in and out 0112 QQC2.Overlay.modal: Rectangle { 0113 color: Qt.rgba(0, 0, 0, 0.3) 0114 0115 // the opacity of the item is changed internally by QQuickPopup on open/close 0116 Behavior on opacity { 0117 OpacityAnimator { 0118 duration: Kirigami.Units.longDuration 0119 easing.type: Easing.InOutQuad 0120 } 0121 } 0122 } 0123 }