Warning, /maui/mauikit/src/controls.5/GridBrowserDelegate.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.15
0021 import QtQml 2.14
0022
0023 import QtQuick.Controls 2.15
0024
0025 import org.mauikit.controls 1.3 as Maui
0026
0027 import "private" as Private
0028
0029 /**
0030 * GridBrowserDelegate
0031 * A GridItemTemplate wrapped into a ItemDelegate to make it clickable and draggable.
0032 *
0033 * For more details check the ItemDelegate and GridItemTemplate documentation.
0034 *
0035 * This mix adds a drop area, tooltip information and a custom styling.
0036 *
0037 *
0038 */
0039 Maui.ItemDelegate
0040 {
0041 id: control
0042
0043 isCurrentItem : GridView.isCurrentItem || checked
0044 flat : !Maui.Handy.isMobile
0045
0046 implicitHeight: _template.implicitHeight + topPadding +bottomPadding
0047
0048 padding: Maui.Style.defaultPadding
0049 spacing: Maui.Style.space.medium
0050
0051 radius: Maui.Style.radiusV
0052
0053 /**
0054 * template : GridItemTemplate
0055 */
0056 property alias template : _template
0057
0058
0059 /**
0060 * label1 : Label
0061 */
0062 property alias label1 : _template.label1
0063
0064 /**
0065 * label2 : Label
0066 */
0067 property alias label2 : _template.label2
0068
0069
0070 /**
0071 * iconItem : Item
0072 */
0073 property alias iconItem : _template.iconItem
0074
0075 /**
0076 * iconVisible : bool
0077 */
0078 property alias iconVisible : _template.iconVisible
0079 property alias imageSizeHint : _template.imageSizeHint
0080
0081 /**
0082 * iconSizeHint : int
0083 */
0084 property alias iconSizeHint : _template.iconSizeHint
0085
0086 /**
0087 * imageSource : string
0088 */
0089 property alias imageSource : _template.imageSource
0090
0091 /**
0092 * iconSource : string
0093 */
0094 property alias iconSource : _template.iconSource
0095
0096 /**
0097 * showLabel : bool
0098 */
0099 //property alias showLabel : _template.labelsVisible
0100
0101 property alias labelsVisible : _template.labelsVisible
0102
0103 /**
0104 * checked : bool
0105 */
0106 property bool checked : false
0107
0108 property alias fillMode : _template.fillMode
0109
0110 property alias maskRadius : _template.maskRadius
0111
0112 /**
0113 * checkable : bool
0114 */
0115 property bool checkable: false
0116
0117 property bool autoExclusive: false
0118
0119 /**
0120 * dropArea : DropArea
0121 */
0122 property alias dropArea : _dropArea
0123
0124 property alias imageWidth : _template.imageWidth
0125 property alias imageHeight : _template.imageHeight
0126
0127 /**
0128 * contentDropped :
0129 */
0130 signal contentDropped(var drop)
0131
0132 /**
0133 * toggled :
0134 */
0135 signal toggled(bool state)
0136
0137 background: Rectangle
0138 {
0139 color: (control.isCurrentItem || control.containsPress ? Maui.Theme.highlightColor : ( control.hovered ? Maui.Theme.hoverColor : (control.flat ? "transparent" : Maui.Theme.alternateBackgroundColor)))
0140
0141 radius: control.radius
0142
0143 Behavior on color
0144 {
0145 enabled: !control.flat
0146 Maui.ColorTransition{}
0147 }
0148 }
0149
0150 DropArea
0151 {
0152 id: _dropArea
0153 width: parent.width
0154 height: parent.height
0155 Rectangle
0156 {
0157 anchors.fill: parent
0158 radius: control.radius
0159 color: control.Maui.Theme.backgroundColor
0160 border.color: control.Maui.Theme.highlightColor
0161 visible: parent.containsDrag
0162 }
0163
0164 onDropped:
0165 {
0166 control.contentDropped(drop)
0167 }
0168 }
0169
0170 Maui.GridItemTemplate
0171 {
0172 id: _template
0173 anchors.fill: parent
0174 iconContainer.scale: _dropArea.containsDrag || _checkboxLoader.active ? 0.8 : 1
0175 hovered: control.hovered
0176 maskRadius: control.radius
0177 spacing: control.spacing
0178 isCurrentItem: control.isCurrentItem
0179 highlighted: control.containsPress
0180 }
0181
0182 Loader
0183 {
0184 id: _checkboxLoader
0185 asynchronous: true
0186 active: control.checkable || control.checked
0187
0188 anchors.top: parent.top
0189 anchors.left: parent.left
0190 anchors.margins: Maui.Style.space.medium
0191
0192 scale: active ? 1 : 0
0193
0194 Behavior on scale
0195 {
0196 NumberAnimation
0197 {
0198 duration: Maui.Style.units.longDuration*2
0199 easing.type: Easing.OutBack
0200 }
0201 }
0202
0203 sourceComponent: CheckBox
0204 {
0205 checkable: control.checkable
0206 autoExclusive: control.autoExclusive
0207
0208 Binding on checked
0209 {
0210 value: control.checked
0211 restoreMode: Binding.RestoreBinding
0212 }
0213
0214 onToggled: control.toggled(state)
0215 }
0216 }
0217 }