summaryrefslogtreecommitdiff
path: root/lspackagemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lspackagemodel.cpp')
-rw-r--r--lspackagemodel.cpp163
1 files changed, 0 insertions, 163 deletions
diff --git a/lspackagemodel.cpp b/lspackagemodel.cpp
deleted file mode 100644
index 9580e91..0000000
--- a/lspackagemodel.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-#include "lspackagemodel.h"
-
-struct ContentKind {
- LYTPackageBase::ItemType type;
- QString name;
-};
-
-static const ContentKind ContentKinds[4] = {
- {LYTPackageBase::Layout, "Layouts"},
- {LYTPackageBase::Animation, "Animations"},
- {LYTPackageBase::Texture, "Textures"},
- {LYTPackageBase::Font, "Fonts"},
-};
-const int ContentKindCount = 4;
-
-static int ContentKindForType(LYTPackageBase::ItemType type) {
- switch (type) {
- case LYTPackageBase::Layout: return 0;
- case LYTPackageBase::Animation: return 1;
- case LYTPackageBase::Texture: return 2;
- case LYTPackageBase::Font: return 3;
- }
- return -1;
-}
-
-LSPackageModel::LSPackageModel(LYTPackageBase *pkg, QObject *parent) :
- QAbstractItemModel(parent)
-{
- m_package = pkg;
-
- m_caches = new QStringList[ContentKindCount];
- for (int i = 0; i < ContentKindCount; i++) {
- m_caches[i] = pkg->list(ContentKinds[i].type);
- m_caches[i].sort();
- }
-
- connect(pkg, SIGNAL(fileWasAdded(LYTPackageBase::ItemType,QString)), SLOT(handleFileWasAdded(LYTPackageBase::ItemType,QString)));
- //connect(pkg, SIGNAL(fileWasModified(LYTPackageBase::ItemType,QString)), SLOT(handleFileWasModified(LYTPackageBase::ItemType,QString)));
- connect(pkg, SIGNAL(fileWasRemoved(LYTPackageBase::ItemType,QString)), SLOT(handleFileWasRemoved(LYTPackageBase::ItemType,QString)));
- connect(pkg, SIGNAL(fileWasRenamed(LYTPackageBase::ItemType,QString,QString)), SLOT(handleFileWasRenamed(LYTPackageBase::ItemType,QString,QString)));
-}
-
-LSPackageModel::~LSPackageModel() {
- delete[] m_caches;
-}
-
-
-QModelIndex LSPackageModel::index(int row, int column, const QModelIndex &parent) const {
- if (!hasIndex(row, column, parent))
- return QModelIndex();
-
- if (!parent.isValid())
- return createIndex(row, column, 0);
-
- return createIndex(row, column, parent.row() + 1);
-}
-
-QModelIndex LSPackageModel::parent(const QModelIndex &child) const {
- if (!child.isValid())
- return QModelIndex();
-
- if (child.internalId() > 0)
- return createIndex(child.internalId() - 1, 0, 0);
- else
- return QModelIndex();
-}
-
-int LSPackageModel::rowCount(const QModelIndex &parent) const {
- if (!parent.isValid())
- return ContentKindCount;
- else if (parent.internalId() > 0)
- return 0; // an actual item
- else
- return m_caches[parent.row()].count();
-}
-
-int LSPackageModel::columnCount(const QModelIndex &parent) const {
- return 1;
-}
-
-QVariant LSPackageModel::data(const QModelIndex &index, int role) const {
- if (!index.isValid())
- return QVariant();
- if (role != Qt::DisplayRole)
- return QVariant();
-
- int whatIs = index.internalId();
- if (whatIs == 0)
- return ContentKinds[index.row()].name;
- else
- return m_caches[whatIs - 1].at(index.row());
-}
-
-
-void LSPackageModel::handleFileWasAdded(LYTPackageBase::ItemType type, QString name) {
- int kind = ContentKindForType(type);
-
- QStringList newCache = m_caches[kind];
- newCache.append(name);
- newCache.sort();
-
- // where was this added?
- int idx = newCache.indexOf(name);
- beginInsertRows(createIndex(kind, 0, 0), idx, idx);
- m_caches[kind] = newCache;
- endInsertRows();
-}
-
-void LSPackageModel::handleFileWasRemoved(LYTPackageBase::ItemType type, QString name) {
- int kind = ContentKindForType(type);
-
- int idx = m_caches[kind].indexOf(name);
- beginRemoveRows(createIndex(kind, 0, 0), idx, idx);
- m_caches[kind].removeAt(idx);
- endRemoveRows();
-}
-
-void LSPackageModel::handleFileWasRenamed(LYTPackageBase::ItemType type, QString from, QString to) {
- int kind = ContentKindForType(type);
-
- QStringList newCache = m_caches[kind];
- int fromIdx = newCache.indexOf(from);
-
- // this is really a mess, but I cannot think of a better way to do it
- // first, make a new cache, but don't store it to m_caches yet...
- newCache[fromIdx] = to;
- newCache.sort();
-
- // and now, get the to Index...
- int toIdx = newCache.indexOf(to);
- // if the new index is less than the old one, then leave it that way
- // if the new index is the same as the old one, that's fine, do nothing
- // if the new index is more than the old one... add 1 to it to take into
- // account that the old one is no longer around when it was computed BUT Qt
- // expects it to be
- // did that make sense? probably not, oh well
- if (toIdx > fromIdx)
- toIdx++;
-
- QModelIndex whatChanged = createIndex(fromIdx, 0, kind + 1);
- emit dataChanged(whatChanged, whatChanged);
-
- QModelIndex parent = createIndex(kind, 0, 0);
-
- if (toIdx != fromIdx)
- beginMoveRows(parent, fromIdx, fromIdx, parent, toIdx);
- m_caches[kind] = newCache;
- if (toIdx != fromIdx)
- endMoveRows();
-}
-
-
-QString LSPackageModel::itemNameForIndex(const QModelIndex &index) const {
- if (index.internalId() > 0)
- return m_caches[index.internalId() - 1].at(index.row());
- return QString();
-}
-
-LYTPackageBase::ItemType LSPackageModel::itemTypeForIndex(const QModelIndex &index) const {
- if (index.internalId() > 0)
- return ContentKinds[index.internalId() - 1].type;
- return (LYTPackageBase::ItemType)-1;
-}