Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/DelayButton.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 import QtQuick
0010 import QtQuick.Templates as T
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.qqc2desktopstyle.private as StylePrivate
0013
0014 T.DelayButton {
0015 id: controlRoot
0016
0017 implicitWidth: Math.max((text && display !== T.AbstractButton.IconOnly ?
0018 implicitBackgroundWidth : implicitHeight) + leftInset + rightInset,
0019 implicitContentWidth + leftPadding + rightPadding)
0020 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0021 implicitContentHeight + topPadding + bottomPadding)
0022
0023 hoverEnabled: Qt.styleHints.useHoverEffects
0024
0025 Kirigami.MnemonicData.enabled: enabled && visible
0026 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.ActionElement
0027 Kirigami.MnemonicData.label: display !== T.AbstractButton.IconOnly ? text : ""
0028 Shortcut {
0029 //in case of explicit & the button manages it by itself
0030 enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text))
0031 sequence: controlRoot.Kirigami.MnemonicData.sequence
0032 onActivated: controlRoot.clicked()
0033 }
0034
0035 Kirigami.Theme.colorSet: Kirigami.Theme.Button
0036 Kirigami.Theme.inherit: false
0037
0038 transition: Transition {
0039 NumberAnimation {
0040 duration: controlRoot.delay * (controlRoot.pressed ? 1.0 - controlRoot.progress : 0.3 * controlRoot.progress)
0041 }
0042 }
0043
0044 background: StylePrivate.StyleItem {
0045 control: controlRoot
0046 elementType: "delaybutton"
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.pressed
0052 flat: false
0053 minimum: 0
0054 maximum: 1000
0055 value: controlRoot.progress * maximum
0056
0057 // note: keep in sync with ToolButton
0058 readonly property int toolButtonStyle: {
0059 switch (controlRoot.display) {
0060 case T.AbstractButton.IconOnly: return Qt.ToolButtonIconOnly;
0061 case T.AbstractButton.TextOnly: return Qt.ToolButtonTextOnly;
0062 case T.AbstractButton.TextBesideIcon:
0063 case T.AbstractButton.TextUnderIcon:
0064 // TODO KF6: check if this condition is still needed
0065 if (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") {
0066 // has icon
0067 switch (controlRoot.display) {
0068 case T.AbstractButton.TextBesideIcon: return Qt.ToolButtonTextBesideIcon;
0069 case T.AbstractButton.TextUnderIcon: return Qt.ToolButtonTextUnderIcon;
0070 }
0071 } else {
0072 return Qt.ToolButtonTextOnly;
0073 }
0074 default: return Qt.ToolButtonFollowStyle;
0075 }
0076 }
0077
0078 properties: {
0079 "icon": controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source,
0080 "iconColor": Qt.colorEqual(controlRoot.icon.color, "transparent") ? Kirigami.Theme.textColor : controlRoot.icon.color,
0081 "iconWidth": controlRoot.icon.width,
0082 "iconHeight": controlRoot.icon.height,
0083
0084 "toolButtonStyle": toolButtonStyle,
0085 }
0086 }
0087 }