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.cpp40
1 files changed, 36 insertions, 4 deletions
diff --git a/utils/themeeditor/configdocument.cpp b/utils/themeeditor/configdocument.cpp
index 5bc4b77504..a897d3b9e3 100644
--- a/utils/themeeditor/configdocument.cpp
+++ b/utils/themeeditor/configdocument.cpp
@@ -36,9 +36,24 @@ ConfigDocument::ConfigDocument(QMap<QString, QString>& settings, QString file,
36{ 36{
37 ui->setupUi(this); 37 ui->setupUi(this);
38 38
39 /* Populating the known keys list */
40 QFile fin(":/resources/configkeys");
41 fin.open(QFile::ReadOnly);
42
43 QStringList* container = &primaryKeys;
44 while(!fin.atEnd())
45 {
46 QString current = QString(fin.readLine());
47 if(current == "-\n")
48 container = &secondaryKeys;
49 else if(current != "\n")
50 container->append(current.trimmed());
51 }
52
39 QMap<QString, QString>::iterator i; 53 QMap<QString, QString>::iterator i;
40 for(i = settings.begin(); i != settings.end(); i++) 54 for(i = settings.begin(); i != settings.end(); i++)
41 addRow(i.key(), i.value()); 55 if(i.key() != "themebase")
56 addRow(i.key(), i.value());
42 57
43 saved = toPlainText(); 58 saved = toPlainText();
44 59
@@ -160,7 +175,7 @@ QString ConfigDocument::toPlainText() const
160 175
161 for(int i = 0; i < keys.count(); i++) 176 for(int i = 0; i < keys.count(); i++)
162 { 177 {
163 buffer += keys[i]->text(); 178 buffer += keys[i]->currentText();
164 buffer += ":"; 179 buffer += ":";
165 buffer += values[i]->text(); 180 buffer += values[i]->text();
166 buffer += "\n"; 181 buffer += "\n";
@@ -172,11 +187,24 @@ QString ConfigDocument::toPlainText() const
172void ConfigDocument::addRow(QString key, QString value) 187void ConfigDocument::addRow(QString key, QString value)
173{ 188{
174 QHBoxLayout* layout = new QHBoxLayout(); 189 QHBoxLayout* layout = new QHBoxLayout();
175 QLineEdit* keyEdit = new QLineEdit(key, this); 190 QComboBox* keyEdit = new QComboBox(this);
176 QLineEdit* valueEdit = new QLineEdit(value, this); 191 QLineEdit* valueEdit = new QLineEdit(value, this);
177 QPushButton* delButton = new QPushButton(tr("-"), this); 192 QPushButton* delButton = new QPushButton(tr("-"), this);
193 QLabel* label = new QLabel(":");
194
195 /* Loading the combo box options */
196 keyEdit->setInsertPolicy(QComboBox::InsertAlphabetically);
197 keyEdit->setEditable(true);
198 keyEdit->addItems(primaryKeys);
199 keyEdit->insertSeparator(keyEdit->count());
200 keyEdit->addItems(secondaryKeys);
201 if(keyEdit->findText(key) != -1)
202 keyEdit->setCurrentIndex(keyEdit->findText(key));
203 else
204 keyEdit->setEditText(key);
178 205
179 layout->addWidget(keyEdit); 206 layout->addWidget(keyEdit);
207 layout->addWidget(label);
180 layout->addWidget(valueEdit); 208 layout->addWidget(valueEdit);
181 layout->addWidget(delButton); 209 layout->addWidget(delButton);
182 210
@@ -185,7 +213,8 @@ void ConfigDocument::addRow(QString key, QString value)
185 213
186 QObject::connect(delButton, SIGNAL(clicked()), 214 QObject::connect(delButton, SIGNAL(clicked()),
187 this, SLOT(deleteClicked())); 215 this, SLOT(deleteClicked()));
188 216 QObject::connect(keyEdit, SIGNAL(currentIndexChanged(QString)),
217 this, SLOT(textChanged()));
189 QObject::connect(keyEdit, SIGNAL(textChanged(QString)), 218 QObject::connect(keyEdit, SIGNAL(textChanged(QString)),
190 this, SLOT(textChanged())); 219 this, SLOT(textChanged()));
191 QObject::connect(valueEdit, SIGNAL(textChanged(QString)), 220 QObject::connect(valueEdit, SIGNAL(textChanged(QString)),
@@ -197,6 +226,7 @@ void ConfigDocument::addRow(QString key, QString value)
197 keys.append(keyEdit); 226 keys.append(keyEdit);
198 values.append(valueEdit); 227 values.append(valueEdit);
199 deleteButtons.append(delButton); 228 deleteButtons.append(delButton);
229 labels.append(label);
200 230
201} 231}
202 232
@@ -209,11 +239,13 @@ void ConfigDocument::deleteClicked()
209 keys[row]->deleteLater(); 239 keys[row]->deleteLater();
210 values[row]->deleteLater(); 240 values[row]->deleteLater();
211 containers[row]->deleteLater(); 241 containers[row]->deleteLater();
242 labels[row]->deleteLater();
212 243
213 deleteButtons.removeAt(row); 244 deleteButtons.removeAt(row);
214 keys.removeAt(row); 245 keys.removeAt(row);
215 values.removeAt(row); 246 values.removeAt(row);
216 containers.removeAt(row); 247 containers.removeAt(row);
248 labels.removeAt(row);
217 249
218 if(saved != toPlainText()) 250 if(saved != toPlainText())
219 emit titleChanged(title() + "*"); 251 emit titleChanged(title() + "*");