summaryrefslogtreecommitdiffstats
path: root/sigmodr/SigmodTreeModel.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-09-16 06:36:17 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-09-16 06:36:17 +0000
commitb5e31868dc0d4d5094752ab2dba127311434e66f (patch)
tree9ffa57312ec216426059ec16d011865e4c1af72f /sigmodr/SigmodTreeModel.cpp
parent0f0dbfb0395810c1c205a1dc10cf1f226669fd00 (diff)
downloadsigen-b5e31868dc0d4d5094752ab2dba127311434e66f.tar.gz
sigen-b5e31868dc0d4d5094752ab2dba127311434e66f.tar.xz
sigen-b5e31868dc0d4d5094752ab2dba127311434e66f.zip
[FIX] Refactored out some code to ObjectModel
[FIX] Drag and drop now accepts URLs [FIX] The main window can now accept drops git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@265 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'sigmodr/SigmodTreeModel.cpp')
-rw-r--r--sigmodr/SigmodTreeModel.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/sigmodr/SigmodTreeModel.cpp b/sigmodr/SigmodTreeModel.cpp
index f4288e1c..f1d9b4a3 100644
--- a/sigmodr/SigmodTreeModel.cpp
+++ b/sigmodr/SigmodTreeModel.cpp
@@ -27,6 +27,7 @@
// Qt includes
#include <QtCore/QMimeData>
#include <QtCore/QStringList>
+#include <QtCore/QUrl>
#include <QtXml/QDomDocument>
Sigmodr::SigmodTreeModel::SigmodTreeModel(QObject* parent) :
@@ -125,7 +126,7 @@ Sigmodr::BaseModel* Sigmodr::SigmodTreeModel::getItem(const QModelIndex& index)
QStringList Sigmodr::SigmodTreeModel::mimeTypes() const
{
- return QStringList() << "application/x-sigmod+xml";
+ return QStringList() << "application/x-sigmod+xml" << "text/uri-list";
}
QMimeData* Sigmodr::SigmodTreeModel::mimeData(const QModelIndexList& indexes) const
@@ -144,13 +145,25 @@ bool Sigmodr::SigmodTreeModel::dropMimeData(const QMimeData* data, Qt::DropActio
{
if (action == Qt::IgnoreAction)
return true;
- if (!data->hasFormat("application/x-sigmod+xml"))
- return false;
- bool success;
- if (parent.isValid())
- emit(layoutAboutToBeChanged());
- success = parent.isValid() ? setData(parent, data->data("application/x-sigmod+xml"), Sigmodr::BaseModel::XmlRole) : m_root->setData(data->data("application/x-sigmod+xml"), Sigmodr::BaseModel::XmlRole);
- emit(layoutChanged());
+ 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 (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;