Warning, /maui/mauikit/src/controls.5/Holder.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 QtQuick.Controls 2.15 0022 0023 import org.mauikit.controls 1.3 as Maui 0024 0025 /** 0026 * Holder 0027 * A global sidebar for the application window that can be collapsed. 0028 * 0029 * 0030 * 0031 * 0032 * 0033 * 0034 */ 0035 Item 0036 { 0037 id: control 0038 implicitHeight: _layout.implicitHeight 0039 0040 default property list<Action> actions 0041 0042 property alias content : _layout.data 0043 0044 /** 0045 * emoji : string 0046 */ 0047 property string emoji 0048 0049 /** 0050 * title : string 0051 */ 0052 property alias title : _template.text1 0053 0054 /** 0055 * body : string 0056 */ 0057 property alias body : _template.text2 0058 0059 /** 0060 * isMask : bool 0061 */ 0062 property bool isMask : true 0063 0064 /** 0065 * isGif : bool 0066 */ 0067 property bool isGif : false 0068 0069 /** 0070 * emojiSize : int 0071 */ 0072 property int emojiSize : Maui.Style.iconSizes.big 0073 0074 /** 0075 * enabled : bool 0076 */ 0077 property bool enabled: true 0078 0079 property alias label1 : _template.label1 0080 property alias label2 : _template.label2 0081 0082 readonly property alias dropArea: _dropArea 0083 0084 /** 0085 * actionTriggered : 0086 */ 0087 signal actionTriggered() 0088 signal contentDropped(var drop) 0089 0090 Component 0091 { 0092 id: imgComponent 0093 0094 Maui.Icon 0095 { 0096 id: imageHolder 0097 0098 color: Maui.Theme.textColor 0099 isMask: control.isMask 0100 opacity: isMask ? _template.opacity : 1 0101 source: emoji 0102 } 0103 } 0104 0105 Component 0106 { 0107 id: animComponent 0108 AnimatedImage 0109 { 0110 id: animation; 0111 source: emoji 0112 } 0113 } 0114 0115 Rectangle 0116 { 0117 anchors.fill: parent 0118 opacity: _dropArea.containsDrag ? 0.4 : 0 0119 color: Maui.Theme.textColor 0120 DropArea 0121 { 0122 id: _dropArea 0123 anchors.fill: parent 0124 onDropped: (drop) => 0125 { 0126 control.contentDropped(drop) 0127 } 0128 } 0129 } 0130 0131 Column 0132 { 0133 id: _layout 0134 anchors.centerIn: parent 0135 spacing: Maui.Style.defaultSpacing 0136 0137 Loader 0138 { 0139 visible: active 0140 active: control.height > (_template.implicitHeight + emojiSize) && control.emoji 0141 height: control.emoji && visible ? emojiSize : 0 0142 width: height 0143 asynchronous: true 0144 sourceComponent: isGif ? animComponent : imgComponent 0145 } 0146 0147 Maui.ListItemTemplate 0148 { 0149 id: _template 0150 width: Math.min(control.width * 0.7, layout.implicitWidth) 0151 0152 label1.font: Maui.Style.h1Font 0153 label1.wrapMode: Text.Wrap 0154 label2.wrapMode: Text.Wrap 0155 } 0156 Item{height: Maui.Style.space.medium; width: height} 0157 0158 Repeater 0159 { 0160 model: control.actions 0161 0162 Button 0163 { 0164 id: _button 0165 width: Math.max(120, implicitWidth) 0166 0167 action: modelData 0168 0169 } 0170 } 0171 } 0172 }