mirror of
https://github.com/monero-project/monero-gui.git
synced 2024-12-22 11:39:31 +00:00
SettingsWallet: lock wallet on demand
This commit adds the ability to lock the wallet on demand instead of waiting for the user inactivity time out. It is binded to the hot keys Ctrl+L. Pressing cancel or the esc key will send the user back to the wizard home for wallet selection. Incorrect password returns the error message. Correct password will remove the PasswordDialog allowing access. Add lock functionality in the wallet settings section and title bar.
This commit is contained in:
parent
fd8983a7ff
commit
346913f3db
5 changed files with 77 additions and 0 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
14
main.qml
14
main.qml
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue