1
mirror of https://github.com/monero-project/monero-gui synced 2024-11-19 13:37:13 +01:00
monero-gui/main.qml

376 lines
12 KiB
QML
Raw Normal View History

2014-07-07 19:08:30 +02:00
import QtQuick 2.2
import QtQuick.Window 2.0
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import "components"
2014-08-19 14:58:02 +02:00
import "wizard"
2014-07-07 19:08:30 +02:00
ApplicationWindow {
id: appWindow
objectName: "appWindow"
property var currentItem
2014-07-07 19:08:30 +02:00
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"
}
2014-07-09 18:03:37 +02:00
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) {
}
2014-07-07 19:08:30 +02:00
visible: true
width: rightPanelExpanded ? 1269 : 1269 - 300
2014-07-09 17:44:13 +02:00
height: 800
2014-07-07 19:08:30 +02:00
color: "#FFFFFF"
flags: Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint
2014-07-19 16:07:40 +02:00
onWidthChanged: x -= 0
Component.onCompleted: {
x = (Screen.width - width) / 2
y = (Screen.height - height) / 2
}
2014-07-07 19:08:30 +02:00
Item {
id: rootItem
anchors.fill: parent
2014-07-19 16:07:40 +02:00
clip: true
2014-07-07 19:08:30 +02:00
2014-08-19 14:58:02 +02:00
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 }
}
]
2014-07-07 19:08:30 +02:00
LeftPanel {
id: leftPanel
anchors.left: parent.left
anchors.bottom: parent.bottom
2014-07-19 16:07:40 +02:00
height: parent.height
2014-07-07 19:08:30 +02:00
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
2014-07-19 16:07:40 +02:00
height: parent.height
width: appWindow.rightPanelExpanded ? 300 : 0
visible: appWindow.rightPanelExpanded
2014-07-07 19:08:30 +02:00
}
MiddlePanel {
id: middlePanel
anchors.bottom: parent.bottom
anchors.left: leftPanel.right
anchors.right: rightPanel.left
2014-07-19 16:07:40 +02:00
height: parent.height
2014-07-07 19:08:30 +02:00
state: "Dashboard"
}
TipItem {
id: tipItem
text: "send to the same destination"
visible: false
}
2014-07-19 16:07:40 +02:00
BasicPanel {
id: basicPanel
x: 0
anchors.bottom: parent.bottom
visible: false
}
MouseArea {
id: frameArea
2014-07-19 16:07:40 +02:00
property bool blocked: false
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: 30
z: 1
hoverEnabled: true
2014-07-19 16:07:40 +02:00
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
}
2014-07-19 16:07:40 +02:00
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"
2014-07-19 16:52:05 +02:00
to: basicPanel.height
2014-07-19 16:07:40 +02:00
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
}
}
2014-08-19 14:58:02 +02:00
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
2014-07-23 13:59:26 +02:00
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
2014-07-19 16:07:40 +02:00
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
}
}
}
}
2014-07-07 19:08:30 +02:00
}
}