Warning, /maui/mauikit/src/controls.5/ListItemTemplate.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 * ListItemTemplate 0028 * A global sidebar for the application window that can be collapsed. 0029 * 0030 * 0031 * 0032 * 0033 * 0034 * 0035 */ 0036 Item 0037 { 0038 id: control 0039 /** 0040 * content : data 0041 */ 0042 default property alias content: _layout.data 0043 0044 implicitHeight: _layout.implicitHeight 0045 0046 property alias spacing: _layout.spacing 0047 0048 /** 0049 * text1 : string 0050 */ 0051 property alias text1 : _label1.text 0052 0053 /** 0054 * text2 : string 0055 */ 0056 property alias text2 : _label2.text 0057 0058 /** 0059 * text3 : string 0060 */ 0061 property alias text3 : _label3.text 0062 0063 /** 0064 * text4 : string 0065 */ 0066 property alias text4 : _label4.text 0067 0068 /** 0069 * label1 : Label 0070 */ 0071 property alias label1 : _label1 0072 0073 /** 0074 * label2 : Label 0075 */ 0076 property alias label2 : _label2 0077 0078 /** 0079 * label3 : Label 0080 */ 0081 property alias label3 : _label3 0082 0083 /** 0084 * label4 : Label 0085 */ 0086 property alias label4 : _label4 0087 0088 /** 0089 * iconItemContainer : Item 0090 */ 0091 property alias iconContainer : _iconLoader 0092 0093 /** 0094 * iconItem : Item 0095 */ 0096 property alias iconItem : _iconLoader.item 0097 0098 /** 0099 * iconVisible : bool 0100 */ 0101 property alias iconVisible : _iconLoader.visible 0102 0103 /** 0104 * leftLabels : ColumnLayout 0105 */ 0106 property alias leftLabels : _leftLabels 0107 0108 /** 0109 * rightLabels : ColumnLayout 0110 */ 0111 property alias rightLabels : _rightLabels 0112 0113 0114 /** 0115 * layout : RowLayout 0116 */ 0117 property alias layout : _layout 0118 0119 /** 0120 * iconSizeHint : int 0121 */ 0122 property int iconSizeHint : Maui.Style.iconSizes.big 0123 property int imageSizeHint : -1 0124 property int headerSizeHint : -1 0125 0126 /** 0127 * imageSource : string 0128 */ 0129 property string imageSource 0130 0131 /** 0132 * iconSource : string 0133 */ 0134 property string iconSource 0135 0136 /** 0137 * isCurrentItem : bool 0138 */ 0139 property bool isCurrentItem: false 0140 0141 /** 0142 * labelsVisible : bool 0143 */ 0144 property bool labelsVisible: true 0145 0146 0147 /** 0148 * fillMode : Image.fillMode 0149 */ 0150 property int fillMode : Image.PreserveAspectFit 0151 0152 /** 0153 * maskRadius : int 0154 */ 0155 property int maskRadius: 0 0156 0157 0158 /** 0159 * iconComponent : Component 0160 */ 0161 property Component iconComponent : _iconComponent 0162 0163 property bool isMask : iconSizeHint <= Maui.Style.iconSizes.small 0164 property bool hovered: false 0165 0166 property bool highlighted: false 0167 0168 Component 0169 { 0170 id: _iconComponent 0171 0172 Maui.IconItem 0173 { 0174 iconSource: control.iconSource 0175 imageSource: control.imageSource 0176 0177 highlighted: control.isCurrentItem || control.highlighted 0178 hovered: control.hovered 0179 0180 iconSizeHint: control.iconSizeHint 0181 imageSizeHint: control.imageSizeHint 0182 0183 fillMode: control.fillMode 0184 maskRadius: control.maskRadius 0185 0186 isMask: control.isMask 0187 } 0188 } 0189 0190 RowLayout 0191 { 0192 id: _layout 0193 anchors.fill: parent 0194 spacing: Maui.Style.space.medium 0195 0196 readonly property color labelColor: control.isCurrentItem || control.highlighted? Maui.Theme.highlightedTextColor : Maui.Theme.textColor 0197 0198 Loader 0199 { 0200 id: _iconLoader 0201 0202 asynchronous: true 0203 0204 visible: (control.width > Maui.Style.units.gridUnit * 10) && (control.iconSource.length > 0 || control.imageSource.length > 0) 0205 0206 active: visible 0207 0208 Layout.alignment: Qt.AlignCenter 0209 Layout.fillWidth: !control.labelsVisible 0210 Layout.fillHeight: true 0211 Layout.preferredWidth: Math.max(implicitWidth, control.headerSizeHint) 0212 Layout.preferredHeight: Math.max(implicitHeight, control.headerSizeHint) 0213 0214 sourceComponent: control.iconComponent 0215 } 0216 0217 0218 ColumnLayout 0219 { 0220 id: _leftLabels 0221 clip: true 0222 visible: control.labelsVisible 0223 0224 Layout.fillHeight: true 0225 Layout.fillWidth: true 0226 0227 spacing: 0 0228 0229 Label 0230 { 0231 id: _label1 0232 visible: text.length 0233 0234 Layout.fillWidth: true 0235 Layout.fillHeight: true 0236 0237 verticalAlignment: _label2.visible ? Qt.AlignBottom : Qt.AlignVCenter 0238 0239 elide: Text.ElideRight 0240 // wrapMode: _label2.visible ? Text.NoWrap : Text.Wrap 0241 wrapMode: Text.NoWrap 0242 textFormat: Text.PlainText 0243 color: _layout.labelColor 0244 } 0245 0246 Label 0247 { 0248 id: _label2 0249 visible: text.length 0250 0251 Layout.fillWidth: true 0252 Layout.fillHeight: true 0253 verticalAlignment: _label1.visible ? Qt.AlignTop : Qt.AlignVCenter 0254 0255 elide: Text.ElideRight 0256 // wrapMode: Text.Wrap 0257 wrapMode: Text.NoWrap 0258 textFormat: Text.PlainText 0259 color: _layout.labelColor 0260 opacity: control.isCurrentItem ? 0.8 : 0.6 0261 } 0262 } 0263 0264 ColumnLayout 0265 { 0266 id: _rightLabels 0267 clip: true 0268 // visible: (control.width > Maui.Style.units.gridUnit * 15) && control.labelsVisible 0269 0270 Layout.fillHeight: true 0271 Layout.fillWidth: true 0272 Layout.maximumWidth: control.width/2 0273 Layout.preferredWidth: implicitWidth 0274 Layout.minimumWidth: 0 0275 spacing: _leftLabels.spacing 0276 0277 Label 0278 { 0279 id: _label3 0280 visible: text.length > 0 0281 0282 Layout.fillHeight: true 0283 Layout.fillWidth: true 0284 0285 Layout.alignment: Qt.AlignRight 0286 0287 horizontalAlignment: Qt.AlignRight 0288 verticalAlignment: _label4.visible ? Qt.AlignBottom : Qt.AlignVCenter 0289 0290 font.pointSize: Maui.Style.fontSizes.tiny 0291 0292 wrapMode: Text.NoWrap 0293 elide: Text.ElideMiddle 0294 textFormat: Text.PlainText 0295 color: _layout.labelColor 0296 opacity: control.isCurrentItem ? 0.8 : 0.6 0297 } 0298 0299 Label 0300 { 0301 id: _label4 0302 visible: text.length > 0 0303 0304 Layout.fillHeight: true 0305 Layout.fillWidth: true 0306 0307 Layout.alignment: Qt.AlignRight 0308 horizontalAlignment: Qt.AlignRight 0309 verticalAlignment: _label3.visible ? Qt.AlignTop : Qt.AlignVCenter 0310 0311 font.pointSize: Maui.Style.fontSizes.tiny 0312 0313 wrapMode: Text.NoWrap 0314 elide: Text.ElideMiddle 0315 textFormat: Text.PlainText 0316 color: _layout.labelColor 0317 opacity: control.isCurrentItem ? 0.8 : 0.6 0318 } 0319 } 0320 } 0321 }