Warning, /maui/mauikit/src/controls.6/InfoDialog.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 0002 import QtQuick.Controls 0003 import QtQuick.Layouts 0004 import org.mauikit.controls 1.3 as Maui 0005 0006 /** 0007 * @inherit QtQuick.Controls.Dialog 0008 * @brief A Dialog with a built-in template container for displaying information, with a title, image and message body. 0009 * 0010 * <a href="https://doc.qt.io/qt-6/qml-qtquick-controls-dialog.html">This controls inherits from QQC2 Dialog, to checkout its inherited properties refer to the Qt Docs.</a> 0011 * 0012 * @image html Misc/infodialog.png 0013 * 0014 * @section structure Structure 0015 * The dialog container is handled by a MauiKit ScrollColumn - which by default is flickable - so any contents added as children of this dialog will be put inside of it and become scrollable/flickable. 0016 * 0017 * @note For the scrollable behaviour to work correctly the child element needs to have an `implicitHeight` size set, and further positioning options should use the Layout attached properties: for filling the with use `Layout.fillWidth: true`. 0018 * 0019 * The InfoDialog uses the ListItemTemplate control to display the information labels and image/icon, this is exposed via the `template` property for further tweaking. 0020 * @see template 0021 * 0022 * To set the title use the `title` property. For the message body use the exposed alias property `message`, or the `template.text2` property, which are the same. To set an icon or image use the alias `template` property, for example `template.iconSource: "dialog-warning"`. 0023 * @see ListItemTemplate 0024 * 0025 * @attention By default the only action button is set to `standardButtons: Dialog.Close`. To know more about other standard button types checkout the Dialog documentation on Qt page. 0026 * 0027 * And finally, the dialog can display an inline notification alert upon request via the `alert()` function. 0028 * 0029 * @remark This alert message is positioned at the bottom part and colored according to the emergency level set. 0030 * This is useful when the dialog needs to warn the user about certain action. 0031 * @see alert 0032 * 0033 * @image html Misc/infodialog2.png 0034 * 0035 * @code 0036 * Maui.InfoDialog 0037 * { 0038 * id: _dialog 0039 * title: "Hello" 0040 * message: "Information about some important action to be reviewed, or just plain information." 0041 * 0042 * template.iconSource: "dialog-warning" 0043 * 0044 * standardButtons: Dialog.Close | Dialog.Apply 0045 * 0046 * onRejected: close() 0047 * onApplied: alert("Are you sure? Alert example.", 2) 0048 * 0049 * Rectangle //an extra child element 0050 * { 0051 * color: "yellow" 0052 * Layout.fillWidth: true 0053 * implicitHeight: 68 0054 * } 0055 * } 0056 * @endcode 0057 * 0058 * <a href="https://invent.kde.org/maui/mauikit/-/blob/qt6-2/examples/InfoDialog.qml">You can find a more complete example at this link.</a> 0059 */ 0060 Dialog 0061 { 0062 id: control 0063 0064 /** 0065 * @brief The default content of the dialog. The children elements of this control will be positioned inside a Mauikit ScrollColumn. 0066 * @note To position child elements use the Layout attached properties. 0067 * @see InfoDialog#structure 0068 * @property list<QtObject> InfoDialog::content 0069 */ 0070 default property alias content: _content.content 0071 0072 /** 0073 * @brief The message body. 0074 * @property string InfoDialog::message 0075 */ 0076 property alias message : _template.label2.text 0077 0078 /** 0079 * @brief The templated item used for the default dialog message, holding the icon emblem and the message body. 0080 * This property gives access to the template for more detailed tweaking, by adding items or changing its properties. 0081 * @property ListItemTemplate InfoDialog::template 0082 */ 0083 property alias template : _template 0084 0085 standardButtons: Dialog.Close 0086 0087 contentItem: Maui.ScrollColumn 0088 { 0089 id: _content 0090 clip: true 0091 spacing: control.spacing 0092 0093 Maui.ListItemTemplate 0094 { 0095 id: _template 0096 visible: control.message.length 0097 Layout.fillWidth: true 0098 label2.textFormat : TextEdit.AutoText 0099 label2.wrapMode: TextEdit.WordWrap 0100 iconVisible: control.width > Maui.Style.units.gridUnit * 10 0101 0102 iconSizeHint: Maui.Style.iconSizes.large 0103 spacing: Maui.Style.space.big 0104 0105 leftLabels.spacing: control.spacing 0106 } 0107 0108 Maui.Chip 0109 { 0110 id: _alertMessage 0111 0112 visible: text.length > 0 0113 0114 property int level : 0 0115 0116 Layout.fillWidth: true 0117 0118 color: switch(level) 0119 { 0120 case 0: return Maui.Theme.positiveBackgroundColor 0121 case 1: return Maui.Theme.neutralBackgroundColor 0122 case 2: return Maui.Theme.negativeBackgroundColor 0123 } 0124 0125 SequentialAnimation on x 0126 { 0127 id: _alertAnim 0128 // Animations on properties start running by default 0129 running: false 0130 loops: 3 0131 NumberAnimation { from: 0; to: -10; duration: 100; easing.type: Easing.InOutQuad } 0132 NumberAnimation { from: -10; to: 0; duration: 100; easing.type: Easing.InOutQuad } 0133 PauseAnimation { duration: 50 } // This puts a bit of time between the loop 0134 } 0135 0136 function reset() 0137 { 0138 _alertMessage.text = "" 0139 _alertMessage.level = 0 0140 } 0141 } 0142 } 0143 0144 onClosed: _alertMessage.reset() 0145 0146 /** 0147 * @brief Sends an inline alert notification that is displayed in the dialog. 0148 * @param message The text for the message. Keep it short if possible. 0149 * @param level Depending on the level the color may differ. The levels are: 0150 * - 0 positive 0151 * - 1 neutral 0152 * - 2 negative 0153 */ 0154 function alert(message, level) 0155 { 0156 _alertMessage.text = message 0157 _alertMessage.level = level 0158 } 0159 }