Warning, /maui/mauikit/src/controls.5/private/ActionGroup.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2018-2020 Camilo Higuita <milo.h@aol.com> 0003 * 0004 * This program is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Library General Public License as 0006 * published by the Free Software Foundation; either version 2, or 0007 * (at your option) any later version. 0008 * 0009 * This program is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU General Public License for more details 0013 * 0014 * You should have received a copy of the GNU Library General Public 0015 * License along with this program; if not, write to the 0016 * Free Software Foundation, Inc., 0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0018 */ 0019 0020 import QtQuick 2.15 0021 import QtQuick.Controls 2.15 0022 import QtQuick.Layouts 1.3 0023 0024 import org.mauikit.controls 1.3 as Maui 0025 import QtQuick.Templates 2.15 as T 0026 0027 T.Pane 0028 { 0029 id: control 0030 0031 implicitWidth: implicitContentWidth + leftPadding + rightPadding 0032 implicitHeight: implicitContentHeight + topPadding + bottomPadding 0033 0034 spacing: Maui.Style.space.medium 0035 padding: 0 0036 background: null 0037 /** 0038 * 0039 */ 0040 default property list<QtObject> items 0041 0042 /** 0043 * 0044 */ 0045 property list<QtObject> hiddenItems 0046 0047 /** 0048 * 0049 */ 0050 property int currentIndex : 0 0051 0052 /** 0053 * 0054 */ 0055 readonly property int count : control.items.length + control.hiddenItems.length 0056 0057 property int display: ToolButton.TextBesideIcon 0058 /** 0059 * 0060 */ 0061 signal clicked(int index) 0062 0063 /** 0064 * 0065 */ 0066 signal pressAndHold(int index) 0067 0068 /** 0069 * 0070 */ 0071 signal doubleClicked(int index) 0072 0073 Behavior on implicitWidth 0074 { 0075 NumberAnimation 0076 { 0077 duration: Maui.Style.units.shortDuration 0078 easing.type: Easing.InOutQuad 0079 } 0080 } 0081 0082 property Component delegate : ToolButton 0083 { 0084 id: _buttonDelegate 0085 // Layout.alignment: Qt.AlignCenter 0086 autoExclusive: true 0087 visible: modelData.visible 0088 checked: index == control.currentIndex 0089 0090 leftPadding: Maui.Style.space.big 0091 rightPadding: Maui.Style.space.big 0092 0093 icon.name: modelData.Maui.AppView.iconName 0094 text: modelData.Maui.AppView.title 0095 0096 display: checked ? (!isWide ? ToolButton.IconOnly : ToolButton.TextBesideIcon) : ToolButton.IconOnly 0097 0098 Maui.Badge 0099 { 0100 visible: modelData.Maui.AppView.badgeText 0101 text: modelData.Maui.AppView.badgeText 0102 0103 anchors.horizontalCenter: parent.right 0104 anchors.verticalCenter: parent.top 0105 anchors.verticalCenterOffset: 10 0106 anchors.horizontalCenterOffset: -5 0107 0108 Maui.Theme.colorSet: Maui.Theme.View 0109 Maui.Theme.backgroundColor: Maui.Theme.negativeBackgroundColor 0110 Maui.Theme.textColor: Maui.Theme.negativeTextColor 0111 border.color: Maui.Theme.textColor 0112 0113 mouseArea.enabled: false 0114 } 0115 0116 onClicked: 0117 { 0118 if(index == control.currentIndex ) 0119 { 0120 return 0121 } 0122 0123 control.currentIndex = index 0124 control.clicked(index) 0125 } 0126 0127 DropArea 0128 { 0129 anchors.fill: parent 0130 onEntered: control.currentIndex = index 0131 } 0132 } 0133 0134 contentItem: RowLayout 0135 { 0136 id: _layout 0137 spacing: control.spacing 0138 0139 Repeater 0140 { 0141 model: control.items 0142 delegate: control.delegate 0143 } 0144 0145 ToolButton 0146 { 0147 // Layout.alignment: Qt.AlignCenter 0148 // padding: Maui.Style.space.medium 0149 leftPadding: Maui.Style.space.big 0150 rightPadding: Maui.Style.space.big 0151 readonly property QtObject obj : control.currentIndex >= control.items.length && control.currentIndex < control.count? control.hiddenItems[control.currentIndex - control.items.length] : null 0152 0153 visible: obj && obj.visible 0154 checked: visible 0155 autoExclusive: true 0156 icon.name: obj ? obj.Maui.AppView.iconName : "" 0157 0158 // flat: display === ToolButton.IconOnly 0159 0160 display: checked ? (!isWide ? ToolButton.IconOnly : ToolButton.TextBesideIcon) : ToolButton.IconOnly 0161 0162 text: obj ? obj.Maui.AppView.title : "" 0163 } 0164 0165 Maui.ToolButtonMenu 0166 { 0167 id: _menuButton 0168 icon.name: "overflow-menu" 0169 visible: control.hiddenItems.length > 0 0170 0171 Layout.alignment: Qt.AlignCenter 0172 display: checked ? ToolButton.TextBesideIcon : ToolButton.IconOnly 0173 0174 Behavior on implicitWidth 0175 { 0176 NumberAnimation 0177 { 0178 duration: Maui.Style.units.shortDuration 0179 easing.type: Easing.InOutQuad 0180 } 0181 } 0182 0183 Repeater 0184 { 0185 model: control.hiddenItems 0186 0187 MenuItem 0188 { 0189 text: modelData.Maui.AppView.title 0190 icon.name: modelData.Maui.AppView.iconName 0191 autoExclusive: true 0192 checkable: true 0193 checked: control.currentIndex === control.items.length + index 0194 showIcon: true 0195 0196 onTriggered: 0197 { 0198 if(control.items.length + index === control.currentIndex) 0199 { 0200 return 0201 } 0202 0203 control.currentIndex = control.items.length + index 0204 control.clicked(control.currentIndex) 0205 } 0206 } 0207 } 0208 } 0209 } 0210 }