Warning, /frameworks/kirigami/src/controls/MenuDialog.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2021 Devin Lin <espidev@gmail.com>
0003     SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick
0008 import QtQuick.Controls as QQC2
0009 import QtQuick.Layouts
0010 import QtQuick.Templates as T
0011 import org.kde.kirigami as Kirigami
0012 
0013 /**
0014  * A dialog that prompts users with a context menu, with
0015  * list items that perform actions.
0016  *
0017  * Example usage:
0018  * @code{.qml}
0019  * Kirigami.MenuDialog {
0020  *     title: i18n("Track Options")
0021  *
0022  *     actions: [
0023  *         Kirigami.Action {
0024  *             icon.name: "media-playback-start"
0025  *             text: i18nc("Start playback of the selected track", "Play")
0026  *             tooltip: i18n("Start playback of the selected track")
0027  *         },
0028  *         Kirigami.Action {
0029  *             enabled: false
0030  *             icon.name: "document-open-folder"
0031  *             text: i18nc("Show the file for this song in the file manager", "Show in folder")
0032  *             tooltip: i18n("Show the file for this song in the file manager")
0033  *         },
0034  *         Kirigami.Action {
0035  *             icon.name: "documentinfo"
0036  *             text: i18nc("Show track metadata", "View details")
0037  *             tooltip: i18n("Show track metadata")
0038  *         },
0039  *         Kirigami.Action {
0040  *             icon.name: "list-add"
0041  *             text: i18nc("Add the track to the queue, right after the current track", "Play next")
0042  *             tooltip: i18n("Add the track to the queue, right after the current track")
0043  *         },
0044  *         Kirigami.Action {
0045  *             icon.name: "list-add"
0046  *             text: i18nc("Enqueue current track", "Add to queue")
0047  *             tooltip: i18n("Enqueue current track")
0048  *         }
0049  *     ]
0050  * }
0051  * @endcode
0052  *
0053  * @see Dialog
0054  * @see PromptDialog
0055  * @inherit org::kde::kirigami::Dialog
0056  */
0057 Kirigami.Dialog {
0058     id: root
0059 
0060     /**
0061      * @brief This property holds the actions displayed in the context menu.
0062      */
0063     property list<T.Action> actions
0064 
0065     /**
0066      * @brief This property holds the content header, which appears above the actions.
0067      * but below the header bar.
0068      */
0069     property alias contentHeader: columnHeader.contentItem
0070 
0071     /**
0072      * @brief This property holds the content header.
0073      *
0074      * This makes it possible to access its internal properties to, for example, change its padding:
0075      * ``contentHeaderControl.topPadding``
0076      *
0077      * @property QtQuick.Controls.Control contentHeaderControl
0078      */
0079     property alias contentHeaderControl: columnHeader
0080 
0081     preferredWidth: Kirigami.Units.gridUnit * 20
0082     padding: 0
0083 
0084     ColumnLayout {
0085         id: column
0086 
0087         spacing: 0
0088 
0089         QQC2.Control {
0090             id: columnHeader
0091 
0092             topPadding: 0
0093             leftPadding: 0
0094             rightPadding: 0
0095             bottomPadding: 0
0096         }
0097 
0098         Repeater {
0099             model: root.actions
0100 
0101             delegate: QQC2.ItemDelegate {
0102                 required property T.Action modelData
0103 
0104                 Layout.fillWidth: true
0105                 Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0106 
0107                 action: modelData
0108                 visible: !(modelData instanceof Kirigami.Action) || modelData.visible
0109 
0110                 icon.width: Kirigami.Units.gridUnit
0111                 icon.height: Kirigami.Units.gridUnit
0112 
0113                 horizontalPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0114                 leftPadding: undefined
0115                 rightPadding: undefined
0116 
0117                 QQC2.ToolTip.text: modelData instanceof Kirigami.Action ? modelData.tooltip : ""
0118                 QQC2.ToolTip.visible: QQC2.ToolTip.text.length > 0 && (Kirigami.Settings.tabletMode ? pressed : hovered)
0119                 QQC2.ToolTip.delay: Kirigami.Settings.tabletMode ? Qt.styleHints.mousePressAndHoldInterval : Kirigami.Units.toolTipDelay
0120 
0121                 onClicked: root.close()
0122             }
0123         }
0124     }
0125 
0126     standardButtons: QQC2.DialogButtonBox.NoButton
0127     showCloseButton: true
0128 }