aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml')
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml184
1 files changed, 184 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml
new file mode 100644
index 00000000..90818ca8
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml
@@ -0,0 +1,184 @@
+// vi: ft=qml
+import QtQuick 2.0
+import QtQuick.Window 2.2
+import QtQuick.Controls 1.4
+import QtQuick.Layouts 1.3
+
+import Lumina.Backend.NativeWindowObject 2.0
+
+ Rectangle {
+ property NativeWindowObject object
+ property string window_id
+
+ id: windowFrame
+ border.width: 5
+ border.color: palette.window
+ color: palette.window
+ x: object.frameGeometry.x
+ y: object.frameGeometry.y
+ width: object.frameGeometry.width
+ height: object.frameGeometry.height
+
+ MouseArea {
+ id: resizeArea
+ anchors.fill: parent
+ property int positionX: 0
+ property int positionY: 0
+ property int newWidth: 0
+ property int newHeight: 0
+
+ onPositionChanged: {
+ var globalP = windowFrame.mapToItem(background, mouse.x, mouse.y)
+ if(positionY < windowFrame.y + 15 ) {
+ /*if(positionX < windowFrame.x + 15) {
+ console.log("Top Left");
+ //Top Left
+ newWidth = windowFrame.width + (windowFrame.x - mouse.x)
+ newHeight = windowFrame.height + (windowFrame.y - mouse.y)
+ windowFrame.x = mouse.x
+ windowFrame.y = mouse.y
+ }else if(positionX > windowFrame.x + windowFrame.width - 15) {
+ console.log("Top Right");
+ //Top Right
+ newX = positionX - mouse.x
+ newY = positionY - mouse.y
+ newWidth = windowFrame.width - (positionX - mouse.x)
+ newHeight = windowFrame.height + (windowFrame.y - mouse.y)
+ windowFrame.y = mouse.y
+ }else{*/
+ //Top
+ console.log("oldHeight: ", windowFrame.height);
+ windowFrame.height -= 1
+ console.log("newHeight: ", windowFrame.height);
+ windowFrame.y = globalP.y
+ // }
+ }
+/*else if(mouse.x < windowFrame.x + 15) {
+ if(mouse.y > windowFrame.y + windowFrame.height - 15) {
+ //Bottom Left
+ newX = positionX - mouse.x
+ newWidth = windowFrame.width - newX
+ newHeight = windowFrame.height - newY
+ }else{
+ //Left
+ }
+ }else if(mouse.y > windowFrame.y + windowFrame.height - 15) {
+ if(mouse.x > windowFrame.x + windowFrame.width - 15) {
+ //Bottom Right
+ }else{
+ //Bottom
+ }
+ }else if(mouse.x > windowFrame.x + windowFrame.width - 15) {
+ //Right
+ } else {
+ console.log("Cursor error");
+ }*/
+ }
+ }
+
+ MouseArea {
+ id: dragArea
+ anchors.fill: titleBar
+ drag.target: windowFrame
+ drag.axis: Drag.XAndYAxis
+ onClicked: { console.log("dragArea"); }
+ //released: { function(); }
+ }
+
+ states: [
+ State {
+ when: resizeArea.drag.held
+ PropertyChanges { target: canvas; color:"red" }
+ },
+ State {
+ when: dragArea.drag.held
+ AnchorChanges { target: windowFrame; anchors.verticalCenter: undefined; anchors.horizontalCenter: undefined }
+ }
+
+ ]
+
+
+ Rectangle {
+ id: titleBar
+ border.width: 2
+ color: palette.window
+ height: 25
+ anchors.top: windowFrame.top
+ anchors.right: windowFrame.right
+ anchors.left: windowFrame.left
+ anchors.margins: windowFrame.border.width
+ width: parent.width
+
+ RowLayout {
+ anchors.fill: titleBar
+ spacing: 0
+
+ Button {
+ id: otherButton
+ anchors.left: parent.left
+ Layout.fillHeight: true
+ iconSource: windowFrame.object.icon
+
+ }
+ Text {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ color: palette.windowText
+ text: windowFrame.object.shortTitle
+
+ MouseArea {
+ acceptedButtons: Qt.RightButton
+ anchors.fill: parent
+ //onClicked: contextMenu.open()
+ }
+ }
+
+ Button {
+ id: minButton
+ Layout.fillHeight: true
+ iconName: "window-minimize"
+ onClicked: { windowFrame.object.toggleVisibility() }
+ }
+
+ Button {
+ id: maxButton
+ Layout.fillHeight: true
+ iconName: "window-maximize"
+ //onClicked: { windowFrame.object.toggleMaximize() }
+ }
+
+ Button {
+ id: closeButton
+ Layout.fillHeight: true
+ iconName: "document-close"
+ onClicked: { windowFrame.object.requestClose() }
+ }
+
+ }
+ }
+
+ Image {
+ id: frameContents
+ source: windowFrame.object.winImage
+ anchors.top: titleBar.bottom
+ anchors.bottom: parent.bottom
+ anchors.left: windowFrame.left
+ anchors.right: windowFrame.right
+ anchors.leftMargin: windowFrame.border.width
+ anchors.rightMargin: windowFrame.border.width
+ anchors.bottomMargin: windowFrame.border.width
+ width: parent.width
+ height: parent.height
+
+ MouseArea {
+ width: parent.width;
+ height: parent.height
+ anchors.fill: frameContents
+ onClicked: { console.log(parent.mapToGlobal(mouse.x, mouse.y)); }
+
+ }
+ }
+ }
bgstack15