You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
wow-app/LeftPanel.qml

774 lines
30 KiB

5 years ago
// Copyright (c) 2014-2019, The Monero Project
9 years ago
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5 years ago
import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import moneroComponents.Wallet 1.0
6 years ago
import moneroComponents.NetworkType 1.0
import moneroComponents.Clipboard 1.0
import FontAwesome 1.0
5 years ago
import "components" as MoneroComponents
5 years ago
import "components/effects/" as MoneroEffects
10 years ago
Rectangle {
id: panel
property alias unlockedBalanceText: unlockedBalanceText.text
property alias unlockedBalanceVisible: unlockedBalanceText.visible
property alias unlockedBalanceLabelVisible: unlockedBalanceLabel.visible
property alias balanceLabelText: balanceLabel.text
property alias balanceText: balanceText.text
property alias balanceTextFiat: balanceTextFiat.text
property alias unlockedBalanceTextFiat: unlockedBalanceTextFiat.text
property alias networkStatus : networkStatus
property alias progressBar : progressBar
property alias daemonProgressBar : daemonProgressBar
property alias minutesToUnlockTxt: unlockedBalanceLabel.text
property int titleBarHeight: 50
property string copyValue: ""
Clipboard { id: clipboard }
10 years ago
signal historyClicked()
signal transferClicked()
signal receiveClicked()
signal txkeyClicked()
signal sharedringdbClicked()
10 years ago
signal settingsClicked()
signal addressBookClicked()
signal miningClicked()
signal signClicked()
6 years ago
signal merchantClicked()
signal accountClicked()
10 years ago
10 years ago
function selectItem(pos) {
menuColumn.previousButton.checked = false
if(pos === "History") menuColumn.previousButton = historyButton
10 years ago
else if(pos === "Transfer") menuColumn.previousButton = transferButton
else if(pos === "Receive") menuColumn.previousButton = receiveButton
6 years ago
else if(pos === "Merchant") menuColumn.previousButton = merchantButton
10 years ago
else if(pos === "AddressBook") menuColumn.previousButton = addressBookButton
else if(pos === "Mining") menuColumn.previousButton = miningButton
else if(pos === "TxKey") menuColumn.previousButton = txkeyButton
else if(pos === "SharedRingDB") menuColumn.previousButton = sharedringdbButton
else if(pos === "Sign") menuColumn.previousButton = signButton
10 years ago
else if(pos === "Settings") menuColumn.previousButton = settingsButton
else if(pos === "Advanced") menuColumn.previousButton = advancedButton
else if(pos === "Account") menuColumn.previousButton = accountButton
10 years ago
menuColumn.previousButton.checked = true
}
width: (isMobile)? appWindow.width : 300
color: "transparent"
anchors.bottom: parent.bottom
anchors.top: parent.top
10 years ago
5 years ago
MoneroEffects.GradientBackground {
anchors.fill: parent
fallBackColor: MoneroComponents.Style.middlePanelBackgroundColor
initialStartColor: MoneroComponents.Style.leftPanelBackgroundGradientStart
initialStopColor: MoneroComponents.Style.leftPanelBackgroundGradientStop
blackColorStart: MoneroComponents.Style._b_leftPanelBackgroundGradientStart
blackColorStop: MoneroComponents.Style._b_leftPanelBackgroundGradientStop
whiteColorStart: MoneroComponents.Style._w_leftPanelBackgroundGradientStart
whiteColorStop: MoneroComponents.Style._w_leftPanelBackgroundGradientStop
posStart: 0.6
start: Qt.point(0, 0)
end: Qt.point(height, width)
}
// card with monero logo
10 years ago
Column {
visible: true
z: 2
10 years ago
id: column1
height: 210
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.topMargin: (persistentSettings.customDecorations)? 50 : 0
RowLayout {
10 years ago
Item {
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 20
anchors.leftMargin: 20
10 years ago
anchors.verticalCenter: parent.verticalCenter
height: 490
width: 260
10 years ago
Image {
5 years ago
id: card
visible: !isOpenGL || MoneroComponents.Style.blackTheme
width: 260
height: 170
fillMode: Image.PreserveAspectFit
5 years ago
source: "qrc:///images/card-background.png"
10 years ago
}
5 years ago
DropShadow {
visible: isOpenGL && !MoneroComponents.Style.blackTheme
anchors.fill: card
horizontalOffset: 3
verticalOffset: 3
radius: 10.0
samples: 15
color: "#3B000000"
source: card
cached: true
}
MoneroComponents.TextPlain {
id: testnetLabel
visible: persistentSettings.nettype != NetworkType.MAINNET
text: (persistentSettings.nettype == NetworkType.TESTNET ? qsTr("Testnet") : qsTr("Stagenet")) + translationManager.emptyString
anchors.top: parent.top
anchors.topMargin: 8
anchors.left: parent.left
anchors.leftMargin: 192
font.bold: true
font.pixelSize: 12
color: "#f33434"
5 years ago
themeTransition: false
}
5 years ago
MoneroComponents.TextPlain {
id: viewOnlyLabel
visible: viewOnly
text: qsTr("View Only") + translationManager.emptyString
anchors.top: parent.top
anchors.topMargin: 8
anchors.right: testnetLabel.visible ? testnetLabel.left : parent.right
anchors.rightMargin: 8
font.pixelSize: 12
font.bold: true
color: "#ff9323"
5 years ago
themeTransition: false
}
Rectangle {
height: (logoutImage.height + 8)
width: (logoutImage.width + 8)
color: "transparent"
anchors.right: parent.right
anchors.rightMargin: 8
anchors.top: parent.top
anchors.topMargin: 25
Image {
id: logoutImage
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
height: 16
width: 13
5 years ago
source: "qrc:///images/logout.png"
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
middlePanel.addressBookView.clearFields();
middlePanel.transferView.clearFields();
middlePanel.receiveView.clearFields();
appWindow.showWizard();
}
}
}
MoneroComponents.Label {
fontSize: 20
text: "¥"
color: "white"
visible: persistentSettings.fiatPriceEnabled
anchors.right: parent.right
anchors.rightMargin: 45
anchors.top: parent.top
anchors.topMargin: 28
themeTransition: false
MouseArea{
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
persistentSettings.fiatPriceToggle = !persistentSettings.fiatPriceToggle
}
}
}
}
Item {
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: 20
anchors.leftMargin: 20
anchors.verticalCenter: parent.verticalCenter
height: 490
width: 50
10 years ago
5 years ago
MoneroComponents.TextPlain {
visible: !(persistentSettings.fiatPriceToggle && persistentSettings.fiatPriceEnabled)
id: balanceText
5 years ago
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 76
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
// dynamically adjust text size
font.pixelSize: {
if (persistentSettings.hideBalance) {
return 20;
}
var digits = text.split('.')[0].length
var defaultSize = 22;
if(digits > 2) {
return defaultSize - 1.1*digits
}
return defaultSize;
}
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
10 years ago
MoneroComponents.TextPlain {
visible: !balanceText.visible
id: balanceTextFiat
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 76
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
font.pixelSize: balanceText.font.pixelSize
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
5 years ago
MoneroComponents.TextPlain {
id: unlockedBalanceText
visible: !(persistentSettings.fiatPriceToggle && persistentSettings.fiatPriceEnabled)
5 years ago
themeTransition: false
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 126
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
// dynamically adjust text size
font.pixelSize: {
if (persistentSettings.hideBalance) {
return 20;
}
var digits = text.split('.')[0].length
var defaultSize = 20;
if(digits > 3) {
return defaultSize - 0.6*digits
}
return defaultSize;
}
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
MoneroComponents.TextPlain {
id: unlockedBalanceTextFiat
themeTransition: false
visible: !unlockedBalanceText.visible
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 126
font.family: "Arial"
color: "#FFFFFF"
text: "N/A"
font.pixelSize: unlockedBalanceText.font.pixelSize
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.orange
}
onExited: {
parent.color = MoneroComponents.Style.white
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(parent.text);
appWindow.showStatusMessage(qsTr("Copied to clipboard"),3)
}
}
}
MoneroComponents.Label {
id: unlockedBalanceLabel
visible: true
text: qsTr("Unlocked balance") + translationManager.emptyString
5 years ago
color: "white"
fontSize: 14
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 110
5 years ago
themeTransition: false
}
10 years ago
MoneroComponents.Label {
visible: !isMobile
id: balanceLabel
text: qsTr("Balance") + translationManager.emptyString
5 years ago
color: "white"
fontSize: 14
anchors.left: parent.left
anchors.leftMargin: 20
anchors.top: parent.top
anchors.topMargin: 60
elide: Text.ElideRight
textWidth: 238
5 years ago
themeTransition: false
}
Item { //separator
anchors.left: parent.left
anchors.right: parent.right
height: 1
}
}
10 years ago
}
}
Rectangle {
id: menuRect
z: 2
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.top: (isMobile)? parent.top : column1.bottom
color: "transparent"
10 years ago
Flickable {
id:flicker
contentHeight: menuColumn.height
anchors.top: parent.top
anchors.bottom: networkStatus.top
width: parent.width
clip: true
10 years ago
Column {
10 years ago
id: menuColumn
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
clip: true
property var previousButton: transferButton
// top border
5 years ago
MoneroComponents.MenuButtonDivider {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
10 years ago
// ------------- Account tab ---------------
MoneroComponents.MenuButton {
id: accountButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Account") + translationManager.emptyString
symbol: qsTr("T") + translationManager.emptyString
dotColor: "#44AAFF"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = accountButton
panel.accountClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: accountButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- Transfer tab ---------------
MoneroComponents.MenuButton {
10 years ago
id: transferButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Send") + translationManager.emptyString
symbol: qsTr("S") + translationManager.emptyString
10 years ago
dotColor: "#FF6C3C"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = transferButton
panel.transferClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: transferButton.present
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- AddressBook tab ---------------
MoneroComponents.MenuButton {
id: addressBookButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Address book") + translationManager.emptyString
symbol: qsTr("B") + translationManager.emptyString
dotColor: "#FF4F41"
under: transferButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = addressBookButton
panel.addressBookClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: addressBookButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- Receive tab ---------------
MoneroComponents.MenuButton {
id: receiveButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Receive") + translationManager.emptyString
symbol: qsTr("R") + translationManager.emptyString
dotColor: "#AAFFBB"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = receiveButton
panel.receiveClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: receiveButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
6 years ago
// ------------- Merchant tab ---------------
MoneroComponents.MenuButton {
id: merchantButton
5 years ago
visible: appWindow.walletMode >= 2
6 years ago
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Merchant") + translationManager.emptyString
symbol: qsTr("U") + translationManager.emptyString
dotColor: "#FF4F41"
under: receiveButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = merchantButton
panel.merchantClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: merchantButton.present && appWindow.walletMode >= 2
6 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- History tab ---------------
MoneroComponents.MenuButton {
10 years ago
id: historyButton
anchors.left: parent.left
anchors.right: parent.right
5 years ago
text: qsTr("Transactions") + translationManager.emptyString
symbol: qsTr("H") + translationManager.emptyString
10 years ago
dotColor: "#6B0072"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = historyButton
panel.historyClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: historyButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- Advanced tab ---------------
MoneroComponents.MenuButton {
id: advancedButton
5 years ago
visible: appWindow.walletMode >= 2
10 years ago
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Advanced") + translationManager.emptyString
symbol: qsTr("D") + translationManager.emptyString
dotColor: "#FFD781"
10 years ago
onClicked: {
parent.previousButton.checked = false
parent.previousButton = advancedButton
10 years ago
}
}
5 years ago
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: advancedButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- Mining tab ---------------
MoneroComponents.MenuButton {
id: miningButton
5 years ago
visible: !isAndroid && !isIOS && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Mining") + translationManager.emptyString
symbol: qsTr("M") + translationManager.emptyString
dotColor: "#FFD781"
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = miningButton
panel.miningClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: miningButton.present && appWindow.walletMode >= 2
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
5 years ago
// ------------- TxKey tab ---------------
MoneroComponents.MenuButton {
id: txkeyButton
5 years ago
visible: appWindow.walletMode >= 2
10 years ago
anchors.left: parent.left
anchors.right: parent.right
7 years ago
text: qsTr("Prove/check") + translationManager.emptyString
symbol: qsTr("K") + translationManager.emptyString
dotColor: "#FFD781"
under: advancedButton
10 years ago
onClicked: {
parent.previousButton.checked = false
parent.previousButton = txkeyButton
panel.txkeyClicked()
10 years ago
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: txkeyButton.present && appWindow.walletMode >= 2
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
5 years ago
// ------------- Shared RingDB tab ---------------
MoneroComponents.MenuButton {
id: sharedringdbButton
5 years ago
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Shared RingDB") + translationManager.emptyString
symbol: qsTr("G") + translationManager.emptyString
dotColor: "#FFD781"
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = sharedringdbButton
panel.sharedringdbClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: sharedringdbButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
// ------------- Sign/verify tab ---------------
MoneroComponents.MenuButton {
id: signButton
5 years ago
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Sign/verify") + translationManager.emptyString
symbol: qsTr("I") + translationManager.emptyString
dotColor: "#FFD781"
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = signButton
panel.signClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
5 years ago
visible: signButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
5 years ago
// ------------- Settings tab ---------------
MoneroComponents.MenuButton {
10 years ago
id: settingsButton
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Settings") + translationManager.emptyString
symbol: qsTr("E") + translationManager.emptyString
10 years ago
dotColor: "#36B25C"
onClicked: {
parent.previousButton.checked = false
parent.previousButton = settingsButton
panel.settingsClicked()
}
}
5 years ago
MoneroComponents.MenuButtonDivider {
visible: settingsButton.present
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 16
}
5 years ago
7 years ago
} // Column
10 years ago
7 years ago
} // Flickable
Rectangle {
id: separator
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 0
anchors.rightMargin: 0
anchors.bottom: networkStatus.top;
height: 10
color: "transparent"
}
MoneroComponents.NetworkStatusItem {
id: networkStatus
10 years ago
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 5
anchors.rightMargin: 0
anchors.bottom: (progressBar.visible)? progressBar.top : parent.bottom;
connected: Wallet.ConnectionStatus_Disconnected
height: 48
10 years ago
}
MoneroComponents.ProgressBar {
id: progressBar
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: daemonProgressBar.top
height: 48
syncType: qsTr("Wallet") + translationManager.emptyString
visible: networkStatus.connected
}
MoneroComponents.ProgressBar {
id: daemonProgressBar
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
syncType: qsTr("Daemon") + translationManager.emptyString
visible: networkStatus.connected
height: 62
}
5 years ago
}
10 years ago
}