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/models/projectmodel.cpp | |
parent | ba07b2055c7eb8f2add96f55cb52b40b9ccb3d63 (diff) | |
download | rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.gz rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.zip |
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/models/projectmodel.cpp')
-rw-r--r-- | utils/themeeditor/models/projectmodel.cpp | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/utils/themeeditor/models/projectmodel.cpp b/utils/themeeditor/models/projectmodel.cpp new file mode 100644 index 0000000000..632e0aa075 --- /dev/null +++ b/utils/themeeditor/models/projectmodel.cpp @@ -0,0 +1,131 @@ +/*************************************************************************** + * __________ __ ___. + * 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 "editorwindow.h" + +#include <QFile> +#include <QTextStream> +#include <QMap> +#include <QDir> + +ProjectModel::ProjectModel(QString config, EditorWindow* mainWindow, + QObject *parent) + : QAbstractListModel(parent), + mainWindow(mainWindow) +{ + /* Reading the config file */ + QFile cfg(config); + cfg.open(QFile::ReadOnly | QFile::Text); + if(!cfg.isReadable()) + return; + + QTextStream fin(&cfg); + + /* Storing the base directory */ + QString confDir = config; + confDir.chop(confDir.length() - confDir.lastIndexOf('/') - 1); + QDir base(confDir); + base.cdUp(); + settings.insert("themebase", base.canonicalPath()); + + while(!fin.atEnd()) + { + QString current = fin.readLine(); + QList<QString> parts = current.split(':'); + + /* A valid setting has at least one : */ + if(parts.count() < 2) + continue; + + QString setting; + for(int i = 1; i < parts.count(); i++) + setting.append(parts[i].trimmed()); + + settings.insert(parts[0].trimmed(), setting); + } + + cfg.close(); + + /* Adding the files, starting with the .cfg */ + config.replace(base.canonicalPath() + "/", ""); + files.append(config); + + QList<QString> keys; + keys.append("wps"); + keys.append("rwps"); + keys.append("sbs"); + keys.append("rsbs"); + keys.append("fms"); + keys.append("rfms"); + + for(int i = 0; i < keys.count(); i++) + { + QString file = settings.value(keys[i], ""); + if(file != "" && file != "-") + { + file.replace("/.rockbox/", ""); + files.append(file); + } + } + + +} + +ProjectModel::~ProjectModel() +{ +} + +int ProjectModel::rowCount(const QModelIndex& parent) const +{ + return files.count(); +} + +QVariant ProjectModel::data(const QModelIndex &index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + if(role != Qt::DisplayRole) + return QVariant(); + + return files[index.row()]; +} + +void ProjectModel::activated(const QModelIndex &index) +{ + if(index.row() == 0) + { + ConfigDocument* doc = new ConfigDocument(settings, + settings.value("themebase", + "") + "/" + + files[index.row()]); + QObject::connect(doc, SIGNAL(configFileChanged(QString)), + mainWindow, SLOT(configFileChanged(QString))); + mainWindow->loadConfigTab(doc); + } + else + { + mainWindow->loadTabFromSkinFile(settings.value("themebase", "") + + "/" + files[index.row()]); + } +} |