Warning, /maui/mauikit/src/controls.5/ListBrowserDelegate.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 QtQml 2.14
0022 
0023 import QtQuick.Controls 2.14
0024 import QtQuick.Layouts 1.3
0025 
0026 import org.mauikit.controls 1.3 as Maui
0027 
0028 import "private" as Private
0029 
0030 /**
0031  * ListBrowserDelegate
0032  * A global sidebar for the application window that can be collapsed.
0033  *
0034  *
0035  *
0036  *
0037  *
0038  *
0039  */
0040 Maui.ItemDelegate
0041 {
0042     id: control
0043     
0044     focus: true
0045     
0046     radius: Maui.Style.radiusV
0047     
0048     flat : !Maui.Handy.isMobile
0049     
0050     implicitHeight: _layout.implicitHeight + topPadding + bottomPadding
0051 
0052     isCurrentItem : ListView.isCurrentItem || checked
0053     
0054     padding: Maui.Style.defaultPadding
0055     spacing: Maui.Style.space.small
0056     
0057     /**
0058       * content : ListItemTemplate.data
0059       */
0060     default property alias content : _template.content
0061 
0062     /**
0063       * label1 : Label
0064       */
0065     property alias label1 : _template.label1
0066 
0067     /**
0068       * label2 :  Label
0069       */
0070     property alias label2 : _template.label2
0071 
0072     /**
0073       * label3 : Label
0074       */
0075     property alias label3 : _template.label3
0076 
0077     /**
0078       * label4 : Label
0079       */
0080     property alias label4 : _template.label4
0081 
0082     /**
0083       * iconItem : Item
0084       */
0085     property alias iconItem : _template.iconItem
0086     
0087     /**
0088       * iconVisible : bool
0089       */
0090     property alias iconVisible : _template.iconVisible
0091 
0092     /**
0093       * iconSizeHint : int
0094       */
0095     property alias iconSizeHint : _template.iconSizeHint
0096 
0097     /**
0098       * imageSource : string
0099       */
0100     property alias imageSource : _template.imageSource
0101 
0102     /**
0103       * iconSource : string
0104       */
0105     property alias iconSource : _template.iconSource
0106 
0107     /**
0108       * showLabel : bool
0109       */
0110     property alias showLabel : _template.labelsVisible
0111 
0112     /**
0113       * checked : bool
0114       */
0115     property bool checked : false
0116 
0117     /**
0118       * checkable : bool
0119       */
0120     property bool checkable: false
0121     
0122     property bool autoExclusive: false
0123 
0124     /**
0125       * leftLabels : ColumnLayout
0126       */
0127     property alias leftLabels: _template.leftLabels
0128 
0129     /**
0130       * rightLabels : ColumnLayout
0131       */
0132     property alias rightLabels: _template.rightLabels
0133 
0134     /**
0135       * template : ListItemTemplate
0136       */
0137     property alias template : _template
0138 
0139     property alias maskRadius : _template.maskRadius
0140 
0141     property alias containsDrag : _dropArea.containsDrag
0142 
0143     property alias dropArea : _dropArea
0144 
0145     property alias layout : _layout
0146 
0147     /**
0148       * contentDropped :
0149       */
0150     signal contentDropped(var drop)
0151 
0152     signal contentEntered(var drag)
0153     /**
0154       * toggled :
0155       */
0156     signal toggled(bool state)
0157 
0158 
0159     background: Rectangle
0160     {
0161       color: (control.isCurrentItem || control.containsPress ? Maui.Theme.highlightColor : ( control.hovered ? Maui.Theme.hoverColor : (control.flat ? "transparent" : Maui.Theme.alternateBackgroundColor)))
0162       
0163         radius: control.radius
0164 
0165         Rectangle
0166         {
0167             width: parent.width
0168             height: parent.height
0169             radius: control.radius
0170             visible: control.containsDrag
0171             color:  control.Maui.Theme.backgroundColor
0172             border.color: control.Maui.Theme.highlightColor
0173             Behavior on color
0174             {
0175               Maui.ColorTransition{}
0176             }
0177         }
0178 
0179         Behavior on color
0180         {
0181           enabled: !control.flat
0182           Maui.ColorTransition{}
0183         }
0184     }
0185 
0186     DropArea
0187     {
0188         id: _dropArea
0189         width: parent.width
0190         height: parent.height
0191         enabled: control.draggable
0192 
0193         onDropped:
0194         {
0195             control.contentDropped(drop)
0196         }
0197 
0198         onEntered:
0199         {
0200             control.contentEntered(drag)
0201         }
0202     }
0203 
0204     RowLayout
0205     {
0206         id: _layout
0207         anchors.fill: parent
0208         spacing: _template.spacing
0209 
0210         Loader
0211         {
0212             asynchronous: true
0213             active: control.checkable || control.checked
0214             visible: active
0215             
0216             Layout.alignment: Qt.AlignCenter
0217             
0218             scale: active? 1 : 0
0219             
0220             Behavior on scale
0221             {
0222                 NumberAnimation
0223                 {
0224                     duration: Maui.Style.units.longDuration
0225                     easing.type: Easing.InOutQuad
0226                 }
0227             }
0228             
0229             sourceComponent: CheckBox
0230                 {                    
0231                     checkable: control.checkable
0232                     autoExclusive: control.autoExclusive
0233                                         
0234                     Binding on checked
0235                     {
0236                         value: control.checked
0237                         restoreMode: Binding.RestoreBinding
0238                     }
0239                     
0240                     onToggled: control.toggled(state)
0241                 }   
0242         }
0243 
0244         Maui.ListItemTemplate
0245         {
0246             id: _template
0247             Layout.fillHeight: true
0248             Layout.fillWidth: true
0249             
0250             spacing: control.spacing
0251             
0252             hovered: control.hovered
0253             isCurrentItem : control.isCurrentItem
0254             highlighted: control.containsPress 
0255         }
0256     }
0257 }