mirror of
https://github.com/monero-project/monero-gui.git
synced 2024-12-23 03:59:38 +00:00
375 lines
12 KiB
QML
375 lines
12 KiB
QML
import QtQuick 2.2
|
|
import QtQuick.Window 2.0
|
|
import QtQuick.Controls 1.1
|
|
import QtQuick.Controls.Styles 1.1
|
|
import "components"
|
|
import "wizard"
|
|
|
|
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
|
|
|
|
state: "wizard"
|
|
states: [
|
|
State {
|
|
name: "wizard"
|
|
PropertyChanges { target: leftPanel; visible: false }
|
|
PropertyChanges { target: rightPanel; visible: false }
|
|
PropertyChanges { target: middlePanel; visible: false }
|
|
PropertyChanges { target: titleBar; basicButtonVisible: false }
|
|
PropertyChanges { target: wizard; visible: true }
|
|
},
|
|
State {
|
|
name: "normal"
|
|
PropertyChanges { target: leftPanel; visible: true }
|
|
PropertyChanges { target: rightPanel; visible: true }
|
|
PropertyChanges { target: middlePanel; visible: true }
|
|
PropertyChanges { target: titleBar; basicButtonVisible: true }
|
|
PropertyChanges { target: wizard; visible: false }
|
|
}
|
|
]
|
|
|
|
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
|
|
}
|
|
|
|
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
|
|
onContainsMouseChanged: titleBar.containsMouse = containsMouse
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
WizardMain {
|
|
id: wizard
|
|
anchors.fill: parent
|
|
}
|
|
|
|
property int maxWidth: leftPanel.width + 655 + rightPanel.width
|
|
property int maxHeight: 700
|
|
MouseArea {
|
|
hoverEnabled: true
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
height: 30
|
|
width: 30
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: parent.containsMouse || parent.pressed ? "#111111" : "transparent"
|
|
}
|
|
|
|
Image {
|
|
anchors.centerIn: parent
|
|
source: parent.containsMouse || parent.pressed ? "images/resizeHovered.png" :
|
|
"images/resize.png"
|
|
}
|
|
|
|
property int previousX: 0
|
|
property int previousY: 0
|
|
onPressed: {
|
|
previousX = mouseX
|
|
previousY = mouseY
|
|
}
|
|
|
|
onPositionChanged: {
|
|
if(!pressed) return
|
|
var dx = previousX - mouseX
|
|
var dy = previousY - mouseY
|
|
|
|
if(appWindow.width - dx > parent.maxWidth)
|
|
appWindow.width -= dx
|
|
else appWindow.width = parent.maxWidth
|
|
|
|
if(appWindow.height - dy > parent.maxHeight)
|
|
appWindow.height -= dy
|
|
else appWindow.height = parent.maxHeight
|
|
}
|
|
}
|
|
|
|
// MouseArea {
|
|
// anchors.top: parent.top
|
|
// anchors.bottom: parent.bottom
|
|
// anchors.right: parent.right
|
|
// anchors.topMargin: 30
|
|
// anchors.bottomMargin: 3
|
|
// cursorShape: Qt.SizeHorCursor
|
|
// width: 3
|
|
// property int previousX: 0
|
|
// onPressed: previousX = mouseX
|
|
// onPositionChanged: {
|
|
// var diff = previousX - mouseX
|
|
// if(middlePanel.width - diff > 655)
|
|
// appWindow.width -= diff
|
|
// else appWindow.width = parent.maxWidth
|
|
// }
|
|
// }
|
|
|
|
TitleBar {
|
|
id: titleBar
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
onGoToBasicVersion: {
|
|
if(yes) goToBasicAnimation.start()
|
|
else goToProAnimation.start()
|
|
}
|
|
|
|
MouseArea {
|
|
property var previousPosition
|
|
anchors.fill: parent
|
|
propagateComposedEvents: true
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|