Merge pull request #3859

346913f SettingsWallet: lock wallet on demand (reemuru)
This commit is contained in:
luigi1111 2022-03-18 16:21:27 -05:00
commit b12ad939ad
No known key found for this signature in database
GPG key ID: F4ACA0183641E010
5 changed files with 77 additions and 0 deletions

View file

@ -7,6 +7,7 @@ import "../components" as MoneroComponents
ColumnLayout {
id: settingsListItem
property alias iconText: iconLabel.text
property alias symbol: symbolText.text
property alias description: area.text
property alias title: header.text
property bool isLast: false
@ -114,5 +115,17 @@ ColumnLayout {
settingsListItem.clicked()
}
}
MoneroComponents.TextPlain {
id: symbolText
anchors.right: parent.right
anchors.rightMargin: 44
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 12
font.bold: true
color: MoneroComponents.Style.menuButtonTextColor
visible: appWindow.ctrlPressed
themeTransition: false
}
}
}

View file

@ -57,6 +57,7 @@ Rectangle {
signal minimizeClicked
signal languageClicked
signal closeWalletClicked
signal lockWalletClicked
state: "default"
states: [
@ -91,6 +92,46 @@ Rectangle {
spacing: 0
anchors.fill: parent
// lock wallet
Rectangle {
id: btnLockWallet
color: "transparent"
Layout.preferredWidth: parent.height
Layout.preferredHeight: parent.height
Text {
text: FontAwesome.lock
font.family: FontAwesome.fontFamilySolid
font.pixelSize: 16
color: MoneroComponents.Style.defaultFontColor
font.styleName: "Solid"
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
opacity: 0.75
}
MoneroComponents.Tooltip {
id: btnLockWalletTooltip
anchors.fill: parent
text: qsTr("Lock this wallet") + translationManager.emptyString
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
parent.color = MoneroComponents.Style.titleBarButtonHoverColor
btnLockWalletTooltip.tooltipPopup.open()
}
onExited: {
parent.color = "transparent"
btnLockWalletTooltip.tooltipPopup.close()
}
onClicked: root.lockWalletClicked(leftPanel.visible)
}
}
// collapse sidebar
Rectangle {
id: btnCloseWallet

View file

@ -53,6 +53,7 @@ Object {
property string info : "\uf129"
property string key : "\uf084"
property string language : "\uf1ab"
property string lock : "\uf023"
property string minus : "\uf068"
property string minusCircle : "\uf056"
property string moonO : "\uf186"

View file

@ -131,6 +131,17 @@ ApplicationWindow {
leftPanel.selectItem(page)
}
function lock() {
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password)
passwordDialog.close();
else
passwordDialog.showError(qsTr("Wrong password") + translationManager.emptyString);
}
passwordDialog.open(usefulName(persistentSettings.wallet_path));
}
function sequencePressed(obj, seq) {
if(seq === undefined || !leftPanel.enabled)
return
@ -139,6 +150,8 @@ ApplicationWindow {
return
}
// lock wallet on demand
if(seq === "Ctrl+L" && !passwordDialog.visible) lock()
if(seq === "Ctrl+S") middlePanel.state = "Transfer"
else if(seq === "Ctrl+R") middlePanel.state = "Receive"
else if(seq === "Ctrl+H") middlePanel.state = "History"
@ -1923,6 +1936,7 @@ ApplicationWindow {
anchors.left: parent.left
anchors.right: parent.right
onCloseClicked: appWindow.close();
onLockWalletClicked: appWindow.lock();
onLanguageClicked: appWindow.toggleLanguageView();
onCloseWalletClicked: appWindow.showWizard();
onMaximizeClicked: appWindow.visibility = appWindow.visibility !== Window.Maximized ? Window.Maximized : Window.Windowed

View file

@ -50,6 +50,14 @@ Rectangle {
anchors.topMargin: 0
spacing: 0
MoneroComponents.SettingsListItem {
iconText: FontAwesome.lock
description: qsTr("Locks the wallet on demand.") + translationManager.emptyString
title: qsTr("Lock this wallet") + translationManager.emptyString
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "L" + translationManager.emptyString
onClicked: appWindow.lock();
}
MoneroComponents.SettingsListItem {
iconText: FontAwesome.signOutAlt
description: qsTr("Logs out of this wallet.") + translationManager.emptyString