Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/ToolButton.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
0003 SPDX-FileCopyrightText: 2017 The Qt Company Ltd.
0004 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0005
0006 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later
0007 */
0008
0009
0010 import QtQuick
0011 import QtQuick.Templates as T
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.qqc2desktopstyle.private as StylePrivate
0014
0015 T.ToolButton {
0016 id: controlRoot
0017
0018 Kirigami.Theme.colorSet: flat ? Kirigami.Theme.Window : Kirigami.Theme.Button
0019 Kirigami.Theme.inherit: flat
0020
0021 implicitWidth: Math.max((text && display !== T.AbstractButton.IconOnly ?
0022 implicitBackgroundWidth : implicitHeight) + leftInset + rightInset,
0023 implicitContentWidth + leftPadding + rightPadding)
0024 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0025 implicitContentHeight + topPadding + bottomPadding)
0026
0027 hoverEnabled: Qt.styleHints.useHoverEffects
0028
0029 flat: true
0030 Kirigami.MnemonicData.enabled: enabled && visible
0031 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.SecondaryControl
0032 Kirigami.MnemonicData.label: text
0033
0034 // KF6 TODO: investigate setting this by default
0035 // focusPolicy: Qt.TabFocus
0036
0037 Shortcut {
0038 //in case of explicit & the button manages it by itself
0039 enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text))
0040 sequence: controlRoot.Kirigami.MnemonicData.sequence
0041 onActivated: controlRoot.clicked()
0042 }
0043 background: StylePrivate.StyleItem {
0044 id: styleitem
0045 control: controlRoot
0046 elementType: "toolbutton"
0047 sunken: controlRoot.down
0048 on: controlRoot.checkable && controlRoot.checked
0049 hover: controlRoot.hovered
0050 text: controlRoot.Kirigami.MnemonicData.mnemonicLabel
0051 hasFocus: controlRoot.visualFocus || (!controlRoot.flat && controlRoot.pressed) || controlRoot.highlighted
0052 flat: controlRoot.flat
0053
0054 // note: keep in sync with DelayButton
0055 readonly property int toolButtonStyle: {
0056 switch (controlRoot.display) {
0057 case T.AbstractButton.IconOnly: return Qt.ToolButtonIconOnly;
0058 case T.AbstractButton.TextOnly: return Qt.ToolButtonTextOnly;
0059 case T.AbstractButton.TextBesideIcon:
0060 case T.AbstractButton.TextUnderIcon:
0061 // TODO KF6: check if this condition is still needed
0062 if (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") {
0063 // has icon
0064 switch (controlRoot.display) {
0065 case T.AbstractButton.TextBesideIcon: return Qt.ToolButtonTextBesideIcon;
0066 case T.AbstractButton.TextUnderIcon: return Qt.ToolButtonTextUnderIcon;
0067 }
0068 } else {
0069 return Qt.ToolButtonTextOnly;
0070 }
0071 default: return Qt.ToolButtonFollowStyle;
0072 }
0073 }
0074
0075 properties: {
0076 "icon": controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source,
0077 "iconColor": Qt.colorEqual(controlRoot.icon.color, "transparent") ? Kirigami.Theme.textColor : controlRoot.icon.color,
0078 "iconWidth": controlRoot.icon.width,
0079 "iconHeight": controlRoot.icon.height,
0080
0081 "menu": controlRoot.Accessible.role === Accessible.ButtonMenu,
0082 "toolButtonStyle": toolButtonStyle,
0083 }
0084 }
0085 }