summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Tanner <thosrtanner2@users.sourceforge.net>2015-07-09 18:58:57 +0100
committerTom Tanner <thosrtanner2@users.sourceforge.net>2015-07-09 18:58:57 +0100
commit18ad6565861a62d8121d84265a9f5baf1cb32b05 (patch)
treeef1389a1ea4614aa09411292ce36e794a6f2bf06 /src
parenteaafc489fc625d71e4ce797cebb28056746896bc (diff)
parent7799c348ba70bc6a6b8cb3a424ec6fcb82071179 (diff)
Merge
Diffstat (limited to 'src')
-rw-r--r--src/directoryrefresher.cpp8
-rw-r--r--src/mainwindow.cpp12
-rw-r--r--src/modinfo.cpp2
-rw-r--r--src/modlistsortproxy.cpp12
-rw-r--r--src/organizer.pro2
-rw-r--r--src/organizercore.cpp6
-rw-r--r--src/profilesdialog.cpp4
-rw-r--r--src/qtgroupingproxy.cpp9
-rw-r--r--src/version.rc4
9 files changed, 41 insertions, 18 deletions
diff --git a/src/directoryrefresher.cpp b/src/directoryrefresher.cpp
index 48d8cfcb..c253f384 100644
--- a/src/directoryrefresher.cpp
+++ b/src/directoryrefresher.cpp
@@ -76,11 +76,12 @@ void DirectoryRefresher::cleanStructure(DirectoryEntry *structure)
}
}
-void DirectoryRefresher::addModBSAToStructure(DirectoryEntry *directoryStructure, const QString &modName, int priority, const QString &directory, const QStringList &archives)
+void DirectoryRefresher::addModBSAToStructure(DirectoryEntry *directoryStructure, const QString &modName,
+ int priority, const QString &directory, const QStringList &archives)
{
std::wstring directoryW = ToWString(QDir::toNativeSeparators(directory));
- foreach (const QString &archive, archives) {
+ for (const QString &archive : archives) {
QFileInfo fileInfo(archive);
if (m_EnabledArchives.find(fileInfo.fileName()) != m_EnabledArchives.end()) {
try {
@@ -93,7 +94,8 @@ void DirectoryRefresher::addModBSAToStructure(DirectoryEntry *directoryStructure
}
}
-void DirectoryRefresher::addModFilesToStructure(DirectoryEntry *directoryStructure, const QString &modName, int priority, const QString &directory, const QStringList &stealFiles)
+void DirectoryRefresher::addModFilesToStructure(DirectoryEntry *directoryStructure, const QString &modName,
+ int priority, const QString &directory, const QStringList &stealFiles)
{
std::wstring directoryW = ToWString(QDir::toNativeSeparators(directory));
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 31596fed..946f3a73 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -67,6 +67,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <utility.h>
#include <ipluginproxy.h>
#include <dataarchives.h>
+#include <bsainvalidation.h>
#include <questionboxmemory.h>
#include <taskprogressmanager.h>
#include <util.h>
@@ -1307,15 +1308,23 @@ void MainWindow::updateBSAList(const QStringList &defaultArchives, const QString
std::vector<std::pair<UINT32, QTreeWidgetItem*>> items;
+ IPluginGame *gamePlugin = qApp->property("managed_game").value<IPluginGame*>();
+
+ BSAInvalidation *invalidation = gamePlugin->feature<BSAInvalidation>();
+
for (FileEntry::Ptr current : m_OrganizerCore.directoryStructure()->getFiles()) {
QFileInfo fileInfo(ToQString(current->getName().c_str()));
if (fileInfo.suffix().toLower() == "bsa") {
- int index = activeArchives.indexOf(fileInfo.fileName());
+ int index = activeArchives.indexOf(fileInfo.fileName()) + 2;
if (index == -1) {
index = 0xFFFF;
}
+ if ((invalidation != nullptr) && invalidation->isInvalidationBSA(fileInfo.fileName())) {
+ index = 1;
+ }
+
QString basename = fileInfo.baseName();
int originId = current->getOrigin();
FilesOrigin &origin = m_OrganizerCore.directoryStructure()->getOriginByID(originId);
@@ -2009,6 +2018,7 @@ void MainWindow::fileMoved(const QString &filePath, const QString &oldOriginName
QTreeWidgetItem *MainWindow::addFilterItem(QTreeWidgetItem *root, const QString &name, int categoryID, ModListSortProxy::FilterType type)
{
QTreeWidgetItem *item = new QTreeWidgetItem(QStringList(name));
+ item->setData(0, Qt::ToolTipRole, name);
item->setData(0, Qt::UserRole, categoryID);
item->setData(0, Qt::UserRole + 1, type);
if (root != nullptr) {
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 3c721a2c..e0d888e6 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -1010,7 +1010,7 @@ QStringList ModInfoRegular::archives() const
{
QStringList result;
QDir dir(this->absolutePath());
- foreach (const QString &archive, dir.entryList(QStringList("*.bsa"))) {
+ for (const QString &archive : dir.entryList(QStringList("*.bsa"))) {
result.append(this->absolutePath() + "/" + archive);
}
return result;
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index f646a079..39631b67 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "modinfo.h"
#include "profile.h"
#include "messagedialog.h"
+#include "qtgroupingproxy.h"
#include <QMenu>
#include <QCheckBox>
#include <QWidgetAction>
@@ -362,7 +363,7 @@ bool ModListSortProxy::dropMimeData(const QMimeData *data, Qt::DropAction action
return false;
}
if ((row == -1) && (column == -1)) {
- return this->sourceModel()->dropMimeData(data, action, -1, -1, mapToSource(parent));
+ return sourceModel()->dropMimeData(data, action, -1, -1, mapToSource(parent));
}
// in the regular model, when dropping between rows, the row-value passed to
// the sourceModel is inconsistent between ascending and descending ordering.
@@ -380,9 +381,12 @@ bool ModListSortProxy::dropMimeData(const QMimeData *data, Qt::DropAction action
void ModListSortProxy::setSourceModel(QAbstractItemModel *sourceModel)
{
QSortFilterProxyModel::setSourceModel(sourceModel);
-
- connect(sourceModel, SIGNAL(aboutToChangeData()), this, SLOT(aboutToChangeData()));
- connect(sourceModel, SIGNAL(postDataChanged()), this, SLOT(postDataChanged()));
+ QtGroupingProxy *proxy = qobject_cast<QtGroupingProxy*>(sourceModel);
+ if (proxy != nullptr) {
+ sourceModel = proxy->sourceModel();
+ }
+ connect(sourceModel, SIGNAL(aboutToChangeData()), this, SLOT(aboutToChangeData()), Qt::UniqueConnection);
+ connect(sourceModel, SIGNAL(postDataChanged()), this, SLOT(postDataChanged()), Qt::UniqueConnection);
}
void ModListSortProxy::aboutToChangeData()
diff --git a/src/organizer.pro b/src/organizer.pro
index 8424ac3f..c02ac3df 100644
--- a/src/organizer.pro
+++ b/src/organizer.pro
@@ -311,7 +311,7 @@ LIBS += -lmo_shared -luibase -lshell32 -lole32 -luser32 -ladvapi32 -lgdi32 -lPsa
LIBS += -L"$${ZLIBPATH}/build" -lzlibstatic
-DEFINES += UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS NOMINMAX
+DEFINES += UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS NOMINMAX PSAPI_VERSION=1
DEFINES += BOOST_DISABLE_ASSERTS NDEBUG QT_MESSAGELOGCONTEXT
#DEFINES += QMLJSDEBUGGER
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index fa1f372c..8b2a755d 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -529,6 +529,12 @@ void OrganizerCore::setCurrentProfile(const QString &profileName)
m_CurrentProfile = newProfile;
m_ModList.setProfile(newProfile);
+ if (m_CurrentProfile->invalidationActive(nullptr)) {
+ m_CurrentProfile->activateInvalidation();
+ } else {
+ m_CurrentProfile->deactivateInvalidation();
+ }
+
connect(m_CurrentProfile, SIGNAL(modStatusChanged(uint)), this, SLOT(modStatusChanged(uint)));
refreshDirectoryStructure();
}
diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp
index 5443cec0..58be5448 100644
--- a/src/profilesdialog.cpp
+++ b/src/profilesdialog.cpp
@@ -239,9 +239,7 @@ void ProfilesDialog::on_renameButton_clicked()
void ProfilesDialog::on_invalidationBox_stateChanged(int state)
{
- QListWidget *profilesList = findChild<QListWidget*>("profilesList");
-
- QListWidgetItem *currentItem = profilesList->currentItem();
+ QListWidgetItem *currentItem = ui->profilesList->currentItem();
if (currentItem == nullptr) {
return;
}
diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp
index c5ee8591..5fcb84d3 100644
--- a/src/qtgroupingproxy.cpp
+++ b/src/qtgroupingproxy.cpp
@@ -877,9 +877,12 @@ QtGroupingProxy::dropMimeData(const QMimeData *data, Qt::DropAction action, int
QModelIndex newIdx = mapToSource(index(max, column, idx));
return sourceModel()->dropMimeData(data, action, max, column, newIdx);
} else {
- QModelIndex idx = mapToSource(index(row, column, parent));
-
- return sourceModel()->dropMimeData(data, action, idx.row(), idx.column(), idx.parent());
+ if (row == -1) {
+ return sourceModel()->dropMimeData(data, action, -1, -1, mapToSource(parent));
+ } else {
+ QModelIndex idx = mapToSource(index(row, column, parent));
+ return sourceModel()->dropMimeData(data, action, idx.row(), idx.column(), idx.parent());
+ }
}
}
diff --git a/src/version.rc b/src/version.rc
index 8a299a2d..93de7128 100644
--- a/src/version.rc
+++ b/src/version.rc
@@ -1,7 +1,7 @@
#include "Winver.h"
-#define VER_FILEVERSION 1,3,8,0
-#define VER_FILEVERSION_STR "1,3,8,0\0"
+#define VER_FILEVERSION 1,3,9,0
+#define VER_FILEVERSION_STR "1,3,9,0\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION