diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-06-17 05:37:01 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-17 05:37:01 +0000 |
| commit | ca564287ee3f48945d45c7d92be7a83452f53745 (patch) | |
| tree | d6e502bb604f925240a742b3bac2c813a98c447b /utils/themeeditor/configdocument.cpp | |
| parent | ba07b2055c7eb8f2add96f55cb52b40b9ccb3d63 (diff) | |
| download | rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.zip rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.gz rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.bz2 rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.xz | |
Theme Editor: Moved source files into subdirectories
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26876 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/configdocument.cpp')
| -rw-r--r-- | utils/themeeditor/configdocument.cpp | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/utils/themeeditor/configdocument.cpp b/utils/themeeditor/configdocument.cpp deleted file mode 100644 index a897d3b..0000000 --- a/utils/themeeditor/configdocument.cpp +++ /dev/null @@ -1,267 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2010 Robert Bieber - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "projectmodel.h" -#include "configdocument.h" -#include "ui_configdocument.h" - -#include <QMessageBox> -#include <QFile> -#include <QSettings> -#include <QFileDialog> - -ConfigDocument::ConfigDocument(QMap<QString, QString>& settings, QString file, - QWidget *parent) - : TabContent(parent), - ui(new Ui::ConfigDocument), - filePath(file) -{ - ui->setupUi(this); - - /* Populating the known keys list */ - QFile fin(":/resources/configkeys"); - fin.open(QFile::ReadOnly); - - QStringList* container = &primaryKeys; - while(!fin.atEnd()) - { - QString current = QString(fin.readLine()); - if(current == "-\n") - container = &secondaryKeys; - else if(current != "\n") - container->append(current.trimmed()); - } - - QMap<QString, QString>::iterator i; - for(i = settings.begin(); i != settings.end(); i++) - if(i.key() != "themebase") - 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() -{ - QFile fout(filePath); - - if(!fout.exists()) - { - saveAs(); - return; - } - - fout.open(QFile::WriteOnly); - fout.write(toPlainText().toAscii()); - fout.close(); - - saved = toPlainText(); - emit titleChanged(title()); - -} - -void ConfigDocument::saveAs() -{ - /* Determining the directory to open */ - QString directory = filePath; - - QSettings settings; - settings.beginGroup("ProjectModel"); - if(directory == "") - directory = settings.value("defaultDirectory", "").toString(); - - filePath = QFileDialog::getSaveFileName(this, tr("Save Document"), - directory, - ProjectModel::fileFilter()); - directory = filePath; - if(filePath == "") - return; - - directory.chop(filePath.length() - filePath.lastIndexOf('/') - 1); - settings.setValue("defaultDirectory", directory); - settings.endGroup(); - - QFile fout(filePath); - fout.open(QFile::WriteOnly); - fout.write(toPlainText().toAscii()); - fout.close(); - - saved = toPlainText(); - emit titleChanged(title()); - emit configFileChanged(file()); - -} - -bool ConfigDocument::requestClose() -{ - if(toPlainText() != saved) - { - /* Spawning the "Are you sure?" dialog */ - QMessageBox confirm(this); - confirm.setWindowTitle(tr("Confirm Close")); - confirm.setText(title() + tr(" has been modified.")); - confirm.setInformativeText(tr("Do you want to save your changes?")); - confirm.setStandardButtons(QMessageBox::Save | QMessageBox::Discard - | QMessageBox::Cancel); - confirm.setDefaultButton(QMessageBox::Save); - int confirmation = confirm.exec(); - - switch(confirmation) - { - case QMessageBox::Save: - save(); - /* After calling save, make sure the user actually went through */ - if(toPlainText() != saved) - return false; - else - return true; - - case QMessageBox::Discard: - return true; - - case QMessageBox::Cancel: - return false; - } - } - return true; -} - -QString ConfigDocument::toPlainText() const -{ - QString buffer = ""; - - for(int i = 0; i < keys.count(); i++) - { - buffer += keys[i]->currentText(); - buffer += ":"; - buffer += values[i]->text(); - buffer += "\n"; - } - - return buffer; -} - -void ConfigDocument::addRow(QString key, QString value) -{ - QHBoxLayout* layout = new QHBoxLayout(); - QComboBox* keyEdit = new QComboBox(this); - QLineEdit* valueEdit = new QLineEdit(value, this); - QPushButton* delButton = new QPushButton(tr("-"), this); - QLabel* label = new QLabel(":"); - - /* Loading the combo box options */ - keyEdit->setInsertPolicy(QComboBox::InsertAlphabetically); - keyEdit->setEditable(true); - keyEdit->addItems(primaryKeys); - keyEdit->insertSeparator(keyEdit->count()); - keyEdit->addItems(secondaryKeys); - if(keyEdit->findText(key) != -1) - keyEdit->setCurrentIndex(keyEdit->findText(key)); - else - keyEdit->setEditText(key); - - layout->addWidget(keyEdit); - layout->addWidget(label); - layout->addWidget(valueEdit); - layout->addWidget(delButton); - - delButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); - delButton->setMaximumWidth(35); - - QObject::connect(delButton, SIGNAL(clicked()), - this, SLOT(deleteClicked())); - QObject::connect(keyEdit, SIGNAL(currentIndexChanged(QString)), - this, SLOT(textChanged())); - QObject::connect(keyEdit, SIGNAL(textChanged(QString)), - this, SLOT(textChanged())); - QObject::connect(valueEdit, SIGNAL(textChanged(QString)), - this, SLOT(textChanged())); - - ui->configBoxes->addLayout(layout); - - containers.append(layout); - keys.append(keyEdit); - values.append(valueEdit); - deleteButtons.append(delButton); - labels.append(label); - -} - -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(); - labels[row]->deleteLater(); - - deleteButtons.removeAt(row); - keys.removeAt(row); - values.removeAt(row); - containers.removeAt(row); - labels.removeAt(row); - - if(saved != toPlainText()) - emit titleChanged(title() + "*"); - else - emit titleChanged(title()); -} - -void ConfigDocument::addClicked() -{ - addRow(tr("Key"), tr("Value")); -} - -void ConfigDocument::textChanged() -{ - if(toPlainText() != saved) - emit titleChanged(title() + "*"); - else - emit titleChanged(title()); -} |