summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokemodTreeModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokemodTreeModel.cpp')
-rw-r--r--pokemodr/PokemodTreeModel.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/pokemodr/PokemodTreeModel.cpp b/pokemodr/PokemodTreeModel.cpp
index c2abd9a3..a06f9af9 100644
--- a/pokemodr/PokemodTreeModel.cpp
+++ b/pokemodr/PokemodTreeModel.cpp
@@ -15,6 +15,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+// Qt includes
+#include <QMimeData>
+
// Header include
#include "PokemodTreeModel.h"
@@ -130,4 +133,30 @@ BaseModel* PokemodTreeModel::getItem(const QModelIndex& index) const
return m_root;
}
+QStringList PokemodTreeModel::mimeTypes() const
+{
+ return QStringList() << "application/x-pokemod+xml";
+}
+QMimeData* PokemodTreeModel::mimeData(const QModelIndexList& indexes) const
+{
+ QMimeData *mimeData = new QMimeData();
+ if ((indexes.size() == 1) && indexes[0].isValid())
+ {
+ QDomDocument xml;
+ xml.setContent(data(indexes[0], BaseModel::XmlRole).toString());
+ mimeData->setData("application/x-pokemod+xml", xml.toByteArray());
+ }
+ return mimeData;
+}
+
+bool PokemodTreeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent)
+{
+ if (action == Qt::IgnoreAction)
+ return true;
+ if (!data->hasFormat("application/x-pokemod+xml"))
+ return false;
+ if (parent.isValid())
+ return setData(parent, data->data("application/x-pokemod+xml"), BaseModel::XmlRole);
+ return m_root->setData(data->data("application/x-pokemod+xml"), BaseModel::XmlRole);
+}