diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d6c448051..8d0fc3e6f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,6 +103,7 @@ set(keepassx_FORMS gui/ChangeMasterKeyWidget.ui gui/DatabaseOpenDialog.ui gui/EditEntryWidget.ui + gui/EditEntryWidgetAdvanced.ui gui/EditEntryWidgetMain.ui gui/EditEntryWidgetNotes.ui gui/EditGroupWidget.ui diff --git a/src/gui/EditEntryWidget.cpp b/src/gui/EditEntryWidget.cpp index a2393683d..49a7f3247 100644 --- a/src/gui/EditEntryWidget.cpp +++ b/src/gui/EditEntryWidget.cpp @@ -17,6 +17,7 @@ #include "EditEntryWidget.h" #include "ui_EditEntryWidget.h" +#include "ui_EditEntryWidgetAdvanced.h" #include "ui_EditEntryWidgetMain.h" #include "ui_EditEntryWidgetNotes.h" @@ -25,6 +26,8 @@ #include "core/Entry.h" #include "core/Group.h" +#include "gui/EntryAttachmentsModel.h" +#include "gui/EntryAttributesModel.h" EditEntryWidget::EditEntryWidget(QWidget* parent) : QWidget(parent) @@ -32,8 +35,10 @@ EditEntryWidget::EditEntryWidget(QWidget* parent) , m_ui(new Ui::EditEntryWidget()) , m_mainUi(new Ui::EditEntryWidgetMain()) , m_notesUi(new Ui::EditEntryWidgetNotes()) + , m_advancedUi(new Ui::EditEntryWidgetAdvanced()) , m_mainWidget(new QWidget(this)) , m_notesWidget(new QWidget(this)) + , m_advancedWidget(new QWidget(this)) { m_ui->setupUi(this); @@ -44,6 +49,7 @@ EditEntryWidget::EditEntryWidget(QWidget* parent) m_ui->categoryList->addItem(tr("Entry")); m_ui->categoryList->addItem(tr("Description")); + m_ui->categoryList->addItem(tr("Advanced")); m_mainUi->setupUi(m_mainWidget); m_ui->stackedWidget->addWidget(m_mainWidget); @@ -51,6 +57,16 @@ EditEntryWidget::EditEntryWidget(QWidget* parent) m_notesUi->setupUi(m_notesWidget); m_ui->stackedWidget->addWidget(m_notesWidget); + m_advancedUi->setupUi(m_advancedWidget); + m_ui->stackedWidget->addWidget(m_advancedWidget); + + m_attachmentsModel = new EntryAttachmentsModel(m_advancedWidget); + m_advancedUi->attachmentsView->setModel(m_attachmentsModel); + m_entryAttributes = new EntryAttributes(this); + + m_attributesModel = new EntryAttributesModel(m_advancedWidget); + m_advancedUi->attributesView->setModel(m_attributesModel); + Q_ASSERT(m_ui->categoryList->model()->rowCount() == m_ui->stackedWidget->count()); connect(m_ui->categoryList, SIGNAL(currentRowChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int))); @@ -88,6 +104,11 @@ void EditEntryWidget::loadEntry(Entry* entry, bool create, const QString& groupN m_notesUi->notesEdit->setPlainText(entry->notes()); + m_entryAttributes->copyFrom(entry->attributes()); + m_attributesModel->setEntryAttributes(m_entryAttributes); + m_entryAttachments->copyFrom(entry->attachments()); + m_attachmentsModel->setEntryAttachments(m_entryAttachments); + m_ui->categoryList->setCurrentRow(0); } @@ -103,6 +124,11 @@ void EditEntryWidget::saveEntry() m_entry->setNotes(m_notesUi->notesEdit->toPlainText()); + m_entry->attributes()->copyFrom(m_entryAttributes); + m_entryAttributes->clear(); + m_entry->attachments()->copyFrom(m_entryAttachments); + m_entryAttachments->clear(); + m_entry = 0; Q_EMIT editFinished(true); } diff --git a/src/gui/EditEntryWidget.h b/src/gui/EditEntryWidget.h index 0e066ac0f..09cb21d21 100644 --- a/src/gui/EditEntryWidget.h +++ b/src/gui/EditEntryWidget.h @@ -22,11 +22,16 @@ #include class Entry; +class EntryAttachments; +class EntryAttachmentsModel; +class EntryAttributes; +class EntryAttributesModel; class QListWidget; class QStackedLayout; namespace Ui { class EditEntryWidget; + class EditEntryWidgetAdvanced; class EditEntryWidgetMain; class EditEntryWidgetNotes; } @@ -55,8 +60,14 @@ private: QScopedPointer m_ui; QScopedPointer m_mainUi; QScopedPointer m_notesUi; + QScopedPointer m_advancedUi; QWidget* m_mainWidget; QWidget* m_notesWidget; + QWidget* m_advancedWidget; + EntryAttachmentsModel* m_attachmentsModel; + EntryAttributesModel* m_attributesModel; + EntryAttachments* m_entryAttachments; + EntryAttributes* m_entryAttributes; Q_DISABLE_COPY(EditEntryWidget) }; diff --git a/src/gui/EditEntryWidgetAdvanced.ui b/src/gui/EditEntryWidgetAdvanced.ui new file mode 100644 index 000000000..b881eb575 --- /dev/null +++ b/src/gui/EditEntryWidgetAdvanced.ui @@ -0,0 +1,126 @@ + + + EditEntryWidgetAdvanced + + + + 0 + 0 + 400 + 299 + + + + + + + Additional attributes + + + + + + false + + + + + + + + + Add + + + + + + + Edit + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Attachments + + + + + + false + + + + + + + + + Add + + + + + + + Remove + + + + + + + Save + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + +