From b5e31868dc0d4d5094752ab2dba127311434e66f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 16 Sep 2008 06:36:17 +0000 Subject: [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 --- sigmodr/SigmodTreeModel.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'sigmodr/SigmodTreeModel.cpp') 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 #include +#include #include 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 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; -- cgit