import QtQuick 2.2 import QtQuick.Window 2.0 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import "components" ApplicationWindow { id: appWindow objectName: "appWindow" property var currentItem property bool whatIsEnable: false property bool ctrlPressed: false property bool rightPanelExpanded: true property bool osx: false function altKeyReleased() { ctrlPressed = false; } function showPageRequest(page) { middlePanel.state = page leftPanel.selectItem(page) } function sequencePressed(obj, seq) { if(seq === undefined) return if(seq === "Ctrl") { ctrlPressed = true return } if(seq === "Ctrl+D") middlePanel.state = "Dashboard" else if(seq === "Ctrl+H") middlePanel.state = "History" else if(seq === "Ctrl+T") middlePanel.state = "Transfer" else if(seq === "Ctrl+B") middlePanel.state = "AddressBook" else if(seq === "Ctrl+M") middlePanel.state = "Mining" else if(seq === "Ctrl+S") middlePanel.state = "Settings" else if(seq === "Ctrl+Tab" || seq === "Alt+Tab") { if(middlePanel.state === "Dashboard") middlePanel.state = "Transfer" else if(middlePanel.state === "Transfer") middlePanel.state = "History" else if(middlePanel.state === "History") middlePanel.state = "AddressBook" else if(middlePanel.state === "AddressBook") middlePanel.state = "Mining" else if(middlePanel.state === "Mining") middlePanel.state = "Settings" else if(middlePanel.state === "Settings") middlePanel.state = "Dashboard" } else if(seq === "Ctrl+Shift+Backtab" || seq === "Alt+Shift+Backtab") { if(middlePanel.state === "Dashboard") middlePanel.state = "Settings" else if(middlePanel.state === "Settings") middlePanel.state = "Mining" else if(middlePanel.state === "Mining") middlePanel.state = "AddressBook" else if(middlePanel.state === "AddressBook") middlePanel.state = "History" else if(middlePanel.state === "History") middlePanel.state = "Transfer" else if(middlePanel.state === "Transfer") middlePanel.state = "Dashboard" } leftPanel.selectItem(middlePanel.state) } function sequenceReleased(obj, seq) { if(seq === "Ctrl") ctrlPressed = false } function mousePressed(obj, mouseX, mouseY) { if(obj.objectName === "appWindow") obj = rootItem var tmp = rootItem.mapFromItem(obj, mouseX, mouseY) if(tmp !== undefined) { mouseX = tmp.x mouseY = tmp.y } if(currentItem !== undefined) { var tmp_x = rootItem.mapToItem(currentItem, mouseX, mouseY).x var tmp_y = rootItem.mapToItem(currentItem, mouseX, mouseY).y if(!currentItem.containsPoint(tmp_x, tmp_y)) { currentItem.hide() currentItem = undefined } } } function mouseReleased(obj, mouseX, mouseY) { } visible: true width: rightPanelExpanded ? 1269 : 1269 - 300 height: 800 color: "#FFFFFF" flags: Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint onWidthChanged: x -= 0 Component.onCompleted: { x = (Screen.width - width) / 2 y = (Screen.height - height) / 2 } Item { id: rootItem anchors.fill: parent clip: true MouseArea { property var previousPosition anchors.fill: parent onPressed: previousPosition = Qt.point(mouseX, mouseY) onPositionChanged: { if (pressedButtons == Qt.LeftButton) { var dx = mouseX - previousPosition.x var dy = mouseY - previousPosition.y appWindow.x += dx appWindow.y += dy } } } LeftPanel { id: leftPanel anchors.left: parent.left anchors.bottom: parent.bottom height: parent.height onDashboardClicked: middlePanel.state = "Dashboard" onHistoryClicked: middlePanel.state = "History" onTransferClicked: middlePanel.state = "Transfer" onAddressBookClicked: middlePanel.state = "AddressBook" onMiningClicked: middlePanel.state = "Minning" onSettingsClicked: middlePanel.state = "Settings" } RightPanel { id: rightPanel anchors.right: parent.right anchors.bottom: parent.bottom height: parent.height width: appWindow.rightPanelExpanded ? 300 : 0 visible: appWindow.rightPanelExpanded } MiddlePanel { id: middlePanel anchors.bottom: parent.bottom anchors.left: leftPanel.right anchors.right: rightPanel.left height: parent.height state: "Dashboard" } TipItem { id: tipItem text: "send to the same destination" visible: false z: 100 } BasicPanel { id: basicPanel x: 0 anchors.bottom: parent.bottom visible: false } MouseArea { id: frameArea property bool blocked: false anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right height: 30 z: 1 hoverEnabled: true onEntered: if(!blocked) titleBar.y = 0 onExited: if(!blocked) titleBar.y = -titleBar.height propagateComposedEvents: true onPressed: mouse.accepted = false onReleased: mouse.accepted = false onMouseXChanged: { titleBar.mouseX = mouseX titleBar.mouseY = mouseY } } SequentialAnimation { id: goToBasicAnimation PropertyAction { target: appWindow properties: "visibility" value: Window.Windowed } PropertyAction { target: titleBar properties: "maximizeButtonVisible" value: false } PropertyAction { target: frameArea properties: "blocked" value: true } NumberAnimation { target: appWindow properties: "height" to: 30 easing.type: Easing.InCubic duration: 200 } NumberAnimation { target: appWindow properties: "width" to: 470 easing.type: Easing.InCubic duration: 200 } PropertyAction { targets: [leftPanel, middlePanel, rightPanel] properties: "visible" value: false } PropertyAction { target: basicPanel properties: "visible" value: true } NumberAnimation { target: appWindow properties: "height" to: basicPanel.height easing.type: Easing.InCubic duration: 200 } onStopped: { middlePanel.visible = false rightPanel.visible = false leftPanel.visible = false } } SequentialAnimation { id: goToProAnimation NumberAnimation { target: appWindow properties: "height" to: 30 easing.type: Easing.InCubic duration: 200 } PropertyAction { target: basicPanel properties: "visible" value: false } PropertyAction { targets: [leftPanel, middlePanel, rightPanel] properties: "visible" value: true } NumberAnimation { target: appWindow properties: "width" to: rightPanelExpanded ? 1269 : 1269 - 300 easing.type: Easing.InCubic duration: 200 } NumberAnimation { target: appWindow properties: "height" to: 800 easing.type: Easing.InCubic duration: 200 } PropertyAction { target: frameArea properties: "blocked" value: false } PropertyAction { target: titleBar properties: "maximizeButtonVisible" value: true } } TitleBar { id: titleBar anchors.left: parent.left anchors.right: parent.right onGoToBasicVersion: { if(yes) goToBasicAnimation.start() else goToProAnimation.start() } } } }