From 61033814fde8d863336061b622b0ad011930dc18 Mon Sep 17 00:00:00 2001 From: Tannin Date: Mon, 29 Jun 2015 20:28:56 +0200 Subject: bugfix: aboutToChangeData and postDataChanged signals were not correctly set up when mod grouping was enabled --- src/modlistsortproxy.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp index f646a079..efe60732 100644 --- a/src/modlistsortproxy.cpp +++ b/src/modlistsortproxy.cpp @@ -380,9 +380,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(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() -- cgit v1.3.1 From 1e75fd8daeff5329c067919941404e67d5d195c7 Mon Sep 17 00:00:00 2001 From: Tannin Date: Mon, 29 Jun 2015 20:38:16 +0200 Subject: bugfix: dropping files from overwrite on mod failed whien mod grouping was active --- src/modlistsortproxy.cpp | 3 ++- src/qtgroupingproxy.cpp | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp index efe60732..39631b67 100644 --- a/src/modlistsortproxy.cpp +++ b/src/modlistsortproxy.cpp @@ -21,6 +21,7 @@ along with Mod Organizer. If not, see . #include "modinfo.h" #include "profile.h" #include "messagedialog.h" +#include "qtgroupingproxy.h" #include #include #include @@ -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. 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()); + } } } -- cgit v1.3.1 From 90dcc8171549d62007a1f5eb910688de61553ab9 Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 30 Jun 2015 19:57:46 +0200 Subject: incremented version number --- src/version.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') 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 -- cgit v1.3.1 From 9a5965afa73077e541c4d8bdc49f0729b42c482d Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 7 Jul 2015 20:52:46 +0200 Subject: bugfix: invalidation bsa wasn't created when switching to a profile that needed it invalidation bsa is now always placed as the first bsa --- src/mainwindow.cpp | 11 ++++++++++- src/organizercore.cpp | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4ffa044b..466fb1c0 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -67,6 +67,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include #include @@ -1312,15 +1313,23 @@ void MainWindow::updateBSAList(const QStringList &defaultArchives, const QString std::vector> items; + IPluginGame *gamePlugin = qApp->property("managed_game").value(); + + BSAInvalidation *invalidation = gamePlugin->feature(); + 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); 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(); } -- cgit v1.3.1 From 1eea37e4e1d59210d721d25c3e10060622c991f8 Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 7 Jul 2015 20:53:38 +0200 Subject: small code beautification --- src/directoryrefresher.cpp | 8 +++++--- src/modinfo.cpp | 2 +- src/profilesdialog.cpp | 4 +--- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src') 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/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/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("profilesList"); - - QListWidgetItem *currentItem = profilesList->currentItem(); + QListWidgetItem *currentItem = ui->profilesList->currentItem(); if (currentItem == nullptr) { return; } -- cgit v1.3.1 From 0a1f3efac5316676bd0a791acf6e5f231d1c177b Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 7 Jul 2015 20:54:18 +0200 Subject: filter names in the filter pane now also show up as tooltips --- src/mainwindow.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 466fb1c0..869b7d70 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2027,6 +2027,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) { -- cgit v1.3.1 From 7799c348ba70bc6a6b8cb3a424ec6fcb82071179 Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 7 Jul 2015 20:57:20 +0200 Subject: defining PSAPI_VERSION to 1 may allow MO 1.3 to run on Vista again. --- src/organizer.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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 -- cgit v1.3.1