Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/TabButton.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 QtQml.Models
0012 //for TabBar.*
0013 import QtQuick.Controls
0014 import QtQuick.Templates as T
0015 import org.kde.kirigami as Kirigami
0016 import org.kde.qqc2desktopstyle.private as StylePrivate
0017
0018 T.TabButton {
0019 id: controlRoot
0020
0021 //Some qstyles like fusion don't have correct pixel metrics here and just return 0
0022 implicitWidth: Math.max(styleitem.implicitWidth, textMetrics.width + Kirigami.Units.gridUnit * 2)
0023 implicitHeight: styleitem.implicitHeight || Kirigami.Units.gridUnit * 2
0024 baselineOffset: contentItem.y + contentItem.baselineOffset
0025
0026 //This width: is important to make the tabbar internals not assume
0027 //all tabs have the same width
0028 width: implicitWidth
0029 padding: 0
0030
0031 hoverEnabled: true
0032
0033 contentItem: Item {}
0034
0035 Kirigami.MnemonicData.enabled: enabled && visible
0036 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.SecondaryControl
0037 Kirigami.MnemonicData.label: text
0038 Shortcut {
0039 //in case of explicit & the button manages it by itself
0040 enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text))
0041 sequence: controlRoot.Kirigami.MnemonicData.sequence
0042 onActivated: controlRoot.checked = true;
0043 }
0044 background: StylePrivate.StyleItem {
0045 id: styleitem
0046
0047 TextMetrics {
0048 id: textMetrics
0049 font: Kirigami.Theme.defaultFont
0050 text: controlRoot.text
0051 }
0052
0053 control: controlRoot
0054 anchors.fill: parent
0055 elementType: "tab"
0056 paintMargins: 0
0057
0058 readonly property TabBar tabBar: controlRoot.TabBar.tabBar
0059
0060 property string orientation: controlRoot.TabBar.position === TabBar.Header ? "Top" : "Bottom"
0061 property string selectedpos: {
0062 if (tabBar) {
0063 switch (tabBar.currentIndex) {
0064 case (controlRoot.TabBar.index + 1): return "next";
0065 case (controlRoot.TabBar.index - 1): return "previous";
0066 }
0067 }
0068 return "";
0069 }
0070 property string tabpos: {
0071 if (tabBar) {
0072 if (tabBar.count === 1) {
0073 return "only";
0074 }
0075 switch (controlRoot.TabBar.index) {
0076 case 0: return "beginning";
0077 case (tabBar.count - 1): return "end";
0078 }
0079 }
0080 return "middle";
0081 }
0082
0083 properties: {
0084 "icon": controlRoot.display !== T.AbstractButton.TextOnly
0085 ? (controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source) : null,
0086 "iconColor": Qt.colorEqual(controlRoot.icon.color, "transparent") ? Kirigami.Theme.textColor : controlRoot.icon.color,
0087 "iconWidth": controlRoot.icon.width,
0088 "iconHeight": controlRoot.icon.height,
0089
0090 "hasFrame" : true,
0091 "orientation": orientation,
0092 "tabpos": tabpos,
0093 "selectedpos": selectedpos,
0094 }
0095
0096 enabled: controlRoot.enabled
0097 selected: controlRoot.checked
0098 text: controlRoot.Kirigami.MnemonicData.mnemonicLabel
0099 hover: controlRoot.hovered
0100 hasFocus: controlRoot.activeFocus
0101 }
0102 }