Warning, /maui/mauikit/src/controls.5/PieButton.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2018 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.14 0021 import QtQuick.Controls 2.14 0022 0023 import org.mauikit.controls 1.2 as Maui 0024 0025 import QtQuick.Layouts 1.3 0026 import QtGraphicalEffects 1.0 0027 0028 /** 0029 * PieButton 0030 * A global sidebar for the application window that can be collapsed. 0031 * 0032 * 0033 * 0034 * 0035 * 0036 * 0037 */ 0038 Item 0039 { 0040 id: control 0041 0042 /** 0043 * alignment : int 0044 */ 0045 property int alignment : Qt.AlignLeft 0046 0047 /** 0048 * maxWidth : int 0049 */ 0050 property int maxWidth : ApplicationWindow.overlay.width - control.anchors.margins 0051 0052 /** 0053 * actions : list<Action> 0054 */ 0055 default property list<Action> actions 0056 0057 /** 0058 * icon : icon 0059 */ 0060 property alias icon : _button.icon 0061 0062 /** 0063 * text : string 0064 */ 0065 property alias text: _button.text 0066 0067 /** 0068 * display : ToolButton.display 0069 */ 0070 property alias display: _button.display 0071 0072 implicitWidth: _actionsBar.visible ? Math.min(maxWidth, height + _actionsBar.implicitWidth + Maui.Style.space.big) : height 0073 0074 Behavior on implicitWidth 0075 { 0076 NumberAnimation 0077 { 0078 duration: Maui.Style.units.longDuration 0079 easing.type: Easing.InOutQuad 0080 } 0081 } 0082 0083 MouseArea 0084 { 0085 id: _overlay 0086 anchors.fill: parent 0087 parent: control.parent 0088 preventStealing: true 0089 propagateComposedEvents: true 0090 visible: _actionsBar.visible 0091 opacity: visible ? 1 : 0 0092 0093 Behavior on opacity 0094 { 0095 NumberAnimation 0096 { 0097 duration: Maui.Style.units.longDuration 0098 easing.type: Easing.InOutQuad 0099 } 0100 } 0101 Rectangle 0102 { 0103 color: Qt.rgba(control.Maui.Theme.backgroundColor.r,control.Maui.Theme.backgroundColor.g,control.Maui.Theme.backgroundColor.b, 0.5) 0104 anchors.fill: parent 0105 } 0106 0107 onClicked: 0108 { 0109 control.close() 0110 mouse.accepted = false 0111 } 0112 } 0113 0114 Rectangle 0115 { 0116 id: _background 0117 visible: control.implicitWidth > height 0118 anchors.fill: parent 0119 color: control.Maui.Theme.backgroundColor 0120 radius: Maui.Style.radiusV 0121 } 0122 0123 DropShadow 0124 { 0125 visible: _actionsBar.visible 0126 anchors.fill: _background 0127 cached: true 0128 horizontalOffset: 0 0129 verticalOffset: 0 0130 radius: 8.0 0131 samples: 16 0132 color: "#333" 0133 opacity: 0.5 0134 smooth: true 0135 source: _background 0136 } 0137 0138 RowLayout 0139 { 0140 anchors.fill: parent 0141 0142 Maui.ToolBar 0143 { 0144 id: _actionsBar 0145 visible: false 0146 Layout.fillWidth: true 0147 Layout.fillHeight: true 0148 0149 background: null 0150 0151 middleContent: Repeater 0152 { 0153 model: control.actions 0154 0155 ToolButton 0156 { 0157 Layout.fillHeight: true 0158 action: modelData 0159 display: ToolButton.TextUnderIcon 0160 onClicked: control.close() 0161 } 0162 } 0163 } 0164 0165 Maui.FloatingButton 0166 { 0167 id: _button 0168 Layout.preferredWidth: control.height 0169 Layout.preferredHeight: control.height 0170 Layout.alignment:Qt.AlignRight 0171 0172 onClicked: _actionsBar.visible = !_actionsBar.visible 0173 } 0174 } 0175 0176 /** 0177 * 0178 */ 0179 function open() 0180 { 0181 _actionsBar.visible = true 0182 } 0183 0184 /** 0185 * 0186 */ 0187 function close() 0188 { 0189 _actionsBar.visible = false 0190 } 0191 } 0192 0193 0194 0195