8import QtQuick.Controls as QQC2
9import QtQuick.Templates as T
10import org.kde.kirigami as Kirigami
76 readonly property int tabIndex: {
78 for (const child of parent.children) {
83 if (child instanceof T.AbstractButton) {
92 readonly property color __foregroundColor: Kirigami.Theme.textColor
93 readonly property color __highlightForegroundColor: Kirigami.Theme.textColor
95 readonly property color __pressedColor: Qt.alpha(Kirigami.Theme.highlightColor, 0.3)
96 readonly property color __hoverSelectColor: Qt.alpha(Kirigami.Theme.highlightColor, 0.2)
97 readonly property color __checkedBorderColor: Qt.alpha(Kirigami.Theme.highlightColor, 0.7)
98 readonly property color __pressedBorderColor: Qt.alpha(Kirigami.Theme.highlightColor, 0.9)
100 readonly property real __verticalMargins: (display === T.AbstractButton.TextBesideIcon) ? Kirigami.Units.largeSpacing : 0
102 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
103 implicitContentWidth + leftPadding + rightPadding)
104 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
105 implicitContentHeight + topPadding + bottomPadding)
107 display: T.AbstractButton.TextUnderIcon
109 Kirigami.Theme.colorSet: Kirigami.Theme.Window
110 Kirigami.Theme.inherit: false
114 padding: Kirigami.Units.smallSpacing
115 spacing: Kirigami.Units.smallSpacing
117 leftInset: Kirigami.Units.smallSpacing
118 rightInset: Kirigami.Units.smallSpacing
119 topInset: Kirigami.Units.smallSpacing
120 bottomInset: Kirigami.Units.smallSpacing
122 icon.height: display === T.AbstractButton.TextBesideIcon ? Kirigami.Units.iconSizes.small : Kirigami.Units.iconSizes.smallMedium
123 icon.width: display === T.AbstractButton.TextBesideIcon ? Kirigami.Units.iconSizes.small : Kirigami.Units.iconSizes.smallMedium
124 icon.color: checked ? __highlightForegroundColor : __foregroundColor
126 QQC2.ToolTip.text: (control.action instanceof Kirigami.Action) ? control.action.tooltip : ""
127 QQC2.ToolTip.visible: (Kirigami.Settings.tabletMode ? pressed : hovered) && QQC2.ToolTip.text.length > 0
128 QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
130 Kirigami.MnemonicData.enabled: enabled && visible
131 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.MenuItem
132 Kirigami.MnemonicData.label: text
134 Accessible.description: Kirigami.MnemonicData.plainTextLabel
135 Accessible.onPressAction: {
136 if (typeof control.animateClick ===
"function") {
137 control.animateClick();
139 control.action.trigger();
145 enabled: !(RegExp(/\&[^\&]/).test(control.text))
146 sequence: control.Kirigami.MnemonicData.sequence
149 if (typeof control.animateClick ===
"function") {
150 control.animateClick();
152 control.action.trigger();
157 background: Rectangle {
158 Kirigami.Theme.colorSet: Kirigami.Theme.Button
159 Kirigami.Theme.inherit:
false
161 implicitHeight: control.display === T.AbstractButton.TextBesideIcon ? 0 : Kirigami.Units.gridUnit * 3
163 radius: Kirigami.Units.cornerRadius
164 color: control.down ? control.__pressedColor : (control.checked || control.hovered ? control.__hoverSelectColor :
"transparent")
166 border.color: control.visualFocus ? control.__checkedBorderColor : (control.down ? control.__pressedBorderColor : color)
169 Behavior on color { ColorAnimation { duration: Kirigami.
Units.shortDuration } }
170 Behavior on border.color { ColorAnimation { duration: Kirigami.
Units.shortDuration } }
173 contentItem: GridLayout {
175 rowSpacing: (
label.visible &&
label.lineCount > 1) ? 0 : control.spacing
178 columns: control.display !== T.AbstractButton.TextBesideIcon ? 1 : 2
182 source: control.icon.
name || control.icon.source
183 visible: (control.icon.
name.length > 0 || control.icon.source.
toString().length > 0) && control.display !== T.AbstractButton.TextOnly
184 color: control.icon.color
186 Layout.topMargin: control.__verticalMargins
187 Layout.bottomMargin: control.__verticalMargins
188 Layout.leftMargin: (control.display === T.AbstractButton.TextBesideIcon) ? Kirigami.
Units.gridUnit : 0
189 Layout.rightMargin: (control.display === T.AbstractButton.TextBesideIcon) ? Kirigami.
Units.gridUnit : 0
192 if (control.display === T.AbstractButton.TextBesideIcon) {
194 return Qt.AlignVCenter | Qt.AlignRight;
197 return Qt.AlignHCenter | ((!label.visible || label.lineCount > 1) ? Qt.AlignVCenter : Qt.AlignBottom);
200 implicitHeight: source ? control.icon.height : 0
201 implicitWidth: source ? control.icon.width : 0
203 Behavior on color { ColorAnimation { duration: Kirigami.Units.shortDuration } }
208 text: control.Kirigami.MnemonicData.richTextLabel
209 Accessible.name: control.Kirigami.MnemonicData.plainTextLabel
210 horizontalAlignment: (control.display === T.AbstractButton.TextBesideIcon) ? Text.AlignLeft : Text.
AlignHCenter
212 visible: control.display !== T.AbstractButton.IconOnly
215 color: control.checked ? control.__highlightForegroundColor : control.__foregroundColor
217 font.pointSize: !icon.visible && control.display === T.AbstractButton.TextBelowIcon
218 ? Kirigami.Theme.defaultFont.pointSize * 1.20
219 : Kirigami.Theme.defaultFont.pointSize
221 Behavior on color { ColorAnimation { duration: Kirigami.
Units.shortDuration } }
223 Layout.topMargin: control.__verticalMargins
224 Layout.bottomMargin: control.__verticalMargins
227 if (control.display === T.AbstractButton.TextBesideIcon) {
229 return Qt.AlignVCenter |
Qt.AlignLeft;
232 return icon.visible ?
Qt.AlignHCenter |
Qt.AlignTop :
Qt.AlignCenter;
236 Layout.fillWidth:
true
238 Accessible.ignored:
true
char * toString(const EngineQuery &query)
QString name(StandardAction id)
QString label(StandardShortcut id)