diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-09-16 06:36:17 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-09-16 06:36:17 +0000 |
| commit | b5e31868dc0d4d5094752ab2dba127311434e66f (patch) | |
| tree | 9ffa57312ec216426059ec16d011865e4c1af72f /sigmodr/SigmodTreeModel.cpp | |
| parent | 0f0dbfb0395810c1c205a1dc10cf1f226669fd00 (diff) | |
| download | sigen-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.cpp | 29 |
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; |
