Warning, /maui/mauikit/src/controls.6/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
0021 import QtQuick.Controls
0022 
0023 import org.mauikit.controls 1.3 as Maui
0024 
0025 import QtQuick.Layouts
0026 import Qt5Compat.GraphicalEffects
0027 
0028 /**
0029  * @inherit QtQuick.Controls.Control
0030  * @brief A group of actions positioned in a plegable ribbon that fold/unfolds from a big floating colored button.
0031  * 
0032  * <a href="https://doc.qt.io/qt-6/qml-qtquick-controls-control.html">This control inherits from QQC2 Control, to checkout its inherited properties refer to the Qt Docs.</a>
0033  * 
0034  *  @image html Misc/piebutton.gif
0035  *  
0036  *  @code
0037  *  Maui.PieButton
0038  *  {
0039  *      Maui.Theme.inherit: false
0040  *      anchors.right: parent.right
0041  *      anchors.bottom: parent.bottom
0042  *      anchors.margins: Maui.Style.space.big
0043  * 
0044  *      icon.name: "list-add"
0045  * 
0046  *      Action
0047  *      {
0048  *          icon.name: "love"
0049  *      }
0050  * 
0051  *      Action
0052  *      {
0053  *          icon.name: "folder"
0054  *      }
0055  * 
0056  *      Action
0057  *      {
0058  *          icon.name: "anchor"
0059  *      }
0060  *  }
0061  *  @endcode
0062  *  
0063  * <a href="https://invent.kde.org/maui/mauikit/-/blob/qt6-2/examples/PieButton.qml">You can find a more complete example at this link.</a>
0064  * 
0065  */
0066 Control
0067 {
0068   id: control
0069   
0070   /**
0071    * @brief The action children of this control.
0072    */
0073   default property list<Action> actions
0074   
0075   /**
0076    * @brief The icon group property alias to set the icon name, color, and size.
0077    * @note See Qt documentation on the icon group.
0078    * @property icon PieButton::icon
0079    */
0080   property alias icon : _button.icon
0081   
0082   /**
0083    * @brief The text to be use in the main floating button.
0084    * @property string PieButton::text
0085    */
0086   property alias text: _button.text
0087   
0088   /**
0089    * @brief How to display the text and the icon of the main floating button.
0090    * By default this is set to `ToolButton.IconOnly`
0091    * @property enum PieButton::display
0092    */
0093   property alias display: _button.display
0094   
0095   implicitWidth: implicitContentWidth + leftPadding + rightPadding
0096   implicitHeight: implicitContentHeight + topPadding + bottomPadding
0097   
0098   // Behavior on implicitWidth
0099   // {
0100   //     NumberAnimation
0101   //     {
0102   //         duration: Maui.Style.units.longDuration
0103   //         easing.type: Easing.InOutQuad
0104   //     }
0105   // }
0106   
0107   background: Rectangle
0108   {
0109     id: _background
0110     visible: control.implicitWidth > height
0111     
0112     color: Maui.Theme.backgroundColor
0113     radius: Maui.Style.radiusV
0114     layer.enabled: true
0115     
0116     layer.effect: DropShadow
0117     {
0118       cached: true
0119       horizontalOffset: 0
0120       verticalOffset: 0
0121       radius: 8.0
0122       samples: 16
0123       color: "#333"
0124       opacity: 0.5
0125       smooth: true
0126       source: _background
0127     }
0128   }
0129   
0130   contentItem: RowLayout
0131   {
0132     id: _layout
0133     
0134     Maui.ToolBar
0135     {
0136       id: _actionsBar
0137       visible: false
0138       
0139       background: null
0140       
0141       middleContent: Repeater
0142       {
0143         model: control.actions
0144         
0145         ToolButton
0146         {
0147           Layout.fillHeight: true
0148           action: modelData
0149           display: ToolButton.TextUnderIcon
0150           onClicked: control.close()
0151         }
0152       }
0153     }
0154     
0155     Maui.FloatingButton
0156     {
0157       id: _button
0158       Layout.alignment:Qt.AlignRight
0159       
0160       onClicked: _actionsBar.visible = !_actionsBar.visible
0161     }
0162   }
0163   
0164   /**
0165    * @brief Forces to open the ribbon containing the action buttons.
0166    */
0167   function open()
0168   {
0169     _actionsBar.visible = true
0170   }
0171   
0172   /**
0173    * @brief Forces to close the ribbon containing the action buttons.
0174    */
0175   function close()
0176   {
0177     _actionsBar.visible = false
0178   }
0179 }
0180 
0181 
0182 
0183