aboutsummaryrefslogtreecommitdiff
path: root/launcher/InstanceList.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-10-25 23:51:42 +0200
committerPetr Mrázek <peterix@gmail.com>2021-10-25 23:51:42 +0200
commitae4939e0d2e8774b823865cce0a8e822d04673a5 (patch)
tree921873298ec1d39cedb68e1d64c3340122620a93 /launcher/InstanceList.cpp
parent85ecbad46755d42e3e0682dfe24e587ee3157565 (diff)
downloadPrismLauncher-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.cpp47
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());