Warning, /plasma/kdeplasma-addons/kwin/windowswitchers/sidebar/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org>
0003     SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0004     SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 import QtQuick 2.0
0009 import QtQuick.Layouts 1.1
0010 import org.kde.plasma.components 3.0 as PlasmaComponents
0011 import org.kde.plasma.core as PlasmaCore
0012 import org.kde.kirigami 2.20 as Kirigami
0013 import org.kde.plasma.extras 2.0 as PlasmaExtras
0014 import org.kde.kwin 3.0 as KWin
0015 
0016 KWin.TabBoxSwitcher {
0017     id: tabBox
0018 
0019     readonly property real screenFactor: screenGeometry.width / screenGeometry.height
0020 
0021     currentIndex: thumbnailListView.currentIndex
0022 
0023     PlasmaCore.Dialog {
0024         id: dialog
0025         location: Qt.application.layoutDirection === Qt.RightToLeft ? PlasmaCore.Types.RightEdge : PlasmaCore.Types.LeftEdge
0026         visible: tabBox.visible
0027         flags: Qt.X11BypassWindowManagerHint
0028         x: screenGeometry.x + (Qt.application.layoutDirection === Qt.RightToLeft ? screenGeometry.width - width : 0)
0029         y: screenGeometry.y
0030 
0031         mainItem: PlasmaComponents.ScrollView {
0032             id: dialogMainItem
0033 
0034             focus: true
0035 
0036             contentWidth: tabBox.screenGeometry.width * 0.15
0037             height: tabBox.screenGeometry.height - dialog.margins.top - dialog.margins.bottom
0038 
0039             LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
0040             LayoutMirroring.childrenInherit: true
0041 
0042             ListView {
0043                 id: thumbnailListView
0044                 focus: true
0045                 model: tabBox.model
0046                 spacing: Kirigami.Units.smallSpacing
0047                 highlightMoveDuration: Kirigami.Units.longDuration
0048                 highlightResizeDuration: 0
0049 
0050                 Connections {
0051                     target: tabBox
0052                     function onCurrentIndexChanged() {
0053                         thumbnailListView.currentIndex = tabBox.currentIndex;
0054                         thumbnailListView.positionViewAtIndex(thumbnailListView.currentIndex, ListView.Contain)
0055                     }
0056                 }
0057 
0058                 delegate: MouseArea {
0059                     width: thumbnailListView.width
0060                     height: delegateColumn.height + 2 * delegateColumn.y
0061                     focus: ListView.isCurrentItem
0062 
0063                     Accessible.name: model.caption
0064                     Accessible.role: Accessible.ListItem
0065 
0066                     onClicked: {
0067                         if (tabBox.noModifierGrab) {
0068                             tabBox.model.activate(index);
0069                         } else {
0070                             thumbnailListView.currentIndex = index;
0071                         }
0072                     }
0073 
0074                     ColumnLayout {
0075                         id: delegateColumn
0076                         anchors.horizontalCenter: parent.horizontalCenter
0077                         // anchors.centerIn causes layouting glitches
0078                         y: Kirigami.Units.smallSpacing
0079                         width: parent.width - 2 * Kirigami.Units.smallSpacing
0080                         spacing: Kirigami.Units.smallSpacing
0081 
0082                         Item {
0083                             Layout.fillWidth: true
0084                             implicitHeight: Math.round(delegateColumn.width / tabBox.screenFactor)
0085 
0086                             KWin.WindowThumbnail {
0087                                 anchors.fill: parent
0088                                 wId: windowId
0089                             }
0090                         }
0091 
0092                         RowLayout {
0093                             spacing: Kirigami.Units.smallSpacing
0094                             Layout.fillWidth: true
0095 
0096                             Kirigami.Icon {
0097                                 Layout.preferredHeight: Kirigami.Units.iconSizes.medium
0098                                 Layout.preferredWidth: Kirigami.Units.iconSizes.medium
0099                                 source: model.icon
0100                             }
0101 
0102                             Kirigami.Heading {
0103                                 Layout.fillWidth: true
0104                                 height: undefined
0105                                 level: 4
0106                                 text: model.caption
0107                                 elide: Text.ElideRight
0108                                 wrapMode: Text.WrapAtWordBoundaryOrAnywhere
0109                                 maximumLineCount: 2
0110                                 lineHeight: 0.95
0111                                 textFormat: Text.PlainText
0112                             }
0113                         }
0114                     }
0115                 }
0116 
0117                 highlight: PlasmaExtras.Highlight {}
0118             }
0119         }
0120     }
0121 }
0122