diff options
author | Petr Mrázek <peterix@gmail.com> | 2021-10-25 23:51:42 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2021-10-25 23:51:42 +0200 |
commit | ae4939e0d2e8774b823865cce0a8e822d04673a5 (patch) | |
tree | 921873298ec1d39cedb68e1d64c3340122620a93 /launcher/InstanceList.cpp | |
parent | 85ecbad46755d42e3e0682dfe24e587ee3157565 (diff) | |
download | PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.tar.gz PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.tar.bz2 PrismLauncher-ae4939e0d2e8774b823865cce0a8e822d04673a5.zip |
GH-4164 Assign instances to groups using drag & drop
Diffstat (limited to 'launcher/InstanceList.cpp')
-rw-r--r-- | launcher/InstanceList.cpp | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index ae905414..ad18740b 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -26,6 +26,7 @@ #include <QUuid> #include <QJsonArray> #include <QJsonDocument> +#include <QMimeData> #include "InstanceList.h" #include "BaseInstance.h" @@ -63,6 +64,50 @@ InstanceList::~InstanceList() { } +Qt::DropActions InstanceList::supportedDragActions() const +{ + return Qt::MoveAction; +} + +Qt::DropActions InstanceList::supportedDropActions() const +{ + return Qt::MoveAction; +} + +bool InstanceList::canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) const +{ + if(data && data->hasFormat("application/x-instanceid")) { + return true; + } + return false; +} + +bool InstanceList::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) +{ + if(data && data->hasFormat("application/x-instanceid")) { + return true; + } + return false; +} + +QStringList InstanceList::mimeTypes() const +{ + auto types = QAbstractListModel::mimeTypes(); + types.push_back("application/x-instanceid"); + return types; +} + +QMimeData * InstanceList::mimeData(const QModelIndexList& indexes) const +{ + auto mimeData = QAbstractListModel::mimeData(indexes); + if(indexes.size() == 1) { + auto instanceId = data(indexes[0], InstanceIDRole).toString(); + mimeData->setData("application/x-instanceid", instanceId.toUtf8()); + } + return mimeData; +} + + int InstanceList::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); @@ -112,7 +157,7 @@ QVariant InstanceList::data(const QModelIndex &index, int role) const { return pdata->iconKey(); } - // HACK: see GroupView.h in gui! + // HACK: see InstanceView.h in gui! case GroupRole: { return getInstanceGroup(pdata->id()); |