summaryrefslogtreecommitdiff
path: root/utils/themeeditor/configdocument.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-06-15 06:54:58 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-06-15 06:54:58 +0000
commit2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0 (patch)
treea6ef8001d797213e9dd81cd41c48f5065c33f3f0 /utils/themeeditor/configdocument.cpp
parent1d4dc9b3b0f094a70463395138fc920e5107eabc (diff)
downloadrockbox-2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0.zip
rockbox-2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0.tar.gz
rockbox-2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0.tar.bz2
rockbox-2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0.tar.xz
Theme Editor: Changed color to colour in preferences. Made parse tree viewer alternate line colors and auto-scroll/expand with cursor in editor window. Implemented TabContent abstract class so that more than just skin documents can be loaded in tabs. Made SkinDocument implement TabContent. Began implementing ConfigDocument for editing configuration files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26851 a1c6a512-1295-4272-9138-f99709370657
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"));
+}