diff --git a/src/qt/forms/kevadetaildialog.ui b/src/qt/forms/kevadetaildialog.ui
index 8788f55e6..6bb86bbd8 100644
--- a/src/qt/forms/kevadetaildialog.ui
+++ b/src/qt/forms/kevadetaildialog.ui
@@ -20,7 +20,7 @@
This pane shows the value associated with a give key
- true
+ false
@@ -30,7 +30,7 @@
Qt::Horizontal
- QDialogButtonBox::Close
+ QDialogButtonBox::Close|QDialogButtonBox::Save
diff --git a/src/qt/kevadetaildialog.cpp b/src/qt/kevadetaildialog.cpp
index 0da1ea9b7..8e9376dd4 100644
--- a/src/qt/kevadetaildialog.cpp
+++ b/src/qt/kevadetaildialog.cpp
@@ -6,23 +6,51 @@
#include
#include
+#include
#include
+#include
-KevaDetailDialog::KevaDetailDialog(const QModelIndex &idx, QWidget *parent) :
+
+KevaDetailDialog::KevaDetailDialog(const QModelIndex &idx, QWidget *parent, const QString &nameSpace) :
QDialog(parent),
ui(new Ui::KevaDetailDialog)
{
ui->setupUi(this);
QModelIndex keyIdx = idx.sibling(idx.row(), KevaTableModel::Key);
QModelIndex valueIdx = idx.sibling(idx.row(), KevaTableModel::Value);
- setWindowTitle(tr("Value for %1").arg(keyIdx.data(Qt::DisplayRole).toString()));
+ this->nameSpace = nameSpace;
+ key = keyIdx.data(Qt::DisplayRole).toString();
+ setWindowTitle(tr("Value for %1").arg(key));
QString desc = valueIdx.data(Qt::DisplayRole).toString();
+ connect(ui->detailText, SIGNAL(textChanged()), this, SLOT(onValueChanged()));
//ui->detailText->setHtml(desc);
ui->detailText->setPlainText(desc);
+ ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
+ connect(ui->buttonBox->button(QDialogButtonBox::Save), SIGNAL(clicked()), this, SLOT(onSave()));
}
KevaDetailDialog::~KevaDetailDialog()
{
delete ui;
-}
\ No newline at end of file
+}
+
+void KevaDetailDialog::onValueChanged()
+{
+ bool enabled = ui->detailText->toPlainText().length() > 0;
+ ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(enabled);
+}
+
+void KevaDetailDialog::onSave()
+{
+ KevaDialog* dialog = (KevaDialog*)this->parentWidget();
+ std::string keyText = key.toStdString();
+ std::string valueText = ui->detailText->toPlainText().toStdString();
+ std::string ns = nameSpace.toStdString();
+ if (!dialog->addKeyValue(ns, keyText, valueText)) {
+ QDialog::close();
+ return;
+ }
+ dialog->showNamespace(nameSpace);
+ QDialog::close();
+}
diff --git a/src/qt/kevadetaildialog.h b/src/qt/kevadetaildialog.h
index a4a43e105..597eb1bc4 100644
--- a/src/qt/kevadetaildialog.h
+++ b/src/qt/kevadetaildialog.h
@@ -24,11 +24,17 @@ class KevaDetailDialog : public QDialog
Q_OBJECT
public:
- explicit KevaDetailDialog(const QModelIndex &idx, QWidget *parent = 0);
+ explicit KevaDetailDialog(const QModelIndex &idx, QWidget *parent, const QString &nameSpace);
~KevaDetailDialog();
+public Q_SLOTS:
+ void onValueChanged();
+ void onSave();
+
private:
Ui::KevaDetailDialog *ui;
+ QString nameSpace;
+ QString key;
};
#endif // BITCOIN_QT_KEVADETAILDIALOG_H
diff --git a/src/qt/kevadialog.cpp b/src/qt/kevadialog.cpp
index f1e0add02..c9e5230ca 100644
--- a/src/qt/kevadialog.cpp
+++ b/src/qt/kevadialog.cpp
@@ -207,7 +207,8 @@ void KevaDialog::on_showContent_clicked()
void KevaDialog::on_kevaView_doubleClicked(const QModelIndex &index)
{
- KevaDetailDialog *dialog = new KevaDetailDialog(index, this);
+ QString nameSpace = ui->nameSpace->text();
+ KevaDetailDialog *dialog = new KevaDetailDialog(index, this, nameSpace);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
}