summaryrefslogtreecommitdiff
path: root/src/overwriteinfodialog.h
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2025-05-23 14:08:01 -0500
committerGitHub <noreply@github.com>2025-05-23 14:08:01 -0500
commit3a8ea3cccee06397e90305e1e39a305f8b7c3cb3 (patch)
tree6c16bf9825bf3f1613a8536d4702f24667fc4c80 /src/overwriteinfodialog.h
parent5d766e94a7a3b3fa861d57d3ad6ae619d98dd5d8 (diff)
Oblivion Remastered Meta PR (#2241)
* Allow for mod directory maps - Set main data files based on game - Mapped mod directories to VFS - Update overwrite setup * Skip if mod contains no 'data' dir * More mod directory compatibility fixes * Workaround for Obl:Rem save location - SLocalSavePath does nothing yet MO2 wants to use it to override the default save location - This only applies to BGS games anyway, we should move this logic * First pass for overwrite mod directory support * More overwrite move / delete restrictions * Fix issue with moving directories that are not required * Formatting pass * More modDataDirectory updates * Formatting --------- Co-authored-by: Mikaƫl Capelle <capelle.mikael@gmail.com>
Diffstat (limited to 'src/overwriteinfodialog.h')
-rw-r--r--src/overwriteinfodialog.h29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/overwriteinfodialog.h b/src/overwriteinfodialog.h
index e9fa3439..59f6f752 100644
--- a/src/overwriteinfodialog.h
+++ b/src/overwriteinfodialog.h
@@ -21,6 +21,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#define OVERWRITEINFODIALOG_H
#include "modinfo.h"
+#include "modlistdropinfo.h"
+#include "organizercore.h"
#include <QDialog>
#include <QFileSystemModel>
@@ -34,8 +36,8 @@ class OverwriteFileSystemModel : public QFileSystemModel
Q_OBJECT;
public:
- OverwriteFileSystemModel(QObject* parent)
- : QFileSystemModel(parent), m_RegularColumnCount(0)
+ OverwriteFileSystemModel(QObject* parent, OrganizerCore& organizer)
+ : QFileSystemModel(parent), m_Organizer(organizer), m_RegularColumnCount(0)
{}
virtual int columnCount(const QModelIndex& parent) const
@@ -70,8 +72,27 @@ public:
}
}
+ virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row,
+ int column, const QModelIndex& parent)
+ {
+ ModListDropInfo dropInfo(data, m_Organizer);
+ if (dropInfo.isLocalFileDrop()) {
+ for (auto entry : dropInfo.localUrls()) {
+ QFileInfo sourceInfo(entry.url.toLocalFile());
+ if (sourceInfo.isDir() &&
+ m_Organizer.managedGame()->getModMappings().keys().contains(
+ entry.relativePath, Qt::CaseInsensitive)) {
+ return false;
+ }
+ }
+ }
+ return QFileSystemModel::dropMimeData(data, action, row, column, parent);
+ }
+
private:
mutable int m_RegularColumnCount;
+
+ OrganizerCore& m_Organizer;
};
class OverwriteInfoDialog : public QDialog
@@ -79,7 +100,8 @@ class OverwriteInfoDialog : public QDialog
Q_OBJECT
public:
- explicit OverwriteInfoDialog(ModInfo::Ptr modInfo, QWidget* parent = 0);
+ explicit OverwriteInfoDialog(ModInfo::Ptr modInfo, OrganizerCore& organizer,
+ QWidget* parent = 0);
~OverwriteInfoDialog();
ModInfo::Ptr modInfo() const { return m_ModInfo; }
@@ -122,6 +144,7 @@ private:
QAction* m_NewFolderAction;
ModInfo::Ptr m_ModInfo;
+ OrganizerCore& m_Organizer;
};
#endif // OVERWRITEINFODIALOG_H