diff options
Diffstat (limited to 'src/gui/EditWidgetProperties.cpp')
-rw-r--r-- | src/gui/EditWidgetProperties.cpp | 66 |
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); +} |