summaryrefslogtreecommitdiffstats
path: root/sigmodr/SigmodTreeModel.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-23 11:34:15 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-23 11:34:15 -0500
commit18efef142da109d395d3d9761225a4936dee9e4d (patch)
treefc86c72b59cd2739a4c63e0cfbaf5e864c08b4d7 /sigmodr/SigmodTreeModel.cpp
parent7aff48012c3040a675543a0ff3d23af6cb8a8638 (diff)
downloadsigen-18efef142da109d395d3d9761225a4936dee9e4d.tar.gz
sigen-18efef142da109d395d3d9761225a4936dee9e4d.tar.xz
sigen-18efef142da109d395d3d9761225a4936dee9e4d.zip
Moved the tree for sigmods in sigmodr to a library
Diffstat (limited to 'sigmodr/SigmodTreeModel.cpp')
-rw-r--r--sigmodr/SigmodTreeModel.cpp214
1 files changed, 0 insertions, 214 deletions
diff --git a/sigmodr/SigmodTreeModel.cpp b/sigmodr/SigmodTreeModel.cpp
deleted file mode 100644
index 51bea45d..00000000
--- a/sigmodr/SigmodTreeModel.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2008 Ben Boeckel <MathStuf@gmail.com>
- *
- * 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 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// Header include
-#include "SigmodTreeModel.h"
-
-// Model includes
-#include "models/RootModel.h"
-
-// Sigmod includes
-#include "../sigmod/Sigmod.h"
-
-// Qt includes
-#include <QtCore/QMimeData>
-#include <QtCore/QStringList>
-#include <QtCore/QUrl>
-#include <QtXml/QDomDocument>
-
-Sigmodr::SigmodTreeModel::SigmodTreeModel(QObject* parent) :
- QAbstractItemModel(parent),
- m_root(new RootModel)
-{
- connect(m_root, SIGNAL(rowsChanged(QList<int>)), this, SLOT(rowsChanged(QList<int>)));
-}
-
-Sigmodr::SigmodTreeModel::~SigmodTreeModel()
-{
- delete m_root;
-}
-
-QVariant Sigmodr::SigmodTreeModel::data(const QModelIndex& index, int role) const
-{
- if (!index.isValid())
- return QVariant();
- BaseModel* object = static_cast<BaseModel*>(index.internalPointer());
- return object->data(role);
-}
-
-QVariant Sigmodr::SigmodTreeModel::headerData(int section, Qt::Orientation orientation, int role) const
-{
- Q_UNUSED(section)
- Q_UNUSED(orientation)
- Q_UNUSED(role)
- return QVariant();
-}
-
-QModelIndex Sigmodr::SigmodTreeModel::index(int row, int column, const QModelIndex& parent) const
-{
- if ((row < -1) || (column < -1))
- return QModelIndex();
- if (row == -1)
- return createIndex(row, 0, m_root);
- BaseModel* model = getItem(parent);
- if ((model->rowCount() <= row) || (1 <= column))
- return QModelIndex();
- BaseModel* object = model->childItem(row);
- return createIndex(row, 0, object);
-}
-
-QModelIndex Sigmodr::SigmodTreeModel::parent(const QModelIndex& index) const
-{
- if (!index.isValid())
- return QModelIndex();
- BaseModel* parent = static_cast<BaseModel*>(index.internalPointer())->parent();
- if (!parent || (parent == m_root))
- return QModelIndex();
- return createIndex(parent->indexNumber(), 0, parent);
-}
-
-int Sigmodr::SigmodTreeModel::rowCount(const QModelIndex& parent) const
-{
- BaseModel* object = getItem(parent);
- return object->rowCount();
-}
-
-int Sigmodr::SigmodTreeModel::columnCount(const QModelIndex& parent) const
-{
- Q_UNUSED(parent)
- return 1;
-}
-
-Qt::ItemFlags Sigmodr::SigmodTreeModel::flags(const QModelIndex& index) const
-{
- if (!index.isValid())
- return 0;
- BaseModel* object = static_cast<BaseModel*>(index.internalPointer());
- return object->flags();
-}
-
-bool Sigmodr::SigmodTreeModel::setData(const QModelIndex& index, const QVariant& value, int role)
-{
- if (!index.isValid())
- return false;
- BaseModel* object = static_cast<BaseModel*>(index.internalPointer());
- emit(layoutAboutToBeChanged());
- bool success = object->setData(value, role);
- emit(layoutChanged());
- if (success)
- {
- emit(dataChanged(index, index));
- emit(dirty(findSigmod(index), true));
- }
- return success;
-}
-
-Sigmodr::BaseModel* Sigmodr::SigmodTreeModel::getItem(const QModelIndex& index) const
-{
- if (index.isValid())
- {
- BaseModel* object = static_cast<BaseModel*>(index.internalPointer());
- if (object)
- return object;
- }
- return m_root;
-}
-
-QStringList Sigmodr::SigmodTreeModel::mimeTypes() const
-{
- return QStringList() << "application/x-sigmod+xml" << "text/uri-list";
-}
-
-QMimeData* Sigmodr::SigmodTreeModel::mimeData(const QModelIndexList& indexes) const
-{
- QMimeData *mimeData = new QMimeData;
- if ((indexes.size() == 1) && indexes[0].isValid())
- {
- QDomDocument xml;
- xml.setContent(data(indexes[0], Sigmodr::BaseModel::XmlRole).toString());
- mimeData->setData("application/x-sigmod+xml", xml.toByteArray());
- }
- return mimeData;
-}
-
-bool Sigmodr::SigmodTreeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent)
-{
- Q_UNUSED(row)
- Q_UNUSED(column)
- if (action == Qt::IgnoreAction)
- return true;
- QString format;
- bool success = false;
- if (data->hasFormat("application/x-sigmod+xml"))
- {
- QByteArray mimeData = data->data("application/x-sigmod+xml");
- emit(layoutAboutToBeChanged());
- success = parent.isValid() ? setData(parent, mimeData, Sigmodr::BaseModel::XmlRole) : m_root->setData(mimeData, Sigmodr::BaseModel::XmlRole);
- emit(layoutChanged());
- }
- else if (data->hasFormat("text/uri-list"))
- {
- QList<QUrl> urls = data->urls();
- foreach (const QUrl& url, urls)
- {
- emit(layoutAboutToBeChanged());
- success = parent.isValid() ? setData(parent, url.toEncoded(), Sigmodr::BaseModel::XmlRole) : m_root->setData(url.toEncoded(), Sigmodr::BaseModel::XmlRole);
- emit(layoutChanged());
- }
- }
- if (success)
- emit(dirty(findSigmod(parent), true));
- return success;
-}
-
-void Sigmodr::SigmodTreeModel::addSigmod(Sigmod::Sigmod* sigmod)
-{
- m_root->addSigmod(sigmod);
- reset();
-}
-
-void Sigmodr::SigmodTreeModel::deleteSigmod(const Sigmod::Sigmod* sigmod)
-{
- m_root->deleteSigmod(sigmod);
- reset();
-}
-
-const Sigmod::Sigmod* Sigmodr::SigmodTreeModel::findSigmod(const QModelIndex& index) const
-{
- QModelIndex curIndex = index;
- QModelIndex parIndex = parent(curIndex);
- while (parIndex.isValid())
- {
- curIndex = parIndex;
- parIndex = parent(curIndex);
- }
- return qobject_cast<const Sigmod::Sigmod*>(getItem(curIndex)->object());
-}
-
-void Sigmodr::SigmodTreeModel::rowsChanged(const QList<int>& rows)
-{
- QModelIndex curIndex;
- foreach (int row, rows)
- curIndex = index(row, 0, curIndex);
- if (curIndex.isValid())
- {
- emit(dataChanged(curIndex, curIndex));
- emit(dirty(findSigmod(curIndex), true));
- }
- else
- reset();
-}