Warning, /frameworks/kirigami/tests/ListItemTest.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2021 Nate Graham <nate@kde.org>
0003  *  SPDX-FileCopyrightText: 2023 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  *  SPDX-License-Identifier: LGPL-2.0-or-later
0006  */
0007 
0008 import QtQuick
0009 import QtQuick.Layouts
0010 import QtQuick.Controls as QQC2
0011 
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kirigami.delegates as KD
0014 
0015 Kirigami.ApplicationWindow {
0016     GridLayout {
0017         anchors.fill: parent
0018         anchors.margins: Kirigami.Units.gridUnit
0019 
0020         rows: 3
0021         rowSpacing: Kirigami.Units.gridUnit
0022         columns: 3
0023         columnSpacing: Kirigami.Units.gridUnit
0024 
0025         Kirigami.Theme.inherit: false
0026         Kirigami.Theme.colorSet: Kirigami.Theme.View
0027 
0028         // Icon + Label
0029         ColumnLayout {
0030             Layout.fillWidth: true
0031             Layout.preferredWidth: 1
0032 
0033             Kirigami.Heading {
0034                 text: "Icon + Label"
0035                 level: 3
0036                 Layout.fillWidth: true
0037                 wrapMode: Text.Wrap
0038             }
0039 
0040             KD.SubtitleDelegate {
0041                 Layout.fillWidth: true
0042 
0043                 icon.name: "edit-bomb"
0044                 text: "Boom!"
0045             }
0046             KD.CheckSubtitleDelegate {
0047                 Layout.fillWidth: true
0048 
0049                 icon.name: "edit-bomb"
0050                 text: "Boom!"
0051             }
0052             KD.RadioSubtitleDelegate {
0053                 Layout.fillWidth: true
0054 
0055                 icon.name: "edit-bomb"
0056                 text: "Boom!"
0057             }
0058             KD.SwitchSubtitleDelegate {
0059                 Layout.fillWidth: true
0060 
0061                 icon.name: "edit-bomb"
0062                 text: "Boom!"
0063             }
0064         }
0065 
0066         // Label + space reserved for icon
0067         ColumnLayout {
0068             Layout.fillWidth: true
0069             Layout.preferredWidth: 1
0070 
0071             Kirigami.Heading {
0072                 text: "Icon + Label + space reserved for icon"
0073                 level: 3
0074                 Layout.fillWidth: true
0075                 wrapMode: Text.Wrap
0076             }
0077 
0078             KD.SubtitleDelegate {
0079                 Layout.fillWidth: true
0080                 text: "Boom!"
0081                 icon.width: Kirigami.Units.iconSizes.smallMedium
0082             }
0083             KD.CheckSubtitleDelegate {
0084                 Layout.fillWidth: true
0085                 text: "Boom!"
0086                 icon.width: Kirigami.Units.iconSizes.smallMedium
0087             }
0088             KD.RadioSubtitleDelegate {
0089                 Layout.fillWidth: true
0090                 text: "Boom!"
0091                 icon.width: Kirigami.Units.iconSizes.smallMedium
0092             }
0093             KD.SwitchSubtitleDelegate {
0094                 Layout.fillWidth: true
0095                 text: "Boom!"
0096                 icon.width: Kirigami.Units.iconSizes.smallMedium
0097             }
0098         }
0099 
0100         // Icon + Label + leading and trailing items
0101         ColumnLayout {
0102             Layout.fillWidth: true
0103             Layout.preferredWidth: 1
0104 
0105             Kirigami.Heading {
0106                 text: "Icon + Label + leading and trailing items"
0107                 level: 3
0108                 Layout.fillWidth: true
0109                 wrapMode: Text.Wrap
0110             }
0111 
0112             QQC2.ItemDelegate {
0113                 id: plainDelegate
0114                 Layout.fillWidth: true
0115 
0116                 icon.name: "edit-bomb"
0117                 text: "Boom!"
0118 
0119                 contentItem: RowLayout {
0120                     spacing: Kirigami.Units.smallSpacing
0121                     Rectangle {
0122                         radius: height
0123                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0124                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0125                         color: Kirigami.Theme.neutralTextColor
0126                     }
0127 
0128                     KD.IconTitleSubtitle {
0129                         Layout.fillWidth: true
0130                         title: plainDelegate.text
0131                         icon: icon.fromControlsIcon(plainDelegate.icon)
0132                     }
0133 
0134                     QQC2.Button {
0135                         icon.name: "edit-delete"
0136                         text: "Defuse the bomb!"
0137                     }
0138                 }
0139             }
0140             QQC2.CheckDelegate {
0141                 id: checkDelegate
0142                 Layout.fillWidth: true
0143 
0144                 icon.name: "edit-bomb"
0145                 text: "Boom!"
0146 
0147                 contentItem: RowLayout {
0148                     spacing: Kirigami.Units.smallSpacing
0149                     Rectangle {
0150                         radius: height
0151                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0152                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0153                         color: Kirigami.Theme.neutralTextColor
0154                     }
0155 
0156                     KD.IconTitleSubtitle {
0157                         Layout.fillWidth: true
0158                         title: checkDelegate.text
0159                         icon: icon.fromControlsIcon(checkDelegate.icon)
0160                     }
0161 
0162                     QQC2.Button {
0163                         icon.name: "edit-delete"
0164                         text: "Defuse the bomb!"
0165                     }
0166                 }
0167             }
0168             QQC2.RadioDelegate {
0169                 id: radioDelegate
0170                 Layout.fillWidth: true
0171 
0172                 icon.name: "edit-bomb"
0173                 text: "Boom!"
0174 
0175                 contentItem: RowLayout {
0176                     spacing: Kirigami.Units.smallSpacing
0177                     Rectangle {
0178                         radius: height
0179                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0180                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0181                         color: Kirigami.Theme.neutralTextColor
0182                     }
0183 
0184                     KD.IconTitleSubtitle {
0185                         Layout.fillWidth: true
0186                         title: radioDelegate.text
0187                         icon: icon.fromControlsIcon(radioDelegate.icon)
0188                     }
0189 
0190                     QQC2.Button {
0191                         icon.name: "edit-delete"
0192                         text: "Defuse the bomb!"
0193                     }
0194                 }
0195             }
0196             QQC2.SwitchDelegate {
0197                 id: switchDelegate
0198                 Layout.fillWidth: true
0199 
0200                 icon.name: "edit-bomb"
0201                 text: "Boom!"
0202 
0203                 contentItem: RowLayout {
0204                     spacing: Kirigami.Units.smallSpacing
0205                     Rectangle {
0206                         radius: height
0207                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0208                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0209                         color: Kirigami.Theme.neutralTextColor
0210                     }
0211 
0212                     KD.IconTitleSubtitle {
0213                         Layout.fillWidth: true
0214                         title: switchDelegate.text
0215                         icon: icon.fromControlsIcon(switchDelegate.icon)
0216                     }
0217 
0218                     QQC2.Button {
0219                         icon.name: "edit-delete"
0220                         text: "Defuse the bomb!"
0221                     }
0222                 }
0223             }
0224         }
0225 
0226         // Icon + Label + subtitle
0227         ColumnLayout {
0228             Layout.fillWidth: true
0229             Layout.preferredWidth: 1
0230 
0231             Kirigami.Heading {
0232                 text: "Icon + Label + subtitle"
0233                 level: 3
0234                 Layout.fillWidth: true
0235                 wrapMode: Text.Wrap
0236             }
0237 
0238             KD.SubtitleDelegate {
0239                 Layout.fillWidth: true
0240 
0241                 icon.name: "edit-bomb"
0242                 text: "Boom!"
0243                 subtitle: "smaller boom"
0244             }
0245             KD.CheckSubtitleDelegate {
0246                 Layout.fillWidth: true
0247 
0248                 icon.name: "edit-bomb"
0249                 text: "Boom!"
0250                 subtitle: "smaller boom"
0251             }
0252             KD.RadioSubtitleDelegate {
0253                 Layout.fillWidth: true
0254 
0255                 icon.name: "edit-bomb"
0256                 text: "Boom!"
0257                 subtitle: "smaller boom"
0258             }
0259             KD.SwitchSubtitleDelegate {
0260                 Layout.fillWidth: true
0261 
0262                 icon.name: "edit-bomb"
0263                 text: "Boom!"
0264                 subtitle: "smaller boom"
0265             }
0266         }
0267 
0268         // Icon + Label + space reserved for subtitle
0269         ColumnLayout {
0270             Layout.fillWidth: true
0271             Layout.preferredWidth: 1
0272 
0273             Kirigami.Heading {
0274                 text: "Icon + Label + space reserved for subtitle"
0275                 level: 3
0276                 Layout.fillWidth: true
0277                 wrapMode: Text.Wrap
0278             }
0279 
0280             KD.SubtitleDelegate {
0281                 Layout.fillWidth: true
0282 
0283                 icon.name: "edit-bomb"
0284                 text: "Boom!"
0285 
0286                 contentItem: KD.IconTitleSubtitle {
0287                     title: parent.text
0288                     icon: icon.fromControlsIcon(parent.icon)
0289                     reserveSpaceForSubtitle: true
0290                 }
0291             }
0292             KD.CheckSubtitleDelegate {
0293                 Layout.fillWidth: true
0294 
0295                 icon.name: "edit-bomb"
0296                 text: "Boom!"
0297 
0298                 contentItem: KD.IconTitleSubtitle {
0299                     title: parent.text
0300                     icon: icon.fromControlsIcon(parent.icon)
0301                     reserveSpaceForSubtitle: true
0302                 }
0303             }
0304             KD.RadioSubtitleDelegate {
0305                 Layout.fillWidth: true
0306 
0307                 icon.name: "edit-bomb"
0308                 text: "Boom!"
0309 
0310                 contentItem: KD.IconTitleSubtitle {
0311                     title: parent.text
0312                     icon: icon.fromControlsIcon(parent.icon)
0313                     reserveSpaceForSubtitle: true
0314                 }
0315             }
0316             KD.SwitchSubtitleDelegate {
0317                 Layout.fillWidth: true
0318 
0319                 icon.name: "edit-bomb"
0320                 text: "Boom!"
0321 
0322                 contentItem: KD.IconTitleSubtitle {
0323                     title: parent.text
0324                     icon: icon.fromControlsIcon(parent.icon)
0325                     reserveSpaceForSubtitle: true
0326                 }
0327             }
0328         }
0329 
0330         // Icon + Label + subtitle + leading and trailing items
0331         ColumnLayout {
0332             Layout.fillWidth: true
0333             Layout.preferredWidth: 1
0334 
0335             Kirigami.Heading {
0336                 text: "Icon + Label + subtitle + leading/trailing"
0337                 level: 3
0338                 Layout.fillWidth: true
0339                 wrapMode: Text.Wrap
0340             }
0341 
0342             KD.SubtitleDelegate {
0343                 id: subtitleDelegate
0344                 Layout.fillWidth: true
0345 
0346                 icon.name: "edit-bomb"
0347                 text: "Boom!"
0348                 subtitle: "smaller boom"
0349 
0350                 contentItem: RowLayout {
0351                     spacing: Kirigami.Units.smallSpacing
0352                     Rectangle {
0353                         radius: height
0354                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0355                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0356                         color: Kirigami.Theme.neutralTextColor
0357                     }
0358 
0359                     KD.IconTitleSubtitle {
0360                         Layout.fillWidth: true
0361                         title: subtitleDelegate.text
0362                         subtitle: subtitleDelegate.subtitle
0363                         selected: subtitleDelegate.highlighted || subtitleDelegate.down
0364                         icon: icon.fromControlsIcon(subtitleDelegate.icon)
0365                     }
0366 
0367                     QQC2.Button {
0368                         icon.name: "edit-delete"
0369                         text: "Defuse the bomb!"
0370                     }
0371                 }
0372             }
0373             KD.CheckSubtitleDelegate {
0374                 id: subtitleCheckDelegate
0375                 Layout.fillWidth: true
0376 
0377                 icon.name: "edit-bomb"
0378                 text: "Boom!"
0379                 subtitle: "smaller boom"
0380 
0381                 contentItem: RowLayout {
0382                     spacing: Kirigami.Units.smallSpacing
0383                     Rectangle {
0384                         radius: height
0385                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0386                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0387                         color: Kirigami.Theme.neutralTextColor
0388                     }
0389 
0390                     KD.IconTitleSubtitle {
0391                         Layout.fillWidth: true
0392                         title: subtitleCheckDelegate.text
0393                         subtitle: subtitleCheckDelegate.subtitle
0394                         selected: subtitleCheckDelegate.highlighted || subtitleCheckDelegate.down
0395                         icon: icon.fromControlsIcon(subtitleCheckDelegate.icon)
0396                     }
0397 
0398                     QQC2.Button {
0399                         icon.name: "edit-delete"
0400                         text: "Defuse the bomb!"
0401                     }
0402                 }
0403             }
0404             KD.RadioSubtitleDelegate {
0405                 id: subtitleRadioDelegate
0406                 Layout.fillWidth: true
0407 
0408                 icon.name: "edit-bomb"
0409                 text: "Boom!"
0410                 subtitle: "smaller boom"
0411 
0412                 contentItem: RowLayout {
0413                     spacing: Kirigami.Units.smallSpacing
0414                     Rectangle {
0415                         radius: height
0416                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0417                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0418                         color: Kirigami.Theme.neutralTextColor
0419                     }
0420 
0421                     KD.IconTitleSubtitle {
0422                         Layout.fillWidth: true
0423                         title: subtitleRadioDelegate.text
0424                         subtitle: subtitleRadioDelegate.subtitle
0425                         selected: subtitleRadioDelegate.highlighted || subtitleRadioDelegate.down
0426                         icon: icon.fromControlsIcon(subtitleRadioDelegate.icon)
0427                     }
0428 
0429                     QQC2.Button {
0430                         icon.name: "edit-delete"
0431                         text: "Defuse the bomb!"
0432                     }
0433                 }
0434             }
0435             KD.SwitchSubtitleDelegate {
0436                 id: subtitleSwitchDelegate
0437                 Layout.fillWidth: true
0438 
0439                 icon.name: "edit-bomb"
0440                 text: "Boom!"
0441                 subtitle: "smaller boom"
0442 
0443                 contentItem: RowLayout {
0444                     spacing: Kirigami.Units.smallSpacing
0445                     Rectangle {
0446                         radius: height
0447                         Layout.preferredWidth: Kirigami.Units.largeSpacing
0448                         Layout.preferredHeight: Kirigami.Units.largeSpacing
0449                         color: Kirigami.Theme.neutralTextColor
0450                     }
0451 
0452                     KD.IconTitleSubtitle {
0453                         Layout.fillWidth: true
0454                         title: subtitleSwitchDelegate.text
0455                         subtitle: subtitleSwitchDelegate.subtitle
0456                         selected: subtitleSwitchDelegate.highlighted || subtitleSwitchDelegate.down
0457                         icon: icon.fromControlsIcon(subtitleSwitchDelegate.icon)
0458                     }
0459 
0460                     QQC2.Button {
0461                         icon.name: "edit-delete"
0462                         text: "Defuse the bomb!"
0463                     }
0464                 }
0465             }
0466         }
0467     }
0468 }
0469