summaryrefslogtreecommitdiff
path: root/utils/themeeditor/configdocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/configdocument.cpp')
-rw-r--r--utils/themeeditor/configdocument.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/utils/themeeditor/configdocument.cpp b/utils/themeeditor/configdocument.cpp
new file mode 100644
index 0000000..95daec0
--- /dev/null
+++ b/utils/themeeditor/configdocument.cpp
@@ -0,0 +1,125 @@
+#include "configdocument.h"
+#include "ui_configdocument.h"
+
+ConfigDocument::ConfigDocument(QMap<QString, QString>& settings, QString file,
+ QWidget *parent)
+ : TabContent(parent),
+ ui(new Ui::ConfigDocument),
+ filePath(file)
+{
+ ui->setupUi(this);
+
+ QMap<QString, QString>::iterator i;
+ for(i = settings.begin(); i != settings.end(); i++)
+ addRow(i.key(), i.value());
+
+ saved = toPlainText();
+
+ QObject::connect(ui->addKeyButton, SIGNAL(pressed()),
+ this, SLOT(addClicked()));
+}
+
+ConfigDocument::~ConfigDocument()
+{
+ delete ui;
+}
+
+void ConfigDocument::changeEvent(QEvent *e)
+{
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+QString ConfigDocument::title() const
+{
+ QStringList decompose = filePath.split("/");
+ return decompose.last();
+}
+
+void ConfigDocument::save()
+{
+
+}
+
+void ConfigDocument::saveAs()
+{
+
+}
+
+bool ConfigDocument::requestClose()
+{
+
+}
+
+QString ConfigDocument::toPlainText() const
+{
+ QString buffer = "";
+
+ for(int i = 0; i < keys.count(); i++)
+ {
+ buffer += keys[i]->text();
+ buffer += ":";
+ buffer += values[i]->text();
+ buffer += "\n";
+ }
+
+ return buffer;
+}
+
+void ConfigDocument::addRow(QString key, QString value)
+{
+ QHBoxLayout* layout = new QHBoxLayout();
+ QLineEdit* keyEdit = new QLineEdit(key, this);
+ QLineEdit* valueEdit = new QLineEdit(value, this);
+ QPushButton* delButton = new QPushButton(tr("-"), this);
+
+ layout->addWidget(keyEdit);
+ layout->addWidget(valueEdit);
+ layout->addWidget(delButton);
+
+ delButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
+ delButton->setMaximumWidth(35);
+
+ QObject::connect(delButton, SIGNAL(clicked()),
+ this, SLOT(deleteClicked()));
+
+ ui->configBoxes->addLayout(layout);
+
+ containers.append(layout);
+ keys.append(keyEdit);
+ values.append(valueEdit);
+ deleteButtons.append(delButton);
+
+}
+
+void ConfigDocument::deleteClicked()
+{
+ QPushButton* button = dynamic_cast<QPushButton*>(sender());
+ int row = deleteButtons.indexOf(button);
+
+ deleteButtons[row]->deleteLater();
+ keys[row]->deleteLater();
+ values[row]->deleteLater();
+ containers[row]->deleteLater();
+
+ deleteButtons.removeAt(row);
+ keys.removeAt(row);
+ values.removeAt(row);
+ containers.removeAt(row);
+
+ if(saved != toPlainText())
+ emit titleChanged(title() + "*");
+ else
+ emit titleChanged(title());
+}
+
+void ConfigDocument::addClicked()
+{
+ addRow(tr("Key"), tr("Value"));
+}