diff --git a/CMakeLists.txt b/CMakeLists.txt index d1461e3563..d75cf14e78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,6 +257,7 @@ install( FILES tabbox/qml/text.qml tabbox/qml/thumbnails.qml tabbox/qml/IconTabBox.qml + tabbox/qml/window_strip.qml DESTINATION ${DATA_INSTALL_DIR}/kwin/tabbox ) kde4_install_icons( ${ICON_INSTALL_DIR} ) diff --git a/tabbox/qml/window_strip.qml b/tabbox/qml/window_strip.qml new file mode 100644 index 0000000000..9cc868f592 --- /dev/null +++ b/tabbox/qml/window_strip.qml @@ -0,0 +1,150 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2011 Martin Gräßlin +Copyright (C) 2011 Marco Martin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +import QtQuick 1.0 +import org.kde.plasma.core 0.1 as PlasmaCore +import org.kde.plasma.components 0.1 as PlasmaComponents +import org.kde.plasma.mobilecomponents 0.1 as MobileComponents +import org.kde.qtextracomponents 0.1 +import org.kde.kwin 0.1 as KWin + +Item { + id: thumbnailTabBox + property int screenWidth + property bool canStretchX: false + property bool canStretchY: false + width: screenWidth + height: 150 + clip: true + + + function setModel(model) { + thumbnailListView.model = model; + } + // just to get the margin sizes + PlasmaCore.FrameSvgItem { + id: hoverItem + imagePath: "widgets/viewitem" + prefix: "hover" + visible: false + } + + PlasmaCore.Theme { + id: theme + } + PlasmaCore.Svg { + id: iconsSvg + imagePath: "widgets/configuration-icons" + } + + ListView { + /** + * Called from C++ to get the index at a mouse pos. + **/ + function indexAtMousePos(pos) { + return thumbnailListView.indexAt(pos.x, pos.y); + } + signal currentIndexChanged(int index) + id: thumbnailListView + objectName: "listView" + orientation: ListView.Horizontal + height: parent.height + spacing: 10 + anchors.fill: parent + clip: true + delegate: Item { + id: delegateItem + width: thumbnailListView.height * 1.6 + 48 + height: thumbnailListView.height + KWin.ThumbnailItem { + id: thumbnailItem + wId: windowId + width: parent.width - closeButtonContainer.width - 20 + height: thumbnailListView.height - 40 + anchors.centerIn: parent + MouseArea { + anchors.fill: parent + onClicked: { + thumbnailListView.currentIndex = index + thumbnailListView.currentIndexChanged(thumbnailListView.currentIndex); + } + } + } + PlasmaComponents.Label { + id: windowTitle + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter; + anchors.topMargin: 4 + + text: caption + elide: Text.ElideRight + color: theme.textColor + width: parent.width - 40 + horizontalAlignment: Text.AlignHCenter + } + PlasmaCore.FrameSvgItem { + id: closeButtonContainer + imagePath: "widgets/button" + prefix: "shadow" + width: closeButton.width + margins.left + margins.right + height: closeButton.height + margins.top + margins.bottom + visible: true//model["actionClose"] && (model["className"] != shellName) + anchors { + top: parent.top + right: parent.right + topMargin: 32 + } + + PlasmaCore.FrameSvgItem { + id: closeButton + imagePath: "widgets/button" + prefix: "normal" + //a bit more left margin + width: closeButtonSvg.width + margins.left + margins.right + 16 + height: closeButtonSvg.height + margins.top + margins.bottom + x: parent.margins.left + y: parent.margins.top + + MobileComponents.ActionButton { + id: closeButtonSvg + svg: iconsSvg + iconSize: 22 + backgroundVisible: false + elementId: "close" + + anchors { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: parent.margins.right + } + + onClicked: { + console.log("Close button clicked") + /*var service = tasksSource.serviceForSource(winId) + var operation = service.operationDescription("close") + + service.startOperationCall(operation)*/ + } + } + } + } + } + } +}