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 0000000000..95daec0b60
--- /dev/null
+++ b/utils/themeeditor/configdocument.cpp
@@ -0,0 +1,125 @@
1#include "configdocument.h"
2#include "ui_configdocument.h"
3
4ConfigDocument::ConfigDocument(QMap<QString, QString>& settings, QString file,
5 QWidget *parent)
6 : TabContent(parent),
7 ui(new Ui::ConfigDocument),
8 filePath(file)
9{
10 ui->setupUi(this);
11
12 QMap<QString, QString>::iterator i;
13 for(i = settings.begin(); i != settings.end(); i++)
14 addRow(i.key(), i.value());
15
16 saved = toPlainText();
17
18 QObject::connect(ui->addKeyButton, SIGNAL(pressed()),
19 this, SLOT(addClicked()));
20}
21
22ConfigDocument::~ConfigDocument()
23{
24 delete ui;
25}
26
27void ConfigDocument::changeEvent(QEvent *e)
28{
29 QWidget::changeEvent(e);
30 switch (e->type()) {
31 case QEvent::LanguageChange:
32 ui->retranslateUi(this);
33 break;
34 default:
35 break;
36 }
37}
38
39QString ConfigDocument::title() const
40{
41 QStringList decompose = filePath.split("/");
42 return decompose.last();
43}
44
45void ConfigDocument::save()
46{
47
48}
49
50void ConfigDocument::saveAs()
51{
52
53}
54
55bool ConfigDocument::requestClose()
56{
57
58}
59
60QString ConfigDocument::toPlainText() const
61{
62 QString buffer = "";
63
64 for(int i = 0; i < keys.count(); i++)
65 {
66 buffer += keys[i]->text();
67 buffer += ":";
68 buffer += values[i]->text();
69 buffer += "\n";
70 }
71
72 return buffer;
73}
74
75void ConfigDocument::addRow(QString key, QString value)
76{
77 QHBoxLayout* layout = new QHBoxLayout();
78 QLineEdit* keyEdit = new QLineEdit(key, this);
79 QLineEdit* valueEdit = new QLineEdit(value, this);
80 QPushButton* delButton = new QPushButton(tr("-"), this);
81
82 layout->addWidget(keyEdit);
83 layout->addWidget(valueEdit);
84 layout->addWidget(delButton);
85
86 delButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
87 delButton->setMaximumWidth(35);
88
89 QObject::connect(delButton, SIGNAL(clicked()),
90 this, SLOT(deleteClicked()));
91
92 ui->configBoxes->addLayout(layout);
93
94 containers.append(layout);
95 keys.append(keyEdit);
96 values.append(valueEdit);
97 deleteButtons.append(delButton);
98
99}
100
101void ConfigDocument::deleteClicked()
102{
103 QPushButton* button = dynamic_cast<QPushButton*>(sender());
104 int row = deleteButtons.indexOf(button);
105
106 deleteButtons[row]->deleteLater();
107 keys[row]->deleteLater();
108 values[row]->deleteLater();
109 containers[row]->deleteLater();
110
111 deleteButtons.removeAt(row);
112 keys.removeAt(row);
113 values.removeAt(row);
114 containers.removeAt(row);
115
116 if(saved != toPlainText())
117 emit titleChanged(title() + "*");
118 else
119 emit titleChanged(title());
120}
121
122void ConfigDocument::addClicked()
123{
124 addRow(tr("Key"), tr("Value"));
125}