From 046832c821276cb07b86519ab3c0dae4ff68173d Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Mon, 14 Jun 2010 06:20:07 +0000 Subject: Theme Editor: Stripped out the sub-classes for ProjectModel and turned ProjectModel into a list model, also replaced the project tree view with a list view git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26839 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/projectmodel.cpp | 161 +++++++++++-------------------------- 1 file changed, 47 insertions(+), 114 deletions(-) (limited to 'utils/themeeditor/projectmodel.cpp') diff --git a/utils/themeeditor/projectmodel.cpp b/utils/themeeditor/projectmodel.cpp index da810d4906..925be81950 100644 --- a/utils/themeeditor/projectmodel.cpp +++ b/utils/themeeditor/projectmodel.cpp @@ -21,124 +21,18 @@ #include "projectmodel.h" -#include "projectfiles.h" -#include "projectsettings.h" #include "editorwindow.h" #include #include -#include +#include #include ProjectModel::ProjectModel(QString config, EditorWindow* mainWindow, QObject *parent) - : QAbstractItemModel(parent), + : QAbstractListModel(parent), mainWindow(mainWindow) { - root = new ProjectRoot(config, this); -} - -ProjectModel::~ProjectModel() -{ - if(root) - delete root; -} - -QModelIndex ProjectModel::index(int row, int column, - const QModelIndex& parent) const -{ - - if(!hasIndex(row, column, parent)) - return QModelIndex(); - - ProjectNode* foundParent = root; - if(parent.isValid()) - foundParent = static_cast(parent.internalPointer()); - - if(row < foundParent->numChildren() && row >= 0) - return createIndex(row, column, foundParent->child(row)); - else - return QModelIndex(); -} - -QModelIndex ProjectModel::parent(const QModelIndex &child) const -{ - if(!child.isValid()) - return QModelIndex(); - - ProjectNode* foundParent = static_cast - (child.internalPointer())->parent(); - - if(foundParent == root) - return QModelIndex(); - - return createIndex(foundParent->row(), 0, foundParent); -} - -int ProjectModel::rowCount(const QModelIndex &parent) const -{ - if(!root) - return 0; - - if(!parent.isValid()) - return root->numChildren(); - - if(parent.column() != 0) - return 0; - - return static_cast(parent.internalPointer())->numChildren(); -} - -int ProjectModel::columnCount(const QModelIndex &parent) const -{ - return numColumns; -} - -QVariant ProjectModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - if(role != Qt::DisplayRole) - return QVariant(); - - return static_cast - (index.internalPointer())->data(index.column()); -} - -QVariant ProjectModel::headerData(int col, Qt::Orientation orientation, - int role) const -{ - return QVariant(); -} - -Qt::ItemFlags ProjectModel::flags(const QModelIndex &index) const -{ - return static_cast - (index.internalPointer())->flags(index.column()); -} - -bool ProjectModel::setData(const QModelIndex &index, const QVariant &value, - int role) -{ - return true; -} - -void ProjectModel::loadFile(QString file) -{ - mainWindow->loadTabFromFile(file); -} - -void ProjectModel::activated(const QModelIndex &index) -{ - static_cast(index.internalPointer())->activated(); -} - -/* Constructor and destructor for the root class */ -ProjectRoot::ProjectRoot(QString config, ProjectModel* model) -{ - this->model = model; - /* Reading the config file */ QFile cfg(config); cfg.open(QFile::ReadOnly | QFile::Text); @@ -172,14 +66,53 @@ ProjectRoot::ProjectRoot(QString config, ProjectModel* model) cfg.close(); - /* Showing the files */ - children.append(new ProjectFiles(settings, model, this)); - children.append(new ProjectSettings(settings, model, this)); + /* Adding the files, starting with the .cfg */ + config.replace(base.canonicalPath() + "/", ""); + files.append(config); + + QList 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() +{ } -ProjectRoot::~ProjectRoot() +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) { - for(int i = 0; i < children.count(); i++) - delete children[i]; + mainWindow->loadTabFromFile(settings.value("themebase", "") + + "/" + files[index.row()]); } -- cgit v1.2.3