diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-06-15 06:54:58 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-15 06:54:58 +0000 |
| commit | 2e320f66f4f3c831dcfd232b33da0e6ab6dd7dd0 (patch) | |
| tree | a6ef8001d797213e9dd81cd41c48f5065c33f3f0 /utils/themeeditor/configdocument.cpp | |
| parent | 1d4dc9b3b0f094a70463395138fc920e5107eabc (diff) | |
| download | rockbox-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.cpp | 125 |
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")); +} |