mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Redo 'delete entries no confirm' functionality & unit-tests (#5812)
* Fixes #5232
This commit is contained in:
parent
c9d1512748
commit
a6f01349e8
@ -138,6 +138,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
|
||||
{Config::Security_ResetTouchId, {QS("Security/ResetTouchId"), Roaming, false}},
|
||||
{Config::Security_ResetTouchIdTimeout, {QS("Security/ResetTouchIdTimeout"), Roaming, 30}},
|
||||
{Config::Security_ResetTouchIdScreenlock,{QS("Security/ResetTouchIdScreenlock"), Roaming, true}},
|
||||
{Config::Security_NoConfirmMoveEntryToRecycleBin,{QS("Security/NoConfirmMoveEntryToRecycleBin"), Roaming, true}},
|
||||
|
||||
// Browser
|
||||
{Config::Browser_Enabled, {QS("Browser/Enabled"), Roaming, false}},
|
||||
|
@ -119,6 +119,7 @@ public:
|
||||
Security_ResetTouchId,
|
||||
Security_ResetTouchIdTimeout,
|
||||
Security_ResetTouchIdScreenlock,
|
||||
Security_NoConfirmMoveEntryToRecycleBin,
|
||||
|
||||
Browser_Enabled,
|
||||
Browser_ShowNotification,
|
||||
|
@ -280,6 +280,8 @@ void ApplicationSettingsWidget::loadSettings()
|
||||
m_secUi->passwordsRepeatVisibleCheckBox->setChecked(
|
||||
config()->get(Config::Security_PasswordsRepeatVisible).toBool());
|
||||
m_secUi->hideNotesCheckBox->setChecked(config()->get(Config::Security_HideNotes).toBool());
|
||||
m_secUi->NoConfirmMoveEntryToRecycleBinCheckBox->setChecked(
|
||||
config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool());
|
||||
|
||||
m_secUi->touchIDResetCheckBox->setChecked(config()->get(Config::Security_ResetTouchId).toBool());
|
||||
m_secUi->touchIDResetSpinBox->setValue(config()->get(Config::Security_ResetTouchIdTimeout).toInt());
|
||||
@ -379,6 +381,8 @@ void ApplicationSettingsWidget::saveSettings()
|
||||
config()->set(Config::Security_HidePasswordPreviewPanel, m_secUi->passwordPreviewCleartextCheckBox->isChecked());
|
||||
config()->set(Config::Security_PasswordsRepeatVisible, m_secUi->passwordsRepeatVisibleCheckBox->isChecked());
|
||||
config()->set(Config::Security_HideNotes, m_secUi->hideNotesCheckBox->isChecked());
|
||||
config()->set(Config::Security_NoConfirmMoveEntryToRecycleBin,
|
||||
m_secUi->NoConfirmMoveEntryToRecycleBinCheckBox->isChecked());
|
||||
|
||||
config()->set(Config::Security_ResetTouchId, m_secUi->touchIDResetCheckBox->isChecked());
|
||||
config()->set(Config::Security_ResetTouchIdTimeout, m_secUi->touchIDResetSpinBox->value());
|
||||
|
@ -257,6 +257,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="NoConfirmMoveEntryToRecycleBinCheckBox">
|
||||
<property name="text">
|
||||
<string>Move entries to recycle bin without confirmation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -571,6 +571,8 @@ bool DatabaseWidget::confirmDeleteEntries(QList<Entry*> entries, bool permanent)
|
||||
MessageBox::Cancel);
|
||||
|
||||
return answer == MessageBox::Delete;
|
||||
} else if (config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool()) {
|
||||
return true;
|
||||
} else {
|
||||
QString prompt;
|
||||
if (entries.size() == 1) {
|
||||
|
@ -1013,26 +1013,40 @@ void TestGui::testDeleteEntry()
|
||||
QVERIFY(entryDeleteWidget->isEnabled());
|
||||
QVERIFY(!m_db->metadata()->recycleBin());
|
||||
|
||||
MessageBox::setNextAnswer(MessageBox::Move);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
// Test with confirmation dialog
|
||||
if (!config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool()) {
|
||||
MessageBox::setNextAnswer(MessageBox::Move);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
|
||||
} else {
|
||||
// no confirm dialog
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
|
||||
}
|
||||
|
||||
// Select multiple entries and move them to the recycling bin
|
||||
clickIndex(entryView->model()->index(1, 1), entryView, Qt::LeftButton);
|
||||
clickIndex(entryView->model()->index(2, 1), entryView, Qt::LeftButton, Qt::ControlModifier);
|
||||
QCOMPARE(entryView->selectionModel()->selectedRows().size(), 2);
|
||||
|
||||
MessageBox::setNextAnswer(MessageBox::Cancel);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
|
||||
if (!config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool()) {
|
||||
MessageBox::setNextAnswer(MessageBox::Cancel);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 1);
|
||||
|
||||
MessageBox::setNextAnswer(MessageBox::Move);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 1);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 3);
|
||||
MessageBox::setNextAnswer(MessageBox::Move);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 1);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 3);
|
||||
} else {
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
QCOMPARE(entryView->model()->rowCount(), 1);
|
||||
QCOMPARE(m_db->metadata()->recycleBin()->entries().size(), 3);
|
||||
}
|
||||
|
||||
// Go to the recycling bin
|
||||
QCOMPARE(groupView->currentGroup(), m_db->rootGroup());
|
||||
|
Loading…
Reference in New Issue
Block a user