@@ -2,38 +2,62 @@ import QtQuick 2.4
22import Ubuntu.Components 1.3
33import Unity.Screens 0.1
44import Unity.Application 0.1
5+import ".."
56import "../../Components"
67
7−UbuntuShape {
8+Item {
89 id: previewSpace
910
10− // Set the height. this preview will then automatically adjust the width, keeping aspect ratio of the screen
11− width: model.geometry.width * previewScale * 4
12− color: "white"
1311 property string background
12+ property int screenHeight
1413
15− property int screenWidth: model.geometry.width
16− property int screenHeight: model.geometry.height
1714 property real previewScale: previewSpace.height / previewSpace.screenHeight
1815
19−
20− Rectangle {
16+ Wallpaper {
17+ source: previewSpace.background
2118 anchors.fill: parent
22− color: "blue"
2319
2420 Repeater {
25− id: workspaceRepeater
26− model: 15
21+ id: topLevelSurfaceRepeater
22+ model: visible ? topLevelSurfaceList : null
23+ delegate: Rectangle {
24+ width: surfaceItem.width
25+ height: surfaceItem.height + decorationHeight * previewScale
26+ x: model.window.position.x * previewScale
27+ y: (model.window.position.y - decorationHeight) * previewScale
28+ color: "blue"
29+ z: topLevelSurfaceRepeater.count - index
30+
31+ property int decorationHeight: units.gu(3)
32+
33+ WindowDecoration {
34+ width: surfaceItem.implicitWidth
35+ height: parent.decorationHeight
36+ transform: Scale {
37+ origin.x: 0
38+ origin.y: 0
39+ xScale: previewScale
40+ yScale: previewScale
41+ }
42+ title: model.window && model.window.surface ? model.window.surface.name : ""
43+ z: 3
44+ }
2745
28− delegate: Item {
29− x: index * previewSpace.screenWidth * previewScale
30− height: previewSpace.screenHeight * previewScale
31− width: previewSpace.screenWidth * previewScale
32− clip: true
46+ MirSurfaceItem {
47+ id: surfaceItem
48+ y: parent.decorationHeight * previewScale
49+ width: implicitWidth * previewScale
50+ height: implicitHeight * previewScale
51+ surfaceWidth: -1
52+ surfaceHeight: -1
53+ onImplicitHeightChanged: print("item", surfaceItem, "height changed", implicitHeight)
54+ surface: model.window.surface
55+ }
56+ }
57+ }
3358
34− Wallpaper {
35− source: previewSpace.background
36− anchors.fill: parent
59+ }
60+}
3761
3862 // Repeater {
3963 // id: topLevelSurfaceRepeater
@@ -73,8 +97,8 @@ UbuntuShape {
7397 // }
7498 // }
7599 // }
76− }
77− }
100+// }
101+// }
78102
79103
80104// MouseArea {
@@ -148,36 +172,36 @@ UbuntuShape {
148172// anchors.centerIn: parent
149173// }
150174// }
151− }
152−
153− FloatingFlickable {
154− id: flickable
155− anchors.fill: parent
156− contentWidth: workspaceRepeater.count * previewSpace.screenWidth * previewScale
157− property real progress: contentX / contentWidth
158− onContentXChanged: print("contentX:", contentX, "progress:", progress)
159− }
160−
161− MouseArea {
162− anchors.fill: parent
163− hoverEnabled: true
164− property int scrollAreaWidth: width / 3
165−
166− onMouseXChanged: {
167− var margins = flickable.width * 0.05;
168−
169− // do we need to scroll?
170− if (mouseX < scrollAreaWidth + margins) {
171− var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
172− var contentX = (1 - progress) * (flickable.contentWidth - flickable.width)
173− flickable.contentX = Math.max(0, Math.min(flickable.contentX, contentX))
174− }
175− if (mouseX > flickable.width - scrollAreaWidth) {
176− var progress = Math.min(1, (mouseX - (flickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
177− var contentX = progress * (flickable.contentWidth - flickable.width)
178− flickable.contentX = Math.min(flickable.contentWidth - flickable.width, Math.max(flickable.contentX, contentX))
179− }
180− }
181− }
182− }
183−}
175+// }
176+
177+// FloatingFlickable {
178+// id: flickable
179+// anchors.fill: parent
180+// contentWidth: workspaceRepeater.count * previewSpace.screenWidth * previewScale
181+// property real progress: contentX / contentWidth
182+// onContentXChanged: print("contentX:", contentX, "progress:", progress)
183+// }
184+
185+// MouseArea {
186+// anchors.fill: parent
187+// hoverEnabled: true
188+// property int scrollAreaWidth: width / 3
189+
190+// onMouseXChanged: {
191+// var margins = flickable.width * 0.05;
192+
193+// // do we need to scroll?
194+// if (mouseX < scrollAreaWidth + margins) {
195+// var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
196+// var contentX = (1 - progress) * (flickable.contentWidth - flickable.width)
197+// flickable.contentX = Math.max(0, Math.min(flickable.contentX, contentX))
198+// }
199+// if (mouseX > flickable.width - scrollAreaWidth) {
200+// var progress = Math.min(1, (mouseX - (flickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
201+// var contentX = progress * (flickable.contentWidth - flickable.width)
202+// flickable.contentX = Math.min(flickable.contentWidth - flickable.width, Math.max(flickable.contentX, contentX))
203+// }
204+// }
205+// }
206+// }
207+//}