diff --git a/MiddlePanel.qml b/MiddlePanel.qml index 6f6e3043..b21da0c0 100644 --- a/MiddlePanel.qml +++ b/MiddlePanel.qml @@ -166,7 +166,7 @@ Rectangle { ColumnLayout { anchors.fill: parent anchors.margins: 2 - anchors.topMargin: 0 + anchors.topMargin: appWindow.persistentSettings.customDecorations ? 30 : 0 spacing: 0 @@ -185,7 +185,7 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: -5 anchors.left: parent.left - anchors.leftMargin: 40 + anchors.leftMargin: appWindow.persistentSettings.customDecorations ? 20 : 40 source: "images/moneroLogo2.png" } diff --git a/components/TitleBar.qml b/components/TitleBar.qml index 4279c792..aa793985 100644 --- a/components/TitleBar.qml +++ b/components/TitleBar.qml @@ -35,19 +35,36 @@ Rectangle { property int mouseX: 0 property bool containsMouse: false property alias basicButtonVisible: goToBasicVersionButton.visible + property bool customDecorations: true signal goToBasicVersion(bool yes) + height: customDecorations ? 30 : 0 + y: -height + property string title + property alias maximizeButtonVisible: maximizeButton.visible + + Text { + anchors.centerIn: parent + font.family: "Arial" + font.pixelSize: 15 + font.letterSpacing: -1 + color: "#FFFFFF" + text: titleBar.title + visible: customDecorations + } + + Behavior on y { + NumberAnimation { duration: 100; easing.type: Easing.InQuad } + } Rectangle { id: goToBasicVersionButton property bool containsMouse: titleBar.mouseX >= x && titleBar.mouseX <= x + width property bool checked: false anchors.top: parent.top - anchors.bottom: parent.bottom anchors.left: parent.left - anchors.right: parent.right color: containsMouse || checked ? "#FFE00A" : "#000000" - width: parent.width - height: parent.height + height: 30 + width: height Image { anchors.centerIn: parent @@ -64,4 +81,98 @@ Rectangle { } } } + + Row { + id: row + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + visible: parent.customDecorations + + Rectangle { + property bool containsMouse: titleBar.mouseX >= x + row.x && titleBar.mouseX <= x + row.x + width && titleBar.containsMouse + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height + color: containsMouse ? "#6B0072" : "#000000" + + Image { + anchors.centerIn: parent + source: "../images/helpIcon.png" + } + + MouseArea { + id: whatIsArea + anchors.fill: parent + onClicked: { + + } + } + } + + Rectangle { + property bool containsMouse: titleBar.mouseX >= x + row.x && titleBar.mouseX <= x + row.x + width && titleBar.containsMouse + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height + color: containsMouse ? "#3665B3" : "#000000" + + Image { + anchors.centerIn: parent + source: "../images/minimizeIcon.png" + } + + MouseArea { + id: minimizeArea + anchors.fill: parent + onClicked: { + appWindow.visibility = Window.Minimized + } + } + } + + Rectangle { + id: maximizeButton + property bool containsMouse: titleBar.mouseX >= x + row.x && titleBar.mouseX <= x + row.x + width && titleBar.containsMouse + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height + color: containsMouse ? "#FF6C3C" : "#000000" + + Image { + anchors.centerIn: parent + source: appWindow.visibility === Window.FullScreen ? "../images/backToWindowIcon.png" : + "../images/maximizeIcon.png" + + } + + MouseArea { + id: maximizeArea + anchors.fill: parent + onClicked: { + appWindow.visibility = appWindow.visibility !== Window.FullScreen ? Window.FullScreen : + Window.Windowed + } + } + } + + Rectangle { + property bool containsMouse: titleBar.mouseX >= x + row.x && titleBar.mouseX <= x + row.x + width && titleBar.containsMouse + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height + color: containsMouse ? "#E04343" : "#000000" + + Image { + anchors.centerIn: parent + source: "../images/closeIcon.png" + } + + MouseArea { + anchors.fill: parent + onClicked: appWindow.close(); + } + } + } + } diff --git a/main.qml b/main.qml index 0bbe4be3..f6be732e 100644 --- a/main.qml +++ b/main.qml @@ -625,7 +625,7 @@ ApplicationWindow { width: rightPanelExpanded ? 1269 : 1269 - 300 height: maxWindowHeight; color: "#FFFFFF" - flags: Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint + flags: persistentSettings.customDecorations ? (Qt.FramelessWindowHint | Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint) : (Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint) onWidthChanged: x -= 0 @@ -669,6 +669,7 @@ ApplicationWindow { property string payment_id property int restore_height : 0 property bool is_recovering : false + property bool customDecorations : true } // Information dialog @@ -757,8 +758,11 @@ ApplicationWindow { PropertyChanges { target: appWindow; width: 930; } PropertyChanges { target: appWindow; height: 595; } PropertyChanges { target: resizeArea; visible: false } + PropertyChanges { target: titleBar; maximizeButtonVisible: false } PropertyChanges { target: frameArea; blocked: true } PropertyChanges { target: titleBar; visible: false } + PropertyChanges { target: titleBar; y: 0 } + PropertyChanges { target: titleBar; title: qsTr("Program setup wizard") + translationManager.emptyString } }, State { name: "normal" PropertyChanges { target: leftPanel; visible: true } @@ -769,8 +773,11 @@ ApplicationWindow { PropertyChanges { target: appWindow; width: rightPanelExpanded ? 1269 : 1269 - 300; } PropertyChanges { target: appWindow; height: maxWindowHeight; } PropertyChanges { target: resizeArea; visible: true } + PropertyChanges { target: titleBar; maximizeButtonVisible: true } PropertyChanges { target: frameArea; blocked: false } PropertyChanges { target: titleBar; visible: true } + PropertyChanges { target: titleBar; y: 0 } + PropertyChanges { target: titleBar; title: qsTr("Monero") + translationManager.emptyString } } ] @@ -838,6 +845,11 @@ ApplicationWindow { properties: "visibility" value: Window.Windowed } + PropertyAction { + target: titleBar + properties: "maximizeButtonVisible" + value: false + } PropertyAction { target: frameArea properties: "blocked" @@ -926,6 +938,11 @@ ApplicationWindow { properties: "blocked" value: false } + PropertyAction { + target: titleBar + properties: "maximizeButtonVisible" + value: true + } } WizardMain { @@ -988,10 +1005,11 @@ ApplicationWindow { TitleBar { id: titleBar + anchors.left: parent.left + anchors.right: parent.right x: 0 y: 0 - width: 30 - height: 30 + customDecorations: persistentSettings.customDecorations onGoToBasicVersion: { if (yes) { // basicPanel.currentView = middlePanel.currentView @@ -1001,6 +1019,25 @@ ApplicationWindow { goToProAnimation.start() } } + + MouseArea { + enabled: persistentSettings.customDecorations + property var previousPosition + anchors.fill: parent + propagateComposedEvents: true + onPressed: previousPosition = globalCursor.getPosition() + onPositionChanged: { + if (pressedButtons == Qt.LeftButton) { + var pos = globalCursor.getPosition() + var dx = pos.x - previousPosition.x + var dy = pos.y - previousPosition.y + + appWindow.x += dx + appWindow.y += dy + previousPosition = pos + } + } + } } // new ToolTip