Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/EditWidgetProperties.cpp')
-rw-r--r--src/gui/EditWidgetProperties.cpp66
1 files changed, 64 insertions, 2 deletions
diff --git a/src/gui/EditWidgetProperties.cpp b/src/gui/EditWidgetProperties.cpp
index a278d6cb3..a06928c46 100644
--- a/src/gui/EditWidgetProperties.cpp
+++ b/src/gui/EditWidgetProperties.cpp
@@ -17,21 +17,30 @@
#include "EditWidgetProperties.h"
#include "ui_EditWidgetProperties.h"
+#include "MessageBox.h"
EditWidgetProperties::EditWidgetProperties(QWidget* parent)
: QWidget(parent)
, m_ui(new Ui::EditWidgetProperties())
+ , m_customData(new CustomData(this))
+ , m_customDataModel(new QStandardItemModel(this))
{
m_ui->setupUi(this);
+ m_ui->removeCustomDataButton->setEnabled(false);
+ m_ui->customDataTable->setModel(m_customDataModel);
+
+ connect(m_ui->customDataTable->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ SLOT(toggleRemoveButton(QItemSelection)));
+ connect(m_ui->removeCustomDataButton, SIGNAL(clicked()), SLOT(removeSelectedPluginData()));
}
EditWidgetProperties::~EditWidgetProperties()
{
}
-void EditWidgetProperties::setFields(TimeInfo timeInfo, Uuid uuid)
+void EditWidgetProperties::setFields(const TimeInfo& timeInfo, const Uuid& uuid)
{
- QString timeFormat("d MMM yyyy HH:mm:ss");
+ static const QString timeFormat("d MMM yyyy HH:mm:ss");
m_ui->modifiedEdit->setText(
timeInfo.lastModificationTime().toLocalTime().toString(timeFormat));
m_ui->createdEdit->setText(
@@ -40,3 +49,56 @@ void EditWidgetProperties::setFields(TimeInfo timeInfo, Uuid uuid)
timeInfo.lastAccessTime().toLocalTime().toString(timeFormat));
m_ui->uuidEdit->setText(uuid.toHex());
}
+
+void EditWidgetProperties::setCustomData(const CustomData* customData)
+{
+ Q_ASSERT(customData);
+ m_customData->copyDataFrom(customData);
+
+ updateModel();
+}
+
+const CustomData* EditWidgetProperties::customData() const
+{
+ return m_customData;
+}
+
+void EditWidgetProperties::removeSelectedPluginData()
+{
+ if (QMessageBox::Yes != MessageBox::question(this,
+ tr("Delete plugin data?"),
+ tr("Do you really want to delete the selected plugin data?\n"
+ "This may cause the affected plugins to malfunction."),
+ QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) {
+ return;
+ }
+
+ const QItemSelectionModel* itemSelectionModel = m_ui->customDataTable->selectionModel();
+ if (itemSelectionModel) {
+ for (const QModelIndex& index : itemSelectionModel->selectedRows(0)) {
+ const QString key = index.data().toString();
+ m_customData->remove(key);
+ }
+ updateModel();
+ }
+}
+
+void EditWidgetProperties::toggleRemoveButton(const QItemSelection& selected)
+{
+ m_ui->removeCustomDataButton->setEnabled(!selected.isEmpty());
+}
+
+void EditWidgetProperties::updateModel()
+{
+ m_customDataModel->clear();
+
+ m_customDataModel->setHorizontalHeaderLabels({tr("Key"), tr("Value")});
+
+ for (const QString& key : m_customData->keys()) {
+ m_customDataModel->appendRow(QList<QStandardItem*>()
+ << new QStandardItem(key)
+ << new QStandardItem(m_customData->value(key)));
+ }
+
+ m_ui->removeCustomDataButton->setEnabled(false);
+}