aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp
blob: 5ffda76973ac5b15a9de1fa0bd50c0ce2a313a4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "PluginListDropInfo.h"

#include <QMap>
#include <QMimeData>
#include <QModelIndex>
#include <QVariant>

namespace BSPluginList
{

PluginListDropInfo::PluginListDropInfo(const QMimeData* data, int insertId,
                                       const QModelIndex& parent,
                                       const TESData::PluginList* plugins)
{
  QByteArray encoded = data->data("application/x-qabstractitemmodeldatalist");
  QDataStream stream(&encoded, QIODevice::ReadOnly);

  while (!stream.atEnd()) {
    int sourceRow;
    int col;
    QMap<int, QVariant> roleDataMap;
    stream >> sourceRow >> col >> roleDataMap;
    if (col == 0) {
      m_SourceRows.push_back(sourceRow);
    }
  }

  if (insertId == -1) {
    insertId = parent.row();
  }

  if (plugins) {
    if (insertId < 0 || insertId >= plugins->pluginCount()) {
      m_Destination = plugins->pluginCount();
    } else {
      const auto plugin = plugins->getPlugin(insertId);
      m_Destination     = plugin ? plugin->priority() : plugins->pluginCount();
    }
  }
}

}  // namespace BSPluginList