Add "Apply" button to entry and group edit windows (#624)

This commit is contained in:
Jonathan White 2017-06-13 20:55:53 -04:00 committed by GitHub
parent 107684e393
commit 6ffca842e6
8 changed files with 33 additions and 11 deletions

View File

@ -18,6 +18,7 @@
#include "EditWidget.h"
#include "ui_EditWidget.h"
#include <QScrollArea>
#include <QPushButton>
#include "core/FilePath.h"
@ -102,7 +103,10 @@ void EditWidget::setReadOnly(bool readOnly)
m_ui->buttonBox->setStandardButtons(QDialogButtonBox::Close);
}
else {
m_ui->buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
m_ui->buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Apply);
// Find and connect the apply button
QPushButton* applyButton = m_ui->buttonBox->button(QDialogButtonBox::Apply);
connect(applyButton, SIGNAL(clicked()), SIGNAL(apply()));
}
}

View File

@ -48,6 +48,7 @@ public:
bool readOnly() const;
signals:
void apply();
void accepted();
void rejected();

View File

@ -66,7 +66,7 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>

View File

@ -75,8 +75,9 @@ EditEntryWidget::EditEntryWidget(QWidget* parent)
setupProperties();
setupHistory();
connect(this, SIGNAL(accepted()), SLOT(saveEntry()));
connect(this, SIGNAL(accepted()), SLOT(acceptEntry()));
connect(this, SIGNAL(rejected()), SLOT(cancel()));
connect(this, SIGNAL(apply()), SLOT(saveEntry()));
connect(m_iconsWidget, SIGNAL(messageEditEntry(QString, MessageWidget::MessageType)), SLOT(showMessage(QString, MessageWidget::MessageType)));
connect(m_iconsWidget, SIGNAL(messageEditEntryDismiss()), SLOT(hideMessage()));
@ -439,9 +440,12 @@ void EditEntryWidget::saveEntry()
if (!m_create) {
m_entry->endUpdate();
}
}
void EditEntryWidget::acceptEntry()
{
saveEntry();
clear();
emit editFinished(true);
}

View File

@ -68,6 +68,7 @@ signals:
void historyEntryActivated(Entry* entry);
private slots:
void acceptEntry();
void saveEntry();
void cancel();
void togglePasswordGeneratorButton(bool checked);

View File

@ -42,6 +42,7 @@ EditGroupWidget::EditGroupWidget(QWidget* parent)
connect(m_mainUi->autoTypeSequenceCustomRadio, SIGNAL(toggled(bool)),
m_mainUi->autoTypeSequenceCustomEdit, SLOT(setEnabled(bool)));
connect(this, SIGNAL(apply()), SLOT(apply()));
connect(this, SIGNAL(accepted()), SLOT(save()));
connect(this, SIGNAL(rejected()), SLOT(cancel()));
@ -101,6 +102,13 @@ void EditGroupWidget::loadGroup(Group* group, bool create, Database* database)
}
void EditGroupWidget::save()
{
apply();
clear();
emit editFinished(true);
}
void EditGroupWidget::apply()
{
m_group->setName(m_mainUi->editName->text());
m_group->setNotes(m_mainUi->editNotes->toPlainText());
@ -128,9 +136,6 @@ void EditGroupWidget::save()
else {
m_group->setIcon(iconStruct.uuid);
}
clear();
emit editFinished(true);
}
void EditGroupWidget::cancel()

View File

@ -49,6 +49,7 @@ signals:
void messageEditEntryDismiss();
private slots:
void apply();
void save();
void cancel();

View File

@ -230,6 +230,7 @@ void TestGui::testEditEntry()
// Select the first entry in the database
EntryView* entryView = m_dbWidget->findChild<EntryView*>("entryView");
QModelIndex entryItem = entryView->model()->index(0, 1);
Entry* entry = entryView->entryFromIndex(entryItem);
clickIndex(entryItem, entryView, Qt::LeftButton);
// Confirm the edit action button is enabled
@ -246,6 +247,13 @@ void TestGui::testEditEntry()
QLineEdit* titleEdit = editEntryWidget->findChild<QLineEdit*>("titleEdit");
QTest::keyClicks(titleEdit, "_test");
// Apply the edit
QDialogButtonBox* editEntryWidgetButtonBox = editEntryWidget->findChild<QDialogButtonBox*>("buttonBox");
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Apply), Qt::LeftButton);
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::EditMode);
QCOMPARE(entry->title(), QString("Sample Entry_test"));
QCOMPARE(entry->historyItems().size(), 1);
// Test protected attributes
editEntryWidget->setCurrentPage(1);
QPlainTextEdit* attrTextEdit = editEntryWidget->findChild<QPlainTextEdit*>("attributesEdit");
@ -259,15 +267,13 @@ void TestGui::testEditEntry()
QCOMPARE(attrTextEdit->toPlainText(), attrText);
editEntryWidget->setCurrentPage(0);
// Save the edit
QDialogButtonBox* editEntryWidgetButtonBox = editEntryWidget->findChild<QDialogButtonBox*>("buttonBox");
// Save the edit (press OK)
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
// Confirm edit was made
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::ViewMode);
Entry* entry = entryView->entryFromIndex(entryItem);
QCOMPARE(entry->title(), QString("Sample Entry_test"));
QCOMPARE(entry->historyItems().size(), 1);
QCOMPARE(entry->historyItems().size(), 2);
// Confirm modified indicator is showing
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("%1*").arg(m_dbFileName));