Warning, /maui/mauikit/src/controls.5/SwipeItemDelegate.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.Layouts 1.3 0022 import QtQuick.Controls 2.14 0023 0024 import org.mauikit.controls 1.3 as Maui 0025 0026 /** 0027 * SwipeItemDelegate 0028 * A global sidebar for the application window that can be collapsed. 0029 * 0030 * 0031 * 0032 * 0033 * 0034 * 0035 */ 0036 Maui.ItemDelegate 0037 { 0038 id: control 0039 padding: Maui.Style.defaultPadding 0040 spacing: Maui.Style.defaultSpacing 0041 isCurrentItem : ListView.isCurrentItem 0042 0043 /** 0044 * content : Item.data 0045 */ 0046 default property alias content : _content.data 0047 0048 property alias actionRow : _background.data 0049 /** 0050 * showQuickActions : bool 0051 */ 0052 property bool showQuickActions : true 0053 0054 /** 0055 * quickActions : list<Action> 0056 */ 0057 property list<Action> quickActions 0058 0059 /** 0060 * collapse : bool 0061 */ 0062 property bool collapse : width < Maui.Style.units.gridUnit * 26 || Maui.Handy.isMobile 0063 0064 onCollapseChanged: 0065 { 0066 if(_swipeDelegate.swipe.position < 0) 0067 _swipeDelegate.swipe.close() 0068 } 0069 0070 background: null 0071 0072 SwipeDelegate 0073 { 0074 id: _swipeDelegate 0075 anchors.fill: parent 0076 hoverEnabled: true 0077 clip: true 0078 0079 onClicked: control.clicked(null) 0080 onPressed: control.pressed(null) 0081 onDoubleClicked: control.doubleClicked(null) 0082 onPressAndHold: control.pressAndHold(null) 0083 0084 swipe.enabled: control.collapse && control.showQuickActions 0085 padding: Maui.Style.space.small 0086 topPadding: padding 0087 bottomPadding: padding 0088 leftPadding: padding 0089 rightPadding: padding 0090 0091 background: Rectangle 0092 { 0093 id: _bg 0094 // anchors.fill: _swipeDelegate.background 0095 //z: _swipeDelegate.background.z -1 0096 color: Qt.tint(control.Maui.Theme.textColor, Qt.rgba(control.Maui.Theme.backgroundColor.r, control.Maui.Theme.backgroundColor.g, control.Maui.Theme.backgroundColor.b, 0.95)) 0097 radius: Maui.Style.radiusV 0098 // opacity: Math.abs( _swipeDelegate.swipe.position) 0099 } 0100 0101 contentItem: RowLayout 0102 { 0103 spacing: control.spacing 0104 id: _background 0105 0106 // transform: Translate { 0107 // x: _swipeDelegate.swipe.position * control.width * 0.33 0108 // } 0109 Item 0110 { 0111 id: _content 0112 Layout.fillWidth: true 0113 Layout.fillHeight: true 0114 } 0115 0116 Row 0117 { 0118 id: _buttonsRow 0119 spacing: control.spacing 0120 visible: control.hovered && control.showQuickActions && !control.collapse 0121 Layout.fillHeight: true 0122 Layout.preferredWidth: Math.max(Maui.Style.space.big, _buttonsRow.implicitWidth) 0123 Layout.alignment: Qt.AlignRight 0124 // Layout.margins: Maui.Style.space.medium 0125 0126 Behavior on Layout.preferredWidth 0127 { 0128 NumberAnimation 0129 { 0130 duration: Maui.Style.units.longDuration 0131 easing.type: Easing.InOutQuad 0132 } 0133 } 0134 0135 Repeater 0136 { 0137 model: !control.collapse && control.showQuickActions ? control.quickActions : undefined 0138 0139 ToolButton 0140 { 0141 action: modelData 0142 anchors.verticalCenter: parent.verticalCenter 0143 } 0144 } 0145 } 0146 0147 Item 0148 { 0149 visible: control.collapse && control.quickActions.length > 0 && control.showQuickActions 0150 Layout.fillHeight: true 0151 Layout.preferredWidth: Maui.Style.iconSizes.big + Maui.Style.space.small 0152 Layout.margins: Maui.Style.space.small 0153 0154 ToolButton 0155 { 0156 anchors.centerIn: parent 0157 icon.name: "overflow-menu" 0158 onClicked: _swipeDelegate.swipe.complete ? _swipeDelegate.swipe.close() : _swipeDelegate.swipe.open(SwipeDelegate.Right) 0159 } 0160 } 0161 } 0162 0163 swipe.right: Row 0164 { 0165 id: _rowActions 0166 anchors.right: parent.right 0167 anchors.verticalCenter: parent.verticalCenter 0168 spacing: control.spacing 0169 padding: Maui.Style.space.medium 0170 // width: implicitWidth * Math.abs(_swipeDelegate.swipe.position) 0171 height: parent.height 0172 0173 opacity: Math.abs(_swipeDelegate.swipe.position) > 0.5 ? 1 : 0 0174 // Behavior on width 0175 // { 0176 // NumberAnimation 0177 // { 0178 // duration: Maui.Style.units.longDuration 0179 // easing.type: Easing.InOutQuad 0180 // } 0181 // } 0182 0183 Repeater 0184 { 0185 model: control.collapse && control.showQuickActions ? control.quickActions : undefined 0186 0187 ToolButton 0188 { 0189 action: modelData 0190 anchors.verticalCenter: parent.verticalCenter 0191 onClicked: _swipeDelegate.swipe.close() 0192 } 0193 } 0194 } 0195 } 0196 }