Add option to restore from a history item.

Closes #23
This commit is contained in:
Florian Geyer 2012-05-18 20:58:34 +02:00
parent 8904869350
commit 3be90b02d6
2 changed files with 53 additions and 43 deletions

View File

@ -102,6 +102,7 @@ EditEntryWidget::EditEntryWidget(QWidget* parent)
SIGNAL(currentChanged(QModelIndex ,QModelIndex)),
SLOT(updateHistoryButtons(QModelIndex, QModelIndex)));
connect(m_historyUi->showButton, SIGNAL(clicked()), SLOT(showHistoryEntry()));
connect(m_historyUi->restoreButton, SIGNAL(clicked()), SLOT(restoreHistoryEntry()));
connect(m_historyUi->deleteButton, SIGNAL(clicked()), SLOT(deleteHistoryEntry()));
connect(m_historyUi->deleteAllButton, SIGNAL(clicked()), SLOT(deleteAllHistoryEntries()));
@ -131,7 +132,7 @@ void EditEntryWidget::updateHistoryButtons(const QModelIndex& current, const QMo
if (current.isValid()) {
m_historyUi->showButton->setEnabled(true);
m_historyUi->restoreButton->setEnabled(false); // TODO:
m_historyUi->restoreButton->setEnabled(true);
m_historyUi->deleteButton->setEnabled(true);
}
else {
@ -161,57 +162,48 @@ void EditEntryWidget::loadEntry(Entry* entry, bool create, bool history, const Q
}
}
m_mainUi->titleEdit->setReadOnly(history);
m_mainUi->titleEdit->setFrame(!history);
m_mainUi->usernameEdit->setReadOnly(history);
m_mainUi->usernameEdit->setFrame(!history);
m_mainUi->urlEdit->setReadOnly(history);
m_mainUi->urlEdit->setFrame(!history);
m_mainUi->passwordEdit->setReadOnly(history);
m_mainUi->passwordEdit->setFrame(!history);
m_mainUi->passwordRepeatEdit->setReadOnly(history);
m_mainUi->passwordRepeatEdit->setFrame(!history);
m_mainUi->expireCheck->setEnabled(!history);
m_mainUi->expireDatePicker->setReadOnly(history);
m_mainUi->expireDatePicker->setFrame(!history);
m_notesUi->notesEdit->setReadOnly(history);
if (history) {
setForms(entry);
}
void EditEntryWidget::setForms(const Entry* entry, bool restore)
{
m_mainUi->titleEdit->setReadOnly(m_history);
m_mainUi->titleEdit->setFrame(!m_history);
m_mainUi->usernameEdit->setReadOnly(m_history);
m_mainUi->usernameEdit->setFrame(!m_history);
m_mainUi->urlEdit->setReadOnly(m_history);
m_mainUi->urlEdit->setFrame(!m_history);
m_mainUi->passwordEdit->setReadOnly(m_history);
m_mainUi->passwordEdit->setFrame(!m_history);
m_mainUi->passwordRepeatEdit->setReadOnly(m_history);
m_mainUi->passwordRepeatEdit->setFrame(!m_history);
m_mainUi->expireCheck->setEnabled(!m_history);
m_mainUi->expireDatePicker->setReadOnly(m_history);
m_mainUi->expireDatePicker->setFrame(!m_history);
m_notesUi->notesEdit->setReadOnly(m_history);
if (m_history) {
m_notesUi->notesEdit->setFrameShape(QFrame::NoFrame);
}
else {
m_notesUi->notesEdit->setFrameShape(QFrame::StyledPanel);
}
m_advancedUi->addAttachmentButton->setEnabled(!history);
m_advancedUi->removeAttachmentButton->setEnabled(!history);
m_advancedUi->addAttributeButton->setEnabled(!history);
m_advancedUi->addAttachmentButton->setEnabled(!m_history);
m_advancedUi->removeAttachmentButton->setEnabled(!m_history);
m_advancedUi->addAttributeButton->setEnabled(!m_history);
m_advancedUi->editAttributeButton->setEnabled(false);
m_advancedUi->removeAttributeButton->setEnabled(false);
m_advancedUi->attributesEdit->setReadOnly(history);
m_advancedUi->attributesEdit->setReadOnly(m_history);
QAbstractItemView::EditTriggers editTriggers;
if (history) {
if (m_history) {
editTriggers = QAbstractItemView::NoEditTriggers;
}
else {
editTriggers = QAbstractItemView::DoubleClicked;
}
m_advancedUi->attributesView->setEditTriggers(editTriggers);
m_iconsWidget->setEnabled(!history);
m_historyWidget->setEnabled(!history);
m_iconsWidget->setEnabled(!m_history);
m_historyWidget->setEnabled(!m_history);
m_historyUi->showButton->setEnabled(false);
m_historyUi->restoreButton->setEnabled(false);
m_historyUi->deleteButton->setEnabled(false);
m_historyUi->deleteAllButton->setEnabled(false);
setForms(entry);
setCurrentRow(0);
m_mainUi->titleEdit->setFocus();
}
void EditEntryWidget::setForms(const Entry* entry)
{
m_mainUi->titleEdit->setText(entry->title());
m_mainUi->usernameEdit->setText(entry->username());
m_mainUi->urlEdit->setText(entry->url());
@ -239,13 +231,22 @@ void EditEntryWidget::setForms(const Entry* entry)
iconStruct.uuid = entry->iconUuid();
iconStruct.number = entry->iconNumber();
m_iconsWidget->load(entry->uuid(), m_database, iconStruct);
if (!m_history) {
m_historyModel->setEntries(entry->historyItems());
if (m_historyModel->rowCount() > 0) {
m_historyUi->deleteAllButton->setEnabled(true);
}
if (!m_history && !restore) {
m_historyModel->setEntries(entry->historyItems());
}
if (m_historyModel->rowCount() > 0) {
m_historyUi->deleteAllButton->setEnabled(true);
}
else {
m_historyUi->deleteAllButton->setEnabled(false);
}
updateHistoryButtons(m_historyUi->historyView->currentIndex(), QModelIndex());
setCurrentRow(0);
m_mainUi->titleEdit->setFocus();
}
void EditEntryWidget::saveEntry()
@ -532,6 +533,14 @@ void EditEntryWidget::showHistoryEntry()
}
}
void EditEntryWidget::restoreHistoryEntry()
{
QModelIndex index = m_historyUi->historyView->currentIndex();
if (index.isValid()) {
setForms(m_historyModel->entryFromIndex(index), true);
}
}
void EditEntryWidget::deleteHistoryEntry()
{
QModelIndex index = m_historyUi->historyView->currentIndex();

View File

@ -72,6 +72,7 @@ private Q_SLOTS:
void saveCurrentAttachment();
void removeCurrentAttachment();
void showHistoryEntry();
void restoreHistoryEntry();
void deleteHistoryEntry();
void deleteAllHistoryEntries();
void emitHistoryEntryActivated(const QModelIndex &index);
@ -79,7 +80,7 @@ private Q_SLOTS:
private:
bool passwordsEqual();
void setForms(const Entry* entry);
void setForms(const Entry* entry, bool restore = false);
Entry* m_entry;
Database* m_database;