Warning, /libraries/kirigami-addons/tests/DelegateApp.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2022 Devin Lin <devin@kde.org> 0003 * SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 import QtQuick 2.15 0007 import QtQuick.Controls 2.15 as Controls 0008 import QtQuick.Layouts 1.2 0009 import QtQuick.Layouts 1.15 0010 0011 import org.kde.kirigami 2.20 as Kirigami 0012 import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm 0013 import org.kde.kirigamiaddons.delegates 1.0 as Delegates 0014 import org.kde.kirigamiaddons.components 1.0 as Components 0015 0016 Kirigami.ApplicationWindow { 0017 id: appwindow 0018 0019 title: "Kirigami Addons Delegates Test" 0020 0021 width: Kirigami.Settings.isMobile ? 400 : 800 0022 height: Kirigami.Settings.isMobile ? 550 : 500 0023 0024 pageStack { 0025 defaultColumnWidth: Kirigami.Units.gridUnit * 35 0026 initialPage: welcomePageComponent 0027 0028 globalToolBar { 0029 style: Kirigami.ApplicationHeaderStyle.ToolBar; 0030 showNavigationButtons: Kirigami.ApplicationHeaderStyle.ShowBackButton; 0031 } 0032 } 0033 0034 0035 // Dummy implementation of ki18n 0036 function i18nd(context, text) { 0037 return text; 0038 } 0039 0040 function i18ndp(context, text1, text2, number) { 0041 return number === 1 ? text1 : text2; 0042 } 0043 0044 function i18ndc(context, text) { 0045 return text 0046 } 0047 0048 function i18nc(context, text) { 0049 return text; 0050 } 0051 0052 LayoutMirroring.enabled: false 0053 0054 Component { 0055 id: roundedItemDelegatePageComponent 0056 0057 Kirigami.ScrollablePage { 0058 title: "RoundedItemDelegate" 0059 0060 header: Components.Banner { 0061 text: "Hello" 0062 visible: true 0063 } 0064 0065 ListView { 0066 model: 50 0067 delegate: Delegates.RoundedItemDelegate { 0068 id: delegate 0069 0070 required property int modelData 0071 0072 icon.name: "kde" 0073 text: "Item " + modelData 0074 } 0075 0076 Components.DoubleFloatingButton { 0077 anchors { 0078 right: parent.right 0079 rightMargin: Kirigami.Units.largeSpacing 0080 bottom: parent.bottom 0081 bottomMargin: Kirigami.Units.largeSpacing 0082 } 0083 0084 leftAction: Kirigami.Action { 0085 text: "Hello" 0086 icon.name: "list-add" 0087 } 0088 0089 rightAction: Kirigami.Action { 0090 text: "Hello" 0091 icon.name: "list-add" 0092 } 0093 } 0094 } 0095 } 0096 } 0097 0098 Component { 0099 id: subtitleRoundedItemDelegatePageComponent 0100 0101 Kirigami.ScrollablePage { 0102 title: "RoundedItemDelegate with subtitle" 0103 0104 header: Components.Banner { 0105 title: "Hello" 0106 text: "Hello world" 0107 visible: true 0108 } 0109 0110 ListView { 0111 model: 50 0112 0113 delegate: Delegates.RoundedItemDelegate { 0114 id: delegate 0115 0116 required property int modelData 0117 0118 icon.name: "kde" 0119 text: "Item " + modelData 0120 0121 contentItem: Delegates.SubtitleContentItem { 0122 itemDelegate: delegate 0123 subtitle: "Subtitle " + delegate.modelData 0124 } 0125 } 0126 0127 Components.FloatingButton { 0128 anchors { 0129 right: parent.right 0130 rightMargin: Kirigami.Units.largeSpacing 0131 bottom: parent.bottom 0132 bottomMargin: Kirigami.Units.largeSpacing 0133 } 0134 0135 action: Kirigami.Action { 0136 text: "Hello" 0137 icon.name: "list-add" 0138 } 0139 } 0140 } 0141 } 0142 } 0143 0144 Component { 0145 id: indicatorItemDelegatePageComponent 0146 0147 Kirigami.ScrollablePage { 0148 title: "IndicatorItemDelegate" 0149 0150 ListView { 0151 id: listView 0152 0153 model: 50 0154 delegate: Delegates.IndicatorItemDelegate { 0155 id: delegate 0156 0157 required property int modelData 0158 0159 unread: Math.random() > 0.3 0160 icon.name: "kde" 0161 text: "Item " + modelData 0162 onClicked: { 0163 unread = false; 0164 listView.currentIndex = index; 0165 } 0166 } 0167 } 0168 } 0169 } 0170 0171 Component { 0172 id: subtitleIndicatorItemDelegatePageComponent 0173 0174 Kirigami.ScrollablePage { 0175 title: "IndicatorItemDelegate with subtitle" 0176 0177 ListView { 0178 id: listView 0179 0180 model: 50 0181 delegate: Delegates.IndicatorItemDelegate { 0182 id: delegate 0183 0184 required property int modelData 0185 0186 unread: Math.random() > 0.3 0187 icon.name: "kde" 0188 text: "Item " + modelData 0189 onClicked: { 0190 unread = false; 0191 listView.currentIndex = index; 0192 } 0193 0194 contentItem: Delegates.SubtitleContentItem { 0195 itemDelegate: delegate 0196 subtitle: "Subtitle " + delegate.modelData 0197 } 0198 } 0199 } 0200 } 0201 } 0202 0203 Component { 0204 id: welcomePageComponent 0205 0206 Kirigami.ScrollablePage { 0207 id: page 0208 title: "Mobile Form Layout" 0209 0210 leftPadding: 0 0211 rightPadding: 0 0212 topPadding: Kirigami.Units.gridUnit 0213 bottomPadding: Kirigami.Units.gridUnit 0214 0215 ColumnLayout { 0216 spacing: 0 0217 0218 // Form Grid 0219 MobileForm.FormGridContainer { 0220 id: container 0221 0222 Layout.fillWidth: true 0223 0224 infoCards: [ 0225 MobileForm.FormGridContainer.InfoCard { 0226 title: "RoundedItemDelegate" 0227 action: Kirigami.Action { 0228 onTriggered: applicationWindow().pageStack.push(roundedItemDelegatePageComponent); 0229 } 0230 }, 0231 MobileForm.FormGridContainer.InfoCard { 0232 title: "ReadIndicatorItemDelegate" 0233 action: Kirigami.Action { 0234 onTriggered: applicationWindow().pageStack.push(indicatorItemDelegatePageComponent); 0235 } 0236 }, 0237 MobileForm.FormGridContainer.InfoCard { 0238 title: "RoundedItemDelegate with subtitle" 0239 action: Kirigami.Action { 0240 onTriggered: applicationWindow().pageStack.push(subtitleRoundedItemDelegatePageComponent); 0241 } 0242 }, 0243 MobileForm.FormGridContainer.InfoCard { 0244 title: "ReadIndicatorItemDelegate with subtitle" 0245 action: Kirigami.Action { 0246 onTriggered: applicationWindow().pageStack.push(subtitleIndicatorItemDelegatePageComponent); 0247 } 0248 } 0249 ] 0250 } 0251 } 0252 } 0253 } 0254 }