From aae6d6a5aa8d6b101fcc38388222a8a6e7ee2ec6 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 19 Jul 2019 01:09:19 -0400
Subject: replaced qWarning()
---
src/modlistsortproxy.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 2d9ea4a5..1127c7d4 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -22,6 +22,7 @@ along with Mod Organizer. If not, see .
#include "profile.h"
#include "messagedialog.h"
#include "qtgroupingproxy.h"
+#include
#include
#include
#include
@@ -30,6 +31,7 @@ along with Mod Organizer. If not, see .
#include
#include
+using namespace MOBase;
ModListSortProxy::ModListSortProxy(Profile* profile, QObject *parent)
: QSortFilterProxyModel(parent)
@@ -240,7 +242,7 @@ bool ModListSortProxy::lessThan(const QModelIndex &left,
// nop, already compared by priority
} break;
default: {
- qWarning() << "Sorting is not defined for column " << left.column();
+ log::warn("Sorting is not defined for column {}", left.column());
} break;
}
return lt;
@@ -474,7 +476,7 @@ bool ModListSortProxy::filterAcceptsRow(int row, const QModelIndex &parent) cons
}
if (row >= static_cast(m_Profile->numMods())) {
- qWarning("invalid row index: %d", row);
+ log::warn("invalid row index: {}", row);
return false;
}
--
cgit v1.3.1
From e071dfdfaa369a475a2d93df623c1696feee56ba Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 19 Jul 2019 02:47:13 -0400
Subject: changed qCritical() to log::error() removed now unused vlog()
---
src/browserdialog.cpp | 12 ++++----
src/categories.cpp | 10 +++----
src/downloadlist.cpp | 5 ++--
src/downloadmanager.cpp | 10 +++++--
src/envmodule.cpp | 66 +++++++++++++++++-------------------------
src/envsecurity.cpp | 58 +++++++++++++------------------------
src/envshortcut.cpp | 56 +++++++++++++++++------------------
src/envshortcut.h | 9 ------
src/envwindows.cpp | 19 ++++++------
src/executableslist.cpp | 10 +++----
src/filerenamer.cpp | 2 +-
src/filterwidget.cpp | 5 +++-
src/forcedloaddialogwidget.cpp | 9 +++---
src/installationmanager.cpp | 7 ++---
src/loglist.cpp | 18 ------------
src/mainwindow.cpp | 34 +++++++++++-----------
src/moapplication.cpp | 10 ++++---
src/modinfo.cpp | 5 +---
src/modinfodialog.cpp | 12 ++++----
src/modinfodialogconflicts.cpp | 6 ++--
src/modinfodialogfiletree.cpp | 9 +++---
src/modinfodialogimages.cpp | 9 +++---
src/modinforegular.cpp | 20 ++++++-------
src/modlist.cpp | 12 ++++----
src/modlistsortproxy.cpp | 2 +-
src/nexusinterface.cpp | 28 +++++++++---------
src/organizercore.cpp | 22 +++++++-------
src/overwriteinfodialog.cpp | 6 ++--
src/persistentcookiejar.cpp | 8 +++--
src/plugincontainer.cpp | 5 ++--
src/pluginlist.cpp | 10 +++----
src/profile.cpp | 4 +--
src/settings.cpp | 14 ++-------
src/settingsdialog.cpp | 1 -
src/shared/directoryentry.cpp | 23 ++++++++-------
src/shared/error_report.h | 2 --
src/syncoverwritedialog.cpp | 3 +-
src/texteditor.cpp | 7 +++--
src/transfersavesdialog.cpp | 13 ++++-----
39 files changed, 251 insertions(+), 310 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/browserdialog.cpp b/src/browserdialog.cpp
index e186ad63..1fde7f15 100644
--- a/src/browserdialog.cpp
+++ b/src/browserdialog.cpp
@@ -24,9 +24,10 @@ along with Mod Organizer. If not, see .
#include "messagedialog.h"
#include "report.h"
#include "persistentcookiejar.h"
+#include "settings.h"
#include
-#include "settings.h"
+#include
#include
#include
@@ -38,6 +39,7 @@ along with Mod Organizer. If not, see .
#include
#include
+using namespace MOBase;
BrowserDialog::BrowserDialog(QWidget *parent)
@@ -192,12 +194,12 @@ void BrowserDialog::unsupportedContent(QNetworkReply *reply)
try {
QWebEnginePage *page = qobject_cast(sender());
if (page == nullptr) {
- qCritical("sender not a page");
+ log::error("sender not a page");
return;
}
BrowserView *view = qobject_cast(page->view());
if (view == nullptr) {
- qCritical("no view?");
+ log::error("no view?");
return;
}
@@ -206,14 +208,14 @@ void BrowserDialog::unsupportedContent(QNetworkReply *reply)
if (isVisible()) {
MessageDialog::showMessage(tr("failed to start download"), this);
}
- qCritical("exception downloading unsupported content: %s", e.what());
+ log::error("exception downloading unsupported content: {}", e.what());
}
}
void BrowserDialog::downloadRequested(const QNetworkRequest &request)
{
- qCritical("download request %s ignored", request.url().toString().toUtf8().constData());
+ log::error("download request {} ignored", request.url().toString());
}
diff --git a/src/categories.cpp b/src/categories.cpp
index 8f9d3ad8..7acf6ff5 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -62,8 +62,9 @@ void CategoryFactory::loadCategories()
++lineNum;
QList cells = line.split('|');
if (cells.count() != 4) {
- qCritical("invalid category line %d: %s (%d cells)",
- lineNum, line.constData(), cells.count());
+ log::error(
+ "invalid category line {}: {} ({} cells)",
+ lineNum, line.constData(), cells.count());
} else {
std::vector nexusIDs;
if (cells[2].length() > 0) {
@@ -73,7 +74,7 @@ void CategoryFactory::loadCategories()
bool ok = false;
int temp = iter->toInt(&ok);
if (!ok) {
- qCritical("invalid category id %s", iter->constData());
+ log::error("invalid category id {}", iter->constData());
}
nexusIDs.push_back(temp);
}
@@ -83,8 +84,7 @@ void CategoryFactory::loadCategories()
int id = cells[0].toInt(&cell0Ok);
int parentID = cells[3].trimmed().toInt(&cell3Ok);
if (!cell0Ok || !cell3Ok) {
- qCritical("invalid category line %d: %s",
- lineNum, line.constData());
+ log::error("invalid category line {}: {}", lineNum, line.constData());
}
addCategory(id, QString::fromUtf8(cells[1].constData()), nexusIDs, parentID);
}
diff --git a/src/downloadlist.cpp b/src/downloadlist.cpp
index 5e698e0e..36bc2b7f 100644
--- a/src/downloadlist.cpp
+++ b/src/downloadlist.cpp
@@ -19,12 +19,13 @@ along with Mod Organizer. If not, see .
#include "downloadlist.h"
#include "downloadmanager.h"
+#include
#include
#include
#include
-
#include
+using namespace MOBase;
DownloadList::DownloadList(DownloadManager *manager, QObject *parent)
: QAbstractTableModel(parent), m_Manager(manager)
@@ -192,7 +193,7 @@ void DownloadList::update(int row)
else if (row < this->rowCount())
emit dataChanged(this->index(row, 0, QModelIndex()), this->index(row, this->columnCount(QModelIndex())-1, QModelIndex()));
else
- qCritical("invalid row %d in download list, update failed", row);
+ log::error("invalid row {} in download list, update failed", row);
}
QString DownloadList::sizeFormat(quint64 size) const
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index e3ceb261..348b2108 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -660,7 +660,7 @@ void DownloadManager::removeFile(int index, bool deleteFile)
if ((download->m_State == STATE_STARTED) ||
(download->m_State == STATE_DOWNLOADING)) {
// shouldn't have been possible
- qCritical("tried to remove active download");
+ log::error("tried to remove active download");
endDisableDirWatcher();
return;
}
@@ -798,7 +798,7 @@ void DownloadManager::removeDownload(int index, bool deleteFile)
emit update(-1);
endDisableDirWatcher();
} catch (const std::exception &e) {
- qCritical("failed to remove download: %s", e.what());
+ log::error("failed to remove download: {}", e.what());
}
refreshList();
}
@@ -2069,7 +2069,11 @@ void DownloadManager::writeData(DownloadInfo *info)
if (ret < info->m_Reply->size()) {
QString fileName = info->m_FileName; // m_FileName may be destroyed after setState
setState(info, DownloadState::STATE_CANCELED);
- qCritical(QString("Unable to write download \"%2\" to drive (return %1)").arg(ret).arg(info->m_FileName).toLocal8Bit());
+
+ log::error(
+ "Unable to write download \"{}\" to drive (return {})",
+ info->m_FileName, ret);
+
reportError(tr("Unable to write download to drive (return %1).\n"
"Check the drive's available storage.\n\n"
"Canceling download \"%2\"...").arg(ret).arg(fileName));
diff --git a/src/envmodule.cpp b/src/envmodule.cpp
index 1717da15..aae4e0b1 100644
--- a/src/envmodule.cpp
+++ b/src/envmodule.cpp
@@ -1,6 +1,7 @@
#include "envmodule.h"
#include "env.h"
#include
+#include
namespace env
{
@@ -114,9 +115,9 @@ Module::FileInfo Module::getFileInfo() const
return {};
}
- qCritical().nospace().noquote()
- << "GetFileVersionInfoSizeW() failed on '" << m_path << "', "
- << formatSystemMessageQ(e);
+ log::error(
+ "GetFileVersionInfoSizeW() failed on '{}', {}",
+ m_path, formatSystemMessageQ(e));
return {};
}
@@ -127,9 +128,9 @@ Module::FileInfo Module::getFileInfo() const
if (!GetFileVersionInfoW(wspath.c_str(), 0, size, buffer.get())) {
const auto e = GetLastError();
- qCritical().nospace().noquote()
- << "GetFileVersionInfoW() failed on '" << m_path << "', "
- << formatSystemMessageQ(e);
+ log::error(
+ "GetFileVersionInfoW() failed on '{}', {}",
+ m_path, formatSystemMessageQ(e));
return {};
}
@@ -161,9 +162,9 @@ VS_FIXEDFILEINFO Module::getFixedFileInfo(std::byte* buffer) const
// signature is always 0xfeef04bd
if (fi->dwSignature != 0xfeef04bd) {
- qCritical().nospace().noquote()
- << "bad file info signature 0x" << hex << fi->dwSignature << " for "
- << "'" << m_path << "'";
+ log::error(
+ "bad file info signature {:#x} for '{}'",
+ fi->dwSignature, m_path);
return {};
}
@@ -187,9 +188,7 @@ QString Module::getFileDescription(std::byte* buffer) const
buffer, L"\\VarFileInfo\\Translation", &valuePointer, &valueSize);
if (!ret || !valuePointer || valueSize == 0) {
- qCritical().nospace().noquote()
- << "VerQueryValueW() for translations failed on '" << m_path << "'";
-
+ log::error("VerQueryValueW() for translations failed on '{}'", m_path);
return {};
}
@@ -254,9 +253,9 @@ QDateTime Module::getTimestamp(const VS_FIXEDFILEINFO& fi) const
if (h.get() == INVALID_HANDLE_VALUE) {
const auto e = GetLastError();
- qCritical().nospace().noquote()
- << "can't open file '" << m_path << "' for timestamp, "
- << formatSystemMessageQ(e);
+ log::error(
+ "can't open file '{}' for timestamp, {}",
+ m_path, formatSystemMessageQ(e));
return {};
}
@@ -264,9 +263,10 @@ QDateTime Module::getTimestamp(const VS_FIXEDFILEINFO& fi) const
// getting the file time
if (!GetFileTime(h.get(), &ft, nullptr, nullptr)) {
const auto e = GetLastError();
- qCritical().nospace().noquote()
- << "can't get file time for '" << m_path << "', "
- << formatSystemMessageQ(e);
+
+ log::error(
+ "can't get file time for '{}', {}",
+ m_path, formatSystemMessageQ(e));
return {};
}
@@ -281,11 +281,9 @@ QDateTime Module::getTimestamp(const VS_FIXEDFILEINFO& fi) const
SYSTEMTIME utc = {};
if (!FileTimeToSystemTime(&ft, &utc)) {
- qCritical().nospace().noquote()
- << "FileTimeToSystemTime() failed on timestamp "
- << "high=0x" << hex << ft.dwHighDateTime << " "
- << "low=0x" << hex << ft.dwLowDateTime << " for "
- << "'" << m_path << "'";
+ log::error(
+ "FileTimeToSystemTime() failed on timestamp high={:#x} low={:#x} for '{}'",
+ ft.dwHighDateTime, ft.dwLowDateTime, m_path);
return {};
}
@@ -307,18 +305,14 @@ QString Module::getMD5() const
QFile f(m_path);
if (!f.open(QFile::ReadOnly)) {
- qCritical().nospace().noquote()
- << "failed to open file '" << m_path << "' for md5";
-
+ log::error("failed to open file '{}' for md5", m_path);
return {};
}
// hashing
QCryptographicHash hash(QCryptographicHash::Md5);
if (!hash.addData(&f)) {
- qCritical().nospace().noquote()
- << "failed to calculate md5 for '" << m_path << "'";
-
+ log::error("failed to calculate md5 for '{}'", m_path);
return {};
}
@@ -334,11 +328,7 @@ std::vector getLoadedModules()
if (snapshot.get() == INVALID_HANDLE_VALUE)
{
const auto e = GetLastError();
-
- qCritical().nospace().noquote()
- << "CreateToolhelp32Snapshot() failed, "
- << formatSystemMessageQ(e);
-
+ log::error("CreateToolhelp32Snapshot() failed, {}", formatSystemMessageQ(e));
return {};
}
@@ -349,10 +339,7 @@ std::vector getLoadedModules()
if (!Module32First(snapshot.get(), &me))
{
const auto e = GetLastError();
-
- qCritical().nospace().noquote()
- << "Module32First() failed, " << formatSystemMessageQ(e);
-
+ log::error("Module32First() failed, {}", formatSystemMessageQ(e));
return {};
}
@@ -371,8 +358,7 @@ std::vector getLoadedModules()
// no more modules is not an error
if (e != ERROR_NO_MORE_FILES) {
- qCritical().nospace().noquote()
- << "Module32Next() failed, " << formatSystemMessageQ(e);
+ log::error("Module32Next() failed, {}", formatSystemMessageQ(e));
}
break;
diff --git a/src/envsecurity.cpp b/src/envsecurity.cpp
index 559ce4ad..015e4000 100644
--- a/src/envsecurity.cpp
+++ b/src/envsecurity.cpp
@@ -1,6 +1,7 @@
#include "envsecurity.h"
#include "env.h"
#include
+#include
#include
#include
@@ -57,8 +58,7 @@ public:
}
if (FAILED(ret)) {
- qCritical()
- << "enumerator->next() failed, " << formatSystemMessageQ(ret);
+ log::error("enum->next() failed, {}", formatSystemMessageQ(ret));
break;
}
@@ -82,9 +82,9 @@ private:
IID_IWbemLocator, &rawLocator);
if (FAILED(ret) || !rawLocator) {
- qCritical()
- << "CoCreateInstance for WbemLocator failed, "
- << formatSystemMessageQ(ret);
+ log::error(
+ "CoCreateInstance for WbemLocator failed, {}",
+ formatSystemMessageQ(ret));
throw failed();
}
@@ -102,10 +102,9 @@ private:
&rawService);
if (FAILED(res) || !rawService) {
- qCritical()
- << "locator->ConnectServer() failed for namespace "
- << "'" << QString::fromStdString(ns) << "', "
- << formatSystemMessageQ(res);
+ log::error(
+ "locator->ConnectServer() failed for namespace '{}', {}",
+ ns, formatSystemMessageQ(res));
throw failed();
}
@@ -121,9 +120,7 @@ private:
if (FAILED(ret))
{
- qCritical()
- << "CoSetProxyBlanket() failed, " << formatSystemMessageQ(ret);
-
+ log::error("CoSetProxyBlanket() failed, {}", formatSystemMessageQ(ret));
throw failed();
}
}
@@ -142,10 +139,7 @@ private:
if (FAILED(ret) || !rawEnumerator)
{
- qCritical()
- << "query '" << QString::fromStdString(query) << "' failed, "
- << formatSystemMessageQ(ret);
-
+ log::error("query '{}' failed, {}", query, formatSystemMessageQ(ret));
return {};
}
@@ -256,15 +250,12 @@ std::vector getSecurityProductsFromWMI()
// display name
auto ret = o->Get(L"displayName", 0, &prop, 0, 0);
if (FAILED(ret)) {
- qCritical()
- << "failed to get displayName, "
- << formatSystemMessageQ(ret);
-
+ log::error("failed to get displayName, {}", formatSystemMessageQ(ret));
return;
}
if (prop.vt != VT_BSTR) {
- qCritical() << "displayName is a " << prop.vt << ", not a bstr";
+ log::error("displayName is a {}, not a bstr", prop.vt);
return;
}
@@ -274,15 +265,12 @@ std::vector getSecurityProductsFromWMI()
// product state
ret = o->Get(L"productState", 0, &prop, 0, 0);
if (FAILED(ret)) {
- qCritical()
- << "failed to get productState, "
- << formatSystemMessageQ(ret);
-
+ log::error("failed to get productState, {}", formatSystemMessageQ(ret));
return;
}
if (prop.vt != VT_UI4 && prop.vt != VT_I4) {
- qCritical() << "productState is a " << prop.vt << ", is not a VT_UI4";
+ log::error("productState is a {}, is not a VT_UI4", prop.vt);
return;
}
@@ -298,15 +286,12 @@ std::vector getSecurityProductsFromWMI()
// guid
ret = o->Get(L"instanceGuid", 0, &prop, 0, 0);
if (FAILED(ret)) {
- qCritical()
- << "failed to get instanceGuid, "
- << formatSystemMessageQ(ret);
-
+ log::error("failed to get instanceGuid, {}", formatSystemMessageQ(ret));
return;
}
if (prop.vt != VT_BSTR) {
- qCritical() << "instanceGuid is a " << prop.vt << ", is not a bstr";
+ log::error("instanceGuid is a {}, is not a bstr", prop.vt);
return;
}
@@ -362,9 +347,9 @@ std::optional getWindowsFirewall()
__uuidof(INetFwPolicy2), &rawPolicy);
if (FAILED(hr) || !rawPolicy) {
- qCritical()
- << "CoCreateInstance for NetFwPolicy2 failed, "
- << formatSystemMessageQ(hr);
+ log::error(
+ "CoCreateInstance for NetFwPolicy2 failed, {}",
+ formatSystemMessageQ(hr));
return {};
}
@@ -378,10 +363,7 @@ std::optional getWindowsFirewall()
hr = policy->get_FirewallEnabled(NET_FW_PROFILE2_PUBLIC, &enabledVariant);
if (FAILED(hr))
{
- qCritical()
- << "get_FirewallEnabled failed, "
- << formatSystemMessageQ(hr);
-
+ log::error("get_FirewallEnabled failed, {}", formatSystemMessageQ(hr));
return {};
}
}
diff --git a/src/envshortcut.cpp b/src/envshortcut.cpp
index 30ef4633..1deb9dad 100644
--- a/src/envshortcut.cpp
+++ b/src/envshortcut.cpp
@@ -3,6 +3,7 @@
#include "executableslist.h"
#include "instancemanager.h"
#include
+#include
namespace env
{
@@ -218,17 +219,24 @@ bool Shortcut::toggle(Locations loc)
bool Shortcut::add(Locations loc)
{
- debug()
- << "adding shortcut to " << toString(loc) << ":\n"
- << " . name: '" << m_name << "'\n"
- << " . target: '" << m_target << "'\n"
- << " . arguments: '" << m_arguments << "'\n"
- << " . description: '" << m_description << "'\n"
- << " . icon: '" << m_icon << "' @ " << m_iconIndex << "\n"
- << " . working directory: '" << m_workingDirectory << "'";
+ log::debug(
+ "adding shortcut to {}:\n"
+ " . name: '{}'\n"
+ " . target: '{}'\n"
+ " . arguments: '{}'\n"
+ " . description: '{}'\n"
+ " . icon: '{}' @ {}\n"
+ " . working directory: '{}'",
+ toString(loc),
+ m_name,
+ m_target,
+ m_arguments,
+ m_description,
+ m_icon, m_iconIndex,
+ m_workingDirectory);
if (m_target.isEmpty()) {
- critical() << "target is empty";
+ log::error("shortcut: target is empty");
return false;
}
@@ -237,7 +245,7 @@ bool Shortcut::add(Locations loc)
return false;
}
- debug() << "shorcut file will be saved at '" << path << "'";
+ log::debug("shorcut file will be saved at '{}'", path);
try
{
@@ -255,7 +263,7 @@ bool Shortcut::add(Locations loc)
}
catch(ShellLinkException& e)
{
- critical() << e.what() << "\nshortcut file was not saved";
+ log::error("{}\nshortcut file was not saved", e.what());
}
return false;
@@ -263,26 +271,26 @@ bool Shortcut::add(Locations loc)
bool Shortcut::remove(Locations loc)
{
- debug() << "removing shortcut for '" << m_name << "' from " << toString(loc);
+ log::debug("removing shortcut for '{}' from {}", m_name, toString(loc));
const auto path = shortcutPath(loc);
if (path.isEmpty()) {
return false;
}
- debug() << "path to shortcut file is '" << path << "'";
+ log::debug("path to shortcut file is '{}'", path);
if (!QFile::exists(path)) {
- critical() << "can't remove '" << path << "', file not found";
+ log::error("can't remove shortcut '{}', file not found", path);
return false;
}
if (!MOBase::shellDelete({path})) {
const auto e = ::GetLastError();
- critical()
- << "failed to remove '" << path << "', "
- << formatSystemMessageQ(e);
+ log::error(
+ "failed to remove shortcut '{}', {}",
+ path, formatSystemMessageQ(e));
return false;
}
@@ -323,7 +331,7 @@ QString Shortcut::shortcutDirectory(Locations loc) const
case None:
default:
- critical() << "bad location " << loc;
+ log::error("shortcut: bad location {}", loc);
break;
}
}
@@ -337,23 +345,13 @@ QString Shortcut::shortcutDirectory(Locations loc) const
QString Shortcut::shortcutFilename() const
{
if (m_name.isEmpty()) {
- critical() << "name is empty";
+ log::error("shortcut name is empty");
return {};
}
return m_name + ".lnk";
}
-QDebug Shortcut::debug() const
-{
- return qDebug().noquote().nospace() << "system shortcut: ";
-}
-
-QDebug Shortcut::critical() const
-{
- return qCritical().noquote().nospace() << "system shortcut: ";
-}
-
QString toString(Shortcut::Locations loc)
{
diff --git a/src/envshortcut.h b/src/envshortcut.h
index 904b3ab7..82eea191 100644
--- a/src/envshortcut.h
+++ b/src/envshortcut.h
@@ -84,15 +84,6 @@ private:
int m_iconIndex;
QString m_workingDirectory;
- // returns a qCritical() logger with a prefix already logged
- //
- QDebug critical() const;
-
- // returns a qDebug() logger with a prefix already logged
- //
- QDebug debug() const;
-
-
// returns the path where the shortcut file should be saved
//
QString shortcutPath(Locations loc) const;
diff --git a/src/envwindows.cpp b/src/envwindows.cpp
index 4fbd788a..8a98036a 100644
--- a/src/envwindows.cpp
+++ b/src/envwindows.cpp
@@ -1,6 +1,7 @@
#include "envwindows.h"
#include "env.h"
#include
+#include
namespace env
{
@@ -13,7 +14,7 @@ WindowsInfo::WindowsInfo()
LibraryPtr ntdll(LoadLibraryW(L"ntdll.dll"));
if (!ntdll) {
- qCritical() << "failed to load ntdll.dll while getting version";
+ log::error("failed to load ntdll.dll while getting version");
return;
} else {
m_reported = getReportedVersion(ntdll.get());
@@ -122,7 +123,7 @@ WindowsInfo::Version WindowsInfo::getReportedVersion(HINSTANCE ntdll) const
GetProcAddress(ntdll, "RtlGetVersion"));
if (!RtlGetVersion) {
- qCritical() << "RtlGetVersion() not found in ntdll.dll";
+ log::error("RtlGetVersion() not found in ntdll.dll");
return {};
}
@@ -149,7 +150,7 @@ WindowsInfo::Version WindowsInfo::getRealVersion(HINSTANCE ntdll) const
GetProcAddress(ntdll, "RtlGetNtVersionNumbers"));
if (!RtlGetNtVersionNumbers) {
- qCritical() << "RtlGetNtVersionNumbers not found in ntdll.dll";
+ log::error("RtlGetNtVersionNumbers not found in ntdll.dll");
return {};
}
@@ -207,9 +208,9 @@ std::optional WindowsInfo::getElevated() const
if (!OpenProcessToken(GetCurrentProcess( ), TOKEN_QUERY, &rawToken)) {
const auto e = GetLastError();
- qCritical()
- << "while trying to check if process is elevated, "
- << "OpenProcessToken() failed: " << formatSystemMessageQ(e);
+ log::error(
+ "while trying to check if process is elevated, "
+ "OpenProcessToken() failed: {}", formatSystemMessageQ(e));
return {};
}
@@ -223,9 +224,9 @@ std::optional WindowsInfo::getElevated() const
if (!GetTokenInformation(token.get(), TokenElevation, &e, sizeof(e), &size)) {
const auto e = GetLastError();
- qCritical()
- << "while trying to check if process is elevated, "
- << "GetTokenInformation() failed: " << formatSystemMessageQ(e);
+ log::error(
+ "while trying to check if process is elevated, "
+ "GetTokenInformation() failed: {}", formatSystemMessageQ(e));
return {};
}
diff --git a/src/executableslist.cpp b/src/executableslist.cpp
index fbb96bd4..2408e8f3 100644
--- a/src/executableslist.cpp
+++ b/src/executableslist.cpp
@@ -243,9 +243,9 @@ void ExecutablesList::setExecutable(const Executable &exe, SetFlags flags)
if (flags == MoveExisting) {
const auto newTitle = makeNonConflictingTitle(exe.title());
if (!newTitle) {
- qCritical().nospace()
- << "executable '" << exe.title() << "' was in the way but could "
- << "not be renamed";
+ log::error(
+ "executable '{}' was in the way but could not be renamed",
+ exe.title());
return;
}
@@ -289,9 +289,7 @@ std::optional ExecutablesList::makeNonConflictingTitle(
title = prefix + QString(" (%1)").arg(i);
}
- qCritical().nospace()
- << "ran out of executable titles for prefix '" << prefix << "'";
-
+ log::error("ran out of executable titles for prefix '{}'", prefix);
return {};
}
diff --git a/src/filerenamer.cpp b/src/filerenamer.cpp
index b516c902..8835f52f 100644
--- a/src/filerenamer.cpp
+++ b/src/filerenamer.cpp
@@ -10,7 +10,7 @@ FileRenamer::FileRenamer(QWidget* parent, QFlags flags)
{
// sanity check for flags
if ((m_flags & (HIDE|UNHIDE)) == 0) {
- qCritical("renameFile() missing hide flag");
+ log::error("renameFile() missing hide flag");
// doesn't really matter, it's just for text
m_flags = HIDE;
}
diff --git a/src/filterwidget.cpp b/src/filterwidget.cpp
index 44cbb274..0638add3 100644
--- a/src/filterwidget.cpp
+++ b/src/filterwidget.cpp
@@ -1,5 +1,8 @@
#include "filterwidget.h"
#include "eventfilter.h"
+#include
+
+using namespace MOBase;
FilterWidgetProxyModel::FilterWidgetProxyModel(FilterWidget& fw, QWidget* parent)
: QSortFilterProxyModel(parent), m_filter(fw)
@@ -80,7 +83,7 @@ QModelIndex FilterWidget::map(const QModelIndex& index)
if (m_proxy) {
return m_proxy->mapToSource(index);
} else {
- qCritical() << "FilterWidget::map() called, but proxy isn't set up";
+ log::error("FilterWidget::map() called, but proxy isn't set up");
return index;
}
}
diff --git a/src/forcedloaddialogwidget.cpp b/src/forcedloaddialogwidget.cpp
index b92838c3..b84f785f 100644
--- a/src/forcedloaddialogwidget.cpp
+++ b/src/forcedloaddialogwidget.cpp
@@ -1,9 +1,8 @@
#include "forcedloaddialogwidget.h"
#include "ui_forcedloaddialogwidget.h"
-
-#include
-
#include "executableinfo.h"
+#include
+#include
using namespace MOBase;
@@ -85,7 +84,7 @@ void ForcedLoadDialogWidget::on_libraryPathBrowseButton_clicked()
if (fileInfo.exists()) {
ui->libraryPathEdit->setText(filePath);
} else {
- qCritical("%ls does not exist", filePath.toStdWString().c_str());
+ log::error("{} does not exist", filePath);
}
}
}
@@ -102,7 +101,7 @@ void ForcedLoadDialogWidget::on_processBrowseButton_clicked()
if (fileInfo.exists()) {
ui->processEdit->setText(fileName);
} else {
- qCritical("%ls does not exist", fileInfo.filePath().toStdWString().c_str());
+ log::error("{} does not exist", fileInfo.filePath());
}
}
}
diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp
index 0e50de52..fd971f47 100644
--- a/src/installationmanager.cpp
+++ b/src/installationmanager.cpp
@@ -263,7 +263,7 @@ QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool
targetFile = wcsrchr(origFile/*data[i]->getFileName()*/, '/');
}
if (targetFile == nullptr) {
- qCritical() << "Failed to find backslash in " << data[i]->getFileName();
+ log::error("Failed to find backslash in {}", data[i]->getFileName());
continue;
} else {
// skip the slash
@@ -527,7 +527,7 @@ bool InstallationManager::testOverwrite(GuessedValue &modName, bool *me
settingsFile.write(originalSettings);
settingsFile.close();
} else {
- qCritical("failed to restore original settings: %s", qUtf8Printable(metaFilename));
+ log::error("failed to restore original settings: {}", metaFilename);
}
return true;
} else if (overwriteDialog.action() == QueryOverwriteDialog::ACT_MERGE) {
@@ -856,8 +856,7 @@ bool InstallationManager::install(const QString &fileName,
}
}
} catch (const IncompatibilityException &e) {
- qCritical("plugin \"%s\" incompatible: %s",
- qUtf8Printable(installer->name()), e.what());
+ log::error("plugin \"{}\" incompatible: {}", installer->name(), e.what());
}
// act upon the installation result. at this point the files have already been
diff --git a/src/loglist.cpp b/src/loglist.cpp
index 207f412b..c34ac76e 100644
--- a/src/loglist.cpp
+++ b/src/loglist.cpp
@@ -196,21 +196,3 @@ void LogList::copyToClipboard()
QApplication::clipboard()->setText(QString::fromStdString(s));
}
-
-
-void vlog(const char *format, ...)
-{
- va_list argList;
- va_start(argList, format);
-
- static const int BUFFERSIZE = 1000;
-
- char buffer[BUFFERSIZE + 1];
- buffer[BUFFERSIZE] = '\0';
-
- vsnprintf(buffer, BUFFERSIZE, format, argList);
-
- qCritical("%s", buffer);
-
- va_end(argList);
-}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 70ace8f1..ad87ba03 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1212,14 +1212,14 @@ void MainWindow::createHelpMenu()
QFile file(dirIter.filePath());
if (!file.open(QIODevice::ReadOnly)) {
- qCritical() << "Failed to open " << fileName;
+ log::error("Failed to open {}", fileName);
continue;
}
QString firstLine = QString::fromUtf8(file.readLine());
if (firstLine.startsWith("//TL")) {
QStringList params = firstLine.mid(4).trimmed().split('#');
if (params.size() != 2) {
- qCritical() << "invalid header line for tutorial " << fileName << " expected 2 parameters";
+ log::error("invalid header line for tutorial {}, expected 2 parameters", fileName);
continue;
}
QAction *tutAction = new QAction(params.at(0), tutorialMenu);
@@ -1323,7 +1323,7 @@ void MainWindow::hookUpWindowTutorials()
QString fileName = dirIter.fileName();
QFile file(dirIter.filePath());
if (!file.open(QIODevice::ReadOnly)) {
- qCritical() << "Failed to open " << fileName;
+ log::error("Failed to open {}", fileName);
continue;
}
QString firstLine = QString::fromUtf8(file.readLine());
@@ -1369,7 +1369,7 @@ void MainWindow::showEvent(QShowEvent *event)
TutorialManager::instance().activateTutorial("MainWindow", firstStepsTutorial);
}
} else {
- qCritical() << firstStepsTutorial << " missing";
+ log::error("{} missing", firstStepsTutorial);
QPoint pos = ui->toolBar->mapToGlobal(QPoint());
pos.rx() += ui->toolBar->width() / 2;
pos.ry() += ui->toolBar->height();
@@ -1636,7 +1636,7 @@ void MainWindow::startExeAction()
QAction *action = qobject_cast(sender());
if (action == nullptr) {
- qCritical("not an action?");
+ log::error("not an action?");
return;
}
@@ -3415,7 +3415,7 @@ void MainWindow::displayModInformation(const QString &modName, ModInfoTabIDs tab
{
unsigned int index = ModInfo::getIndex(modName);
if (index == UINT_MAX) {
- qCritical("failed to resolve mod name %s", qUtf8Printable(modName));
+ log::error("failed to resolve mod name {}", modName);
return;
}
@@ -3500,7 +3500,7 @@ void MainWindow::visitOnNexus_clicked()
if (modID > 0) {
linkClicked(NexusInterface::instance(&m_PluginContainer)->getModURL(modID, gameName));
} else {
- qCritical() << "mod '" << info->name() << "' has no nexus id";
+ log::error("mod '{}' has no nexus id", info->name());
}
}
}
@@ -4038,7 +4038,7 @@ void MainWindow::doMoveOverwriteContentToMod(const QString &modAbsolutePath)
MessageDialog::showMessage(tr("Move successful."), this);
}
else {
- qCritical("Move operation failed: %s", qUtf8Printable(windowsErrorString(::GetLastError())));
+ log::error("Move operation failed: {}", windowsErrorString(::GetLastError()));
}
m_OrganizerCore.refreshModList();
@@ -4067,7 +4067,7 @@ void MainWindow::clearOverwrite()
updateProblemsButton();
m_OrganizerCore.refreshModList();
} else {
- qCritical("Delete operation failed: %s", qUtf8Printable(windowsErrorString(::GetLastError())));
+ log::error("Delete operation failed: {}", windowsErrorString(::GetLastError()));
}
}
}
@@ -4311,7 +4311,7 @@ void MainWindow::addRemoveCategoriesFromMenu(QMenu *menu, int modRow, int refere
void MainWindow::addRemoveCategories_MenuHandler() {
QMenu *menu = qobject_cast(sender());
if (menu == nullptr) {
- qCritical("not a menu?");
+ log::error("not a menu?");
return;
}
@@ -4352,7 +4352,7 @@ void MainWindow::addRemoveCategories_MenuHandler() {
void MainWindow::replaceCategories_MenuHandler() {
QMenu *menu = qobject_cast(sender());
if (menu == nullptr) {
- qCritical("not a menu?");
+ log::error("not a menu?");
return;
}
@@ -4547,7 +4547,7 @@ void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu,
categoryBox->setChecked(categoryID == info->getPrimaryCategory());
action->setDefaultWidget(categoryBox);
} catch (const std::exception &e) {
- qCritical("failed to create category checkbox: %s", e.what());
+ log::error("failed to create category checkbox: {}", e.what());
}
action->setData(categoryID);
@@ -4559,7 +4559,7 @@ void MainWindow::addPrimaryCategoryCandidates()
{
QMenu *menu = qobject_cast(sender());
if (menu == nullptr) {
- qCritical("not a menu?");
+ log::error("not a menu?");
return;
}
menu->clear();
@@ -6067,7 +6067,7 @@ void MainWindow::nxmEndorsementToggled(QString, int, QVariant, QVariant resultDa
toggleMO2EndorseState();
if (!disconnect(sender(), SIGNAL(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)),
this, SLOT(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)))) {
- qCritical("failed to disconnect endorsement slot");
+ log::error("failed to disconnect endorsement slot");
}
}
@@ -6527,11 +6527,11 @@ void MainWindow::createStdoutPipe(HANDLE *stdOutRead, HANDLE *stdOutWrite)
secAttributes.lpSecurityDescriptor = nullptr;
if (!::CreatePipe(stdOutRead, stdOutWrite, &secAttributes, 0)) {
- qCritical("failed to create stdout reroute");
+ log::error("failed to create stdout reroute");
}
if (!::SetHandleInformation(*stdOutRead, HANDLE_FLAG_INHERIT, 0)) {
- qCritical("failed to correctly set up the stdout reroute");
+ log::error("failed to correctly set up the stdout reroute");
*stdOutWrite = *stdOutRead = INVALID_HANDLE_VALUE;
}
}
@@ -6965,7 +6965,7 @@ void MainWindow::dropLocalFile(const QUrl &url, const QString &outputDir, bool m
success = shellCopy(file.absoluteFilePath(), target, true, this);
}
if (!success) {
- qCritical("file operation failed: %s", qUtf8Printable(windowsErrorString(::GetLastError())));
+ log::error("file operation failed: {}", windowsErrorString(::GetLastError()));
}
}
diff --git a/src/moapplication.cpp b/src/moapplication.cpp
index 3d55b28d..370a23b5 100644
--- a/src/moapplication.cpp
+++ b/src/moapplication.cpp
@@ -115,13 +115,15 @@ bool MOApplication::notify(QObject *receiver, QEvent *event)
try {
return QApplication::notify(receiver, event);
} catch (const std::exception &e) {
- qCritical("uncaught exception in handler (object %s, eventtype %d): %s",
- receiver->objectName().toUtf8().constData(), event->type(), e.what());
+ log::error(
+ "uncaught exception in handler (object {}, eventtype {}): {}",
+ receiver->objectName(), event->type(), e.what());
reportError(tr("an error occurred: %1").arg(e.what()));
return false;
} catch (...) {
- qCritical("uncaught non-std exception in handler (object %s, eventtype %d)",
- receiver->objectName().toUtf8().constData(), event->type());
+ log::error(
+ "uncaught non-std exception in handler (object {}, eventtype {})",
+ receiver->objectName(), event->type());
reportError(tr("an error occurred"));
return false;
}
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index ca6e8046..5a05e7ca 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -530,10 +530,7 @@ QUrl ModInfo::parseCustomURL() const
const auto url = QUrl::fromUserInput(getCustomURL());
if (!url.isValid()) {
- qCritical()
- << "mod '" << name() << "' has an invalid custom url "
- << "'" << getCustomURL() << "'";
-
+ log::error("mod '{}' has an invalid custom url '{}'", name(), getCustomURL());
return {};
}
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 47ac84be..a7a6b0d7 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -176,7 +176,7 @@ void ModInfoDialog::createTabs()
// check for tabs in the ui not having a corresponding tab in the list
int count = ui->tabWidget->count();
if (count < 0 || count > static_cast(m_tabs.size())) {
- qCritical() << "mod info dialog has more tabs than expected";
+ log::error("mod info dialog has more tabs than expected");
count = static_cast(m_tabs.size());
}
@@ -239,13 +239,13 @@ void ModInfoDialog::setMod(const QString& name)
{
unsigned int index = ModInfo::getIndex(name);
if (index == UINT_MAX) {
- qCritical() << "failed to resolve mod name " << name;
+ log::error("failed to resolve mod name {}", name);
return;
}
auto mod = ModInfo::getByIndex(index);
if (!mod) {
- qCritical() << "mod by index " << index << " is null";
+ log::error("mod by index {} is null", index);
return;
}
@@ -307,7 +307,7 @@ void ModInfoDialog::update(bool firstTime)
// changed
tabInfo->tab->activated();
} else {
- qCritical() << "tab index " << oldTab << " not found";
+ log::error("tab index {} not found", oldTab);
}
}
}
@@ -400,7 +400,7 @@ void ModInfoDialog::reAddTabs(
if (itor == orderedNames.end()) {
// this shouldn't happen, it means there's a tab in the UI that's no
// in the list
- qCritical() << "can't sort tabs, '" << objectName << "' not found";
+ log::error("can't sort tabs, '{}' not found", objectName);
canSort = false;
}
}
@@ -753,7 +753,7 @@ void ModInfoDialog::onTabMoved()
}
if (!found) {
- qCritical() << "unknown tab at index " << i;
+ log::error("unknown tab at index {}", i);
}
}
}
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index 511d48ad..d16d548c 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -365,7 +365,7 @@ void for_each_in_selection(QTreeView* tree, F&& f)
const auto* model = dynamic_cast(tree->model());
if (!model) {
- qCritical() << "tree doesn't have a ConflictListModel";
+ log::error("tree doesn't have a ConflictListModel");
return;
}
@@ -454,7 +454,7 @@ void ConflictsTab::changeItemsVisibility(QTreeView* tree, bool visible)
auto* model = dynamic_cast(tree->model());
if (!model) {
- qCritical() << "list doesn't have a ConflictListModel";
+ log::error("list doesn't have a ConflictListModel");
return;
}
@@ -633,7 +633,7 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
const auto* model = dynamic_cast(tree->model());
if (!model) {
- qCritical() << "tree doesn't have a ConflictListModel";
+ log::error("tree doesn't have a ConflictListModel");
return {};
}
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index 0b519932..219ddf35 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -5,8 +5,9 @@
#include "filerenamer.h"
#include
#include
+#include
-using MOBase::reportError;
+using namespace MOBase;
namespace shell = MOBase::shell;
// if there are more than 50 selected items in the filetree, don't bother
@@ -230,19 +231,19 @@ bool FileTreeTab::deleteFileRecursive(const QModelIndex& parent)
if (m_fs->isDir(index)) {
if (!deleteFileRecursive(index)) {
- qCritical() << "failed to delete" << m_fs->fileName(index);
+ log::error("failed to delete {}", m_fs->fileName(index));
return false;
}
} else {
if (!m_fs->remove(index)) {
- qCritical() << "failed to delete", m_fs->fileName(index);
+ log::error("failed to delete {}", m_fs->fileName(index));
return false;
}
}
}
if (!m_fs->remove(parent)) {
- qCritical() << "failed to delete" << m_fs->fileName(parent);
+ log::error("failed to delete {}", m_fs->fileName(parent));
return false;
}
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 69866902..10362058 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -2,7 +2,9 @@
#include "ui_modinfodialog.h"
#include "settings.h"
#include "utility.h"
+#include
+using namespace MOBase;
using namespace ImagesTabHelpers;
QSize resizeWithAspectRatio(const QSize& original, const QSize& available)
@@ -896,10 +898,9 @@ void File::ensureOriginalLoaded()
QImageReader reader(m_path);
if (!reader.read(&m_original)) {
- qCritical().noquote().nospace()
- << "failed to load '" << m_path << "'\n"
- << reader.errorString() << " "
- << "(error " << static_cast(reader.error()) << ")";
+ log::error(
+ "failed to load '{}'\n{} (error {})",
+ m_path, reader.errorString(), static_cast(reader.error()));
m_failed = true;
}
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 448447e1..074fa9e2 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -68,8 +68,7 @@ ModInfoRegular::~ModInfoRegular()
try {
saveMeta();
} catch (const std::exception &e) {
- qCritical("failed to save meta information for \"%s\": %s",
- qUtf8Printable(m_Name), e.what());
+ log::error("failed to save meta information for \"{}\": {}", m_Name, e.what());
}
}
@@ -258,14 +257,14 @@ void ModInfoRegular::saveMeta()
if (metaFile.status() == QSettings::NoError) {
m_MetaInfoChanged = false;
} else {
- qCritical()
- << QString("failed to write %1/meta.ini: error %2")
- .arg(absolutePath()).arg(metaFile.status());
+ log::error(
+ "failed to write {}/meta.ini: error {}",
+ absolutePath(), metaFile.status());
}
} else {
- qCritical()
- << QString("failed to write %1/meta.ini: error %2")
- .arg(absolutePath()).arg(metaFile.status());
+ log::error(
+ "failed to write {}/meta.ini: error {}",
+ absolutePath(), metaFile.status());
}
}
}
@@ -425,14 +424,13 @@ bool ModInfoRegular::setName(const QString &name)
return false;
}
if (!modDir.rename(tempName, name)) {
- qCritical("rename to final name failed after successful rename to intermediate name");
+ log::error("rename to final name failed after successful rename to intermediate name");
modDir.rename(tempName, m_Name);
return false;
}
} else {
if (!shellRename(modDir.absoluteFilePath(m_Name), modDir.absoluteFilePath(name))) {
- qCritical("failed to rename mod %s (errorcode %d)",
- qUtf8Printable(name), ::GetLastError());
+ log::error("failed to rename mod {} (errorcode {})", name, ::GetLastError());
return false;
}
}
diff --git a/src/modlist.cpp b/src/modlist.cpp
index df25df0d..6ebd0e8b 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -271,7 +271,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
int categoryIdx = categoryFactory.getCategoryIndex(category);
return categoryFactory.getCategoryName(categoryIdx);
} catch (const std::exception &e) {
- qCritical("failed to retrieve category name: %s", e.what());
+ log::error("failed to retrieve category name: {}", e.what());
return QString();
}
} else {
@@ -449,7 +449,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
try {
return modInfo->getDescription();
} catch (const std::exception &e) {
- qCritical("invalid mod description: %s", e.what());
+ log::error("invalid mod description: {}", e.what());
return QString();
}
} else if (column == COL_VERSION) {
@@ -488,7 +488,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
try {
categoryString << "" << ToWString(categoryFactory.getCategoryName(categoryFactory.getCategoryIndex(*catIter))) << "";
} catch (const std::exception &e) {
- qCritical("failed to generate tooltip: %s", e.what());
+ log::error("failed to generate tooltip: {}", e.what());
return QString();
}
}
@@ -636,9 +636,9 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role)
try {
m_ModStateChanged(info->name(), newState);
} catch (const std::exception &e) {
- qCritical("failed to invoke state changed notification: %s", e.what());
+ log::error("failed to invoke state changed notification: {}", e.what());
} catch (...) {
- qCritical("failed to invoke state changed notification: unknown exception");
+ log::error("failed to invoke state changed notification: unknown exception");
}
}
@@ -834,7 +834,7 @@ void ModList::modInfoChanged(ModInfo::Ptr info)
emit dataChanged(index(row, 0), index(row, columnCount()));
emit postDataChanged();
} else {
- qCritical("modInfoChanged not called after modInfoAboutToChange");
+ log::error("modInfoChanged not called after modInfoAboutToChange");
}
m_ChangeInfo.name = QString();
}
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 1127c7d4..d330e0c2 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -196,7 +196,7 @@ bool ModListSortProxy::lessThan(const QModelIndex &left,
QString rightCatName = categories.getCategoryName(categories.getCategoryIndex(rightMod->getPrimaryCategory()));
lt = leftCatName < rightCatName;
} catch (const std::exception &e) {
- qCritical("failed to compare categories: %s", e.what());
+ log::error("failed to compare categories: {}", e.what());
}
}
}
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 008f3c0d..c797aed6 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -41,12 +41,11 @@ using namespace MOShared;
void throttledWarning(const APIUserAccount& user)
{
- qCritical() <<
- QString(
- "You have fewer than %1 requests remaining (%2). Only downloads and "
- "login validation are being allowed.")
- .arg(APIUserAccount::ThrottleThreshold)
- .arg(user.remainingRequests());
+ log::error(
+ "You have fewer than {} requests remaining ({}). Only downloads and "
+ "login validation are being allowed.",
+ APIUserAccount::ThrottleThreshold,
+ user.remainingRequests());
}
@@ -344,7 +343,7 @@ QString NexusInterface::getGameURL(QString gameName) const
if (game != nullptr) {
return "https://www.nexusmods.com/" + game->gameNexusName().toLower();
} else {
- qCritical("getGameURL can't find plugin for %s", qUtf8Printable(gameName));
+ log::error("getGameURL can't find plugin for {}", gameName);
return "";
}
}
@@ -355,7 +354,7 @@ QString NexusInterface::getOldModsURL(QString gameName) const
if (game != nullptr) {
return "https://" + game->gameNexusName().toLower() + ".nexusmods.com/mods";
} else {
- qCritical("getOldModsURL can't find plugin for %s", qUtf8Printable(gameName));
+ log::error("getOldModsURL can't find plugin for {}", gameName);
return "";
}
}
@@ -464,7 +463,7 @@ int NexusInterface::requestUpdates(const int &modID, QObject *receiver, QVariant
IPluginGame *game = getGame(gameName);
if (game == nullptr) {
- qCritical("requestUpdates can't find plugin for %s", qUtf8Printable(gameName));
+ log::error("requestUpdates can't find plugin for {}", gameName);
return -1;
}
@@ -521,7 +520,7 @@ int NexusInterface::requestFileInfo(QString gameName, int modID, int fileID, QOb
{
IPluginGame *gamePlugin = getGame(gameName);
if (gamePlugin == nullptr) {
- qCritical("requestFileInfo can't find plugin for %s", qUtf8Printable(gameName));
+ log::error("requestFileInfo can't find plugin for {}", gameName);
return -1;
}
@@ -687,7 +686,7 @@ void NexusInterface::nextRequest()
} else if (getAccessManager()->validateWaiting()) {
return;
} else {
- qCritical() << tr("You must authorize MO2 in Settings -> Nexus to use the Nexus API.");
+ log::error("{}", tr("You must authorize MO2 in Settings -> Nexus to use the Nexus API."));
}
}
@@ -949,10 +948,9 @@ void NexusInterface::requestError(QNetworkReply::NetworkError)
return;
}
- qCritical("request (%s) error: %s (%d)",
- qUtf8Printable(reply->url().toString()),
- qUtf8Printable(reply->errorString()),
- reply->error());
+ log::error(
+ "request ({}) error: {} ({})",
+ reply->url().toString(), reply->errorString(), reply->error());
}
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index dbff1a2a..725371e9 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -224,7 +224,7 @@ bool checkService()
}
if (serviceConfig->dwStartType == SERVICE_DISABLED) {
- qCritical("Windows Event Log service is disabled!");
+ log::error("Windows Event Log service is disabled!");
serviceRunning = false;
}
@@ -242,7 +242,7 @@ bool checkService()
}
if (serviceStatus->dwCurrentState != SERVICE_RUNNING) {
- qCritical("Windows Event Log service is not running");
+ log::error("Windows Event Log service is not running");
serviceRunning = false;
}
}
@@ -437,7 +437,7 @@ bool OrganizerCore::testForSteam(bool *found, bool *access)
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
lastError = GetLastError();
- qCritical("unable to get snapshot of processes (error %d)", lastError);
+ log::error("unable to get snapshot of processes (error {})", lastError);
return false;
}
@@ -446,7 +446,7 @@ bool OrganizerCore::testForSteam(bool *found, bool *access)
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32)) {
lastError = GetLastError();
- qCritical("unable to get first process (error %d)", lastError);
+ log::error("unable to get first process (error {})", lastError);
CloseHandle(hProcessSnap);
return false;
}
@@ -486,7 +486,7 @@ return true;
void OrganizerCore::updateExecutablesList(QSettings &settings)
{
if (m_PluginContainer == nullptr) {
- qCritical("can't update executables list now");
+ log::error("can't update executables list now");
return;
}
@@ -657,7 +657,7 @@ void OrganizerCore::downloadRequested(QNetworkReply *reply, QString gameName, in
}
} catch (const std::exception &e) {
MessageDialog::showMessage(tr("Download failed"), qApp->activeWindow());
- qCritical("exception starting download: %s", e.what());
+ log::error("exception starting download: {}", e.what());
}
}
@@ -1552,7 +1552,7 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
bool steamFound = true;
bool steamAccess = true;
if (!testForSteam(&steamFound, &steamAccess)) {
- qCritical("unable to determine state of Steam");
+ log::error("unable to determine state of Steam");
}
if (!steamFound) {
@@ -1569,9 +1569,9 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
steamFound = true;
steamAccess = true;
if (!testForSteam(&steamFound, &steamAccess)) {
- qCritical("unable to determine state of Steam");
+ log::error("unable to determine state of Steam");
} else if (!steamFound) {
- qCritical("could not find Steam");
+ log::error("could not find Steam");
}
} else if (result == QDialogButtonBox::Cancel) {
@@ -1592,14 +1592,14 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
if (result == QDialogButtonBox::Yes) {
WCHAR cwd[MAX_PATH];
if (!GetCurrentDirectory(MAX_PATH, cwd)) {
- qCritical("unable to get current directory (error %d)", GetLastError());
+ log::error("unable to get current directory (error {})", GetLastError());
cwd[0] = L'\0';
}
if (!Helper::adminLaunch(
qApp->applicationDirPath().toStdWString(),
qApp->applicationFilePath().toStdWString(),
std::wstring(cwd))) {
- qCritical("unable to relaunch MO as admin");
+ log::error("unable to relaunch MO as admin");
return INVALID_HANDLE_VALUE;
}
qApp->exit(0);
diff --git a/src/overwriteinfodialog.cpp b/src/overwriteinfodialog.cpp
index 5ee8d76c..cc4ae849 100644
--- a/src/overwriteinfodialog.cpp
+++ b/src/overwriteinfodialog.cpp
@@ -121,18 +121,18 @@ bool OverwriteInfoDialog::recursiveDelete(const QModelIndex &index)
QModelIndex childIndex = m_FileSystemModel->index(childRow, 0, index);
if (m_FileSystemModel->isDir(childIndex)) {
if (!recursiveDelete(childIndex)) {
- qCritical("failed to delete %s", m_FileSystemModel->fileName(childIndex).toUtf8().constData());
+ log::error("failed to delete {}", m_FileSystemModel->fileName(childIndex));
return false;
}
} else {
if (!m_FileSystemModel->remove(childIndex)) {
- qCritical("failed to delete %s", m_FileSystemModel->fileName(childIndex).toUtf8().constData());
+ log::error("failed to delete {}", m_FileSystemModel->fileName(childIndex));
return false;
}
}
}
if (!m_FileSystemModel->remove(index)) {
- qCritical("failed to delete %s", m_FileSystemModel->fileName(index).toUtf8().constData());
+ log::error("failed to delete {}", m_FileSystemModel->fileName(index));
return false;
}
return true;
diff --git a/src/persistentcookiejar.cpp b/src/persistentcookiejar.cpp
index 1ed463c6..670bf382 100644
--- a/src/persistentcookiejar.cpp
+++ b/src/persistentcookiejar.cpp
@@ -1,8 +1,10 @@
#include "persistentcookiejar.h"
+#include
#include
#include
#include
+using namespace MOBase;
PersistentCookieJar::PersistentCookieJar(const QString &fileName, QObject *parent)
: QNetworkCookieJar(parent), m_FileName(fileName)
@@ -24,7 +26,7 @@ void PersistentCookieJar::clear() {
void PersistentCookieJar::save() {
QTemporaryFile file;
if (!file.open()) {
- qCritical("failed to save cookies: couldn't create temporary file");
+ log::error("failed to save cookies: couldn't create temporary file");
return;
}
QDataStream data(&file);
@@ -40,14 +42,14 @@ void PersistentCookieJar::save() {
QFile oldCookies(m_FileName);
if (oldCookies.exists()) {
if (!oldCookies.remove()) {
- qCritical("failed to save cookies: failed to remove %s", qUtf8Printable(m_FileName));
+ log::error("failed to save cookies: failed to remove {}", m_FileName);
return;
}
} // if it doesn't exists that's fine
}
if (!file.copy(m_FileName)) {
- qCritical("failed to save cookies: failed to write %s", qUtf8Printable(m_FileName));
+ log::error("failed to save cookies: failed to write {}", m_FileName);
}
}
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index d47fa2c6..36daec52 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -291,8 +291,9 @@ void PluginContainer::loadPlugins()
std::unique_ptr pluginLoader(new QPluginLoader(pluginName, this));
if (pluginLoader->instance() == nullptr) {
m_FailedPlugins.push_back(pluginName);
- qCritical("failed to load plugin %s: %s",
- qUtf8Printable(pluginName), qUtf8Printable(pluginLoader->errorString()));
+ log::error(
+ "failed to load plugin {}: {}",
+ pluginName, pluginLoader->errorString());
} else {
if (registerPlugin(pluginLoader->instance(), pluginName)) {
qDebug("loaded plugin \"%s\"", qUtf8Printable(QFileInfo(pluginName).fileName()));
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 2fb743d0..e436d7f6 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -309,7 +309,7 @@ int PluginList::findPluginByPriority(int priority)
return i;
}
}
- qCritical(QString("No plugin with priority %1").arg(priority).toLocal8Bit());
+ log::error("No plugin with priority {}", priority);
return -1;
}
@@ -824,7 +824,7 @@ void PluginList::updateIndices()
continue;
}
if (m_ESPs[i].m_Priority >= static_cast(m_ESPs.size())) {
- qCritical("invalid plugin priority: %d", m_ESPs[i].m_Priority);
+ log::error("invalid plugin priority: {}", m_ESPs[i].m_Priority);
continue;
}
m_ESPsByName[m_ESPs[i].m_Name.toLower()] = i;
@@ -1067,9 +1067,9 @@ bool PluginList::setData(const QModelIndex &modIndex, const QVariant &value, int
this->index(0, 0),
this->index(static_cast(m_ESPs.size()), columnCount()));
} catch (const std::exception &e) {
- qCritical("failed to invoke state changed notification: %s", e.what());
+ log::error("failed to invoke state changed notification: {}", e.what());
} catch (...) {
- qCritical("failed to invoke state changed notification: unknown exception");
+ log::error("failed to invoke state changed notification: unknown exception");
}
}
@@ -1368,7 +1368,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
m_Masters.insert(QString(iter->c_str()));
}
} catch (const std::exception &e) {
- qCritical("failed to parse plugin file %s: %s", qUtf8Printable(fullPath), e.what());
+ log::error("failed to parse plugin file {}: {}", fullPath, e.what());
m_IsMaster = false;
m_IsLight = false;
m_IsLightFlagged = false;
diff --git a/src/profile.cpp b/src/profile.cpp
index d4778305..555de89a 100644
--- a/src/profile.cpp
+++ b/src/profile.cpp
@@ -572,7 +572,7 @@ void Profile::setModsEnabled(const QList &modsToEnable, const QLis
QList dirtyMods;
for (auto idx : modsToEnable) {
if (idx >= m_ModStatus.size()) {
- qCritical() << tr("invalid mod index: %1").arg(idx);
+ log::error("invalid mod index: {}", idx);
continue;
}
if (!m_ModStatus[idx].m_Enabled) {
@@ -582,7 +582,7 @@ void Profile::setModsEnabled(const QList &modsToEnable, const QLis
}
for (auto idx : modsToDisable) {
if (idx >= m_ModStatus.size()) {
- qCritical() << tr("invalid mod index: %1").arg(idx);
+ log::error("invalid mod index: {}", idx);
continue;
}
if (ModInfo::getByIndex(idx)->alwaysEnabled()) {
diff --git a/src/settings.cpp b/src/settings.cpp
index 92ae2251..9c303442 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -221,9 +221,7 @@ QString Settings::deObfuscate(const QString key)
} else {
const auto e = GetLastError();
if (e != ERROR_NOT_FOUND) {
- qCritical().nospace()
- << "Retrieving encrypted data failed: "
- << formatSystemMessageQ(e);
+ log::error("Retrieving encrypted data failed: {}", formatSystemMessageQ(e));
}
}
delete[] keyData;
@@ -368,11 +366,7 @@ bool Settings::setNexusApiKey(const QString& apiKey)
{
if (!obfuscate("APIKEY", apiKey)) {
const auto e = GetLastError();
-
- qCritical().nospace()
- << "Storing API key failed: "
- << formatSystemMessageQ(e);
-
+ log::error("Storing API key failed: {}", formatSystemMessageQ(e));
return false;
}
@@ -493,9 +487,7 @@ void Settings::setSteamLogin(QString username, QString password)
}
if (!obfuscate("steam_password", password)) {
const auto e = GetLastError();
- qCritical().nospace()
- << "Storing or deleting password failed: "
- << formatSystemMessageQ(e);
+ log::error("Storing or deleting password failed: {}", formatSystemMessageQ(e));
}
}
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index 0dae31ac..99943d04 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -485,7 +485,6 @@ void SettingsDialog::onValidatorStateChanged(
for (auto&& line : log.split("\n")) {
addNexusLog(line);
}
- }
updateNexusState();
}
diff --git a/src/shared/directoryentry.cpp b/src/shared/directoryentry.cpp
index 9d9edd85..2cdbac74 100644
--- a/src/shared/directoryentry.cpp
+++ b/src/shared/directoryentry.cpp
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see .
#include "windows_error.h"
#include "leaktrace.h"
#include "error_report.h"
+#include
#include
#include
#include
@@ -35,6 +36,8 @@ along with Mod Organizer. If not, see .
namespace MOShared {
+namespace log = MOBase::log;
+
static const int MAXPATH_UNICODE = 32767;
class OriginConnection {
@@ -103,7 +106,7 @@ public:
m_OriginsNameMap.erase(iter);
m_OriginsNameMap[newName] = idx;
} else {
- vlog("failed to change name lookup from %ls to %ls", oldName.c_str(), newName.c_str());
+ log::error("failed to change name lookup from {} to {}", oldName, newName);
}
}
@@ -714,14 +717,14 @@ void DirectoryEntry::removeFile(FileEntry::Index index)
if (iter != m_Files.end()) {
m_Files.erase(iter);
} else {
- vlog("file \"%ls\" not in directory \"%ls\"",
- m_FileRegister->getFile(index)->getName().c_str(),
- this->getName().c_str());
+ log::error(
+ "file \"{}\" not in directory \"{}\"",
+ m_FileRegister->getFile(index)->getName(), this->getName());
}
} else {
- vlog("file \"%ls\" not in directory \"%ls\", directory empty",
- m_FileRegister->getFile(index)->getName().c_str(),
- this->getName().c_str());
+ log::error(
+ "file \"{}\" not in directory \"{}\", directory empty",
+ m_FileRegister->getFile(index)->getName(), this->getName());
}
}
@@ -844,7 +847,7 @@ const FileEntry::Ptr DirectoryEntry::searchFile(const std::wstring &path, const
DirectoryEntry *temp = findSubDirectory(pathComponent);
if (temp != nullptr) {
if (len >= path.size()) {
- vlog("unexpected end of path");
+ log::error("unexpected end of path");
return FileEntry::Ptr();
}
return temp->searchFile(path.substr(len + 1), directory);
@@ -988,7 +991,7 @@ bool FileRegister::removeFile(FileEntry::Index index)
m_Files.erase(index);
return true;
} else {
- vlog("invalid file index for remove: %lu", index);
+ log::error("invalid file index for remove: {}", index);
return false;
}
}
@@ -1002,7 +1005,7 @@ void FileRegister::removeOrigin(FileEntry::Index index, int originID)
m_Files.erase(iter);
}
} else {
- vlog("invalid file index for remove (for origin): %lu", index);
+ log::error("invalid file index for remove (for origin): {}", index);
}
}
diff --git a/src/shared/error_report.h b/src/shared/error_report.h
index a003ee09..17b25645 100644
--- a/src/shared/error_report.h
+++ b/src/shared/error_report.h
@@ -30,5 +30,3 @@ void reportError(LPCSTR format, ...);
void reportError(LPCWSTR format, ...);
} // namespace MOShared
-
-void vlog(const char* format, ...);
diff --git a/src/syncoverwritedialog.cpp b/src/syncoverwritedialog.cpp
index 4ee4716e..b1643b2d 100644
--- a/src/syncoverwritedialog.cpp
+++ b/src/syncoverwritedialog.cpp
@@ -22,6 +22,7 @@ along with Mod Organizer. If not, see .
#include "ui_syncoverwritedialog.h"
#include
#include
+#include
#include
#include
@@ -86,7 +87,7 @@ void SyncOverwriteDialog::readTree(const QString &path, DirectoryEntry *director
if (subDir != nullptr) {
readTree(fileInfo.absoluteFilePath(), subDir, newItem);
} else {
- qCritical("no directory structure for %s?", qUtf8Printable(file));
+ log::error("no directory structure for {}?", file);
delete newItem;
newItem = nullptr;
}
diff --git a/src/texteditor.cpp b/src/texteditor.cpp
index 130cd76f..0c0eb1cc 100644
--- a/src/texteditor.cpp
+++ b/src/texteditor.cpp
@@ -1,7 +1,10 @@
#include "texteditor.h"
#include "utility.h"
+#include
#include
+using namespace MOBase;
+
TextEditor::TextEditor(QWidget* parent) :
QPlainTextEdit(parent),
m_toolbar(nullptr), m_lineNumbers(nullptr), m_highlighter(nullptr),
@@ -249,7 +252,7 @@ QWidget* TextEditor::wrapEditWidget()
auto index = splitter->indexOf(this);
if (index == -1) {
- qCritical(
+ log::error(
"TextEditor: cannot wrap edit widget to display a toolbar, "
"parent is a splitter, but widget isn't in it");
@@ -260,7 +263,7 @@ QWidget* TextEditor::wrapEditWidget()
} else {
// unknown parent
- qCritical(
+ log::error(
"TextEditor: cannot wrap edit widget to display a toolbar, "
"no parent or parent has no layout");
diff --git a/src/transfersavesdialog.cpp b/src/transfersavesdialog.cpp
index 130df14f..1b211fd3 100644
--- a/src/transfersavesdialog.cpp
+++ b/src/transfersavesdialog.cpp
@@ -24,6 +24,7 @@ along with Mod Organizer. If not, see .
#include "isavegame.h"
#include "savegameinfo.h"
#include
+#include
#include
#include
@@ -186,7 +187,7 @@ void TransferSavesDialog::on_moveToLocalBtn_clicked()
[this](const QString &source, const QString &destination) -> bool {
return shellMove(source, destination, this);
},
- "Failed to move %s to %s")) {
+ "Failed to move {} to {}")) {
refreshGlobalSaves();
refreshGlobalCharacters();
refreshLocalSaves();
@@ -203,7 +204,7 @@ void TransferSavesDialog::on_copyToLocalBtn_clicked()
[this](const QString &source, const QString &destination) -> bool {
return shellCopy(source, destination, this);
},
- "Failed to copy %s to %s")) {
+ "Failed to copy {} to {}")) {
refreshLocalSaves();
refreshLocalCharacters();
}
@@ -218,7 +219,7 @@ void TransferSavesDialog::on_moveToGlobalBtn_clicked()
[this](const QString &source, const QString &destination) -> bool {
return shellMove(source, destination, this);
},
- "Failed to move %s to %s")) {
+ "Failed to move {} to {}")) {
refreshGlobalSaves();
refreshGlobalCharacters();
refreshLocalSaves();
@@ -235,7 +236,7 @@ void TransferSavesDialog::on_copyToGlobalBtn_clicked()
[this](const QString &source, const QString &destination) -> bool {
return shellCopy(source, destination, this);
},
- "Failed to copy %s to %s")) {
+ "Failed to copy {} to {}")) {
refreshGlobalSaves();
refreshGlobalCharacters();
}
@@ -340,9 +341,7 @@ bool TransferSavesDialog::transferCharacters(
}
if (!method(sourceFile.absoluteFilePath(), destinationFile)) {
- qCritical(errmsg,
- sourceFile.absoluteFilePath().toUtf8().constData(),
- qUtf8Printable(destinationFile));
+ log::error(errmsg, sourceFile.absoluteFilePath(), destinationFile);
}
}
}
--
cgit v1.3.1
From b3d0ddb0b75da4abd59cae1508d983945c8e235d Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 19 Jul 2019 04:21:45 -0400
Subject: changed qDebug() to log::debug() removed some commented out logging
---
src/categories.cpp | 4 +-
src/downloadlistwidget.cpp | 5 ++-
src/downloadmanager.cpp | 35 ++++++++---------
src/executableslist.cpp | 4 +-
src/filerenamer.cpp | 43 +++++++++++----------
src/installationmanager.cpp | 16 ++++----
src/instancemanager.cpp | 2 +-
src/loadmechanism.cpp | 13 ++++---
src/mainwindow.cpp | 37 +++++++-----------
src/messagedialog.cpp | 6 ++-
src/modinfodialog.cpp | 4 +-
src/modinfodialogconflicts.cpp | 24 ++++++++----
src/modinfodialogfiletree.cpp | 12 +++---
src/modinforegular.cpp | 5 ++-
src/modlist.cpp | 7 ++--
src/modlistsortproxy.cpp | 2 +-
src/nexusinterface.cpp | 8 ++--
src/nxmaccessmanager.cpp | 4 +-
src/organizercore.cpp | 41 +++++++++++---------
src/persistentcookiejar.cpp | 2 +-
src/plugincontainer.cpp | 14 +++----
src/pluginlist.cpp | 6 +--
src/profile.cpp | 16 ++++----
src/qtgroupingproxy.cpp | 87 +++++++++++++++++-------------------------
src/selfupdater.cpp | 18 ++++-----
src/settings.cpp | 7 ++--
src/usvfsconnector.cpp | 19 ++++-----
27 files changed, 213 insertions(+), 228 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/categories.cpp b/src/categories.cpp
index 7acf6ff5..12b18998 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -360,10 +360,10 @@ unsigned int CategoryFactory::resolveNexusID(int nexusID) const
{
std::map::const_iterator iter = m_NexusMap.find(nexusID);
if (iter != m_NexusMap.end()) {
- qDebug("nexus category id %d maps to internal %d", nexusID, iter->second);
+ log::debug("nexus category id {} maps to internal {}", nexusID, iter->second);
return iter->second;
} else {
- qDebug("nexus category id %d not mapped", nexusID);
+ log::debug("nexus category id {} not mapped", nexusID);
return 0U;
}
}
diff --git a/src/downloadlistwidget.cpp b/src/downloadlistwidget.cpp
index e2a6f321..85d27831 100644
--- a/src/downloadlistwidget.cpp
+++ b/src/downloadlistwidget.cpp
@@ -19,6 +19,7 @@ along with Mod Organizer. If not, see .
#include "downloadlist.h"
#include "downloadlistwidget.h"
+#include
#include
#include
#include
@@ -29,6 +30,8 @@ along with Mod Organizer. If not, see .
#include
#include
+using namespace MOBase;
+
void DownloadProgressDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QModelIndex sourceIndex = m_SortProxy->mapToSource(index);
@@ -286,7 +289,7 @@ void DownloadListWidget::issueDelete()
void DownloadListWidget::issueRemoveFromView()
{
- qDebug() << "removing from view: " << m_ContextRow;
+ log::debug("removing from view: {}", m_ContextRow);
emit removeDownload(m_ContextRow, false);
}
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 348b2108..d2556faa 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -352,7 +352,7 @@ void DownloadManager::refreshList()
}
}
if (orphans.size() > 0) {
- qDebug("%d orphaned meta files will be deleted", orphans.size());
+ log::debug("{} orphaned meta files will be deleted", orphans.size());
shellDelete(orphans, true);
}
@@ -379,7 +379,7 @@ void DownloadManager::refreshList()
}
//if (m_ActiveDownloads.size() != downloadsBefore) {
- qDebug("Downloads after refresh: %d", m_ActiveDownloads.size());
+ log::debug("Downloads after refresh: {}", m_ActiveDownloads.size());
//}
emit update(-1);
@@ -401,7 +401,7 @@ bool DownloadManager::addDownload(const QStringList &URLs, QString gameName,
}
QUrl preferredUrl = QUrl::fromEncoded(URLs.first().toLocal8Bit());
- qDebug("selected download url: %s", qUtf8Printable(preferredUrl.toString()));
+ log::debug("selected download url: {}", preferredUrl.toString());
QNetworkRequest request(preferredUrl);
request.setHeader(QNetworkRequest::UserAgentHeader, m_NexusInterface->getAccessManager()->userAgent());
return addDownload(m_NexusInterface->getAccessManager()->get(request), URLs, fileName, gameName, modID, fileID, fileInfo);
@@ -562,9 +562,9 @@ void DownloadManager::addNXMDownload(const QString &url)
break;
}
}
- qDebug("add nxm download: %s", qUtf8Printable(url));
+ log::debug("add nxm download: {}", url);
if (foundGame == nullptr) {
- qDebug("download requested for wrong game (game: %s, url: %s)", qUtf8Printable(m_ManagedGame->gameShortName()), qUtf8Printable(nxmInfo.game()));
+ log::debug("download requested for wrong game (game: {}, url: {})", m_ManagedGame->gameShortName(), nxmInfo.game());
QMessageBox::information(nullptr, tr("Wrong Game"), tr("The download link is for a mod for \"%1\" but this instance of MO "
"has been set up for \"%2\".").arg(nxmInfo.game()).arg(m_ManagedGame->gameShortName()), QMessageBox::Ok);
return;
@@ -572,13 +572,14 @@ void DownloadManager::addNXMDownload(const QString &url)
for (auto tuple : m_PendingDownloads) {
if (std::get<0>(tuple).compare(foundGame->gameShortName(), Qt::CaseInsensitive) == 0, std::get<1>(tuple) == nxmInfo.modId() && std::get<2>(tuple) == nxmInfo.fileId()) {
- QString debugStr("download requested is already queued (mod: %1, file: %2)");
- QString infoStr(tr("There is already a download queued for this file.\n\nMod %1\nFile %2"));
+ const auto infoStr =
+ tr("There is already a download queued for this file.\n\nMod %1\nFile %2")
+ .arg(nxmInfo.modId()).arg(nxmInfo.fileId());
- debugStr = debugStr.arg(nxmInfo.modId()).arg(nxmInfo.fileId());
- infoStr = infoStr.arg(nxmInfo.modId()).arg(nxmInfo.fileId());
+ log::debug(
+ "download requested is already queued (mod: {}, file: {})",
+ nxmInfo.modId(), nxmInfo.fileId());
- qDebug(qUtf8Printable(debugStr));
QMessageBox::information(nullptr, tr("Already Queued"), infoStr, QMessageBox::Ok);
return;
}
@@ -622,7 +623,7 @@ void DownloadManager::addNXMDownload(const QString &url)
infoStr = infoStr.arg(QStringLiteral(""));
}
- qDebug(qUtf8Printable(debugStr));
+ log::debug("{}", debugStr);
QMessageBox::information(nullptr, tr("Already Started"), infoStr, QMessageBox::Ok);
return;
}
@@ -883,7 +884,7 @@ void DownloadManager::resumeDownloadInt(int index)
if (info->m_State == STATE_ERROR) {
info->m_CurrentUrl = (info->m_CurrentUrl + 1) % info->m_Urls.count();
}
- qDebug("request resume from url %s", qUtf8Printable(info->currentURL()));
+ log::debug("request resume from url {}", info->currentURL());
QNetworkRequest request(QUrl::fromEncoded(info->currentURL().toLocal8Bit()));
request.setHeader(QNetworkRequest::UserAgentHeader, m_NexusInterface->getAccessManager()->userAgent());
if (info->m_State != STATE_ERROR) {
@@ -896,7 +897,7 @@ void DownloadManager::resumeDownloadInt(int index)
std::get<2>(info->m_SpeedDiff) = 0;
std::get<3>(info->m_SpeedDiff) = 0;
std::get<4>(info->m_SpeedDiff) = 0;
- qDebug("resume at %lld bytes", info->m_ResumePos);
+ log::debug("resume at {} bytes", info->m_ResumePos);
startDownload(m_NexusInterface->getAccessManager()->get(request), info, true);
}
emit update(index);
@@ -993,11 +994,11 @@ void DownloadManager::queryInfoMd5(int index)
downloadFile.setFileName(m_OrganizerCore->downloadsPath() + "\\" + info->m_FileName);
}
if (!downloadFile.exists()) {
- qDebug("Can't find download file %s", info->m_FileName);
+ log::debug("Can't find download file {}", info->m_FileName);
return;
}
if (!downloadFile.open(QIODevice::ReadOnly)) {
- qDebug("Can't open download file %s", info->m_FileName);
+ log::debug("Can't open download file {}", info->m_FileName);
return;
}
info->m_Hash = QCryptographicHash::hash(downloadFile.readAll(), QCryptographicHash::Md5);
@@ -1384,7 +1385,7 @@ void DownloadManager::setState(DownloadManager::DownloadInfo *info, DownloadMana
m_RequestIDs.insert(m_NexusInterface->requestFiles(info->m_FileInfo->gameName, info->m_FileInfo->modID, this, info->m_DownloadID, QString()));
} break;
case STATE_FETCHINGMODINFO_MD5: {
- qDebug(qUtf8Printable(QString("Searching %1 for MD5 of %2").arg(info->m_GamesToQuery[0]).arg(QString(info->m_Hash.toHex()))));
+ log::debug("Searching {} for MD5 of {}", info->m_GamesToQuery[0], QString(info->m_Hash.toHex()));
m_RequestIDs.insert(m_NexusInterface->requestInfoFromMd5(info->m_GamesToQuery[0], info->m_Hash, this, info->m_DownloadID, QString()));
} break;
case STATE_READY: {
@@ -1780,7 +1781,7 @@ void DownloadManager::nxmFileInfoFromMd5Available(QString gameName, QVariant use
if (chosenIdx < 0) {
chosenIdx = i; //intentional to not break in order to check other results
} else {
- qDebug("Multiple active files found during MD5 search. Defaulting to time stamps...");
+ log::debug("Multiple active files found during MD5 search. Defaulting to time stamps...");
chosenIdx = -1;
break;
}
diff --git a/src/executableslist.cpp b/src/executableslist.cpp
index 2408e8f3..3f76bb6f 100644
--- a/src/executableslist.cpp
+++ b/src/executableslist.cpp
@@ -166,7 +166,7 @@ std::vector ExecutablesList::getPluginExecutables(
void ExecutablesList::resetFromPlugin(MOBase::IPluginGame const *game)
{
- qDebug("resetting plugin executables");
+ log::debug("resetting plugin executables");
Q_ASSERT(game != nullptr);
@@ -295,7 +295,7 @@ std::optional ExecutablesList::makeNonConflictingTitle(
void ExecutablesList::upgradeFromCustom(MOBase::IPluginGame const *game)
{
- qDebug() << "upgrading executables list";
+ log::debug("upgrading executables list");
Q_ASSERT(game != nullptr);
diff --git a/src/filerenamer.cpp b/src/filerenamer.cpp
index 8835f52f..a97d7742 100644
--- a/src/filerenamer.cpp
+++ b/src/filerenamer.cpp
@@ -18,10 +18,10 @@ FileRenamer::FileRenamer(QWidget* parent, QFlags flags)
FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QString& newName)
{
- qDebug().nospace() << "renaming " << oldName << " to " << newName;
+ log::debug("renaming {} to {}", oldName, newName);
if (QFileInfo(newName).exists()) {
- qDebug().nospace() << newName << " already exists";
+ log::debug("{} already exists", newName);
// target file already exists, confirm replacement
auto answer = confirmReplace(newName);
@@ -29,24 +29,25 @@ FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QSt
switch (answer) {
case DECISION_SKIP: {
// user wants to skip this file
- qDebug().nospace() << "skipping " << oldName;
+ log::debug("skipping {}", oldName);
return RESULT_SKIP;
}
case DECISION_REPLACE: {
- qDebug().nospace() << "removing " << newName;
+ log::debug("removing {}", newName);
+
// user wants to replace the file, so remove it
if (!QFile(newName).remove()) {
log::warn("failed to remove '{}'", newName);
// removal failed, warn the user and allow canceling
if (!removeFailed(newName)) {
- qDebug().nospace() << "canceling " << oldName;
+ log::debug("canceling {}", oldName);
// user wants to cancel
return RESULT_CANCEL;
}
// ignore this file and continue on
- qDebug().nospace() << "skipping " << oldName;
+ log::debug("skipping {}", oldName);
return RESULT_SKIP;
}
@@ -56,7 +57,7 @@ FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QSt
case DECISION_CANCEL: // fall-through
default: {
// user wants to stop
- qDebug().nospace() << "canceling";
+ log::debug("canceling");
return RESULT_CANCEL;
}
}
@@ -70,17 +71,17 @@ FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QSt
// renaming failed, warn the user and allow canceling
if (!renameFailed(oldName, newName)) {
// user wants to cancel
- qDebug().nospace() << "canceling";
+ log::debug("canceling");
return RESULT_CANCEL;
}
// ignore this file and continue on
- qDebug().nospace() << "skipping " << oldName;
+ log::debug("skipping {}", oldName);
return RESULT_SKIP;
}
// everything worked
- qDebug().nospace() << "successfully renamed " << oldName << " to " << newName;
+ log::debug("successfully renamed {} to {}", oldName, newName);
return RESULT_OK;
}
@@ -88,12 +89,12 @@ FileRenamer::RenameDecision FileRenamer::confirmReplace(const QString& newName)
{
if (m_flags & REPLACE_ALL) {
// user wants to silently replace all
- qDebug().nospace() << "user has selected replace all";
+ log::debug("user has selected replace all");
return DECISION_REPLACE;
}
else if (m_flags & REPLACE_NONE) {
// user wants to silently skip all
- qDebug().nospace() << "user has selected replace none";
+ log::debug("user has selected replace none");
return DECISION_SKIP;
}
@@ -117,28 +118,28 @@ FileRenamer::RenameDecision FileRenamer::confirmReplace(const QString& newName)
switch (answer) {
case QMessageBox::Yes:
- qDebug().nospace() << "user wants to replace";
+ log::debug("user wants to replace");
return DECISION_REPLACE;
case QMessageBox::No:
- qDebug().nospace() << "user wants to skip";
+ log::debug("user wants to skip");
return DECISION_SKIP;
case QMessageBox::YesToAll:
- qDebug().nospace() << "user wants to replace all";
+ log::debug("user wants to replace all");
// remember the answer
m_flags |= REPLACE_ALL;
return DECISION_REPLACE;
case QMessageBox::NoToAll:
- qDebug().nospace() << "user wants to replace none";
+ log::debug("user wants to replace none");
// remember the answer
m_flags |= REPLACE_NONE;
return DECISION_SKIP;
case QMessageBox::Cancel: // fall-through
default:
- qDebug().nospace() << "user wants to cancel";
+ log::debug("user wants to cancel");
return DECISION_CANCEL;
}
}
@@ -158,12 +159,12 @@ bool FileRenamer::removeFailed(const QString& name)
if (answer == QMessageBox::Cancel) {
// user wants to stop
- qDebug().nospace() << "user wants to cancel";
+ log::debug("user wants to cancel");
return false;
}
// skip this one and continue
- qDebug().nospace() << "user wants to skip";
+ log::debug("user wants to skip");
return true;
}
@@ -182,11 +183,11 @@ bool FileRenamer::renameFailed(const QString& oldName, const QString& newName)
if (answer == QMessageBox::Cancel) {
// user wants to stop
- qDebug().nospace() << "user wants to cancel";
+ log::debug("user wants to cancel");
return false;
}
// skip this one and continue
- qDebug().nospace() << "user wants to skip";
+ log::debug("user wants to skip");
return true;
}
diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp
index fd971f47..89d0079f 100644
--- a/src/installationmanager.cpp
+++ b/src/installationmanager.cpp
@@ -398,7 +398,7 @@ bool InstallationManager::isSimpleArchiveTopLayer(const DirectoryTree::Node *nod
for (DirectoryTree::const_node_iterator iter = node->nodesBegin(); iter != node->nodesEnd(); ++iter) {
if ((bainStyle && InstallationTester::isTopLevelDirectoryBain((*iter)->getData().name)) ||
(!bainStyle && InstallationTester::isTopLevelDirectory((*iter)->getData().name))) {
- qDebug("%s on the top level", (*iter)->getData().name.toUtf8().constData());
+ log::debug("{} on the top level", (*iter)->getData().name.toQString());
return true;
}
}
@@ -424,7 +424,7 @@ DirectoryTree::Node *InstallationManager::getSimpleArchiveBase(DirectoryTree *da
(currentNode->numNodes() == 1)) {
currentNode = *currentNode->nodesBegin();
} else {
- qDebug("not a simple archive");
+ log::debug("not a simple archive");
return nullptr;
}
}
@@ -576,7 +576,7 @@ bool InstallationManager::doInstall(GuessedValue &modName, QString game
QString targetDirectory = QDir(m_ModsDirectory + "/" + modName).canonicalPath();
QString targetDirectoryNative = QDir::toNativeSeparators(targetDirectory);
- qDebug("installing to \"%s\"", qUtf8Printable(targetDirectoryNative));
+ log::debug("installing to \"{}\"", targetDirectoryNative);
m_InstallationProgress = new QProgressDialog(m_ParentWidget);
ON_BLOCK_EXIT([this] () {
@@ -764,7 +764,7 @@ bool InstallationManager::install(const QString &fileName,
if ((modID == 0) && (guessedModID != -1)) {
modID = guessedModID;
} else if (modID != guessedModID) {
- qDebug("passed mod id: %d, guessed id: %d", modID, guessedModID);
+ log::debug("passed mod id: {}, guessed id: {}", modID, guessedModID);
}
modName.update(guessedModName, GUESS_GOOD);
@@ -774,7 +774,7 @@ bool InstallationManager::install(const QString &fileName,
if (fileInfo.dir() == QDir(m_DownloadsDirectory)) {
m_CurrentFile = fileInfo.fileName();
}
- qDebug("using mod name \"%s\" (id %d) -> %s", qUtf8Printable(modName), modID, qUtf8Printable(m_CurrentFile));
+ log::debug("using mod name \"{}\" (id {}) -> {}", QString(modName), modID, m_CurrentFile);
//If there's an archive already open, close it. This happens with the bundle
//installer when it uncompresses a split archive, then finds it has a real archive
@@ -785,9 +785,9 @@ bool InstallationManager::install(const QString &fileName,
bool archiveOpen = m_ArchiveHandler->open(fileName,
new MethodCallback(this, &InstallationManager::queryPassword));
if (!archiveOpen) {
- qDebug("integrated archiver can't open %s: %s (%d)",
- qUtf8Printable(fileName),
- qUtf8Printable(getErrorString(m_ArchiveHandler->getLastError())),
+ log::debug("integrated archiver can't open {}: {} ({})",
+ fileName,
+ getErrorString(m_ArchiveHandler->getLastError()),
m_ArchiveHandler->getLastError());
}
ON_BLOCK_EXIT(std::bind(&InstallationManager::postInstallCleanup, this));
diff --git a/src/instancemanager.cpp b/src/instancemanager.cpp
index 55ef3fc8..fdc30e22 100644
--- a/src/instancemanager.cpp
+++ b/src/instancemanager.cpp
@@ -224,7 +224,7 @@ QString InstanceManager::chooseInstance(const QStringList &instanceList) const
selection.setWindowFlags(selection.windowFlags() | Qt::WindowStaysOnTopHint);
if (selection.exec() == QDialog::Rejected) {
- qDebug("rejected");
+ log::debug("rejected");
throw MOBase::MyException(QObject::tr("Canceled"));
}
diff --git a/src/loadmechanism.cpp b/src/loadmechanism.cpp
index 8f0529ce..4d6cebd4 100644
--- a/src/loadmechanism.cpp
+++ b/src/loadmechanism.cpp
@@ -23,6 +23,7 @@ along with Mod Organizer. If not, see .
#include
#include
#include
+#include
#include
#include
#include
@@ -141,7 +142,7 @@ void LoadMechanism::deactivateScriptExtender()
{
vfsDLLName = ToQString(AppConfig::vfs64DLLName());
}
- qDebug("USVFS DLL Name: " + vfsDLLName.toLatin1());
+ log::debug("USVFS DLL Name: {}", vfsDLLName);
if (vfsDLLName != "") {
if (QFile(pluginsDir.absoluteFilePath(vfsDLLName)).exists()) {
// remove dll from SE plugins directory
@@ -215,8 +216,8 @@ void LoadMechanism::activateScriptExtender()
QString targetPath = pluginsDir.absoluteFilePath(ToQString(vfsDLL));
QString vfsDLLPath = qApp->applicationDirPath() + "/" + QString::fromStdWString(vfsDLL);
- qDebug("DLL USVFS Target Path: " + targetPath.toLatin1());
- qDebug("DLL USVFS VFS DLL Path: " + vfsDLLPath.toLatin1());
+ log::debug("DLL USVFS Target Path: {}", targetPath);
+ log::debug("DLL USVFS VFS DLL Path: {}", vfsDLLPath);
QFile dllFile(targetPath);
@@ -297,17 +298,17 @@ void LoadMechanism::activate(EMechanism mechanism)
{
switch (mechanism) {
case LOAD_MODORGANIZER: {
- qDebug("Load Mechanism: Mod Organizer");
+ log::debug("Load Mechanism: Mod Organizer");
deactivateProxyDLL();
deactivateScriptExtender();
} break;
case LOAD_SCRIPTEXTENDER: {
- qDebug("Load Mechanism: ScriptExtender");
+ log::debug("Load Mechanism: ScriptExtender");
deactivateProxyDLL();
activateScriptExtender();
} break;
case LOAD_PROXYDLL: {
- qDebug("Load Mechanism: Proxy DLL");
+ log::debug("Load Mechanism: Proxy DLL");
deactivateScriptExtender();
activateProxyDLL();
} break;
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ad87ba03..e502bdb1 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -867,7 +867,7 @@ void MainWindow::updatePinnedExecutables()
exeAction->setStatusTip(exe.binaryInfo().filePath());
if (!connect(exeAction, SIGNAL(triggered()), this, SLOT(startExeAction()))) {
- qDebug("failed to connect trigger?");
+ log::debug("failed to connect trigger?");
}
if (m_linksSeparator) {
@@ -1711,7 +1711,7 @@ void MainWindow::on_profileBox_currentIndexChanged(int index)
// ensure the new index is valid
if (index < 0 || index >= ui->profileBox->count()) {
- qDebug("invalid profile index, using last profile");
+ log::debug("invalid profile index, using last profile");
ui->profileBox->setCurrentIndex(ui->profileBox->count() - 1);
}
@@ -2060,7 +2060,7 @@ void MainWindow::refreshSaveList()
QDir savesDir = currentSavesDir();
savesDir.setNameFilters(filters);
- qDebug("reading save games from %s", qUtf8Printable(savesDir.absolutePath()));
+ log::debug("reading save games from {}", savesDir.absolutePath());
QFileInfoList files = savesDir.entryInfoList(QDir::Files, QDir::Time);
for (const QFileInfo &file : files) {
@@ -2261,15 +2261,6 @@ void MainWindow::fixCategories()
void MainWindow::setupNetworkProxy(bool activate)
{
QNetworkProxyFactory::setUseSystemConfiguration(activate);
-/* QNetworkProxyQuery query(QUrl("http://www.google.com"), QNetworkProxyQuery::UrlRequest);
- query.setProtocolTag("http");
- QList proxies = QNetworkProxyFactory::systemProxyForQuery(query);
- if ((proxies.size() > 0) && (proxies.at(0).type() != QNetworkProxy::NoProxy)) {
- qDebug("Using proxy: %s", qUtf8Printable(proxies.at(0).hostName()));
- QNetworkProxy::setApplicationProxy(proxies[0]);
- } else {
- qDebug("Not using proxy");
- }*/
}
@@ -2456,7 +2447,7 @@ void MainWindow::unlock()
{
//If you come through here with a null lock pointer, it's a bug!
if (m_LockDialog == nullptr) {
- qDebug("Unlocking main window when already unlocked");
+ log::debug("Unlocking main window when already unlocked");
return;
}
--m_LockCount;
@@ -3259,7 +3250,7 @@ void MainWindow::displayModInformation(
ModInfo::Ptr modInfo, unsigned int modIndex, ModInfoTabIDs tabID)
{
if (!m_OrganizerCore.modList()->modInfoAboutToChange(modInfo)) {
- qDebug("A different mod information dialog is open. If this is incorrect, please restart MO");
+ log::debug("A different mod information dialog is open. If this is incorrect, please restart MO");
return;
}
std::vector flags = modInfo->getFlags();
@@ -4325,7 +4316,7 @@ void MainWindow::addRemoveCategories_MenuHandler() {
int maxRow = -1;
for (const QPersistentModelIndex &idx : selected) {
- qDebug("change categories on: %s", qUtf8Printable(idx.data().toString()));
+ log::debug("change categories on: {}", idx.data().toString());
QModelIndex modIdx = mapToModel(m_OrganizerCore.modList(), idx);
if (modIdx.row() != m_ContextIdx.row()) {
addRemoveCategoriesFromMenu(menu, modIdx.row(), m_ContextIdx.row());
@@ -4407,7 +4398,7 @@ void MainWindow::saveArchiveList()
}
}
if (archiveFile.commitIfDifferent(m_ArchiveListHash)) {
- qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(m_OrganizerCore.currentProfile()->getArchivesFileName())));
+ log::debug("{} saved", QDir::toNativeSeparators(m_OrganizerCore.currentProfile()->getArchivesFileName()));
}
} else {
log::warn("archive list not initialised");
@@ -5364,7 +5355,7 @@ void MainWindow::installTranslator(const QString &name)
QString fileName = name + "_" + m_CurrentLanguage;
if (!translator->load(fileName, qApp->applicationDirPath() + "/translations")) {
if (m_CurrentLanguage.contains(QRegularExpression("^.*_(EN|en)(-.*)?$"))) {
- qDebug("localization file %s not found", qUtf8Printable(fileName));
+ log::debug("localization file %s not found", fileName);
} // we don't actually expect localization files for English (en, en-us, en-uk, and any variation thereof)
}
@@ -5389,7 +5380,7 @@ void MainWindow::languageChange(const QString &newLanguage)
installTranslator(QFileInfo(fileName).baseName());
}
ui->retranslateUi(this);
- qDebug("loaded language %s", qUtf8Printable(newLanguage));
+ log::debug("loaded language {}", newLanguage);
ui->profileBox->setItemText(0, QObject::tr(""));
@@ -5634,7 +5625,7 @@ void MainWindow::openDataOriginExplorer_clicked()
const auto fullPath = m_ContextItem->data(0, Qt::UserRole).toString();
- qDebug().nospace() << "opening in explorer: " << fullPath;
+ log::debug("opening in explorer: {}", fullPath);
shell::ExploreFile(fullPath);
}
@@ -6120,7 +6111,7 @@ void MainWindow::nxmDownloadURLs(QString, int, int, QVariant, QVariant resultDat
void MainWindow::nxmRequestFailed(QString gameName, int modID, int, QVariant, int, QNetworkReply::NetworkError error, const QString &errorString)
{
if (error == QNetworkReply::ContentAccessDenied || error == QNetworkReply::ContentNotFoundError) {
- qDebug(qUtf8Printable(tr("Mod ID %1 no longer seems to be available on Nexus.").arg(modID)));
+ log::debug("{}", tr("Mod ID %1 no longer seems to be available on Nexus.").arg(modID));
} else {
MessageDialog::showMessage(tr("Request to Nexus failed: %1").arg(errorString), this);
}
@@ -6587,7 +6578,7 @@ void MainWindow::processLOOTOut(const std::string &lootOut, std::string &errorMe
std::string dependency(match[2].first, match[2].second);
m_OrganizerCore.pluginList()->addInformation(modName.c_str(), tr("incompatible with \"%1\"").arg(dependency.c_str()));
} else {
- qDebug("[loot] %s", line.c_str());
+ log::debug("[loot] {}", line);
}
}
}
@@ -6632,7 +6623,7 @@ void MainWindow::on_bossButton_clicked()
try {
m_OrganizerCore.prepareVFS();
} catch (const UsvfsConnectorException &e) {
- qDebug(e.what());
+ log::debug("{}", e.what());
return;
} catch (const std::exception &e) {
QMessageBox::warning(qApp->activeWindow(), tr("Error"), e.what());
@@ -6662,7 +6653,7 @@ void MainWindow::on_bossButton_clicked()
if (isJobHandle) {
if (::QueryInformationJobObject(loot, JobObjectBasicProcessIdList, &info, sizeof(info), &retLen) > 0) {
if (info.NumberOfProcessIdsInList == 0) {
- qDebug("no more processes in job");
+ log::debug("no more processes in job");
break;
} else {
if (lastProcessID != info.ProcessIdList[0]) {
diff --git a/src/messagedialog.cpp b/src/messagedialog.cpp
index 6c6de3e7..78a5dd4d 100644
--- a/src/messagedialog.cpp
+++ b/src/messagedialog.cpp
@@ -19,10 +19,13 @@ along with Mod Organizer. If not, see .
#include "messagedialog.h"
#include "ui_messagedialog.h"
+#include
#include
#include
#include
+using namespace MOBase;
+
MessageDialog::MessageDialog(const QString &text, QWidget *reference) :
QDialog(reference),
ui(new Ui::MessageDialog)
@@ -81,7 +84,8 @@ void MessageDialog::resizeEvent(QResizeEvent *event)
void MessageDialog::showMessage(const QString &text, QWidget *reference, bool bringToFront)
{
- qDebug("%s", qUtf8Printable(text));
+ log::debug("{}", text);
+
if (reference != nullptr) {
if (bringToFront || (qApp->activeWindow() != nullptr)) {
MessageDialog *dialog = new MessageDialog(text, reference);
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index a7a6b0d7..4b1e2f76 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -556,9 +556,7 @@ void ModInfoDialog::switchToTab(ModInfoTabIDs id)
}
// this could happen if the tab is not visible right now
- qDebug()
- << "can't switch to tab ID " << static_cast(id)
- << ", not available";
+ log::debug("can't switch to tab ID {}, not available", static_cast(id));
}
MOShared::FilesOrigin* ModInfoDialog::getOrigin()
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index d16d548c..9a5d9d8d 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -438,10 +438,18 @@ void ConflictsTab::changeItemsVisibility(QTreeView* tree, bool visible)
const auto n = smallSelectionSize(tree);
- qDebug().nospace().noquote()
- << (visible ? "unhiding" : "hiding") << " "
- << (n > max_small_selection ? "a lot of" : QString("%1").arg(n))
- << " conflict files";
+ // logging
+ {
+ const QString action = (visible ? "unhiding" : "hiding");
+
+ QString files;
+ if (n > max_small_selection)
+ files = "a lot of";
+ else
+ files = QString("%1").arg(n);
+
+ log::debug("{} {} conflict files", action, files);
+ }
QFlags flags =
(visible ? FileRenamer::UNHIDE : FileRenamer::HIDE);
@@ -467,7 +475,7 @@ void ConflictsTab::changeItemsVisibility(QTreeView* tree, bool visible)
if (visible) {
if (!item->canUnhide()) {
- qDebug().nospace() << "cannot unhide " << item->relativeName() << ", skipping";
+ log::debug("cannot unhide {}, skipping", item->relativeName());
return true;
}
@@ -475,7 +483,7 @@ void ConflictsTab::changeItemsVisibility(QTreeView* tree, bool visible)
} else {
if (!item->canHide()) {
- qDebug().nospace() << "cannot hide " << item->relativeName() << ", skipping";
+ log::debug("cannot hide {}, skipping", item->relativeName());
return true;
}
@@ -504,10 +512,10 @@ void ConflictsTab::changeItemsVisibility(QTreeView* tree, bool visible)
return true;
});
- qDebug().nospace() << (visible ? "unhiding" : "hiding") << " conflict files done";
+ log::debug("{} conflict files done", (visible ? "unhiding" : "hiding"));
if (changed) {
- qDebug().nospace() << "triggering refresh";
+ log::debug("triggering refresh");
if (origin()) {
emitOriginModified();
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index 219ddf35..207c792d 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -257,9 +257,9 @@ void FileTreeTab::changeVisibility(bool visible)
bool changed = false;
bool stop = false;
- qDebug().nospace()
- << (visible ? "unhiding" : "hiding") << " "
- << selection.size() << " filetree files";
+ log::debug(
+ "{} {} filetree files",
+ (visible ? "unhiding" : "hiding"), selection.size());
QFlags flags =
(visible ? FileRenamer::UNHIDE : FileRenamer::HIDE);
@@ -280,13 +280,13 @@ void FileTreeTab::changeVisibility(bool visible)
if (visible) {
if (!canUnhideFile(false, path)) {
- qDebug().nospace() << "cannot unhide " << path << ", skipping";
+ log::debug("cannot unhide {}, skipping", path);
continue;
}
result = unhideFile(renamer, path);
} else {
if (!canHideFile(false, path)) {
- qDebug().nospace() << "cannot hide " << path << ", skipping";
+ log::debug("cannot hide {}, skipping", path);
continue;
}
result = hideFile(renamer, path);
@@ -312,7 +312,7 @@ void FileTreeTab::changeVisibility(bool visible)
}
}
- qDebug().nospace() << (visible ? "unhiding" : "hiding") << " filetree files done";
+ log::debug("{} filetree files done", (visible ? "unhiding" : "hiding"));
if (changed) {
if (origin()) {
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 074fa9e2..6e11befc 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -883,8 +883,9 @@ std::vector ModInfoRegular::getIniTweaks() const
int numTweaks = metaFile.beginReadArray("INI Tweaks");
if (numTweaks != 0) {
- qDebug("%d active ini tweaks in %s",
- numTweaks, QDir::toNativeSeparators(metaFileName).toUtf8().constData());
+ log::debug(
+ "{} active ini tweaks in {}",
+ numTweaks, QDir::toNativeSeparators(metaFileName));
}
for (int i = 0; i < numTweaks; ++i) {
diff --git a/src/modlist.cpp b/src/modlist.cpp
index 6ebd0e8b..39f51d72 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -1013,9 +1013,8 @@ bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &pa
QString overwriteName = ModInfo::getByIndex(overwriteIndex)->name();
for (auto url : mimeData->urls()) {
- //qDebug("URL drop requested: %s -> %s", qUtf8Printable(url.url()), qUtf8Printable(modDir.canonicalPath()));
if (!url.isLocalFile()) {
- qDebug("URL drop ignored: \"%s\" is not a local file", qUtf8Printable(url.url()));
+ log::debug("URL drop ignored: \"{}\" is not a local file", url.url());
continue;
}
@@ -1035,7 +1034,7 @@ bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &pa
originName = overwriteName;
relativePath = overwriteDir.relativeFilePath(sourceFile);
} else {
- qDebug("URL drop ignored: \"%s\" is not a known file to MO", qUtf8Printable(sourceFile));
+ log::debug("URL drop ignored: \"{}\" is not a known file to MO", sourceFile);
continue;
}
@@ -1047,7 +1046,7 @@ bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &pa
if (sourceList.count()) {
if (!shellMove(sourceList, targetList)) {
- qDebug("Failed to move file (error %d)", ::GetLastError());
+ log::debug("Failed to move file (error {})", ::GetLastError());
return false;
}
}
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index d330e0c2..77ffad96 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -482,7 +482,7 @@ bool ModListSortProxy::filterAcceptsRow(int row, const QModelIndex &parent) cons
QModelIndex idx = sourceModel()->index(row, 0, parent);
if (!idx.isValid()) {
- qDebug("invalid mod index");
+ log::debug("invalid mod index");
return false;
}
if (sourceModel()->hasChildren(idx)) {
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index c797aed6..0e2bb45b 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -316,15 +316,15 @@ void NexusInterface::interpretNexusFileName(const QString &fileName, QString &mo
} else {
modID = strtol(candidate.c_str(), nullptr, 10);
}
- qDebug("mod id guessed: %s -> %d", qUtf8Printable(fileName), modID);
+ log::debug("mod id guessed: {} -> {}", fileName, modID);
} else if (std::regex_search(fileNameUTF8.constData(), result, simpleexp)) {
- qDebug("simple expression matched, using name only");
+ log::debug("simple expression matched, using name only");
modName = QString::fromUtf8(result[1].str().c_str());
modName = modName.replace('_', ' ').trimmed();
modID = -1;
} else {
- qDebug("no expression matched!");
+ log::debug("no expression matched!");
modName.clear();
modID = -1;
}
@@ -860,7 +860,7 @@ void NexusInterface::requestFinished(std::list::iterator iter)
if (nexusError.length() == 0) {
nexusError = tr("empty response");
}
- qDebug("nexus error: %s", qUtf8Printable(nexusError));
+ log::debug("nexus error: {}", nexusError);
emit nxmRequestFailed(iter->m_GameName, iter->m_ModID, iter->m_FileID, iter->m_UserData, iter->m_ID, reply->error(), nexusError);
} else {
QJsonDocument responseDoc = QJsonDocument::fromJson(data);
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp
index 9f40894e..fd1dc0c1 100644
--- a/src/nxmaccessmanager.cpp
+++ b/src/nxmaccessmanager.cpp
@@ -600,9 +600,9 @@ void NXMAccessManager::showCookies() const
{
QUrl url(NexusBaseUrl + "/");
for (const QNetworkCookie &cookie : cookieJar()->cookiesForUrl(url)) {
- qDebug("%s - %s (expires: %s)",
+ log::debug("{} - {} (expires: {})",
cookie.name().constData(), cookie.value().constData(),
- qUtf8Printable(cookie.expirationDate().toString()));
+ cookie.expirationDate().toString());
}
}
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 725371e9..f6802673 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -89,9 +89,9 @@ static bool isOnline()
if (addresses.count() == 0) {
continue;
}
- qDebug("interface %s seems to be up (address: %s)",
- qUtf8Printable(iter->humanReadableName()),
- qUtf8Printable(addresses[0].ip().toString()));
+ log::debug("interface {} seems to be up (address: {})",
+ iter->humanReadableName(),
+ addresses[0].ip().toString());
connected = true;
}
}
@@ -543,7 +543,7 @@ void OrganizerCore::setUserInterface(IUserInterface *userInterface,
if (isOnline() && !m_Settings.offlineMode()) {
m_Updater.testForUpdate();
} else {
- qDebug("user doesn't seem to be connected to the internet");
+ log::debug("user doesn't seem to be connected to the internet");
}
}
}
@@ -605,7 +605,7 @@ bool OrganizerCore::nexusApi(bool retry)
QString apiKey;
if (m_Settings.getNexusApiKey(apiKey)) {
// credentials stored or user entered them manually
- qDebug("attempt to verify nexus api key");
+ log::debug("attempt to verify nexus api key");
accessManager->apiCheck(apiKey);
return true;
} else {
@@ -627,7 +627,7 @@ void OrganizerCore::startMOUpdate()
void OrganizerCore::downloadRequestedNXM(const QString &url)
{
- qDebug("download requested: %s", qUtf8Printable(url));
+ log::debug("download requested: {}", url);
if (nexusApi()) {
m_PendingDownloads.append(url);
} else {
@@ -1208,7 +1208,9 @@ QString OrganizerCore::findJavaInstallation(const QString& jarFile)
if (::FindExecutableW(jarFileW.c_str(), nullptr, buffer) > (HINSTANCE)32) {
DWORD binaryType = 0UL;
if (!::GetBinaryTypeW(buffer, &binaryType)) {
- qDebug("failed to determine binary type of \"%ls\": %lu", buffer, ::GetLastError());
+ log::debug(
+ "failed to determine binary type of \"{}\": {}",
+ QString::fromWCharArray(buffer), ::GetLastError());
} else if (binaryType == SCS_32BIT_BINARY || binaryType == SCS_64BIT_BINARY) {
return QString::fromWCharArray(buffer);
}
@@ -1459,7 +1461,7 @@ void OrganizerCore::spawnBinary(const QFileInfo &binary,
// need to remove our stored load order because it may be outdated if a foreign tool changed the
// file time. After removing that file, refreshESPList will use the file time as the order
if (managedGame()->loadOrderMechanism() == IPluginGame::LoadOrderMechanism::FileTime) {
- qDebug("removing loadorder.txt");
+ log::debug("removing loadorder.txt");
QFile::remove(m_CurrentProfile->getLoadOrderFileName());
}
refreshDirectoryStructure();
@@ -1627,7 +1629,7 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
m_USVFS.updateForcedLibraries(forcedLibraries);
} catch (const UsvfsConnectorException &e) {
- qDebug(e.what());
+ log::debug(e.what());
return INVALID_HANDLE_VALUE;
} catch (const std::exception &e) {
QMessageBox::warning(window, tr("Error"), e.what());
@@ -1694,17 +1696,16 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
.arg(QDir::toNativeSeparators(cwdPath),
QDir::toNativeSeparators(binPath), arguments);
- qDebug() << "Spawning proxyed process <" << cmdline << ">";
+ log::debug("Spawning proxyed process <{}>", cmdline);
return startBinary(QFileInfo(QCoreApplication::applicationFilePath()),
cmdline, QCoreApplication::applicationDirPath(), true);
} else {
- qDebug() << "Spawning direct process <" << binPath << "," << arguments << "," << cwdPath << ">";
+ log::debug("Spawning direct process <{}, {}, {}>", binPath, arguments, cwdPath);
return startBinary(binary, arguments, currentDirectory, true);
}
} else {
- qDebug("start of \"%s\" canceled by plugin",
- qUtf8Printable(binary.absoluteFilePath()));
+ log::debug("start of \"{}\" canceled by plugin", binary.absoluteFilePath());
return INVALID_HANDLE_VALUE;
}
}
@@ -1872,9 +1873,11 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode, IL
processName += QString(" (%1)").arg(currentPID);
if (uilock)
uilock->setProcessName(processName);
- qDebug() << "Waiting for"
- << (originalHandle ? "spawned" : "usvfs")
- << "process completion :" << qUtf8Printable(processName);
+
+ log::debug(
+ "Waiting for {} process completion: {}",
+ (originalHandle ? "spawned" : "usvfs"), processName);
+
newHandle = false;
}
@@ -1943,11 +1946,11 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode, IL
}
if (res == WAIT_OBJECT_0)
- qDebug() << "Waiting for process completion successfull";
+ log::debug("Waiting for process completion successfull");
else if (uiunlocked)
- qDebug() << "Waiting for process completion aborted by UI";
+ log::debug("Waiting for process completion aborted by UI");
else
- qDebug() << "Waiting for process completion not successfull :" << res;
+ log::debug("Waiting for process completion not successfull: {}", res);
if (handle != INVALID_HANDLE_VALUE)
::CloseHandle(handle);
diff --git a/src/persistentcookiejar.cpp b/src/persistentcookiejar.cpp
index 670bf382..8657f356 100644
--- a/src/persistentcookiejar.cpp
+++ b/src/persistentcookiejar.cpp
@@ -13,7 +13,7 @@ PersistentCookieJar::PersistentCookieJar(const QString &fileName, QObject *paren
}
PersistentCookieJar::~PersistentCookieJar() {
- qDebug("save %s", qUtf8Printable(m_FileName));
+ log::debug("save {}", m_FileName);
save();
}
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index 36daec52..62cdff1e 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -91,7 +91,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
{ // generic treatment for all plugins
IPlugin *pluginObj = qobject_cast(plugin);
if (pluginObj == nullptr) {
- qDebug("not an IPlugin");
+ log::debug("not an IPlugin");
return false;
}
plugin->setProperty("filename", fileName);
@@ -164,7 +164,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
for (QObject *proxiedPlugin : matchingPlugins) {
if (proxiedPlugin != nullptr) {
if (registerPlugin(proxiedPlugin, pluginName)) {
- qDebug("loaded plugin \"%s\"", qUtf8Printable(QFileInfo(pluginName).fileName()));
+ log::debug("loaded plugin \"{}\"", QFileInfo(pluginName).fileName());
}
else {
log::warn(
@@ -191,7 +191,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
}
}
- qDebug("no matching plugin interface");
+ log::debug("no matching plugin interface");
return false;
}
@@ -225,7 +225,7 @@ void PluginContainer::unloadPlugins()
QPluginLoader *loader = m_PluginLoaders.back();
m_PluginLoaders.pop_back();
if ((loader != nullptr) && !loader->unload()) {
- qDebug("failed to unload %s: %s", qUtf8Printable(loader->fileName()), qUtf8Printable(loader->errorString()));
+ log::debug("failed to unload {}: {}", loader->fileName(), loader->errorString());
}
delete loader;
}
@@ -274,13 +274,13 @@ void PluginContainer::loadPlugins()
loadCheck.open(QIODevice::WriteOnly);
QString pluginPath = qApp->applicationDirPath() + "/" + ToQString(AppConfig::pluginPath());
- qDebug("looking for plugins in %s", QDir::toNativeSeparators(pluginPath).toUtf8().constData());
+ log::debug("looking for plugins in {}", QDir::toNativeSeparators(pluginPath));
QDirIterator iter(pluginPath, QDir::Files | QDir::NoDotAndDotDot);
while (iter.hasNext()) {
iter.next();
if (m_Organizer->settings().pluginBlacklisted(iter.fileName())) {
- qDebug("plugin \"%s\" blacklisted", qUtf8Printable(iter.fileName()));
+ log::debug("plugin \"{}\" blacklisted", iter.fileName());
continue;
}
loadCheck.write(iter.fileName().toUtf8());
@@ -296,7 +296,7 @@ void PluginContainer::loadPlugins()
pluginName, pluginLoader->errorString());
} else {
if (registerPlugin(pluginLoader->instance(), pluginName)) {
- qDebug("loaded plugin \"%s\"", qUtf8Printable(QFileInfo(pluginName).fileName()));
+ log::debug("loaded plugin \"{}\"", QFileInfo(pluginName).fileName());
m_PluginLoaders.push_back(pluginLoader.release());
} else {
m_FailedPlugins.push_back(pluginName);
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index e436d7f6..6718641f 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -481,7 +481,7 @@ void PluginList::writeLockedOrder(const QString &fileName) const
file->write(QString("%1|%2\r\n").arg(iter->first).arg(iter->second).toUtf8());
}
file.commit();
- qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(fileName)));
+ log::debug("{} saved", QDir::toNativeSeparators(fileName));
}
@@ -506,7 +506,7 @@ void PluginList::saveTo(const QString &lockedOrderFileName
}
}
if (deleterFile.commitIfDifferent(m_LastSaveHash[deleterFileName])) {
- qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(deleterFileName)));
+ log::debug("{} saved", QDir::toNativeSeparators(deleterFileName));
}
} else if (QFile::exists(deleterFileName)) {
shellDelete(QStringList() << deleterFileName);
@@ -521,7 +521,7 @@ bool PluginList::saveLoadOrder(DirectoryEntry &directoryStructure)
return true;
}
- qDebug("setting file times on esps");
+ log::debug("setting file times on esps");
for (ESPInfo &esp : m_ESPs) {
std::wstring espName = ToWString(esp.m_Name);
diff --git a/src/profile.cpp b/src/profile.cpp
index 555de89a..27616986 100644
--- a/src/profile.cpp
+++ b/src/profile.cpp
@@ -40,7 +40,6 @@ along with Mod Organizer. If not, see .
#include
#include
#include // for QStringList
-#include // for qDebug, qWarning, etc
#include // for qUtf8Printable
#include
#include
@@ -232,7 +231,6 @@ void Profile::doWriteModlist()
}
for (std::map::const_reverse_iterator iter = m_ModIndexByPriority.crbegin(); iter != m_ModIndexByPriority.crend(); iter++ ) {
- //qDebug(QString("write mod %1 to priority %2").arg(iter->first).arg(iter->second).toLocal8Bit());
// the priority order was inverted on load so it has to be inverted again
unsigned int index = iter->second;
if (index != UINT_MAX) {
@@ -253,7 +251,7 @@ void Profile::doWriteModlist()
}
if (file.commitIfDifferent(m_LastModlistHash)) {
- qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(fileName)));
+ log::debug("{} saved", QDir::toNativeSeparators(fileName));
}
} catch (const std::exception &e) {
reportError(tr("failed to write mod list: %1").arg(e.what()));
@@ -292,7 +290,7 @@ void Profile::createTweakedIniFile()
.arg(formatSystemMessageQ(e)));
}
- qDebug("%s saved", qUtf8Printable(QDir::toNativeSeparators(tweakedIni)));
+ log::debug("{} saved", QDir::toNativeSeparators(tweakedIni));
}
// static
@@ -364,8 +362,9 @@ void Profile::renameModInList(QFile &modList, const QString &oldName, const QStr
}
if (renamed)
- qDebug("Renamed %d \"%s\" mod to \"%s\" in %s",
- renamed, qUtf8Printable(oldName), qUtf8Printable(newName), qUtf8Printable(modList.fileName()));
+ log::debug(
+ "Renamed {} \"{}\" mod to \"{}\" in {}",
+ renamed, oldName, newName, modList.fileName());
}
void Profile::refreshModStatus()
@@ -431,8 +430,9 @@ void Profile::refreshModStatus()
modStatusModified = true;
}
} else {
- qDebug("mod not found: \"%s\" (profile \"%s\")",
- qUtf8Printable(modName), qUtf8Printable(m_Directory.path()));
+ log::debug(
+ "mod not found: \"{}\" (profile \"{}\")",
+ modName, m_Directory.path());
// need to rewrite the modlist to fix this
modStatusModified = true;
}
diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp
index 5fcb84d3..ff9539d7 100644
--- a/src/qtgroupingproxy.cpp
+++ b/src/qtgroupingproxy.cpp
@@ -18,11 +18,14 @@
#include "qtgroupingproxy.h"
+#include
#include
#include
#include
+using namespace MOBase;
+
/*!
\class QtGroupingProxy
\brief The QtGroupingProxy class will group source model rows by adding a new top tree-level.
@@ -86,7 +89,6 @@ QtGroupingProxy::setGroupedColumn( int groupedColumn )
QList
QtGroupingProxy::belongsTo( const QModelIndex &idx )
{
- //qDebug() << __FILE__ << __FUNCTION__;
QList rowDataList;
//get all the data for this index from the model
@@ -106,7 +108,7 @@ QtGroupingProxy::belongsTo( const QModelIndex &idx )
i.next();
int role = i.key();
QVariant variant = i.value();
- // qDebug() << "role " << role << " : (" << variant.typeName() << ") : "<< variant;
+
if ( variant.type() == QVariant::List )
{
//a list of variants get's expanded to multiple rows
@@ -162,7 +164,7 @@ QtGroupingProxy::buildTree()
m_parentCreateList.clear();
int max = sourceModel()->rowCount( m_rootNode );
- //qDebug() << QString("building tree with %1 leafs.").arg( max );
+
//WARNING: these have to be added in order because the addToGroups function is optimized for
//modelRowsInserted(). Failure to do so will result in wrong data shown in the view at best.
for( int row = 0; row < max; row++ )
@@ -232,9 +234,6 @@ QtGroupingProxy::addSourceRow( const QModelIndex &idx )
int updatedGroup = -1;
if( !data.isEmpty() )
{
- // qDebug() << QString("index %1 belongs to group %2").arg( row )
- // .arg( data[0][Qt::DisplayRole].toString() );
-
foreach( const RowData &cachedData, m_groupMaps )
{
//when this matches the index belongs to an existing group
@@ -316,21 +315,12 @@ QtGroupingProxy::indexOfParentCreate( const QModelIndex &parent ) const
pc.row = parent.row();
m_parentCreateList << pc;
- //dumpParentCreateList();
- // qDebug() << QString( "m_parentCreateList: (%1)" ).arg( m_parentCreateList.size() );
- // for( int i = 0 ; i < m_parentCreateList.size() ; i++ )
- // {
- // qDebug() << i << " : " << m_parentCreateList[i].parentCreateIndex <<
- // " | " << m_parentCreateList[i].row;
- // }
-
return m_parentCreateList.size() - 1;
}
QModelIndex
QtGroupingProxy::index( int row, int column, const QModelIndex &parent ) const
{
- // qDebug() << "index requested for: (" << row << "," << column << "), " << parent;
if( !hasIndex(row, column, parent) ) {
return QModelIndex();
}
@@ -350,17 +340,15 @@ QtGroupingProxy::index( int row, int column, const QModelIndex &parent ) const
QModelIndex
QtGroupingProxy::parent( const QModelIndex &index ) const
{
- //qDebug() << "parent: " << index;
if( !index.isValid() )
return QModelIndex();
int parentCreateIndex = index.internalId();
- //qDebug() << "parentCreateIndex: " << parentCreateIndex;
if( parentCreateIndex == -1 || parentCreateIndex >= m_parentCreateList.count() )
return QModelIndex();
struct ParentCreate pc = m_parentCreateList[parentCreateIndex];
- //qDebug() << "parentCreate: (" << pc.parentCreateIndex << "," << pc.row << ")";
+
//only items at column 0 have children
return createIndex( pc.row, 0, pc.parentCreateIndex );
}
@@ -368,12 +356,10 @@ QtGroupingProxy::parent( const QModelIndex &index ) const
int
QtGroupingProxy::rowCount( const QModelIndex &index ) const
{
- //qDebug() << "rowCount: " << index;
if( !index.isValid() )
{
//the number of top level groups + the number of non-grouped items
int rows = m_groupMaps.count() + m_groupHash.value( std::numeric_limits::max() ).count();
- //qDebug() << rows << " in root group";
return rows;
}
@@ -382,12 +368,10 @@ QtGroupingProxy::rowCount( const QModelIndex &index ) const
{
qint64 groupIndex = index.row();
int rows = m_groupHash.value( groupIndex ).count();
- //qDebug() << rows << " in group " << m_groupMaps[groupIndex];
return rows;
} else {
QModelIndex originalIndex = mapToSource( index );
int rowCount = sourceModel()->rowCount( originalIndex );
- //qDebug() << "original item: rowCount == " << rowCount;
return rowCount;
}
}
@@ -447,7 +431,7 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
{
if( !index.isValid() )
return QVariant();
- // qDebug() << __FUNCTION__ << index << " role: " << role;
+
int row = index.row();
int column = index.column();
if( isGroup( index ) )
@@ -495,11 +479,9 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
}
}
- //qDebug() << __FUNCTION__ << "is a group";
//use cached or precalculated data
if( m_groupMaps[row][column].contains( Qt::DisplayRole ) )
{
- // qDebug() << "Using cached data for " << row << "x" << column << ": " << m_groupMaps[row][column].value(Qt::DisplayRole).toString();
if ((m_flags & FLAG_NOGROUPNAME) != 0) {
QModelIndex parentIndex = this->index( row, 0, index.parent() );
QModelIndex childIndex = this->index( 0, column, parentIndex );
@@ -526,18 +508,17 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
function = mapToSource(childIndex).data(m_aggregateRole).toInt();
}
- //qDebug() << __FUNCTION__ << "childCount: " << childCount;
//Need a parentIndex with column == 0 because only those have children.
QModelIndex parentIndex = this->index( row, 0, index.parent() );
for( int childRow = 0; childRow < childCount; childRow++ )
{
QModelIndex childIndex = this->index( childRow, column, parentIndex );
QVariant data = mapToSource( childIndex ).data( role );
- //qDebug() << __FUNCTION__ << data << QVariant::typeToName(data.type());
+
if( data.isValid() && !variantsOfChildren.contains( data ) )
variantsOfChildren << data;
}
- //qDebug() << "gathered this data from children: " << variantsOfChildren;
+
//saving in cache
ItemData roleMap = m_groupMaps[row].value( column );
foreach( const QVariant &variant, variantsOfChildren )
@@ -547,8 +528,6 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
}
}
- //qDebug() << QString("roleMap[%1]:").arg(role) << roleMap[role];
-
if( variantsOfChildren.count() == 0 )
return QVariant();
@@ -621,34 +600,30 @@ QtGroupingProxy::isGroup( const QModelIndex &index ) const
QModelIndex
QtGroupingProxy::mapToSource( const QModelIndex &index ) const
{
- //qDebug() << "mapToSource: " << index;
if( !index.isValid() ) {
return m_rootNode;
}
if( isGroup( index ) )
{
- //qDebug() << "is a group: " << index.data( Qt::DisplayRole ).toString();
return m_rootNode;
}
QModelIndex proxyParent = index.parent();
- //qDebug() << "parent: " << proxyParent;
QModelIndex originalParent = mapToSource( proxyParent );
- //qDebug() << "originalParent: " << originalParent;
+
int originalRow = index.row();
if( originalParent == m_rootNode )
{
int indexInGroup = index.row();
if( !proxyParent.isValid() )
indexInGroup -= m_groupMaps.count();
- //qDebug() << "indexInGroup" << indexInGroup;
+
QList childRows = m_groupHash.value( proxyParent.row() );
if( childRows.isEmpty() || indexInGroup >= childRows.count() || indexInGroup < 0 )
return QModelIndex();
originalRow = childRows.at( indexInGroup );
- //qDebug() << "originalRow: " << originalRow;
}
return sourceModel()->index( originalRow, index.column(), originalParent );
}
@@ -674,7 +649,7 @@ QtGroupingProxy::mapFromSource( const QModelIndex &idx ) const
QModelIndex proxyParent;
QModelIndex sourceParent = idx.parent();
- //qDebug() << "sourceParent: " << sourceParent;
+
int proxyRow = idx.row();
int sourceRow = idx.row();
@@ -708,15 +683,12 @@ QtGroupingProxy::mapFromSource( const QModelIndex &idx ) const
proxyParent = QModelIndex();
// if the proxy item is not in a group it will be below the groups.
int groupLength = m_groupMaps.count();
- //qDebug() << "groupNames length: " << groupLength;
int i = m_groupHash.value( std::numeric_limits::max() ).indexOf( sourceRow );
- //qDebug() << "index in hash: " << i;
+
proxyRow = groupLength + i;
}
}
- //qDebug() << "proxyParent: " << proxyParent;
- //qDebug() << "proxyRow: " << proxyRow;
return this->index( proxyRow, idx.column(), proxyParent );
}
@@ -731,9 +703,9 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
return 0;
}
+
//only if the grouped column has the editable flag set allow the
//actions leading to setData on the source (edit & drop)
- // qDebug() << idx;
if( isGroup( idx ) )
{
// dumpGroups();
@@ -749,7 +721,7 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
m_rootNode.parent() );
if ( (originalIdx.flags() & Qt::ItemIsUserCheckable) == 0 )
{
- qDebug("row %d is not checkable", originalRow);
+ log::debug("row {} is not checkable", originalRow);
checkable = false;
}
}
@@ -892,9 +864,7 @@ QtGroupingProxy::modelRowsAboutToBeInserted( const QModelIndex &parent, int star
if( parent != m_rootNode )
{
//an item will be added to an original index, remap and pass it on
- // qDebug() << parent;
QModelIndex proxyParent = mapFromSource( parent );
- // qDebug() << proxyParent;
beginInsertRows( proxyParent, start, end );
}
}
@@ -914,7 +884,12 @@ QtGroupingProxy::modelRowsInserted( const QModelIndex &parent, int start, int en
{
//an item was added to an original index, remap and pass it on
QModelIndex proxyParent = mapFromSource( parent );
- qDebug() << proxyParent;
+
+ QString s;
+ QDebug debug(&s);
+ debug << proxyParent;
+ log::debug("{}", s);
+
//beginInsertRows had to be called in modelRowsAboutToBeInserted()
endInsertRows();
}
@@ -951,9 +926,7 @@ QtGroupingProxy::modelRowsAboutToBeRemoved( const QModelIndex &parent, int start
else
{
//child item(s) of an original item will be removed, remap and pass it on
- // qDebug() << parent;
QModelIndex proxyParent = mapFromSource( parent );
- // qDebug() << proxyParent;
beginRemoveRows( proxyParent, start, end );
}
}
@@ -1044,16 +1017,24 @@ QtGroupingProxy::isAGroupSelected( const QModelIndexList& list ) const
void
QtGroupingProxy::dumpGroups() const
{
- qDebug() << "m_groupHash: ";
+ QString s;
+ QDebug debug(&s);
+
+ debug << "m_groupHash:\n";
for( int groupIndex = -1; groupIndex < m_groupHash.keys().count() - 1; groupIndex++ )
{
- qDebug() << groupIndex << " : " << m_groupHash.value( groupIndex );
+ debug << groupIndex << " : " << m_groupHash.value( groupIndex ) << "\n";
}
- qDebug() << "m_groupMaps: ";
+ debug << "m_groupMaps:\n";
for( int groupIndex = 0; groupIndex < m_groupMaps.count(); groupIndex++ )
- qDebug() << m_groupMaps[groupIndex] << ": " << m_groupHash.value( groupIndex );
- qDebug() << m_groupHash.value( std::numeric_limits::max() );
+ {
+ debug << m_groupMaps[groupIndex] << ": " << m_groupHash.value( groupIndex ) << "\n";
+ }
+
+ debug << m_groupHash.value( std::numeric_limits::max() );
+
+ log::debug("{}", s);
}
diff --git a/src/selfupdater.cpp b/src/selfupdater.cpp
index e967b27c..0ca39b19 100644
--- a/src/selfupdater.cpp
+++ b/src/selfupdater.cpp
@@ -150,23 +150,23 @@ void SelfUpdater::testForUpdate()
VersionInfo newestVer(newest["tag_name"].toString());
if (newestVer > this->m_MOVersion) {
m_UpdateCandidate = newest;
- qDebug("update available: %s -> %s",
- qUtf8Printable(this->m_MOVersion.displayString(3)),
- qUtf8Printable(newestVer.displayString(3)));
+ log::debug("update available: {} -> {}",
+ this->m_MOVersion.displayString(3),
+ newestVer.displayString(3));
emit updateAvailable();
} else if (newestVer < this->m_MOVersion) {
// this could happen if the user switches from using prereleases to
// stable builds. Should we downgrade?
- qDebug("This version is newer than the latest released one: %s -> %s",
- qUtf8Printable(this->m_MOVersion.displayString(3)),
- qUtf8Printable(newestVer.displayString(3)));
+ log::debug("This version is newer than the latest released one: {} -> {}",
+ this->m_MOVersion.displayString(3),
+ newestVer.displayString(3));
}
}
});
}
//Catch all is bad by design, should be improved
catch (...) {
- qDebug("Unable to connect to github.com to check version");
+ log::debug("Unable to connect to github.com to check version");
}
}
@@ -230,7 +230,7 @@ void SelfUpdater::closeProgress()
void SelfUpdater::openOutputFile(const QString &fileName)
{
QString outputPath = QDir::fromNativeSeparators(qApp->property("dataPath").toString()) + "/" + fileName;
- qDebug("downloading to %s", qUtf8Printable(outputPath));
+ log::debug("downloading to {}", outputPath);
m_UpdateFile.setFileName(outputPath);
m_UpdateFile.open(QIODevice::WriteOnly);
}
@@ -312,7 +312,7 @@ void SelfUpdater::downloadFinished()
return;
}
- qDebug("download: %s", m_UpdateFile.fileName().toUtf8().constData());
+ log::debug("download: {}", m_UpdateFile.fileName());
try {
installUpdate();
diff --git a/src/settings.cpp b/src/settings.cpp
index 9c303442..ff5b9976 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -54,7 +54,6 @@ along with Mod Organizer. If not, see .
#include
#include // for Qt::UserRole, etc
-#include // for qDebug, qWarning
#include // For ShellExecuteW, HINSTANCE, etc
#include // For storage
@@ -635,7 +634,7 @@ void Settings::updateServers(const QList &servers)
QVariantMap val = m_Settings.value(key).toMap();
QDate lastSeen = val["lastSeen"].toDate();
if (lastSeen.daysTo(now) > 30) {
- qDebug("removing server %s since it hasn't been available for downloads in over a month", qUtf8Printable(key));
+ log::debug("removing server {} since it hasn't been available for downloads in over a month", key);
m_Settings.remove(key);
}
}
@@ -758,10 +757,10 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
if (m_Settings.value(k).toString() != before[k] && !k.contains("username") && !k.contains("password"))
{
if (first_update) {
- qDebug("Changed settings:");
+ log::debug("Changed settings:");
first_update = false;
}
- qDebug(" %s=%s", k.toUtf8().data(), m_Settings.value(k).toString().toUtf8().data());
+ log::debug(" {}={}", k, m_Settings.value(k).toString());
}
m_Settings.endGroup();
}
diff --git a/src/usvfsconnector.cpp b/src/usvfsconnector.cpp
index 197955b8..5918c8a5 100644
--- a/src/usvfsconnector.cpp
+++ b/src/usvfsconnector.cpp
@@ -60,8 +60,7 @@ LogWorker::LogWorker()
"yyyy-MM-dd_hh-mm-ss")))
{
m_LogFile.open(QIODevice::WriteOnly);
- qDebug("usvfs log messages are written to %s",
- qUtf8Printable(m_LogFile.fileName()));
+ log::debug("usvfs log messages are written to {}", m_LogFile.fileName());
}
LogWorker::~LogWorker()
@@ -129,7 +128,10 @@ UsvfsConnector::UsvfsConnector()
USVFSInitParameters(¶ms, SHMID, false, level, dumpType, dumpPath.c_str());
InitLogging(false);
- qDebug("Initializing VFS <%s, %d, %d, %s>", params.instanceName, params.logLevel, params.crashDumpsType, params.crashDumpsPath);
+ log::debug(
+ "Initializing VFS <{}, {}, {}, {}>",
+ params.instanceName, static_cast(params.logLevel),
+ static_cast(params.crashDumpsType), params.crashDumpsPath);
CreateVFS(¶ms);
@@ -168,7 +170,7 @@ void UsvfsConnector::updateMapping(const MappingType &mapping)
int files = 0;
int dirs = 0;
- qDebug("Updating VFS mappings...");
+ log::debug("Updating VFS mappings...");
ClearVirtualMappings();
@@ -196,14 +198,7 @@ void UsvfsConnector::updateMapping(const MappingType &mapping)
}
}
- qDebug("VFS mappings updated ", dirs, files);
- /*
- size_t dumpSize = 0;
- CreateVFSDump(nullptr, &dumpSize);
- std::unique_ptr buffer(new char[dumpSize]);
- CreateVFSDump(buffer.get(), &dumpSize);
- qDebug(buffer.get());
- */
+ log::debug("VFS mappings updated ", dirs, files);
}
void UsvfsConnector::updateParams(
--
cgit v1.3.1
From 49e19c8185eb890b6dc6788bf95dd65455e72538 Mon Sep 17 00:00:00 2001
From: Al
Date: Fri, 4 Oct 2019 17:18:06 +0200
Subject: Added "No valid game data" and "No Nexus ID" filters as per #295
---
src/categories.h | 2 ++
src/mainwindow.cpp | 2 ++
src/modlistsortproxy.cpp | 18 ++++++++++++++++++
3 files changed, 22 insertions(+)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/categories.h b/src/categories.h
index 48e0b44b..67fee3e7 100644
--- a/src/categories.h
+++ b/src/categories.h
@@ -50,6 +50,8 @@ public:
static const int CATEGORY_SPECIAL_BACKUP = 10006;
static const int CATEGORY_SPECIAL_MANAGED = 10007;
static const int CATEGORY_SPECIAL_UNMANAGED = 10008;
+ static const int CATEGORY_SPECIAL_NOGAMEDATA = 10009;
+ static const int CATEGORY_SPECIAL_NONEXUSID = 10010;
public:
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 8ab28d22..a53c081b 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2691,6 +2691,8 @@ void MainWindow::refreshFilters()
addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_CONFLICT, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED, ModListSortProxy::TYPE_SPECIAL);
+ addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NONEXUSID, ModListSortProxy::TYPE_SPECIAL);
+ addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA, ModListSortProxy::TYPE_SPECIAL);
addContentFilters();
std::set categoriesUsed;
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 77ffad96..a9ff6463 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -308,6 +308,15 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
if (!info->hasFlag(ModInfo::FLAG_FOREIGN)) return false;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
+ if (!info->hasFlag(ModInfo::FLAG_INVALID)) return false;
+ } break;
+ case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
+ if (!(info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
+ !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return false;
+ } break;
default: {
if (!info->categorySet(*iter)) return false;
} break;
@@ -353,6 +362,15 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
if (info->hasFlag(ModInfo::FLAG_FOREIGN)) return true;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
+ if (info->hasFlag(ModInfo::FLAG_INVALID)) return true;
+ } break;
+ case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
+ if ((info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
+ !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return true;
+ } break;
default: {
if (info->categorySet(*iter)) return true;
} break;
--
cgit v1.3.1
From d5e38fca6b3a8c7bf90c5a3d8ec779752a22c61d Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Wed, 27 Nov 2019 17:05:20 -0500
Subject: added not filter, not functional yet fixed no mods being displayed
for OR with no conditions
---
src/mainwindow.cpp | 5 +++++
src/mainwindow.h | 1 +
src/mainwindow.ui | 7 +++++++
src/modlistsortproxy.cpp | 17 ++++++++++++-----
src/modlistsortproxy.h | 4 ++--
5 files changed, 27 insertions(+), 7 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e134d64a..21606fa9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -6552,6 +6552,11 @@ void MainWindow::on_categoriesOrBtn_toggled(bool checked)
}
}
+void MainWindow::on_categoriesNotBtn_toggled(bool checked)
+{
+ m_ModListSortProxy->setFilterNot(checked);
+}
+
void MainWindow::on_managedArchiveLabel_linkHovered(const QString&)
{
QToolTip::showText(QCursor::pos(),
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 0c96c15d..cbf45635 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -659,6 +659,7 @@ private slots: // ui slots
void on_saveModsButton_clicked();
void on_categoriesAndBtn_toggled(bool checked);
void on_categoriesOrBtn_toggled(bool checked);
+ void on_categoriesNotBtn_toggled(bool checked);
void on_managedArchiveLabel_linkHovered(const QString &link);
void storeSettings();
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 723b42fe..cd9cbc4b 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -152,6 +152,13 @@
+ -
+
+
+ Not
+
+
+
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index a9ff6463..805e77f4 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -36,10 +36,9 @@ using namespace MOBase;
ModListSortProxy::ModListSortProxy(Profile* profile, QObject *parent)
: QSortFilterProxyModel(parent)
, m_Profile(profile)
- , m_CategoryFilter()
- , m_CurrentFilter()
, m_FilterActive(false)
, m_FilterMode(FILTER_AND)
+ , m_FilterNot(false)
{
setDynamicSortFilter(true); // this seems to work without dynamicsortfilter
// but I don't know why. This should be necessary
@@ -312,8 +311,8 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
if (!info->hasFlag(ModInfo::FLAG_INVALID)) return false;
} break;
case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
- if (!(info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
- !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ if (!(info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
!info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
!info->hasFlag(ModInfo::FLAG_OVERWRITE))) return false;
} break;
@@ -381,7 +380,7 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
if (info->hasContent(static_cast(content))) return true;
}
- return false;
+ return m_CategoryFilter.empty() && m_ContentFilter.empty();
}
bool ModListSortProxy::filterMatchesMod(ModInfo::Ptr info, bool enabled) const
@@ -487,6 +486,14 @@ void ModListSortProxy::setFilterMode(ModListSortProxy::FilterMode mode)
}
}
+void ModListSortProxy::setFilterNot(bool b)
+{
+ if (b != m_FilterNot) {
+ m_FilterNot = b;
+ this->invalidate();
+ }
+}
+
bool ModListSortProxy::filterAcceptsRow(int row, const QModelIndex &parent) const
{
if (m_Profile == nullptr) {
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index 5fe8d9d6..2e3e5709 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -85,6 +85,7 @@ public:
bool isFilterActive() const { return m_FilterActive; }
void setFilterMode(FilterMode mode);
+ void setFilterNot(bool b);
/**
* @brief tests if the specified index has child nodes
@@ -129,9 +130,7 @@ private slots:
void postDataChanged();
private:
-
Profile *m_Profile;
-
std::vector m_CategoryFilter;
std::vector m_ContentFilter;
std::bitset m_EnabledColumns;
@@ -139,6 +138,7 @@ private:
bool m_FilterActive;
FilterMode m_FilterMode;
+ bool m_FilterNot;
std::vector m_PreChangeFilters;
--
cgit v1.3.1
From ecaf75c4531a79b1bdfe65eb60f257ac04422956 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Wed, 27 Nov 2019 17:14:44 -0500
Subject: refactored matching into one function instead of repeating them for
OR and AND
---
src/modlistsortproxy.cpp | 154 +++++++++++++++++++++--------------------------
src/modlistsortproxy.h | 2 +
2 files changed, 72 insertions(+), 84 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 805e77f4..0984d415 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -278,52 +278,15 @@ bool ModListSortProxy::hasConflictFlag(const std::vector &flags)
bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) const
{
for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- switch (*iter) {
- case CategoryFactory::CATEGORY_SPECIAL_CHECKED: {
- if (!enabled && !info->alwaysEnabled() && !info->hasFlag(ModInfo::FLAG_SEPARATOR)) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED: {
- if (enabled || info->alwaysEnabled()) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE: {
- if (!info->updateAvailable() && !info->downgradeAvailable()) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY: {
- if (info->getCategories().size() > 0) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_CONFLICT: {
- if (!hasConflictFlag(info->getFlags())) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED: {
- ModInfo::EEndorsedState state = info->endorsedState();
- if (state != ModInfo::ENDORSED_FALSE) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_BACKUP: {
- if (!info->hasFlag(ModInfo::FLAG_BACKUP)) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_MANAGED: {
- if (info->hasFlag(ModInfo::FLAG_FOREIGN)) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
- if (!info->hasFlag(ModInfo::FLAG_FOREIGN)) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
- if (!info->hasFlag(ModInfo::FLAG_INVALID)) return false;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
- if (!(info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
- !info->hasFlag(ModInfo::FLAG_BACKUP) &&
- !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
- !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return false;
- } break;
- default: {
- if (!info->categorySet(*iter)) return false;
- } break;
+ if (!categoryMatchesMod(info, enabled, *iter)) {
+ return false;
}
}
foreach (int content, m_ContentFilter) {
- if (!info->hasContent(static_cast(content))) return false;
+ if (!contentMatchesMod(info, enabled, content)) {
+ return false;
+ }
}
return true;
@@ -332,57 +295,80 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
{
for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- switch (*iter) {
- case CategoryFactory::CATEGORY_SPECIAL_CHECKED: {
- if (enabled || info->alwaysEnabled()) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED: {
- if (!enabled && !info->alwaysEnabled()) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE: {
- if (info->updateAvailable() || info->downgradeAvailable()) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY: {
- if (info->getCategories().size() == 0) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_CONFLICT: {
- if (hasConflictFlag(info->getFlags())) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED: {
- ModInfo::EEndorsedState state = info->endorsedState();
- if ((state == ModInfo::ENDORSED_FALSE) || (state == ModInfo::ENDORSED_NEVER)) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_BACKUP: {
- if (info->hasFlag(ModInfo::FLAG_BACKUP)) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_MANAGED: {
- if (!info->hasFlag(ModInfo::FLAG_FOREIGN)) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
- if (info->hasFlag(ModInfo::FLAG_FOREIGN)) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
- if (info->hasFlag(ModInfo::FLAG_INVALID)) return true;
- } break;
- case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
- if ((info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
- !info->hasFlag(ModInfo::FLAG_BACKUP) &&
- !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
- !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return true;
- } break;
- default: {
- if (info->categorySet(*iter)) return true;
- } break;
+ if (categoryMatchesMod(info, enabled, *iter)) {
+ return true;
}
}
foreach (int content, m_ContentFilter) {
- if (info->hasContent(static_cast(content))) return true;
+ if (contentMatchesMod(info, enabled, content)) {
+ return true;
+ }
}
return m_CategoryFilter.empty() && m_ContentFilter.empty();
}
+bool ModListSortProxy::categoryMatchesMod(
+ ModInfo::Ptr info, bool enabled, int category) const
+{
+ switch (category)
+ {
+ case CategoryFactory::CATEGORY_SPECIAL_CHECKED:
+ return (enabled || info->alwaysEnabled());
+
+ case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED:
+ return (!enabled && !info->alwaysEnabled());
+
+ case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE:
+ return (info->updateAvailable() || info->downgradeAvailable());
+
+ case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY:
+ return (info->getCategories().size() == 0);
+
+ case CategoryFactory::CATEGORY_SPECIAL_CONFLICT:
+ return (hasConflictFlag(info->getFlags()));
+
+ case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED:
+ {
+ ModInfo::EEndorsedState state = info->endorsedState();
+ return ((state == ModInfo::ENDORSED_FALSE) || (state == ModInfo::ENDORSED_NEVER));
+ }
+
+ case CategoryFactory::CATEGORY_SPECIAL_BACKUP:
+ return (info->hasFlag(ModInfo::FLAG_BACKUP));
+
+ case CategoryFactory::CATEGORY_SPECIAL_MANAGED:
+ return (!info->hasFlag(ModInfo::FLAG_FOREIGN));
+
+ case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED:
+ return (info->hasFlag(ModInfo::FLAG_FOREIGN));
+
+ case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA:
+ return (info->hasFlag(ModInfo::FLAG_INVALID));
+
+ case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID:
+ {
+ return (
+ info->getNexusID() == -1 &&
+ !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
+ !info->hasFlag(ModInfo::FLAG_OVERWRITE));
+ }
+
+ default:
+ {
+ return (info->categorySet(category));
+ }
+ }
+}
+
+bool ModListSortProxy::contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const
+{
+ return info->hasContent(static_cast(content));
+}
+
bool ModListSortProxy::filterMatchesMod(ModInfo::Ptr info, bool enabled) const
{
if (!m_CurrentFilter.isEmpty()) {
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index 2e3e5709..17888ae6 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -142,6 +142,8 @@ private:
std::vector m_PreChangeFilters;
+ bool categoryMatchesMod(ModInfo::Ptr info, bool enabled, int category) const;
+ bool contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const;
};
#endif // MODLISTSORTPROXY_H
--
cgit v1.3.1
From 17452071c9b72a48498e7578d65b9b52729f914f Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Wed, 27 Nov 2019 17:30:30 -0500
Subject: added separators filter changed notendorsed filter to include
anything else than true
---
src/mainwindow.cpp | 5 +++++
src/mainwindow.h | 1 +
src/mainwindow.ui | 7 +++++++
src/modlistsortproxy.cpp | 20 ++++++++++++++++++--
src/modlistsortproxy.h | 2 ++
5 files changed, 33 insertions(+), 2 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 21606fa9..d5636ab9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -6557,6 +6557,11 @@ void MainWindow::on_categoriesNotBtn_toggled(bool checked)
m_ModListSortProxy->setFilterNot(checked);
}
+void MainWindow::on_categoriesSeparators_toggled(bool checked)
+{
+ m_ModListSortProxy->setFilterSeparators(checked);
+}
+
void MainWindow::on_managedArchiveLabel_linkHovered(const QString&)
{
QToolTip::showText(QCursor::pos(),
diff --git a/src/mainwindow.h b/src/mainwindow.h
index cbf45635..c99c724b 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -660,6 +660,7 @@ private slots: // ui slots
void on_categoriesAndBtn_toggled(bool checked);
void on_categoriesOrBtn_toggled(bool checked);
void on_categoriesNotBtn_toggled(bool checked);
+ void on_categoriesSeparators_toggled(bool checked);
void on_managedArchiveLabel_linkHovered(const QString &link);
void storeSettings();
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index cd9cbc4b..9648a586 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -159,6 +159,13 @@
+ -
+
+
+ Separators
+
+
+
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 0984d415..ddae675c 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -39,6 +39,7 @@ ModListSortProxy::ModListSortProxy(Profile* profile, QObject *parent)
, m_FilterActive(false)
, m_FilterMode(FILTER_AND)
, m_FilterNot(false)
+ , m_FilterSeparators(false)
{
setDynamicSortFilter(true); // this seems to work without dynamicsortfilter
// but I don't know why. This should be necessary
@@ -278,6 +279,10 @@ bool ModListSortProxy::hasConflictFlag(const std::vector &flags)
bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) const
{
for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
+ if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
+ return false;
+ }
+
if (!categoryMatchesMod(info, enabled, *iter)) {
return false;
}
@@ -295,6 +300,10 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
{
for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
+ if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
+ return false;
+ }
+
if (categoryMatchesMod(info, enabled, *iter)) {
return true;
}
@@ -332,7 +341,7 @@ bool ModListSortProxy::categoryMatchesMod(
case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED:
{
ModInfo::EEndorsedState state = info->endorsedState();
- return ((state == ModInfo::ENDORSED_FALSE) || (state == ModInfo::ENDORSED_NEVER));
+ return (state != ModInfo::ENDORSED_TRUE);
}
case CategoryFactory::CATEGORY_SPECIAL_BACKUP:
@@ -353,7 +362,6 @@ bool ModListSortProxy::categoryMatchesMod(
info->getNexusID() == -1 &&
!info->hasFlag(ModInfo::FLAG_FOREIGN) &&
!info->hasFlag(ModInfo::FLAG_BACKUP) &&
- !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
!info->hasFlag(ModInfo::FLAG_OVERWRITE));
}
@@ -480,6 +488,14 @@ void ModListSortProxy::setFilterNot(bool b)
}
}
+void ModListSortProxy::setFilterSeparators(bool b)
+{
+ if (b != m_FilterSeparators) {
+ m_FilterSeparators = b;
+ this->invalidate();
+ }
+}
+
bool ModListSortProxy::filterAcceptsRow(int row, const QModelIndex &parent) const
{
if (m_Profile == nullptr) {
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index 17888ae6..2ebfbcf0 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -86,6 +86,7 @@ public:
void setFilterMode(FilterMode mode);
void setFilterNot(bool b);
+ void setFilterSeparators(bool b);
/**
* @brief tests if the specified index has child nodes
@@ -139,6 +140,7 @@ private:
bool m_FilterActive;
FilterMode m_FilterMode;
bool m_FilterNot;
+ bool m_FilterSeparators;
std::vector m_PreChangeFilters;
--
cgit v1.3.1
From 9134ae6111f0d357428b8a15abc26a727fe465a4 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Wed, 27 Nov 2019 17:41:04 -0500
Subject: implemented not filter
---
src/modlistsortproxy.cpp | 99 +++++++++++++++++++++++++++++++++++++-----------
1 file changed, 77 insertions(+), 22 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index ddae675c..d2a5e258 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -278,11 +278,11 @@ bool ModListSortProxy::hasConflictFlag(const std::vector &flags)
bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) const
{
- for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
- return false;
- }
+ if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
+ return false;
+ }
+ for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
if (!categoryMatchesMod(info, enabled, *iter)) {
return false;
}
@@ -299,82 +299,137 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
{
- for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
- return false;
- }
+ if (info->hasFlag(ModInfo::FLAG_SEPARATOR) && !m_FilterSeparators) {
+ return false;
+ }
+ for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
if (categoryMatchesMod(info, enabled, *iter)) {
return true;
}
}
+ if (!m_CategoryFilter.empty()) {
+ // nothing matched
+ return false;
+ }
+
foreach (int content, m_ContentFilter) {
if (contentMatchesMod(info, enabled, content)) {
return true;
}
}
- return m_CategoryFilter.empty() && m_ContentFilter.empty();
+ if (!m_ContentFilter.empty()) {
+ // nothing matched
+ return false;
+ }
+
+ return true;
}
bool ModListSortProxy::categoryMatchesMod(
ModInfo::Ptr info, bool enabled, int category) const
{
+ bool b = false;
+
switch (category)
{
case CategoryFactory::CATEGORY_SPECIAL_CHECKED:
- return (enabled || info->alwaysEnabled());
+ {
+ b = (enabled || info->alwaysEnabled());
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED:
- return (!enabled && !info->alwaysEnabled());
+ {
+ b = (!enabled && !info->alwaysEnabled());
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE:
- return (info->updateAvailable() || info->downgradeAvailable());
+ {
+ b = (info->updateAvailable() || info->downgradeAvailable());
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY:
- return (info->getCategories().size() == 0);
+ {
+ b = (info->getCategories().size() == 0);
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_CONFLICT:
- return (hasConflictFlag(info->getFlags()));
+ {
+ b = (hasConflictFlag(info->getFlags()));
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED:
{
ModInfo::EEndorsedState state = info->endorsedState();
- return (state != ModInfo::ENDORSED_TRUE);
+ b = (state != ModInfo::ENDORSED_TRUE);
+ break;
}
case CategoryFactory::CATEGORY_SPECIAL_BACKUP:
- return (info->hasFlag(ModInfo::FLAG_BACKUP));
+ {
+ b = (info->hasFlag(ModInfo::FLAG_BACKUP));
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_MANAGED:
- return (!info->hasFlag(ModInfo::FLAG_FOREIGN));
+ {
+ b = (!info->hasFlag(ModInfo::FLAG_FOREIGN));
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED:
- return (info->hasFlag(ModInfo::FLAG_FOREIGN));
+ {
+ b = (info->hasFlag(ModInfo::FLAG_FOREIGN));
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA:
- return (info->hasFlag(ModInfo::FLAG_INVALID));
+ {
+ b = (info->hasFlag(ModInfo::FLAG_INVALID));
+ break;
+ }
case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID:
{
- return (
+ b = (
info->getNexusID() == -1 &&
!info->hasFlag(ModInfo::FLAG_FOREIGN) &&
!info->hasFlag(ModInfo::FLAG_BACKUP) &&
!info->hasFlag(ModInfo::FLAG_OVERWRITE));
+
+ break;
}
default:
{
- return (info->categorySet(category));
+ b = (info->categorySet(category));
+ break;
}
}
+
+ if (m_FilterNot) {
+ b = !b;
+ }
+
+ return b;
}
bool ModListSortProxy::contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const
{
- return info->hasContent(static_cast(content));
+ bool b = info->hasContent(static_cast(content));
+
+ if (m_FilterNot) {
+ b = !b;
+ }
+
+ return b;
}
bool ModListSortProxy::filterMatchesMod(ModInfo::Ptr info, bool enabled) const
--
cgit v1.3.1
From e99dfe153c62f914ada0605430305fca81a332a9 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 30 Nov 2019 01:53:09 -0500
Subject: renamed filters to criteria merged categories and content, they can
be distinguished using the type added a not flag for criteria, not used yet
---
src/filterlist.cpp | 116 +++++++++++++++++++++++++--------------------
src/filterlist.h | 14 +++---
src/mainwindow.cpp | 50 +++++++++-----------
src/mainwindow.h | 4 +-
src/mainwindow.ui | 38 +++++++--------
src/modlistsortproxy.cpp | 120 +++++++++++++++++------------------------------
src/modlistsortproxy.h | 42 +++++++++++------
7 files changed, 182 insertions(+), 202 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/filterlist.cpp b/src/filterlist.cpp
index 5562736d..9e5437b3 100644
--- a/src/filterlist.cpp
+++ b/src/filterlist.cpp
@@ -6,6 +6,9 @@
using namespace MOBase;
+const int CategoryIDRole = Qt::UserRole;
+const int CategoryTypeRole = Qt::UserRole + 1;
+
FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
: ui(ui), m_factory(factory)
{
@@ -29,61 +32,76 @@ FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
ui->filtersOr, &QCheckBox::toggled,
[&]{ onCriteriaChanged(); });
- connect(
- ui->filtersNot, &QCheckBox::toggled,
- [&]{ onCriteriaChanged(); });
-
connect(
ui->filtersSeparators, &QCheckBox::toggled,
[&]{ onCriteriaChanged(); });
+
+ ui->filters->header()->setSectionResizeMode(0, QHeaderView::Stretch);
+ ui->filters->header()->resizeSection(1, 50);
}
-QTreeWidgetItem* FilterList::addFilterItem(
+QTreeWidgetItem* FilterList::addCriteriaItem(
QTreeWidgetItem *root, const QString &name, int categoryID,
- ModListSortProxy::FilterType type)
+ ModListSortProxy::CriteriaType 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);
+ item->setData(0, CategoryIDRole, categoryID);
+ item->setData(0, CategoryTypeRole, type);
+
if (root != nullptr) {
root->addChild(item);
} else {
ui->filters->addTopLevelItem(item);
}
+
+ auto* w = new QWidget;
+ w->setStyleSheet("background-color: rgba(0,0,0,0)");
+
+ auto* ly = new QVBoxLayout(w);
+ ly->setAlignment(Qt::AlignCenter);
+ ly->setContentsMargins(0, 0, 0, 0);
+
+ auto* cb = new QCheckBox;
+ connect(cb, &QCheckBox::toggled, [&]{ onSelection(); });
+ ly->addWidget(cb);
+
+ ui->filters->setItemWidget(item, 1, w);
+
return item;
}
-void FilterList::addContentFilters()
+void FilterList::addContentCriteria()
{
for (unsigned i = 0; i < ModInfo::NUM_CONTENT_TYPES; ++i) {
- addFilterItem(
+ addCriteriaItem(
nullptr, tr("").arg(ModInfo::getContentTypeName(i)),
i, ModListSortProxy::TYPE_CONTENT);
}
}
-void FilterList::addCategoryFilters(QTreeWidgetItem *root, const std::set &categoriesUsed, int targetID)
+void FilterList::addCategoryCriteria(QTreeWidgetItem *root, const std::set &categoriesUsed, int targetID)
{
- for (unsigned int i = 1;
- i < static_cast(m_factory.numCategories()); ++i) {
- if ((m_factory.getParentID(i) == targetID)) {
+ const auto count = static_cast(m_factory.numCategories());
+ for (unsigned int i = 1; i < count; ++i) {
+ if (m_factory.getParentID(i) == targetID) {
int categoryID = m_factory.getCategoryID(i);
if (categoriesUsed.find(categoryID) != categoriesUsed.end()) {
QTreeWidgetItem *item =
- addFilterItem(root, m_factory.getCategoryName(i),
+ addCriteriaItem(root, m_factory.getCategoryName(i),
categoryID, ModListSortProxy::TYPE_CATEGORY);
if (m_factory.hasChildren(i)) {
- addCategoryFilters(item, categoriesUsed, categoryID);
+ addCategoryCriteria(item, categoriesUsed, categoryID);
}
}
}
}
}
-void FilterList::addSpecialFilterItem(int type)
+void FilterList::addSpecialCriteria(int type)
{
- addFilterItem(
+ addCriteriaItem(
nullptr, m_factory.getSpecialCategoryName(type),
type, ModListSortProxy::TYPE_SPECIAL);
}
@@ -98,19 +116,19 @@ void FilterList::refresh()
ui->filters->clear();
using F = CategoryFactory;
- addSpecialFilterItem(F::CATEGORY_SPECIAL_CHECKED);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_UNCHECKED);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_UPDATEAVAILABLE);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_BACKUP);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_MANAGED);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_UNMANAGED);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_NOCATEGORY);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_CONFLICT);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_NOTENDORSED);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_NONEXUSID);
- addSpecialFilterItem(F::CATEGORY_SPECIAL_NOGAMEDATA);
-
- addContentFilters();
+ addSpecialCriteria(F::CATEGORY_SPECIAL_CHECKED);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_UNCHECKED);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_UPDATEAVAILABLE);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_BACKUP);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_MANAGED);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_UNMANAGED);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_NOCATEGORY);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_CONFLICT);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_NOTENDORSED);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_NONEXUSID);
+ addSpecialCriteria(F::CATEGORY_SPECIAL_NOGAMEDATA);
+
+ addContentCriteria();
std::set categoriesUsed;
for (unsigned int modIdx = 0; modIdx < ModInfo::getNumMods(); ++modIdx) {
@@ -130,7 +148,7 @@ void FilterList::refresh()
}
}
- addCategoryFilters(nullptr, categoriesUsed, 0);
+ addCategoryCriteria(nullptr, categoriesUsed, 0);
for (const QString &item : selectedItems) {
QList matches = ui->filters->findItems(
@@ -145,7 +163,7 @@ void FilterList::refresh()
void FilterList::setSelection(std::vector categories)
{
for (int i = 0; i < ui->filters->topLevelItemCount(); ++i) {
- if (ui->filters->topLevelItem(i)->data(0, Qt::UserRole) == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE) {
+ if (ui->filters->topLevelItem(i)->data(0, CategoryIDRole) == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE) {
ui->filters->setCurrentItem(ui->filters->topLevelItem(i));
break;
}
@@ -159,27 +177,24 @@ void FilterList::clearSelection()
void FilterList::onSelection()
{
- QModelIndexList indices = ui->filters->selectionModel()->selectedRows();
- std::vector categories;
- std::vector content;
+ const QModelIndexList indices = ui->filters->selectionModel()->selectedRows();
+ std::vector criteria;
- for (const QModelIndex &index : indices) {
- const int filterType = index.data(Qt::UserRole + 1).toInt();
+ for (auto* item: ui->filters->selectedItems()) {
+ const auto type = static_cast(
+ item->data(0, CategoryTypeRole).toInt());
- if ((filterType == ModListSortProxy::TYPE_CATEGORY) || (filterType == ModListSortProxy::TYPE_SPECIAL)) {
- const int categoryId = index.data(Qt::UserRole).toInt();
- if (categoryId != CategoryFactory::CATEGORY_NONE) {
- categories.push_back(categoryId);
- }
- } else if (filterType == ModListSortProxy::TYPE_CONTENT) {
- const int contentId = index.data(Qt::UserRole).toInt();
- content.push_back(contentId);
- }
+ const int id = item->data(0, CategoryIDRole).toInt();
+
+ auto* cb = static_cast(ui->filters->itemWidget(item, 1));
+ const bool inverse = cb->isChecked();
+
+ criteria.push_back({type, id, inverse});
}
- ui->filtersClear->setEnabled(categories.size() > 0 || content.size() >0);
+ ui->filtersClear->setEnabled(!criteria.empty());
- emit filtersChanged(categories, content);
+ emit criteriaChanged(criteria);
}
void FilterList::onContextMenu(const QPoint &pos)
@@ -205,8 +220,7 @@ void FilterList::onCriteriaChanged()
const auto mode = ui->filtersAnd->isChecked() ?
ModListSortProxy::FILTER_AND : ModListSortProxy::FILTER_OR;
- const bool inverse = ui->filtersNot->isChecked();
const bool separators = ui->filtersSeparators->isChecked();
- emit criteriaChanged(mode, inverse, separators);
+ emit optionsChanged(mode, separators);
}
diff --git a/src/filterlist.h b/src/filterlist.h
index 85982392..418989e7 100644
--- a/src/filterlist.h
+++ b/src/filterlist.h
@@ -19,8 +19,8 @@ public:
void refresh();
signals:
- void filtersChanged(std::vector categories, std::vector content);
- void criteriaChanged(ModListSortProxy::FilterMode mode, bool inverse, bool separators);
+ void criteriaChanged(std::vector criteria);
+ void optionsChanged(ModListSortProxy::FilterMode mode, bool separators);
private:
Ui::MainWindow* ui;
@@ -32,14 +32,14 @@ private:
void editCategories();
- QTreeWidgetItem* addFilterItem(
+ QTreeWidgetItem* addCriteriaItem(
QTreeWidgetItem *root, const QString &name, int categoryID,
- ModListSortProxy::FilterType type);
+ ModListSortProxy::CriteriaType type);
- void addContentFilters();
- void addCategoryFilters(
+ void addContentCriteria();
+ void addCategoryCriteria(
QTreeWidgetItem *root, const std::set &categoriesUsed, int targetID);
- void addSpecialFilterItem(int type);
+ void addSpecialCriteria(int type);
};
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 1319d906..03d61bc6 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -264,12 +264,12 @@ MainWindow::MainWindow(Settings &settings
m_Filters.reset(new FilterList(ui, m_CategoryFactory));
connect(
- m_Filters.get(), &FilterList::filtersChanged,
- [&](auto&& cats, auto&& content) { onFilters(cats, content); });
+ m_Filters.get(), &FilterList::criteriaChanged,
+ [&](auto&& v) { onFiltersCriteria(v); });
connect(
- m_Filters.get(), &FilterList::criteriaChanged,
- [&](auto mode, bool inv, bool sep) { onFiltersCriteria(mode, inv, sep); });
+ m_Filters.get(), &FilterList::optionsChanged,
+ [&](auto mode, bool sep) { onFiltersOptions(mode, sep); });
ui->logList->setCore(m_OrganizerCore);
@@ -4124,7 +4124,12 @@ void MainWindow::checkModsForUpdates()
}
if (updatesAvailable || checkingModsForUpdate) {
- m_ModListSortProxy->setCategoryFilter(boost::assign::list_of(CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE));
+ m_ModListSortProxy->setCriteria({{
+ ModListSortProxy::TYPE_SPECIAL,
+ CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE,
+ false}
+ });
+
m_Filters->setSelection({CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE});
}
}
@@ -6111,44 +6116,31 @@ void MainWindow::refreshFilters()
}
}
-void MainWindow::onFilters(
- const std::vector& categories, const std::vector& content)
+void MainWindow::onFiltersCriteria(const std::vector& criteria)
{
- m_ModListSortProxy->setCategoryFilter(categories);
- m_ModListSortProxy->setContentFilter(content);
+ m_ModListSortProxy->setCriteria(criteria);
QString label = "?";
- if ((categories.size() + content.size()) > 1) {
- label = tr("");
- } else if (!categories.empty()) {
- const int c = categories[0];
- label = m_CategoryFactory.getCategoryNameByID(c);
+ if (criteria.empty()) {
+ label = "";
+ } else if (criteria.size() == 1) {
+ const auto& c = criteria[0];
+ label = m_CategoryFactory.getCategoryNameByID(c.id);
if (label.isEmpty()) {
- log::error("category '{}' not found", c);
- }
- } else if (!content.empty()) {
- const int c = content[0];
- try {
- label = ModInfo::getContentTypeName(c);
- }
- catch(std::exception&) {
- log::error("content filter '{}' not found", c);
+ log::error("category '{}' not found", c.id);
}
} else {
- label = "";
+ label = tr("");
}
ui->currentCategoryLabel->setText(label);
ui->modList->reset();
}
-void MainWindow::onFiltersCriteria(
- ModListSortProxy::FilterMode mode, bool inverse, bool separators)
+void MainWindow::onFiltersOptions(ModListSortProxy::FilterMode mode, bool separators)
{
- m_ModListSortProxy->setFilterMode(mode);
- m_ModListSortProxy->setFilterNot(inverse);
- m_ModListSortProxy->setFilterSeparators(separators);
+ m_ModListSortProxy->setOptions(mode, separators);
}
void MainWindow::updateESPLock(bool locked)
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 9837378b..0b559300 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -514,8 +514,8 @@ private slots:
void deselectFilters();
void refreshFilters();
- void onFilters(const std::vector& categories, const std::vector& content);
- void onFiltersCriteria(ModListSortProxy::FilterMode mode, bool inverse, bool separators);
+ void onFiltersCriteria(const std::vector& filters);
+ void onFiltersOptions(ModListSortProxy::FilterMode mode, bool separators);
void displayModInformation(const QString &modName, ModInfoTabIDs tabID);
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index ed35f783..7cc7dca4 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -85,12 +85,26 @@
true
+
+ false
+
+ true
+
+
+ true
+
+
false
- 1
+ Category
+
+
+
+
+ Invert
@@ -152,16 +166,6 @@
- -
-
-
- Invert each selected category
-
-
- Not
-
-
-
-
@@ -351,9 +355,6 @@ p, li { white-space: pre-wrap; }
Qt::CustomContextMenu
-
- List of available mods.
-
This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders.
@@ -448,14 +449,7 @@ p, li { white-space: pre-wrap; }
-
-
-
-
- 8
- true
-
-
-
+
-
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index d2a5e258..646401b9 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -38,7 +38,6 @@ ModListSortProxy::ModListSortProxy(Profile* profile, QObject *parent)
, m_Profile(profile)
, m_FilterActive(false)
, m_FilterMode(FILTER_AND)
- , m_FilterNot(false)
, m_FilterSeparators(false)
{
setDynamicSortFilter(true); // this seems to work without dynamicsortfilter
@@ -52,26 +51,20 @@ void ModListSortProxy::setProfile(Profile *profile)
void ModListSortProxy::updateFilterActive()
{
- m_FilterActive = ((m_CategoryFilter.size() > 0)
- || (m_ContentFilter.size() > 0)
- || !m_CurrentFilter.isEmpty());
+ m_FilterActive = (!m_Criteria.empty() || !m_Filter.isEmpty());
emit filterActive(m_FilterActive);
}
-void ModListSortProxy::setCategoryFilter(const std::vector &categories)
+void ModListSortProxy::setCriteria(const std::vector& criteria)
{
- //avoid refreshing the filter unless we are checking all mods for update.
- if (categories != m_CategoryFilter || (!categories.empty() && categories.at(0) == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE)) {
- m_CategoryFilter = categories;
- updateFilterActive();
- invalidate();
- }
-}
-
-void ModListSortProxy::setContentFilter(const std::vector &content)
-{
- if (content != m_ContentFilter) {
- m_ContentFilter = content;
+ // avoid refreshing the filter unless we are checking all mods for update.
+ const bool changed = (criteria != m_Criteria);
+ const bool isForUpdates = (
+ !criteria.empty() &&
+ criteria[0].id == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE);
+
+ if (changed || isForUpdates) {
+ m_Criteria = criteria;
updateFilterActive();
invalidate();
}
@@ -248,12 +241,10 @@ bool ModListSortProxy::lessThan(const QModelIndex &left,
return lt;
}
-void ModListSortProxy::updateFilter(const QString &filter)
+void ModListSortProxy::updateFilter(const QString& filter)
{
- m_CurrentFilter = filter;
+ m_Filter = filter;
updateFilterActive();
- // using invalidateFilter here should be enough but that crashes the application? WTF?
- // invalidateFilter();
invalidate();
}
@@ -282,14 +273,8 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
return false;
}
- for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- if (!categoryMatchesMod(info, enabled, *iter)) {
- return false;
- }
- }
-
- foreach (int content, m_ContentFilter) {
- if (!contentMatchesMod(info, enabled, content)) {
+ for (auto&& c : m_Criteria) {
+ if (!criteriaMatchesMod(info, enabled, c)) {
return false;
}
}
@@ -303,29 +288,35 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
return false;
}
- for (auto iter = m_CategoryFilter.begin(); iter != m_CategoryFilter.end(); ++iter) {
- if (categoryMatchesMod(info, enabled, *iter)) {
+ for (auto&& c : m_Criteria) {
+ if (criteriaMatchesMod(info, enabled, c)) {
return true;
}
}
- if (!m_CategoryFilter.empty()) {
+ if (!m_Criteria.empty()) {
// nothing matched
return false;
}
- foreach (int content, m_ContentFilter) {
- if (contentMatchesMod(info, enabled, content)) {
- return true;
- }
- }
+ return true;
+}
- if (!m_ContentFilter.empty()) {
- // nothing matched
- return false;
- }
+bool ModListSortProxy::criteriaMatchesMod(
+ ModInfo::Ptr info, bool enabled, const Criteria& c) const
+{
+ switch (c.type)
+ {
+ case TYPE_SPECIAL: // fall-through
+ case TYPE_CATEGORY:
+ return categoryMatchesMod(info, enabled, c.id);
- return true;
+ case TYPE_CONTENT:
+ return contentMatchesMod(info, enabled, c.id);
+
+ default:
+ return false;
+ }
}
bool ModListSortProxy::categoryMatchesMod(
@@ -414,29 +405,19 @@ bool ModListSortProxy::categoryMatchesMod(
}
}
- if (m_FilterNot) {
- b = !b;
- }
-
return b;
}
bool ModListSortProxy::contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const
{
- bool b = info->hasContent(static_cast(content));
-
- if (m_FilterNot) {
- b = !b;
- }
-
- return b;
+ return info->hasContent(static_cast(content));
}
bool ModListSortProxy::filterMatchesMod(ModInfo::Ptr info, bool enabled) const
{
- if (!m_CurrentFilter.isEmpty()) {
+ if (!m_Filter.isEmpty()) {
bool display = false;
- QString filterCopy = QString(m_CurrentFilter);
+ QString filterCopy = QString(m_Filter);
filterCopy.replace("||", ";").replace("OR", ";").replace("|", ";");
QStringList ORList = filterCopy.split(";", QString::SkipEmptyParts);
@@ -527,26 +508,11 @@ void ModListSortProxy::setColumnVisible(int column, bool visible)
m_EnabledColumns[column] = visible;
}
-void ModListSortProxy::setFilterMode(ModListSortProxy::FilterMode mode)
+void ModListSortProxy::setOptions(ModListSortProxy::FilterMode mode, bool separators)
{
- if (m_FilterMode != mode) {
+ if (m_FilterMode != mode || separators != m_FilterSeparators) {
m_FilterMode = mode;
- this->invalidate();
- }
-}
-
-void ModListSortProxy::setFilterNot(bool b)
-{
- if (b != m_FilterNot) {
- m_FilterNot = b;
- this->invalidate();
- }
-}
-
-void ModListSortProxy::setFilterSeparators(bool b)
-{
- if (b != m_FilterSeparators) {
- m_FilterSeparators = b;
+ m_FilterSeparators = separators;
this->invalidate();
}
}
@@ -623,8 +589,8 @@ void ModListSortProxy::aboutToChangeData()
// (at least with some Qt versions)
// this may be related to the fact that the item being edited may disappear from the view as a
// result of the edit
- m_PreChangeFilters = categoryFilter();
- setCategoryFilter(std::vector());
+ m_PreChangeCriteria = m_Criteria;
+ setCriteria({});
}
void ModListSortProxy::postDataChanged()
@@ -633,8 +599,8 @@ void ModListSortProxy::postDataChanged()
// or at least the view continues to think it's being edited. As a result no new editor can be
// opened
QTimer::singleShot(10, [this] () {
- setCategoryFilter(m_PreChangeFilters);
- m_PreChangeFilters.clear();
+ setCriteria(m_PreChangeCriteria);
+ m_PreChangeCriteria.clear();
});
}
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index 2ebfbcf0..5aeaccce 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -37,22 +37,38 @@ public:
FILTER_OR
};
- enum FilterType {
+ enum CriteriaType {
TYPE_SPECIAL,
TYPE_CATEGORY,
TYPE_CONTENT
};
+ struct Criteria
+ {
+ CriteriaType type;
+ int id;
+ bool inverse;
+
+ bool operator==(const Criteria& other) const
+ {
+ return
+ (type == other.type) &&
+ (id == other.id) &&
+ (inverse == other.inverse);
+ }
+
+ bool operator!=(const Criteria& other) const
+ {
+ return !(*this == other);
+ }
+ };
+
public:
explicit ModListSortProxy(Profile *profile, QObject *parent = 0);
void setProfile(Profile *profile);
- void setCategoryFilter(const std::vector &categories);
- std::vector categoryFilter() const { return m_CategoryFilter; }
-
- void setContentFilter(const std::vector &content);
virtual Qt::ItemFlags flags(const QModelIndex &modelIndex) const;
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action,
@@ -84,9 +100,8 @@ public:
*/
bool isFilterActive() const { return m_FilterActive; }
- void setFilterMode(FilterMode mode);
- void setFilterNot(bool b);
- void setFilterSeparators(bool b);
+ void setCriteria(const std::vector& criteria);
+ void setOptions(FilterMode mode, bool separators);
/**
* @brief tests if the specified index has child nodes
@@ -131,19 +146,18 @@ private slots:
void postDataChanged();
private:
- Profile *m_Profile;
- std::vector m_CategoryFilter;
- std::vector m_ContentFilter;
+ Profile* m_Profile;
+ std::vector m_Criteria;
+ QString m_Filter;
std::bitset m_EnabledColumns;
- QString m_CurrentFilter;
bool m_FilterActive;
FilterMode m_FilterMode;
- bool m_FilterNot;
bool m_FilterSeparators;
- std::vector m_PreChangeFilters;
+ std::vector m_PreChangeCriteria;
+ bool criteriaMatchesMod(ModInfo::Ptr info, bool enabled, const Criteria& c) const;
bool categoryMatchesMod(ModInfo::Ptr info, bool enabled, int category) const;
bool contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const;
};
--
cgit v1.3.1
From ed14d5510d932362f8e232496b824729e096d3cf Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 30 Nov 2019 02:20:18 -0500
Subject: implemented not flag moved stuff to CriteriaItem fixed jumbled names
in getSpecialCategoryName()
---
src/categories.cpp | 16 ++++----
src/filterlist.cpp | 102 +++++++++++++++++++++++++++++++++--------------
src/filterlist.h | 2 +
src/modlistsortproxy.cpp | 23 +++++++++--
4 files changed, 102 insertions(+), 41 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/categories.cpp b/src/categories.cpp
index 082b4fbc..b75efefa 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -327,14 +327,14 @@ QString CategoryFactory::getSpecialCategoryName(int type) const
case CATEGORY_SPECIAL_CHECKED: return QObject::tr("");
case CATEGORY_SPECIAL_UNCHECKED: return QObject::tr("");
case CATEGORY_SPECIAL_UPDATEAVAILABLE: return QObject::tr("");
- case CATEGORY_SPECIAL_NOCATEGORY: return QObject::tr("");
- case CATEGORY_SPECIAL_CONFLICT: return QObject::tr("");
- case CATEGORY_SPECIAL_NOTENDORSED: return QObject::tr("");
- case CATEGORY_SPECIAL_BACKUP: return QObject::tr("");
- case CATEGORY_SPECIAL_MANAGED: return QObject::tr("");
- case CATEGORY_SPECIAL_UNMANAGED: return QObject::tr("");
- case CATEGORY_SPECIAL_NOGAMEDATA: return QObject::tr("");
- case CATEGORY_SPECIAL_NONEXUSID: return QObject::tr("");
+ case CATEGORY_SPECIAL_NOCATEGORY: return QObject::tr("");
+ case CATEGORY_SPECIAL_CONFLICT: return QObject::tr("");
+ case CATEGORY_SPECIAL_NOTENDORSED: return QObject::tr("");
+ case CATEGORY_SPECIAL_BACKUP: return QObject::tr("");
+ case CATEGORY_SPECIAL_MANAGED: return QObject::tr("");
+ case CATEGORY_SPECIAL_UNMANAGED: return QObject::tr("");
+ case CATEGORY_SPECIAL_NOGAMEDATA: return QObject::tr("");
+ case CATEGORY_SPECIAL_NONEXUSID: return QObject::tr("");
default: return {};
}
}
diff --git a/src/filterlist.cpp b/src/filterlist.cpp
index 9e5437b3..31783c88 100644
--- a/src/filterlist.cpp
+++ b/src/filterlist.cpp
@@ -5,9 +5,60 @@
#include
using namespace MOBase;
+using CriteriaType = ModListSortProxy::CriteriaType;
+using Criteria = ModListSortProxy::Criteria;
+
+class FilterList::CriteriaItem : public QTreeWidgetItem
+{
+public:
+ CriteriaItem(FilterList* list, QString name, CriteriaType type, int id)
+ : QTreeWidgetItem({name}), m_list(list), m_widget(nullptr), m_checkbox(nullptr)
+ {
+ setData(0, Qt::ToolTipRole, name);
+ setData(0, TypeRole, type);
+ setData(0, IDRole, id);
+
+ m_widget = new QWidget;
+ m_widget->setStyleSheet("background-color: rgba(0,0,0,0)");
+
+ auto* ly = new QVBoxLayout(m_widget);
+ ly->setAlignment(Qt::AlignCenter);
+ ly->setContentsMargins(0, 0, 0, 0);
+
+ m_checkbox = new QCheckBox;
+ QObject::connect(m_checkbox, &QCheckBox::toggled, [&]{ m_list->onSelection(); });
+ ly->addWidget(m_checkbox);
+ }
+
+ QWidget* widget()
+ {
+ return m_widget;
+ }
+
+ CriteriaType type() const
+ {
+ return static_cast(data(0, TypeRole).toInt());
+ }
+
+ int id() const
+ {
+ return data(0, IDRole).toInt();
+ }
+
+ bool inverse() const
+ {
+ return m_checkbox->isChecked();
+ }
+
+private:
+ const int IDRole = Qt::UserRole;
+ const int TypeRole = Qt::UserRole + 1;
+
+ FilterList* m_list;
+ QWidget* m_widget;
+ QCheckBox* m_checkbox;
+};
-const int CategoryIDRole = Qt::UserRole;
-const int CategoryTypeRole = Qt::UserRole + 1;
FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
: ui(ui), m_factory(factory)
@@ -42,13 +93,9 @@ FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
QTreeWidgetItem* FilterList::addCriteriaItem(
QTreeWidgetItem *root, const QString &name, int categoryID,
- ModListSortProxy::CriteriaType type)
+ CriteriaType type)
{
- QTreeWidgetItem *item = new QTreeWidgetItem(QStringList(name));
-
- item->setData(0, Qt::ToolTipRole, name);
- item->setData(0, CategoryIDRole, categoryID);
- item->setData(0, CategoryTypeRole, type);
+ auto* item = new CriteriaItem(this, name, type, categoryID);
if (root != nullptr) {
root->addChild(item);
@@ -56,18 +103,7 @@ QTreeWidgetItem* FilterList::addCriteriaItem(
ui->filters->addTopLevelItem(item);
}
- auto* w = new QWidget;
- w->setStyleSheet("background-color: rgba(0,0,0,0)");
-
- auto* ly = new QVBoxLayout(w);
- ly->setAlignment(Qt::AlignCenter);
- ly->setContentsMargins(0, 0, 0, 0);
-
- auto* cb = new QCheckBox;
- connect(cb, &QCheckBox::toggled, [&]{ onSelection(); });
- ly->addWidget(cb);
-
- ui->filters->setItemWidget(item, 1, w);
+ ui->filters->setItemWidget(item, 1, item->widget());
return item;
}
@@ -163,7 +199,14 @@ void FilterList::refresh()
void FilterList::setSelection(std::vector categories)
{
for (int i = 0; i < ui->filters->topLevelItemCount(); ++i) {
- if (ui->filters->topLevelItem(i)->data(0, CategoryIDRole) == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE) {
+ const auto* item = dynamic_cast(
+ ui->filters->topLevelItem(i));
+
+ if (!item) {
+ continue;
+ }
+
+ if (item->id() == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE) {
ui->filters->setCurrentItem(ui->filters->topLevelItem(i));
break;
}
@@ -178,18 +221,17 @@ void FilterList::clearSelection()
void FilterList::onSelection()
{
const QModelIndexList indices = ui->filters->selectionModel()->selectedRows();
- std::vector criteria;
+ std::vector criteria;
for (auto* item: ui->filters->selectedItems()) {
- const auto type = static_cast(
- item->data(0, CategoryTypeRole).toInt());
-
- const int id = item->data(0, CategoryIDRole).toInt();
-
- auto* cb = static_cast(ui->filters->itemWidget(item, 1));
- const bool inverse = cb->isChecked();
+ const auto* ci = dynamic_cast(item);
+ if (!ci) {
+ continue;
+ }
- criteria.push_back({type, id, inverse});
+ criteria.push_back({
+ ci->type(), ci->id(), ci->inverse()
+ });
}
ui->filtersClear->setEnabled(!criteria.empty());
diff --git a/src/filterlist.h b/src/filterlist.h
index 418989e7..72fe3b5f 100644
--- a/src/filterlist.h
+++ b/src/filterlist.h
@@ -23,6 +23,8 @@ signals:
void optionsChanged(ModListSortProxy::FilterMode mode, bool separators);
private:
+ class CriteriaItem;
+
Ui::MainWindow* ui;
CategoryFactory& m_factory;
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 646401b9..3bb02c0f 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -305,18 +305,35 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
bool ModListSortProxy::criteriaMatchesMod(
ModInfo::Ptr info, bool enabled, const Criteria& c) const
{
+ bool b = false;
+
switch (c.type)
{
case TYPE_SPECIAL: // fall-through
case TYPE_CATEGORY:
- return categoryMatchesMod(info, enabled, c.id);
+ {
+ b = categoryMatchesMod(info, enabled, c.id);
+ break;
+ }
case TYPE_CONTENT:
- return contentMatchesMod(info, enabled, c.id);
+ {
+ b = contentMatchesMod(info, enabled, c.id);
+ break;
+ }
default:
- return false;
+ {
+ log::error("bad criteria type {}", c.type);
+ break;
+ }
}
+
+ if (c.inverse) {
+ b = !b;
+ }
+
+ return b;
}
bool ModListSortProxy::categoryMatchesMod(
--
cgit v1.3.1
From a38d1723bffcd20bc7011c0fe635636b936aa78b Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 30 Nov 2019 03:21:23 -0500
Subject: removed redundant categories now that there's a not filter disabled
collapsing for filter, there's already a button to hide it
---
src/categories.cpp | 24 +++++++++++-------------
src/categories.h | 31 +++++++++++++------------------
src/filterlist.cpp | 28 +++++++++++++++-------------
src/mainwindow.cpp | 4 ++--
src/mainwindow.ui | 3 +++
src/modlistsortproxy.cpp | 32 ++++++++++----------------------
6 files changed, 54 insertions(+), 68 deletions(-)
(limited to 'src/modlistsortproxy.cpp')
diff --git a/src/categories.cpp b/src/categories.cpp
index b75efefa..1bd56f7f 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -320,21 +320,19 @@ QString CategoryFactory::getCategoryName(unsigned int index) const
return m_Categories[index].m_Name;
}
-QString CategoryFactory::getSpecialCategoryName(int type) const
+QString CategoryFactory::getSpecialCategoryName(SpecialCategories type) const
{
switch (type)
{
- case CATEGORY_SPECIAL_CHECKED: return QObject::tr("");
- case CATEGORY_SPECIAL_UNCHECKED: return QObject::tr("");
- case CATEGORY_SPECIAL_UPDATEAVAILABLE: return QObject::tr("");
- case CATEGORY_SPECIAL_NOCATEGORY: return QObject::tr("");
- case CATEGORY_SPECIAL_CONFLICT: return QObject::tr("");
- case CATEGORY_SPECIAL_NOTENDORSED: return QObject::tr("");
- case CATEGORY_SPECIAL_BACKUP: return QObject::tr("");
- case CATEGORY_SPECIAL_MANAGED: return QObject::tr("");
- case CATEGORY_SPECIAL_UNMANAGED: return QObject::tr("