aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp')
-rw-r--r--libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp b/libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp
new file mode 100644
index 0000000..5ffda76
--- /dev/null
+++ b/libs/installer_bsplugins/src/BSPluginList/PluginListDropInfo.cpp
@@ -0,0 +1,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