forked from Silverfish/proton-bridge
We build too many walls and not enough bridges
This commit is contained in:
150
internal/frontend/qml/ProtonUI/LogoHeader.qml
Normal file
150
internal/frontend/qml/ProtonUI/LogoHeader.qml
Normal file
@ -0,0 +1,150 @@
|
||||
// Copyright (c) 2020 Proton Technologies AG
|
||||
//
|
||||
// This file is part of ProtonMail Bridge.
|
||||
//
|
||||
// ProtonMail Bridge is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ProtonMail Bridge is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
// Header of window with logo and buttons
|
||||
|
||||
import QtQuick 2.8
|
||||
import ProtonUI 1.0
|
||||
import QtQuick.Window 2.2
|
||||
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
// dimensions
|
||||
property Window parentWin
|
||||
property string title: "ProtonMail Bridge"
|
||||
property bool hasIcon : true
|
||||
anchors.top : parent.top
|
||||
anchors.right : parent.right
|
||||
width : Style.main.width
|
||||
height : Style.title.height
|
||||
// style
|
||||
color : Style.title.background
|
||||
|
||||
signal hideClicked()
|
||||
|
||||
// Drag to move : https://stackoverflow.com/a/18927884
|
||||
MouseArea {
|
||||
property variant clickPos: "1,1"
|
||||
anchors.fill: parent
|
||||
onPressed: {
|
||||
clickPos = Qt.point(mouse.x,mouse.y)
|
||||
}
|
||||
onPositionChanged: {
|
||||
var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y)
|
||||
parentWin.x += delta.x;
|
||||
parentWin.y += delta.y;
|
||||
}
|
||||
}
|
||||
|
||||
// logo
|
||||
Image {
|
||||
id: imgLogo
|
||||
height : Style.title.imgHeight
|
||||
fillMode : Image.PreserveAspectFit
|
||||
visible: root.hasIcon
|
||||
anchors {
|
||||
left : root.left
|
||||
leftMargin : Style.title.leftMargin
|
||||
verticalCenter : root.verticalCenter
|
||||
}
|
||||
//source : "qrc://logo.svg"
|
||||
source : "logo.svg"
|
||||
smooth : true
|
||||
}
|
||||
|
||||
TextMetrics {
|
||||
id: titleMetrics
|
||||
elideWidth: 2*root.width/3
|
||||
elide: Qt.ElideMiddle
|
||||
font: titleText.font
|
||||
text: root.title
|
||||
}
|
||||
|
||||
// Title
|
||||
Text {
|
||||
id: titleText
|
||||
anchors {
|
||||
left : hasIcon ? imgLogo.right : parent.left
|
||||
leftMargin : hasIcon ? Style.title.leftMargin : Style.main.leftMargin
|
||||
verticalCenter : root.verticalCenter
|
||||
}
|
||||
text : titleMetrics.elidedText
|
||||
color : Style.title.text
|
||||
font.pointSize : Style.title.fontSize * Style.pt
|
||||
}
|
||||
|
||||
// Underline Button
|
||||
Rectangle {
|
||||
id: buttonUndrLine
|
||||
anchors {
|
||||
verticalCenter : root.verticalCenter
|
||||
right : buttonCross.left
|
||||
rightMargin : 2*Style.title.fontSize
|
||||
}
|
||||
width : Style.title.fontSize
|
||||
height : Style.title.fontSize
|
||||
color : "transparent"
|
||||
Canvas {
|
||||
anchors.fill: parent
|
||||
onPaint: {
|
||||
var val = Style.title.fontSize
|
||||
var ctx = getContext("2d")
|
||||
ctx.strokeStyle = 'white'
|
||||
ctx.strokeWidth = 4
|
||||
ctx.moveTo(0 , val-1)
|
||||
ctx.lineTo(val, val-1)
|
||||
ctx.stroke()
|
||||
}
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: root.hideClicked()
|
||||
}
|
||||
}
|
||||
|
||||
// Cross Button
|
||||
Rectangle {
|
||||
id: buttonCross
|
||||
anchors {
|
||||
verticalCenter : root.verticalCenter
|
||||
right : root.right
|
||||
rightMargin : Style.main.rightMargin
|
||||
}
|
||||
width : Style.title.fontSize
|
||||
height : Style.title.fontSize
|
||||
color : "transparent"
|
||||
Canvas {
|
||||
anchors.fill: parent
|
||||
onPaint: {
|
||||
var val = Style.title.fontSize
|
||||
var ctx = getContext("2d")
|
||||
ctx.strokeStyle = 'white'
|
||||
ctx.strokeWidth = 4
|
||||
ctx.moveTo(0,0)
|
||||
ctx.lineTo(val,val)
|
||||
ctx.moveTo(val,0)
|
||||
ctx.lineTo(0,val)
|
||||
ctx.stroke()
|
||||
}
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: root.hideClicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user