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/plugincontainer.cpp | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
(limited to 'src/plugincontainer.cpp')
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index 2126c5ef..d47fa2c6 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -69,7 +69,7 @@ bool PluginContainer::verifyPlugin(IPlugin *plugin)
if (plugin == nullptr) {
return false;
} else if (!plugin->init(new OrganizerProxy(m_Organizer, this, plugin->name()))) {
- qWarning("plugin failed to initialize");
+ log::warn("plugin failed to initialize");
return false;
}
return true;
@@ -167,9 +167,10 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
qDebug("loaded plugin \"%s\"", qUtf8Printable(QFileInfo(pluginName).fileName()));
}
else {
- qWarning("plugin \"%s\" failed to load. If this plugin is for an older version of MO "
- "you have to update it or delete it if no update exists.",
- qUtf8Printable(pluginName));
+ log::warn(
+ "plugin \"{}\" failed to load. If this plugin is for an older version of MO "
+ "you have to update it or delete it if no update exists.",
+ pluginName);
}
}
}
@@ -298,7 +299,7 @@ void PluginContainer::loadPlugins()
m_PluginLoaders.push_back(pluginLoader.release());
} else {
m_FailedPlugins.push_back(pluginName);
- qWarning("plugin \"%s\" failed to load (may be outdated)", qUtf8Printable(pluginName));
+ log::warn("plugin \"{}\" failed to load (may be outdated)", pluginName);
}
}
}
--
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/plugincontainer.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/plugincontainer.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 a174d4a2aa3d07c6a3c4bedfdf77471f71ec1dba Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Mon, 2 Sep 2019 09:22:45 -0400
Subject: moved plugins to settings
---
src/organizercore.cpp | 10 +-
src/plugincontainer.cpp | 6 +-
src/settings.cpp | 264 ++++++++++++++++++++++++++----------------
src/settings.h | 123 +++++++-------------
src/settingsdialogplugins.cpp | 28 +++--
5 files changed, 228 insertions(+), 203 deletions(-)
(limited to 'src/plugincontainer.cpp')
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index ec13ca9c..af0cf969 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -512,7 +512,7 @@ void OrganizerCore::disconnectPlugins()
m_DownloadManager.setPluginContainer(nullptr);
m_ModList.setPluginContainer(nullptr);
- m_Settings.clearPlugins();
+ m_Settings.plugins().clearPlugins();
m_GamePlugin = nullptr;
m_PluginContainer = nullptr;
}
@@ -864,26 +864,26 @@ void OrganizerCore::modDataChanged(MOBase::IModInterface *)
QVariant OrganizerCore::pluginSetting(const QString &pluginName,
const QString &key) const
{
- return m_Settings.pluginSetting(pluginName, key);
+ return m_Settings.plugins().pluginSetting(pluginName, key);
}
void OrganizerCore::setPluginSetting(const QString &pluginName,
const QString &key, const QVariant &value)
{
- m_Settings.setPluginSetting(pluginName, key, value);
+ m_Settings.plugins().setPluginSetting(pluginName, key, value);
}
QVariant OrganizerCore::persistent(const QString &pluginName,
const QString &key,
const QVariant &def) const
{
- return m_Settings.pluginPersistent(pluginName, key, def);
+ return m_Settings.plugins().pluginPersistent(pluginName, key, def);
}
void OrganizerCore::setPersistent(const QString &pluginName, const QString &key,
const QVariant &value, bool sync)
{
- m_Settings.setPluginPersistent(pluginName, key, value, sync);
+ m_Settings.plugins().setPluginPersistent(pluginName, key, value, sync);
}
QString OrganizerCore::pluginDataPath() const
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index 62cdff1e..16a77387 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -95,7 +95,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
return false;
}
plugin->setProperty("filename", fileName);
- m_Organizer->settings().registerPlugin(pluginObj);
+ m_Organizer->settings().plugins().registerPlugin(pluginObj);
}
{ // diagnosis plugin
@@ -266,7 +266,7 @@ void PluginContainer::loadPlugins()
"(Please note: If this is the first time you see this message for this plugin you may want to give it another try. "
"The plugin may be able to recover from the problem)").arg(fileName),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
- m_Organizer->settings().addBlacklistPlugin(fileName);
+ m_Organizer->settings().plugins().addBlacklistPlugin(fileName);
}
loadCheck.close();
}
@@ -279,7 +279,7 @@ void PluginContainer::loadPlugins()
while (iter.hasNext()) {
iter.next();
- if (m_Organizer->settings().pluginBlacklisted(iter.fileName())) {
+ if (m_Organizer->settings().plugins().pluginBlacklisted(iter.fileName())) {
log::debug("plugin \"{}\" blacklisted", iter.fileName());
continue;
}
diff --git a/src/settings.cpp b/src/settings.cpp
index 34b1b4ac..072318a2 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -242,7 +242,7 @@ Settings *Settings::s_Instance = nullptr;
Settings::Settings(const QString& path) :
m_Settings(path, QSettings::IniFormat),
- m_Geometry(m_Settings), m_Colors(m_Settings)
+ m_Geometry(m_Settings), m_Colors(m_Settings), m_Plugins(m_Settings)
{
if (s_Instance != nullptr) {
throw std::runtime_error("second instance of \"Settings\" created");
@@ -319,25 +319,6 @@ QString Settings::getFilename() const
return m_Settings.fileName();
}
-void Settings::clearPlugins()
-{
- m_Plugins.clear();
- m_PluginSettings.clear();
-
- m_PluginBlacklist.clear();
-
- ScopedReadArray sra(m_Settings, "pluginBlacklist");
- for (int i = 0; i < sra.count(); ++i) {
- m_Settings.setArrayIndex(i);
- m_PluginBlacklist.insert(m_Settings.value("name").toString());
- }
-}
-
-bool Settings::pluginBlacklisted(const QString &fileName) const
-{
- return m_PluginBlacklist.contains(fileName);
-}
-
void Settings::registerAsNXMHandler(bool force)
{
const auto nxmPath = QCoreApplication::applicationDirPath() + "/nxmhandler.exe";
@@ -371,24 +352,6 @@ void Settings::managedGameChanged(IPluginGame const *gamePlugin)
m_GamePlugin = gamePlugin;
}
-void Settings::registerPlugin(IPlugin *plugin)
-{
- m_Plugins.push_back(plugin);
- m_PluginSettings.insert(plugin->name(), QVariantMap());
- m_PluginDescriptions.insert(plugin->name(), QVariantMap());
- for (const PluginSetting &setting : plugin->settings()) {
- QVariant temp = m_Settings.value("Plugins/" + plugin->name() + "/" + setting.key, setting.defaultValue);
- if (!temp.convert(setting.defaultValue.type())) {
- log::warn(
- "failed to interpret \"{}\" as correct type for \"{}\" in plugin \"{}\", using default",
- temp.toString(), setting.key, plugin->name());
- temp = setting.defaultValue;
- }
- m_PluginSettings[plugin->name()][setting.key] = temp;
- m_PluginDescriptions[plugin->name()][setting.key] = QString("%1 (default: %2)").arg(setting.description).arg(setting.defaultValue.toString());
- }
-}
-
bool Settings::obfuscate(const QString key, const QString data)
{
QString finalKey("ModOrganizer2_" + key);
@@ -921,51 +884,6 @@ bool Settings::archiveParsing() const
return m_Settings.value("Settings/archive_parsing_experimental", false).toBool();
}
-QVariant Settings::pluginSetting(const QString &pluginName, const QString &key) const
-{
- auto iterPlugin = m_PluginSettings.find(pluginName);
- if (iterPlugin == m_PluginSettings.end()) {
- return QVariant();
- }
- auto iterSetting = iterPlugin->find(key);
- if (iterSetting == iterPlugin->end()) {
- return QVariant();
- }
-
- return *iterSetting;
-}
-
-void Settings::setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value)
-{
- auto iterPlugin = m_PluginSettings.find(pluginName);
- if (iterPlugin == m_PluginSettings.end()) {
- throw MyException(tr("attempt to store setting for unknown plugin \"%1\"").arg(pluginName));
- }
-
- // store the new setting both in memory and in the ini
- m_PluginSettings[pluginName][key] = value;
- m_Settings.setValue("Plugins/" + pluginName + "/" + key, value);
-}
-
-QVariant Settings::pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const
-{
- if (!m_PluginSettings.contains(pluginName)) {
- return def;
- }
- return m_Settings.value("PluginPersistance/" + pluginName + "/" + key, def);
-}
-
-void Settings::setPluginPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync)
-{
- if (!m_PluginSettings.contains(pluginName)) {
- throw MyException(tr("attempt to store setting for unknown plugin \"%1\"").arg(pluginName));
- }
- m_Settings.setValue("PluginPersistance/" + pluginName + "/" + key, value);
- if (sync) {
- m_Settings.sync();
- }
-}
-
QString Settings::language()
{
QString result = m_Settings.value("Settings/language", "").toString();
@@ -1122,24 +1040,6 @@ void Settings::updateServers(ServerList servers)
}
}
-void Settings::addBlacklistPlugin(const QString &fileName)
-{
- m_PluginBlacklist.insert(fileName);
- writePluginBlacklist();
-}
-
-void Settings::writePluginBlacklist()
-{
- m_Settings.remove("pluginBlacklist");
-
- ScopedWriteArray swa(m_Settings, "pluginBlacklist");
- int idx = 0;
- for (const QString &plugin : m_PluginBlacklist) {
- m_Settings.setArrayIndex(idx++);
- m_Settings.setValue("name", plugin);
- }
-}
-
std::map Settings::getRecentDirectories() const
{
std::map map;
@@ -1365,6 +1265,16 @@ const ColorSettings& Settings::colors() const
return m_Colors;
}
+PluginSettings& Settings::plugins()
+{
+ return m_Plugins;
+}
+
+const PluginSettings& Settings::plugins() const
+{
+ return m_Plugins;
+}
+
QSettings::Status Settings::sync() const
{
m_Settings.sync();
@@ -1772,6 +1682,158 @@ void ColorSettings::setPluginListContained(const QColor& c)
}
+PluginSettings::PluginSettings(QSettings& settings)
+ : m_Settings(settings)
+{
+}
+
+void PluginSettings::clearPlugins()
+{
+ m_Plugins.clear();
+ m_PluginSettings.clear();
+
+ m_PluginBlacklist.clear();
+
+ ScopedReadArray sra(m_Settings, "pluginBlacklist");
+ for (int i = 0; i < sra.count(); ++i) {
+ m_Settings.setArrayIndex(i);
+ m_PluginBlacklist.insert(m_Settings.value("name").toString());
+ }
+}
+
+void PluginSettings::registerPlugin(IPlugin *plugin)
+{
+ m_Plugins.push_back(plugin);
+ m_PluginSettings.insert(plugin->name(), QVariantMap());
+ m_PluginDescriptions.insert(plugin->name(), QVariantMap());
+ for (const PluginSetting &setting : plugin->settings()) {
+ QVariant temp = m_Settings.value("Plugins/" + plugin->name() + "/" + setting.key, setting.defaultValue);
+ if (!temp.convert(setting.defaultValue.type())) {
+ log::warn(
+ "failed to interpret \"{}\" as correct type for \"{}\" in plugin \"{}\", using default",
+ temp.toString(), setting.key, plugin->name());
+ temp = setting.defaultValue;
+ }
+ m_PluginSettings[plugin->name()][setting.key] = temp;
+ m_PluginDescriptions[plugin->name()][setting.key] = QString("%1 (default: %2)").arg(setting.description).arg(setting.defaultValue.toString());
+ }
+}
+
+bool PluginSettings::pluginBlacklisted(const QString &fileName) const
+{
+ return m_PluginBlacklist.contains(fileName);
+}
+
+QVariant PluginSettings::pluginSetting(const QString &pluginName, const QString &key) const
+{
+ auto iterPlugin = m_PluginSettings.find(pluginName);
+ if (iterPlugin == m_PluginSettings.end()) {
+ return QVariant();
+ }
+ auto iterSetting = iterPlugin->find(key);
+ if (iterSetting == iterPlugin->end()) {
+ return QVariant();
+ }
+
+ return *iterSetting;
+}
+
+void PluginSettings::setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value)
+{
+ auto iterPlugin = m_PluginSettings.find(pluginName);
+ if (iterPlugin == m_PluginSettings.end()) {
+ throw MyException(QObject::tr("attempt to store setting for unknown plugin \"%1\"").arg(pluginName));
+ }
+
+ // store the new setting both in memory and in the ini
+ m_PluginSettings[pluginName][key] = value;
+ m_Settings.setValue("Plugins/" + pluginName + "/" + key, value);
+}
+
+QVariant PluginSettings::pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const
+{
+ if (!m_PluginSettings.contains(pluginName)) {
+ return def;
+ }
+ return m_Settings.value("PluginPersistance/" + pluginName + "/" + key, def);
+}
+
+void PluginSettings::setPluginPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync)
+{
+ if (!m_PluginSettings.contains(pluginName)) {
+ throw MyException(QObject::tr("attempt to store setting for unknown plugin \"%1\"").arg(pluginName));
+ }
+ m_Settings.setValue("PluginPersistance/" + pluginName + "/" + key, value);
+ if (sync) {
+ m_Settings.sync();
+ }
+}
+
+void PluginSettings::addBlacklistPlugin(const QString &fileName)
+{
+ m_PluginBlacklist.insert(fileName);
+ writePluginBlacklist();
+}
+
+void PluginSettings::writePluginBlacklist()
+{
+ m_Settings.remove("pluginBlacklist");
+
+ ScopedWriteArray swa(m_Settings, "pluginBlacklist");
+ int idx = 0;
+ for (const QString &plugin : m_PluginBlacklist) {
+ m_Settings.setArrayIndex(idx++);
+ m_Settings.setValue("name", plugin);
+ }
+}
+
+QVariantMap PluginSettings::pluginSettings(const QString &pluginName) const
+{
+ return m_PluginSettings[pluginName];
+}
+
+void PluginSettings::setPluginSettings(const QString &pluginName, const QVariantMap& map)
+{
+ m_PluginSettings[pluginName] = map;
+}
+
+QVariantMap PluginSettings::pluginDescriptions(const QString &pluginName) const
+{
+ return m_PluginDescriptions[pluginName];
+}
+
+void PluginSettings::pluginDescriptions(const QString &pluginName, const QVariantMap& map)
+{
+ m_PluginDescriptions[pluginName] = map;
+}
+
+const QSet& PluginSettings::pluginBlacklist() const
+{
+ return m_PluginBlacklist;
+}
+
+void PluginSettings::setPluginBlacklist(const QStringList& pluginNames)
+{
+ m_PluginBlacklist.clear();
+
+ for (const auto& name : pluginNames) {
+ m_PluginBlacklist.insert(name);
+ }
+}
+
+void PluginSettings::save()
+{
+ for (auto iterPlugins=m_PluginSettings.begin(); iterPlugins!=m_PluginSettings.end(); ++iterPlugins) {
+ for (auto iterSettings=iterPlugins->begin(); iterSettings!=iterPlugins->end(); ++iterSettings) {
+ const auto key = "Plugins/" + iterPlugins.key() + "/" + iterSettings.key();
+ m_Settings.setValue(key, iterSettings.value());
+ }
+ }
+
+ writePluginBlacklist();
+}
+
+
GeometrySaver::GeometrySaver(Settings& s, QDialog* dialog)
: m_settings(s), m_dialog(dialog)
{
diff --git a/src/settings.h b/src/settings.h
index 698cfe21..fc33e0de 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -128,6 +128,46 @@ private:
};
+class PluginSettings
+{
+public:
+ PluginSettings(QSettings& settings);
+
+ void clearPlugins();
+ void registerPlugin(MOBase::IPlugin *plugin);
+ void addPluginSettings(const std::vector &plugins);
+
+ QVariant pluginSetting(const QString &pluginName, const QString &key) const;
+ void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value);
+ QVariant pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const;
+ void setPluginPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync);
+ void addBlacklistPlugin(const QString &fileName);
+ bool pluginBlacklisted(const QString &fileName) const;
+ void setPluginBlacklist(const QStringList& pluginNames);
+ std::vector plugins() const { return m_Plugins; }
+
+ QVariantMap pluginSettings(const QString &pluginName) const;
+ void setPluginSettings(const QString &pluginName, const QVariantMap& map);
+
+ QVariantMap pluginDescriptions(const QString &pluginName) const;
+ void pluginDescriptions(const QString &pluginName, const QVariantMap& map);
+
+ const QSet& pluginBlacklist() const;
+
+ void save();
+
+private:
+ QSettings& m_Settings;
+ std::vector m_Plugins;
+ QMap m_PluginSettings;
+ QMap m_PluginDescriptions;
+ QSet m_PluginBlacklist;
+
+ void readPluginBlacklist();
+ void writePluginBlacklist();
+};
+
+
enum class EndorsementState
{
Accepted = 1,
@@ -158,23 +198,6 @@ public:
QString getFilename() const;
- /**
- * unregister all plugins from settings
- */
- void clearPlugins();
-
- /**
- * @brief register plugin to be configurable
- * @param plugin the plugin to register
- * @return true if the plugin may be registered, false if it is blacklisted
- */
- void registerPlugin(MOBase::IPlugin *plugin);
-
- /**
- * set up the settings for the specified plugins
- **/
- void addPluginSettings(const std::vector &plugins);
-
/**
* @return true if the user wants unchecked plugins (esp, esm) should be hidden from
* the virtual dat adirectory
@@ -284,6 +307,9 @@ public:
ColorSettings& colors();
const ColorSettings& colors() const;
+ PluginSettings& plugins();
+ const PluginSettings& plugins() const;
+
/**
* @return true if the user has set up automatic login to nexus
@@ -422,42 +448,6 @@ public:
QSettings &directInterface() { return m_Settings; }
const QSettings &directInterface() const { return m_Settings; }
- /**
- * @brief retrieve a setting for one of the installed plugins
- * @param pluginName name of the plugin
- * @param key name of the setting to retrieve
- * @return the requested value as a QVariant
- * @note an invalid QVariant is returned if the the plugin/setting is not declared
- */
- QVariant pluginSetting(const QString &pluginName, const QString &key) const;
-
- /**
- * @brief set a setting for one of the installed mods
- * @param pluginName name of the plugin
- * @param key name of the setting to change
- * @param value the new value to set
- * @throw an exception is thrown if pluginName is invalid
- */
- void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value);
-
- /**
- * @brief retrieve a persistent value for a plugin
- * @param pluginName name of the plugin to store data for
- * @param key id of the value to retrieve
- * @param def default value to return if the value is not set
- * @return the requested value
- */
- QVariant pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const;
-
- /**
- * @brief set a persistent value for a plugin
- * @param pluginName name of the plugin to store data for
- * @param key id of the value to retrieve
- * @param value value to set
- * @throw an exception is thrown if pluginName is invalid
- */
- void setPluginPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync);
-
/**
* @return short code of the configured language (corresponding to the translation files)
*/
@@ -469,24 +459,6 @@ public:
ServerList getServersFromOldMap() const;
void updateServers(ServerList servers);
- /**
- * @brief add a plugin that is to be blacklisted
- * @param fileName name of the plugin to blacklist
- */
- void addBlacklistPlugin(const QString &fileName);
-
- /**
- * @brief test if a plugin is blacklisted and shouldn't be loaded
- * @param fileName name of the plugin
- * @return true if the file is blacklisted
- */
- bool pluginBlacklisted(const QString &fileName) const;
-
- /**
- * @return all loaded MO plugins
- */
- std::vector plugins() const { return m_Plugins; }
-
bool usePrereleases() const;
void setUsePrereleases(bool b);
@@ -513,12 +485,6 @@ public:
void dump() const;
- // temp
- QMap m_PluginSettings;
- QMap m_PluginDescriptions;
- QSet m_PluginBlacklist;
- void writePluginBlacklist();
-
public slots:
void managedGameChanged(MOBase::IPluginGame const *gamePlugin);
@@ -532,13 +498,12 @@ private:
mutable QSettings m_Settings;
GeometrySettings m_Geometry;
ColorSettings m_Colors;
+ PluginSettings m_Plugins;
LoadMechanism m_LoadMechanism;
- std::vector m_Plugins;
static bool obfuscate(const QString key, const QString data);
static QString deObfuscate(const QString key);
- void readPluginBlacklist();
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
void setConfigurablePath(const QString &key, const QString& path);
};
diff --git a/src/settingsdialogplugins.cpp b/src/settingsdialogplugins.cpp
index 329ba301..956971fe 100644
--- a/src/settingsdialogplugins.cpp
+++ b/src/settingsdialogplugins.cpp
@@ -12,19 +12,19 @@ PluginsSettingsTab::PluginsSettingsTab(Settings& s, SettingsDialog& d)
// display plugin settings
QSet handledNames;
- for (IPlugin *plugin : settings().plugins()) {
+ for (IPlugin *plugin : settings().plugins().plugins()) {
if (handledNames.contains(plugin->name()))
continue;
QListWidgetItem *listItem = new QListWidgetItem(plugin->name(), ui->pluginsList);
listItem->setData(Qt::UserRole, QVariant::fromValue((void*)plugin));
- listItem->setData(Qt::UserRole + 1, settings().m_PluginSettings[plugin->name()]);
- listItem->setData(Qt::UserRole + 2, settings().m_PluginDescriptions[plugin->name()]);
+ listItem->setData(Qt::UserRole + 1, settings().plugins().pluginSettings(plugin->name()));
+ listItem->setData(Qt::UserRole + 2, settings().plugins().pluginDescriptions(plugin->name()));
ui->pluginsList->addItem(listItem);
handledNames.insert(plugin->name());
}
// display plugin blacklist
- for (const QString &pluginName : settings().m_PluginBlacklist) {
+ for (const QString &pluginName : settings().plugins().pluginBlacklist()) {
ui->pluginBlacklist->addItem(pluginName);
}
@@ -42,21 +42,19 @@ void PluginsSettingsTab::update()
// transfer plugin settings to in-memory structure
for (int i = 0; i < ui->pluginsList->count(); ++i) {
QListWidgetItem *item = ui->pluginsList->item(i);
- settings().m_PluginSettings[item->text()] = item->data(Qt::UserRole + 1).toMap();
- }
- // store plugin settings on disc
- for (auto iterPlugins = settings().m_PluginSettings.begin(); iterPlugins != settings().m_PluginSettings.end(); ++iterPlugins) {
- for (auto iterSettings = iterPlugins->begin(); iterSettings != iterPlugins->end(); ++iterSettings) {
- qsettings().setValue("Plugins/" + iterPlugins.key() + "/" + iterSettings.key(), iterSettings.value());
- }
+ settings().plugins().setPluginSettings(
+ item->text(), item->data(Qt::UserRole + 1).toMap());
}
- // store plugin blacklist
- settings().m_PluginBlacklist.clear();
+ // set plugin blacklist
+ QStringList names;
for (QListWidgetItem *item : ui->pluginBlacklist->findItems("*", Qt::MatchWildcard)) {
- settings().m_PluginBlacklist.insert(item->text());
+ names.push_back(item->text());
}
- settings().writePluginBlacklist();
+
+ settings().plugins().setPluginBlacklist(names);
+
+ settings().plugins().save();
}
void PluginsSettingsTab::closing()
--
cgit v1.3.1
From 2a2af36a380c83043ff57ea312e7705bb77e6971 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sun, 8 Sep 2019 00:27:45 -0400
Subject: documentation for settings renamed some PluginSettings members and
moved them around
---
src/organizercore.cpp | 10 +--
src/plugincontainer.cpp | 4 +-
src/settings.cpp | 130 +++++++++++++++---------------
src/settings.h | 181 +++++++++++++++++++++++++++++++++---------
src/settingsdialogplugins.cpp | 10 +--
5 files changed, 222 insertions(+), 113 deletions(-)
(limited to 'src/plugincontainer.cpp')
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 1a89641d..91e16716 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -866,26 +866,26 @@ void OrganizerCore::modDataChanged(MOBase::IModInterface *)
QVariant OrganizerCore::pluginSetting(const QString &pluginName,
const QString &key) const
{
- return m_Settings.plugins().pluginSetting(pluginName, key);
+ return m_Settings.plugins().setting(pluginName, key);
}
void OrganizerCore::setPluginSetting(const QString &pluginName,
const QString &key, const QVariant &value)
{
- m_Settings.plugins().setPluginSetting(pluginName, key, value);
+ m_Settings.plugins().setSetting(pluginName, key, value);
}
QVariant OrganizerCore::persistent(const QString &pluginName,
const QString &key,
const QVariant &def) const
{
- return m_Settings.plugins().pluginPersistent(pluginName, key, def);
+ return m_Settings.plugins().persistent(pluginName, key, def);
}
void OrganizerCore::setPersistent(const QString &pluginName, const QString &key,
const QVariant &value, bool sync)
{
- m_Settings.plugins().setPluginPersistent(pluginName, key, value, sync);
+ m_Settings.plugins().setPersistent(pluginName, key, value, sync);
}
QString OrganizerCore::pluginDataPath() const
@@ -2580,7 +2580,7 @@ void OrganizerCore::prepareStart()
m_CurrentProfile->writeModlist();
m_CurrentProfile->createTweakedIniFile();
saveCurrentLists();
- m_Settings.game().setupLoadMechanism();
+ m_Settings.game().loadMechanism().activate(m_Settings.game().loadMechanismType());
storeSettings();
}
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index 16a77387..c0706ba8 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -266,7 +266,7 @@ void PluginContainer::loadPlugins()
"(Please note: If this is the first time you see this message for this plugin you may want to give it another try. "
"The plugin may be able to recover from the problem)").arg(fileName),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
- m_Organizer->settings().plugins().addBlacklistPlugin(fileName);
+ m_Organizer->settings().plugins().addBlacklist(fileName);
}
loadCheck.close();
}
@@ -279,7 +279,7 @@ void PluginContainer::loadPlugins()
while (iter.hasNext()) {
iter.next();
- if (m_Organizer->settings().plugins().pluginBlacklisted(iter.fileName())) {
+ if (m_Organizer->settings().plugins().blacklisted(iter.fileName())) {
log::debug("plugin \"{}\" blacklisted", iter.fileName());
continue;
}
diff --git a/src/settings.cpp b/src/settings.cpp
index a33005b6..ce9676ea 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -512,9 +512,9 @@ const LoadMechanism& GameSettings::loadMechanism() const
return m_LoadMechanism;
}
-void GameSettings::setupLoadMechanism()
+LoadMechanism& GameSettings::loadMechanism()
{
- m_LoadMechanism.activate(loadMechanismType());
+ return m_LoadMechanism;
}
bool GameSettings::hideUncheckedPlugins() const
@@ -1063,19 +1063,7 @@ void PluginSettings::clearPlugins()
m_PluginSettings.clear();
m_PluginBlacklist.clear();
- m_PluginBlacklist = readPluginBlacklist();
-}
-
-QSet PluginSettings::readPluginBlacklist() const
-{
- QSet set;
-
- ScopedReadArray sra(m_Settings, "pluginBlacklist");
- sra.for_each([&]{
- set.insert(sra.get("name"));
- });
-
- return set;
+ m_PluginBlacklist = readBlacklist();
}
void PluginSettings::registerPlugin(IPlugin *plugin)
@@ -1106,12 +1094,12 @@ void PluginSettings::registerPlugin(IPlugin *plugin)
}
}
-bool PluginSettings::pluginBlacklisted(const QString &fileName) const
+std::vector PluginSettings::plugins() const
{
- return m_PluginBlacklist.contains(fileName);
+ return m_Plugins;
}
-QVariant PluginSettings::pluginSetting(const QString &pluginName, const QString &key) const
+QVariant PluginSettings::setting(const QString &pluginName, const QString &key) const
{
auto iterPlugin = m_PluginSettings.find(pluginName);
if (iterPlugin == m_PluginSettings.end()) {
@@ -1126,7 +1114,7 @@ QVariant PluginSettings::pluginSetting(const QString &pluginName, const QString
return *iterSetting;
}
-void PluginSettings::setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value)
+void PluginSettings::setSetting(const QString &pluginName, const QString &key, const QVariant &value)
{
auto iterPlugin = m_PluginSettings.find(pluginName);
@@ -1141,7 +1129,27 @@ void PluginSettings::setPluginSetting(const QString &pluginName, const QString &
set(m_Settings, "Plugins", pluginName + "/" + key, value);
}
-QVariant PluginSettings::pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const
+QVariantMap PluginSettings::settings(const QString &pluginName) const
+{
+ return m_PluginSettings[pluginName];
+}
+
+void PluginSettings::setSettings(const QString &pluginName, const QVariantMap& map)
+{
+ m_PluginSettings[pluginName] = map;
+}
+
+QVariantMap PluginSettings::descriptions(const QString &pluginName) const
+{
+ return m_PluginDescriptions[pluginName];
+}
+
+void PluginSettings::setDescriptions(const QString &pluginName, const QVariantMap& map)
+{
+ m_PluginDescriptions[pluginName] = map;
+}
+
+QVariant PluginSettings::persistent(const QString &pluginName, const QString &key, const QVariant &def) const
{
if (!m_PluginSettings.contains(pluginName)) {
return def;
@@ -1150,7 +1158,7 @@ QVariant PluginSettings::pluginPersistent(const QString &pluginName, const QStri
return get(m_Settings, "PluginPersistance", pluginName + "/" + key, def);
}
-void PluginSettings::setPluginPersistent(
+void PluginSettings::setPersistent(
const QString &pluginName, const QString &key, const QVariant &value, bool sync)
{
if (!m_PluginSettings.contains(pluginName)) {
@@ -1165,74 +1173,70 @@ void PluginSettings::setPluginPersistent(
m_Settings.sync();
}
}
-
-void PluginSettings::addBlacklistPlugin(const QString &fileName)
+void PluginSettings::addBlacklist(const QString &fileName)
{
m_PluginBlacklist.insert(fileName);
- writePluginBlacklist();
+ writeBlacklist();
}
-void PluginSettings::writePluginBlacklist()
+bool PluginSettings::blacklisted(const QString &fileName) const
{
- const auto current = readPluginBlacklist();
-
- if (current.size() > m_PluginBlacklist.size()) {
- // Qt can't remove array elements, the section must be cleared
- removeSection(m_Settings, "pluginBlacklist");
- }
+ return m_PluginBlacklist.contains(fileName);
+}
- ScopedWriteArray swa(m_Settings, "pluginBlacklist", m_PluginBlacklist.size());
+void PluginSettings::setBlacklist(const QStringList& pluginNames)
+{
+ m_PluginBlacklist.clear();
- for (const QString &plugin : m_PluginBlacklist) {
- swa.next();
- swa.set("name", plugin);
+ for (const auto& name : pluginNames) {
+ m_PluginBlacklist.insert(name);
}
}
-QVariantMap PluginSettings::pluginSettings(const QString &pluginName) const
+const QSet& PluginSettings::blacklist() const
{
- return m_PluginSettings[pluginName];
+ return m_PluginBlacklist;
}
-void PluginSettings::setPluginSettings(const QString &pluginName, const QVariantMap& map)
+void PluginSettings::save()
{
- m_PluginSettings[pluginName] = map;
-}
+ for (auto iterPlugins=m_PluginSettings.begin(); iterPlugins!=m_PluginSettings.end(); ++iterPlugins) {
+ for (auto iterSettings=iterPlugins->begin(); iterSettings!=iterPlugins->end(); ++iterSettings) {
+ const auto key = iterPlugins.key() + "/" + iterSettings.key();
+ set(m_Settings, "Plugins", key, iterSettings.value());
+ }
+ }
-QVariantMap PluginSettings::pluginDescriptions(const QString &pluginName) const
-{
- return m_PluginDescriptions[pluginName];
+ writeBlacklist();
}
-void PluginSettings::pluginDescriptions(const QString &pluginName, const QVariantMap& map)
+void PluginSettings::writeBlacklist()
{
- m_PluginDescriptions[pluginName] = map;
-}
+ const auto current = readBlacklist();
-const QSet& PluginSettings::pluginBlacklist() const
-{
- return m_PluginBlacklist;
-}
+ if (current.size() > m_PluginBlacklist.size()) {
+ // Qt can't remove array elements, the section must be cleared
+ removeSection(m_Settings, "pluginBlacklist");
+ }
-void PluginSettings::setPluginBlacklist(const QStringList& pluginNames)
-{
- m_PluginBlacklist.clear();
+ ScopedWriteArray swa(m_Settings, "pluginBlacklist", m_PluginBlacklist.size());
- for (const auto& name : pluginNames) {
- m_PluginBlacklist.insert(name);
+ for (const QString &plugin : m_PluginBlacklist) {
+ swa.next();
+ swa.set("name", plugin);
}
}
-void PluginSettings::save()
+QSet PluginSettings::readBlacklist() const
{
- for (auto iterPlugins=m_PluginSettings.begin(); iterPlugins!=m_PluginSettings.end(); ++iterPlugins) {
- for (auto iterSettings=iterPlugins->begin(); iterSettings!=iterPlugins->end(); ++iterSettings) {
- const auto key = iterPlugins.key() + "/" + iterSettings.key();
- set(m_Settings, "Plugins", key, iterSettings.value());
- }
- }
+ QSet set;
- writePluginBlacklist();
+ ScopedReadArray sra(m_Settings, "pluginBlacklist");
+ sra.for_each([&]{
+ set.insert(sra.get("name"));
+ });
+
+ return set;
}
diff --git a/src/settings.h b/src/settings.h
index 2ff8da1c..d3926d72 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -40,6 +40,10 @@ class ServerList;
class Settings;
class ExpanderWidget;
+
+// helper class that calls restoreGeometry() in the constructor and
+// saveGeometry() in the destructor
+//
class GeometrySaver
{
public:
@@ -52,48 +56,57 @@ private:
};
+// setting for the currently managed game
+//
class GameSettings
{
public:
GameSettings(QSettings& setting);
+ // game plugin
+ //
const MOBase::IPluginGame* plugin();
void setPlugin(const MOBase::IPluginGame* gamePlugin);
- /**
- * whether files of the core game are forced-enabled so the user can't
- * accidentally disable them
- */
+ // whether files of the core game are forced-enabled so the user can't
+ // accidentally disable them
+ //
bool forceEnableCoreFiles() const;
void setForceEnableCoreFiles(bool b);
- /**
- * the directory where the managed game is stored (with native separators)
- **/
+ // the directory where the managed game is stored
+ //
std::optional directory() const;
void setDirectory(const QString& path);
+ // the name of the managed game
+ //
std::optional name() const;
void setName(const QString& name);
+ // the edition of the managed game
+ //
std::optional edition() const;
void setEdition(const QString& name);
+ // the current profile name
+ //
std::optional selectedProfileName() const;
void setSelectedProfileName(const QString& name);
- /**
- * @return the load mechanism to be used
- **/
+ // load mechanism type
+ //
LoadMechanism::EMechanism loadMechanismType() const;
void setLoadMechanism(LoadMechanism::EMechanism m);
+
+ // load mechanism object
+ //
const LoadMechanism& loadMechanism() const;
- void setupLoadMechanism();
+ LoadMechanism& loadMechanism();
- /**
- * @return true if the user wants unchecked plugins (esp, esm) should be hidden from
- * the virtual data directory
- **/
+ // whether the user wants unchecked plugins (esp, esm) to be hidden from
+ // the virtual data directory
+ //
bool hideUncheckedPlugins() const;
void setHideUncheckedPlugins(bool b);
@@ -104,11 +117,26 @@ private:
};
+// geometry settings for various widgets; this should contain any setting that
+// can get invalid through UI changes or when users change display settings
+// (resolution, monitors, etc.); see WidgetSettings for the counterpart
+//
+// all these settings are stored under [Geometry] and get wiped when the
+// "reset geometry settings" button is clicked in the settings
+//
+// saveGeometry(), restoreGeometry(), saveState() and restoreState() call the
+// same functions on the given widget
+//
class GeometrySettings
{
public:
GeometrySettings(QSettings& s);
+ // asks the settings to get reset
+ //
+ // this gets called from the settings dialog and gets picked up in
+ // resetIfNeeded(), called from runApplication() just before exiting
+ //
void requestReset();
void resetIfNeeded();
@@ -137,10 +165,18 @@ public:
void saveDocks(const QMainWindow* w);
void restoreDocks(QMainWindow* w) const;
+ // this should be a generic "tab order" setting, but it only happens for the
+ // mod info dialog right now
+ //
QStringList modInfoTabOrder() const;
void setModInfoTabOrder(const QString& names);
+ // assumes the given widget is a top-level
+ //
void centerOnMainWindowMonitor(QWidget* w);
+
+ // saves the monitor number of the given window
+ //
void saveMainWindowMonitor(const QMainWindow* w);
private:
@@ -149,33 +185,52 @@ private:
};
+// widget settings that should stay valid regardless of UI changes or when users
+// change display settings (resolution, monitors, etc.); see GeometrySettings
+// for the counterpart
+//
class WidgetSettings
{
public:
WidgetSettings(QSettings& s);
+ // selected index for a combobox
+ //
std::optional index(const QComboBox* cb) const;
void saveIndex(const QComboBox* cb);
void restoreIndex(QComboBox* cb, std::optional def={}) const;
+ // selected tab index for a tab widget
+ //
std::optional index(const QTabWidget* w) const;
void saveIndex(const QTabWidget* w);
void restoreIndex(QTabWidget* w, std::optional def={}) const;
+ // check state for a checkable button
+ //
std::optional checked(const QAbstractButton* w) const;
void saveChecked(const QAbstractButton* w);
void restoreChecked(QAbstractButton* w, std::optional def={}) const;
+ // returns the remembered button for a question dialog, or NoButton if the
+ // user hasn't saved the choice
+ //
MOBase::QuestionBoxMemory::Button questionButton(
const QString& windowName, const QString& filename) const;
+ // sets the button to be remembered for the given window
+ //
void setQuestionWindowButton(
const QString& windowName, MOBase::QuestionBoxMemory::Button button);
+ // sets the button to be remembered for the given file
+ //
void setQuestionFileButton(
const QString& windowName, const QString& filename,
MOBase::QuestionBoxMemory::Button choice);
+ // wipes all the remembered buttons
+ //
void resetQuestionButtons();
private:
@@ -183,13 +238,13 @@ private:
};
+// various color settings
+//
class ColorSettings
{
public:
ColorSettings(QSettings& s);
- void setCrashDumpsMax(int i) const;
-
QColor modlistOverwrittenLoose() const;
void setModlistOverwrittenLoose(const QColor& c);
@@ -212,46 +267,91 @@ public:
void setPreviousSeparatorColor(const QColor& c) const;
void removePreviousSeparatorColor();
- /**
- * @brief color the scrollbar of the mod list for custom separator colors?
- * @return the state of the setting
- */
+ // whether the scrollbar of the mod list should have colors for custom
+ // separator colors
+ //
bool colorSeparatorScrollbar() const;
void setColorSeparatorScrollbar(bool b);
- static QColor idealTextColor(const QColor& rBackgroundColor);
+ // returns a color with a good contrast for the given background
+ //
+ static QColor idealTextColor(const QColor& rBackgroundColor);
private:
QSettings& m_Settings;
};
+// settings about plugins
+//
class PluginSettings
{
public:
PluginSettings(QSettings& settings);
+
+ // forgets all the plugins
+ //
void clearPlugins();
+
+ // adds the given plugin to the list and loads all of its settings
+ //
void registerPlugin(MOBase::IPlugin *plugin);
- void addPluginSettings(const std::vector &plugins);
- QVariant pluginSetting(const QString &pluginName, const QString &key) const;
- void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value);
- QVariant pluginPersistent(const QString &pluginName, const QString &key, const QVariant &def) const;
- void setPluginPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync);
- void addBlacklistPlugin(const QString &fileName);
- bool pluginBlacklisted(const QString &fileName) const;
- void setPluginBlacklist(const QStringList& pluginNames);
- std::vector plugins() const { return m_Plugins; }
+ // returns all the registered plugins
+ //
+ std::vector plugins() const;
+
+
+ // returns the plugin setting for the given key
+ //
+ QVariant setting(const QString &pluginName, const QString &key) const;
+
+ // sets the plugin setting for the given key
+ //
+ void setSetting(const QString &pluginName, const QString &key, const QVariant &value);
+
+ // returns all settings
+ //
+ QVariantMap settings(const QString &pluginName) const;
+
+ // overwrites all settings
+ //
+ void setSettings(const QString &pluginName, const QVariantMap& map);
+
+ // returns all descriptions
+ //
+ QVariantMap descriptions(const QString &pluginName) const;
- QVariantMap pluginSettings(const QString &pluginName) const;
- void setPluginSettings(const QString &pluginName, const QVariantMap& map);
+ // overwrites all descriptions
+ //
+ void setDescriptions(const QString &pluginName, const QVariantMap& map);
- QVariantMap pluginDescriptions(const QString &pluginName) const;
- void pluginDescriptions(const QString &pluginName, const QVariantMap& map);
- const QSet& pluginBlacklist() const;
+ // ?
+ QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def) const;
+ void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync);
+
+ // adds the given plugin to the blacklist
+ //
+ void addBlacklist(const QString &fileName);
+
+ // returns whether the given plugin is blacklisted
+ //
+ bool blacklisted(const QString &fileName) const;
+
+ // overwrites the whole blacklist
+ //
+ void setBlacklist(const QStringList& pluginNames);
+
+ // returns the blacklist
+ //
+ const QSet& blacklist() const;
+
+
+ // commits all the settings to the ini
+ //
void save();
private:
@@ -261,8 +361,13 @@ private:
QMap m_PluginDescriptions;
QSet m_PluginBlacklist;
- void writePluginBlacklist();
- QSet readPluginBlacklist() const;
+ // commits the blacklist to the ini
+ //
+ void writeBlacklist();
+
+ // reads the blacklist from the ini
+ //
+ QSet readBlacklist() const;
};
diff --git a/src/settingsdialogplugins.cpp b/src/settingsdialogplugins.cpp
index 956971fe..c84d0556 100644
--- a/src/settingsdialogplugins.cpp
+++ b/src/settingsdialogplugins.cpp
@@ -17,14 +17,14 @@ PluginsSettingsTab::PluginsSettingsTab(Settings& s, SettingsDialog& d)
continue;
QListWidgetItem *listItem = new QListWidgetItem(plugin->name(), ui->pluginsList);
listItem->setData(Qt::UserRole, QVariant::fromValue((void*)plugin));
- listItem->setData(Qt::UserRole + 1, settings().plugins().pluginSettings(plugin->name()));
- listItem->setData(Qt::UserRole + 2, settings().plugins().pluginDescriptions(plugin->name()));
+ listItem->setData(Qt::UserRole + 1, settings().plugins().settings(plugin->name()));
+ listItem->setData(Qt::UserRole + 2, settings().plugins().descriptions(plugin->name()));
ui->pluginsList->addItem(listItem);
handledNames.insert(plugin->name());
}
// display plugin blacklist
- for (const QString &pluginName : settings().plugins().pluginBlacklist()) {
+ for (const QString &pluginName : settings().plugins().blacklist()) {
ui->pluginBlacklist->addItem(pluginName);
}
@@ -42,7 +42,7 @@ void PluginsSettingsTab::update()
// transfer plugin settings to in-memory structure
for (int i = 0; i < ui->pluginsList->count(); ++i) {
QListWidgetItem *item = ui->pluginsList->item(i);
- settings().plugins().setPluginSettings(
+ settings().plugins().setSettings(
item->text(), item->data(Qt::UserRole + 1).toMap());
}
@@ -52,7 +52,7 @@ void PluginsSettingsTab::update()
names.push_back(item->text());
}
- settings().plugins().setPluginBlacklist(names);
+ settings().plugins().setBlacklist(names);
settings().plugins().save();
}
--
cgit v1.3.1
From d91580cc2669e2ab018c2aaab472cd763e5441d8 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Fri, 18 Oct 2019 15:39:07 -0400
Subject: initial Spawner and SpawnedProcess added steam app id to spawn
parameters removed threadHandle, unused moved most of the stuff from
OrganizerCore::spawnBinaryProcess() to Spawner replaced m_UserInterface by
m_MainWindow
---
src/mainwindow.cpp | 4 +-
src/organizercore.cpp | 192 ++++++++++++++++--------------------------------
src/organizercore.h | 9 ++-
src/plugincontainer.cpp | 1 +
src/spawn.cpp | 131 +++++++++++++++++++++++++++++++--
src/spawn.h | 34 +++++++++
6 files changed, 230 insertions(+), 141 deletions(-)
(limited to 'src/plugincontainer.cpp')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 12ed40b3..b5b9ab0d 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -411,7 +411,7 @@ MainWindow::MainWindow(Settings &settings
m_Tutorial.expose("modList", m_OrganizerCore.modList());
m_Tutorial.expose("espList", m_OrganizerCore.pluginList());
- m_OrganizerCore.setUserInterface(this, this);
+ m_OrganizerCore.setUserInterface(this);
for (const QString &fileName : m_PluginContainer.pluginFileNames()) {
installTranslator(QFileInfo(fileName).baseName());
}
@@ -595,7 +595,7 @@ MainWindow::~MainWindow()
cleanup();
m_PluginContainer.setUserInterface(nullptr, nullptr);
- m_OrganizerCore.setUserInterface(nullptr, nullptr);
+ m_OrganizerCore.setUserInterface(nullptr);
m_IntegratedBrowser.close();
delete ui;
} catch (std::exception &e) {
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 5613e8ce..3c986004 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1,5 +1,5 @@
#include "organizercore.h"
-
+#include "mainwindow.h"
#include "delayedfilewriter.h"
#include "guessedvalue.h"
#include "imodinterface.h"
@@ -127,7 +127,7 @@ QStringList toStringList(InputIterator current, InputIterator end)
OrganizerCore::OrganizerCore(Settings &settings)
- : m_UserInterface(nullptr)
+ : m_MainWindow(nullptr)
, m_PluginContainer(nullptr)
, m_GameName()
, m_CurrentProfile(nullptr)
@@ -249,44 +249,43 @@ void OrganizerCore::updateExecutablesList()
m_PluginContainer, m_Settings.interface().displayForeign(), managedGame());
}
-void OrganizerCore::setUserInterface(IUserInterface *userInterface,
- QWidget *widget)
+void OrganizerCore::setUserInterface(MainWindow* mainWindow)
{
storeSettings();
- m_UserInterface = userInterface;
+ m_MainWindow = mainWindow;
- if (widget != nullptr) {
- connect(&m_ModList, SIGNAL(modlistChanged(QModelIndex, int)), widget,
+ if (m_MainWindow != nullptr) {
+ connect(&m_ModList, SIGNAL(modlistChanged(QModelIndex, int)), m_MainWindow,
SLOT(modlistChanged(QModelIndex, int)));
- connect(&m_ModList, SIGNAL(modlistChanged(QModelIndexList, int)), widget,
+ connect(&m_ModList, SIGNAL(modlistChanged(QModelIndexList, int)), m_MainWindow,
SLOT(modlistChanged(QModelIndexList, int)));
- connect(&m_ModList, SIGNAL(showMessage(QString)), widget,
+ connect(&m_ModList, SIGNAL(showMessage(QString)), m_MainWindow,
SLOT(showMessage(QString)));
- connect(&m_ModList, SIGNAL(modRenamed(QString, QString)), widget,
+ connect(&m_ModList, SIGNAL(modRenamed(QString, QString)), m_MainWindow,
SLOT(modRenamed(QString, QString)));
- connect(&m_ModList, SIGNAL(modUninstalled(QString)), widget,
+ connect(&m_ModList, SIGNAL(modUninstalled(QString)), m_MainWindow,
SLOT(modRemoved(QString)));
- connect(&m_ModList, SIGNAL(removeSelectedMods()), widget,
+ connect(&m_ModList, SIGNAL(removeSelectedMods()), m_MainWindow,
SLOT(removeMod_clicked()));
- connect(&m_ModList, SIGNAL(clearOverwrite()), widget,
+ connect(&m_ModList, SIGNAL(clearOverwrite()), m_MainWindow,
SLOT(clearOverwrite()));
- connect(&m_ModList, SIGNAL(requestColumnSelect(QPoint)), widget,
+ connect(&m_ModList, SIGNAL(requestColumnSelect(QPoint)), m_MainWindow,
SLOT(displayColumnSelection(QPoint)));
- connect(&m_ModList, SIGNAL(fileMoved(QString, QString, QString)), widget,
+ connect(&m_ModList, SIGNAL(fileMoved(QString, QString, QString)), m_MainWindow,
SLOT(fileMoved(QString, QString, QString)));
- connect(&m_ModList, SIGNAL(modorder_changed()), widget,
+ connect(&m_ModList, SIGNAL(modorder_changed()), m_MainWindow,
SLOT(modorder_changed()));
- connect(&m_PluginList, SIGNAL(writePluginsList()), widget,
+ connect(&m_PluginList, SIGNAL(writePluginsList()), m_MainWindow,
SLOT(esplist_changed()));
- connect(&m_PluginList, SIGNAL(esplist_changed()), widget,
+ connect(&m_PluginList, SIGNAL(esplist_changed()), m_MainWindow,
SLOT(esplist_changed()));
- connect(&m_DownloadManager, SIGNAL(showMessage(QString)), widget,
+ connect(&m_DownloadManager, SIGNAL(showMessage(QString)), m_MainWindow,
SLOT(showMessage(QString)));
}
- m_InstallationManager.setParentWidget(widget);
- m_Updater.setUserInterface(widget);
+ m_InstallationManager.setParentWidget(m_MainWindow);
+ m_Updater.setUserInterface(m_MainWindow);
checkForUpdates();
}
@@ -295,7 +294,7 @@ void OrganizerCore::checkForUpdates()
{
// this currently wouldn't work reliably if the ui isn't initialized yet to
// display the result
- if (m_UserInterface != nullptr) {
+ if (m_MainWindow != nullptr) {
m_Updater.testForUpdate(m_Settings);
}
}
@@ -755,13 +754,13 @@ MOBase::IModInterface *OrganizerCore::installMod(const QString &fileName,
int modIndex = ModInfo::getIndex(modName);
if (modIndex != UINT_MAX) {
ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex);
- if (hasIniTweaks && (m_UserInterface != nullptr)
+ if (hasIniTweaks && (m_MainWindow != nullptr)
&& (QMessageBox::question(qApp->activeWindow(), tr("Configure Mod"),
tr("This mod contains ini tweaks. Do you "
"want to configure them now?"),
QMessageBox::Yes | QMessageBox::No)
== QMessageBox::Yes)) {
- m_UserInterface->displayModInformation(
+ m_MainWindow->displayModInformation(
modInfo, modIndex, ModInfoTabIDs::IniFiles);
}
m_ModInstalled(modName);
@@ -822,13 +821,13 @@ void OrganizerCore::installDownload(int index)
ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex);
modInfo->addInstalledFile(modID, fileID);
- if (hasIniTweaks && m_UserInterface != nullptr
+ if (hasIniTweaks && m_MainWindow != nullptr
&& (QMessageBox::question(qApp->activeWindow(), tr("Configure Mod"),
tr("This mod contains ini tweaks. Do you "
"want to configure them now?"),
QMessageBox::Yes | QMessageBox::No)
== QMessageBox::Yes)) {
- m_UserInterface->displayModInformation(
+ m_MainWindow->displayModInformation(
modInfo, modIndex, ModInfoTabIDs::IniFiles);
}
@@ -1250,11 +1249,11 @@ HANDLE OrganizerCore::spawnBinaryDirect(const QFileInfo &binary,
std::unique_ptr dlg;
ILockedWaitingForProcess* uilock = nullptr;
- if (m_UserInterface != nullptr) {
- uilock = m_UserInterface->lock();
+ if (m_MainWindow != nullptr) {
+ uilock = m_MainWindow->lock();
}
else {
- // i.e. when running command line shortcuts there is no m_UserInterface
+ // i.e. when running command line shortcuts there is no user interface
dlg.reset(new LockedDialog);
dlg->show();
dlg->setEnabled(true);
@@ -1262,8 +1261,8 @@ HANDLE OrganizerCore::spawnBinaryDirect(const QFileInfo &binary,
}
ON_BLOCK_EXIT([&]() {
- if (m_UserInterface != nullptr) {
- m_UserInterface->unlock();
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->unlock();
} });
DWORD ignoreExitCode;
@@ -1275,35 +1274,21 @@ HANDLE OrganizerCore::spawnBinaryDirect(const QFileInfo &binary,
}
-HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
- const QString &arguments,
- const QString &profileName,
- const QDir ¤tDirectory,
- const QString &steamAppID,
- const QString &customOverwrite,
- const QList &forcedLibraries)
+HANDLE OrganizerCore::spawnBinaryProcess(
+ const QFileInfo &binary, const QString &arguments, const QString &profileName,
+ const QDir ¤tDirectory, const QString &steamAppID,
+ const QString &customOverwrite,
+ const QList &forcedLibraries)
{
spawn::SpawnParameters sp;
sp.binary = binary;
sp.arguments = arguments;
sp.currentDirectory = currentDirectory;
+ sp.steamAppID = steamAppID;
sp.hooked = true;
prepareStart();
- QWidget *window = qApp->activeWindow();
- if ((window != nullptr) && (!window->isVisible())) {
- window = nullptr;
- }
-
- if (!spawn::checkBinary(window, sp)) {
- return INVALID_HANDLE_VALUE;
- }
-
- if (!spawn::checkSteam(window, sp, managedGame()->gameDirectory(), steamAppID, m_Settings)) {
- return INVALID_HANDLE_VALUE;
- }
-
while (m_DirectoryUpdate) {
::Sleep(100);
QCoreApplication::processEvents();
@@ -1315,72 +1300,25 @@ HANDLE OrganizerCore::spawnBinaryProcess(const QFileInfo &binary,
}
// TODO: should also pass arguments
- if (m_AboutToRun(binary.absoluteFilePath())) {
- try {
- m_USVFS.updateMapping(fileMapping(profileName, customOverwrite));
- m_USVFS.updateForcedLibraries(forcedLibraries);
-
- } catch (const UsvfsConnectorException &e) {
- log::debug(e.what());
- return INVALID_HANDLE_VALUE;
- } catch (const std::exception &e) {
- QMessageBox::warning(window, tr("Error"), e.what());
- return INVALID_HANDLE_VALUE;
- }
-
- if (!spawn::checkEnvironment(window, sp)) {
- return INVALID_HANDLE_VALUE;
- }
-
- if (!spawn::checkBlacklist(window, sp, m_Settings)) {
- return INVALID_HANDLE_VALUE;
- }
-
- QString modsPath = settings().paths().mods();
-
- // Check if this a request with either an executable or a working directory under our mods folder
- // then will start the process in a virtualized "environment" with the appropriate paths fixed:
- // (i.e. mods\FNIS\path\exe => game\data\path\exe)
- QString cwdPath = currentDirectory.absolutePath();
- bool virtualizedCwd = cwdPath.startsWith(modsPath, Qt::CaseInsensitive);
- QString binPath = binary.absoluteFilePath();
- bool virtualizedBin = binPath.startsWith(modsPath, Qt::CaseInsensitive);
- if (virtualizedCwd || virtualizedBin) {
- if (virtualizedCwd) {
- int cwdOffset = cwdPath.indexOf('/', modsPath.length() + 1);
- QString adjustedCwd = cwdPath.mid(cwdOffset, -1);
- cwdPath = m_GamePlugin->dataDirectory().absolutePath();
- if (cwdOffset >= 0)
- cwdPath += adjustedCwd;
-
- }
-
- if (virtualizedBin) {
- int binOffset = binPath.indexOf('/', modsPath.length() + 1);
- QString adjustedBin = binPath.mid(binOffset, -1);
- binPath = m_GamePlugin->dataDirectory().absolutePath();
- if (binOffset >= 0)
- binPath += adjustedBin;
- }
-
- QString cmdline
- = QString("launch \"%1\" \"%2\" %3")
- .arg(QDir::toNativeSeparators(cwdPath),
- QDir::toNativeSeparators(binPath), arguments);
+ if (!m_AboutToRun(binary.absoluteFilePath())) {
+ log::debug("start of \"{}\" canceled by plugin", binary.absoluteFilePath());
+ return INVALID_HANDLE_VALUE;
+ }
- sp.binary = QFileInfo(QCoreApplication::applicationFilePath());
- sp.arguments = cmdline;
- sp.currentDirectory.setPath(QCoreApplication::applicationDirPath());
+ try {
+ m_USVFS.updateMapping(fileMapping(profileName, customOverwrite));
+ m_USVFS.updateForcedLibraries(forcedLibraries);
- return spawn::startBinary(window, sp);
- } else {
- log::debug("Spawning direct process <{}, {}, {}>", binPath, arguments, cwdPath);
- return spawn::startBinary(window, sp);
- }
- } else {
- log::debug("start of \"{}\" canceled by plugin", binary.absoluteFilePath());
+ } catch (const UsvfsConnectorException &e) {
+ log::debug(e.what());
+ return INVALID_HANDLE_VALUE;
+ } catch (const std::exception &e) {
+ QMessageBox::warning(m_MainWindow, tr("Error"), e.what());
return INVALID_HANDLE_VALUE;
}
+
+ auto process = spawn::Spawner().spawn(m_MainWindow, m_GamePlugin, sp, m_Settings);
+ return process.releaseHandle();
}
HANDLE OrganizerCore::runShortcut(const MOShortcut& shortcut)
@@ -1498,13 +1436,13 @@ bool OrganizerCore::waitForApplication(HANDLE handle, LPDWORD exitCode)
return true;
ILockedWaitingForProcess* uilock = nullptr;
- if (m_UserInterface != nullptr) {
- uilock = m_UserInterface->lock();
+ if (m_MainWindow != nullptr) {
+ uilock = m_MainWindow->lock();
}
ON_BLOCK_EXIT([&] () {
- if (m_UserInterface != nullptr) {
- m_UserInterface->unlock();
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->unlock();
} });
return waitForProcessCompletion(handle, exitCode, uilock);
}
@@ -1762,8 +1700,8 @@ void OrganizerCore::refreshBSAList()
m_ActiveArchives = m_DefaultArchives;
}
- if (m_UserInterface != nullptr) {
- m_UserInterface->updateBSAList(m_DefaultArchives, m_ActiveArchives);
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->updateBSAList(m_DefaultArchives, m_ActiveArchives);
}
m_ArchivesInit = true;
@@ -1879,8 +1817,8 @@ void OrganizerCore::updateModsInDirectoryStructure(QMaparchivesWriter().writeImmediately(false);
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->archivesWriter().writeImmediately(false);
}
std::vector archives = enabledArchives();
@@ -2064,8 +2002,8 @@ void OrganizerCore::modStatusChanged(unsigned int index)
= m_DirectoryStructure->getOriginByName(ToWString(modInfo->name()));
origin.enable(false);
}
- if (m_UserInterface != nullptr) {
- m_UserInterface->archivesWriter().write();
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->archivesWriter().write();
}
}
modInfo->clearCaches();
@@ -2114,8 +2052,8 @@ void OrganizerCore::modStatusChanged(QList index) {
origin.enable(false);
}
}
- if (m_UserInterface != nullptr) {
- m_UserInterface->archivesWriter().write();
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->archivesWriter().write();
}
}
@@ -2290,8 +2228,8 @@ bool OrganizerCore::saveCurrentLists()
try {
savePluginList();
- if (m_UserInterface != nullptr) {
- m_UserInterface->archivesWriter().write();
+ if (m_MainWindow != nullptr) {
+ m_MainWindow->archivesWriter().write();
}
} catch (const std::exception &e) {
reportError(tr("failed to save load order: %1").arg(e.what()));
diff --git a/src/organizercore.h b/src/organizercore.h
index 0d0a092c..04c96ba6 100644
--- a/src/organizercore.h
+++ b/src/organizercore.h
@@ -3,7 +3,7 @@
#include "selfupdater.h"
-#include "iuserinterface.h" //should be class IUserInterface;
+#include "ilockedwaitingforprocess.h"
#include "settings.h"
#include "modlist.h"
#include "modinfo.h"
@@ -26,6 +26,8 @@
class ModListSortProxy;
class PluginListSortProxy;
class Profile;
+class MainWindow;
+
namespace MOBase {
template class GuessedValue;
class IModInterface;
@@ -101,7 +103,7 @@ public:
~OrganizerCore();
- void setUserInterface(IUserInterface *userInterface, QWidget *widget);
+ void setUserInterface(MainWindow* mainWindow);
void connectPlugins(PluginContainer *container);
void disconnectPlugins();
@@ -328,8 +330,7 @@ private:
static const unsigned int PROBLEM_MO1SCRIPTEXTENDERWORKAROUND = 1;
private:
-
- IUserInterface *m_UserInterface;
+ MainWindow* m_MainWindow;
PluginContainer *m_PluginContainer;
QString m_GameName;
MOBase::IPluginGame *m_GamePlugin;
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index c0706ba8..767d3eb8 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -3,6 +3,7 @@
#include "organizerproxy.h"
#include "report.h"
#include
+#include
#include
#include
#include
diff --git a/src/spawn.cpp b/src/spawn.cpp
index a34230b2..3c7d64ce 100644
--- a/src/spawn.cpp
+++ b/src/spawn.cpp
@@ -27,6 +27,7 @@ along with Mod Organizer. If not, see .
#include "envmodule.h"
#include "settings.h"
#include "settingsdialogworkarounds.h"
+#include
#include
#include
#include
@@ -440,7 +441,7 @@ QMessageBox::StandardButton confirmBlacklisted(
namespace spawn
{
-DWORD spawn(const SpawnParameters& sp, HANDLE& processHandle, HANDLE& threadHandle)
+DWORD spawn(const SpawnParameters& sp, HANDLE& processHandle)
{
BOOL inheritHandles = FALSE;
@@ -494,7 +495,7 @@ DWORD spawn(const SpawnParameters& sp, HANDLE& processHandle, HANDLE& threadHand
}
processHandle = pi.hProcess;
- threadHandle = pi.hThread;
+ ::CloseHandle(pi.hThread);
return ERROR_SUCCESS;
}
@@ -618,8 +619,7 @@ bool startSteam(QWidget* parent)
(password.isEmpty() ? "no" : "yes"));
HANDLE ph = INVALID_HANDLE_VALUE;
- HANDLE th = INVALID_HANDLE_VALUE;
- const auto e = spawn(sp, ph, th);
+ const auto e = spawn(sp, ph);
if (e != ERROR_SUCCESS) {
// make sure username and passwords are not shown
@@ -772,17 +772,59 @@ bool checkBlacklist(
}
+void adjustForVirtualized(
+ const IPluginGame* game, SpawnParameters& sp, const Settings& settings)
+{
+ const QString modsPath = settings.paths().mods();
+
+ // Check if this a request with either an executable or a working directory
+ // under our mods folder then will start the process in a virtualized
+ // "environment" with the appropriate paths fixed:
+ // (i.e. mods\FNIS\path\exe => game\data\path\exe)
+ QString cwdPath = sp.currentDirectory.absolutePath();
+ bool virtualizedCwd = cwdPath.startsWith(modsPath, Qt::CaseInsensitive);
+ QString binPath = sp.binary.absoluteFilePath();
+ bool virtualizedBin = binPath.startsWith(modsPath, Qt::CaseInsensitive);
+ if (virtualizedCwd || virtualizedBin) {
+ if (virtualizedCwd) {
+ int cwdOffset = cwdPath.indexOf('/', modsPath.length() + 1);
+ QString adjustedCwd = cwdPath.mid(cwdOffset, -1);
+ cwdPath = game->dataDirectory().absolutePath();
+ if (cwdOffset >= 0)
+ cwdPath += adjustedCwd;
+
+ }
+
+ if (virtualizedBin) {
+ int binOffset = binPath.indexOf('/', modsPath.length() + 1);
+ QString adjustedBin = binPath.mid(binOffset, -1);
+ binPath = game->dataDirectory().absolutePath();
+ if (binOffset >= 0)
+ binPath += adjustedBin;
+ }
+
+ QString cmdline
+ = QString("launch \"%1\" \"%2\" %3")
+ .arg(QDir::toNativeSeparators(cwdPath),
+ QDir::toNativeSeparators(binPath), sp.arguments);
+
+ sp.binary = QFileInfo(QCoreApplication::applicationFilePath());
+ sp.arguments = cmdline;
+ sp.currentDirectory.setPath(QCoreApplication::applicationDirPath());
+ }
+}
+
+
HANDLE startBinary(QWidget* parent, const SpawnParameters& sp)
{
- HANDLE processHandle, threadHandle;
- const auto e = spawn(sp, processHandle, threadHandle);
+ HANDLE handle = INVALID_HANDLE_VALUE;
+ const auto e = spawn::spawn(sp, handle);
switch (e)
{
case ERROR_SUCCESS:
{
- ::CloseHandle(threadHandle);
- return processHandle;
+ return handle;
}
case ERROR_ELEVATION_REQUIRED:
@@ -799,6 +841,79 @@ HANDLE startBinary(QWidget* parent, const SpawnParameters& sp)
}
}
+
+
+SpawnedProcess::SpawnedProcess(HANDLE handle, SpawnParameters sp)
+ : m_handle(handle), m_parameters(std::move(sp))
+{
+}
+
+SpawnedProcess::SpawnedProcess(SpawnedProcess&& other)
+ : m_handle(other.m_handle), m_parameters(std::move(other.m_parameters))
+{
+ other.m_handle = INVALID_HANDLE_VALUE;
+}
+
+SpawnedProcess& SpawnedProcess::operator=(SpawnedProcess&& other)
+{
+ if (this != &other) {
+ destroy();
+
+ m_handle = other.m_handle;
+ other.m_handle = INVALID_HANDLE_VALUE;
+
+ m_parameters = std::move(other.m_parameters);
+ }
+
+ return *this;
+}
+
+SpawnedProcess::~SpawnedProcess()
+{
+ destroy();
+}
+
+HANDLE SpawnedProcess::releaseHandle()
+{
+ const auto h = m_handle;
+ m_handle = INVALID_HANDLE_VALUE;
+ return h;
+}
+
+void SpawnedProcess::destroy()
+{
+ if (m_handle != INVALID_HANDLE_VALUE) {
+ ::CloseHandle(m_handle);
+ m_handle = INVALID_HANDLE_VALUE;
+ }
+}
+
+
+SpawnedProcess Spawner::spawn(
+ QWidget* parent, const IPluginGame* game,
+ SpawnParameters sp, Settings& settings)
+{
+ if (!checkBinary(parent, sp)) {
+ return {INVALID_HANDLE_VALUE, sp};
+ }
+
+ if (!checkSteam(parent, sp, game->gameDirectory(), sp.steamAppID, settings)) {
+ return {INVALID_HANDLE_VALUE, sp};
+ }
+
+ if (!spawn::checkEnvironment(parent, sp)) {
+ return {INVALID_HANDLE_VALUE, sp};
+ }
+
+ if (!spawn::checkBlacklist(parent, sp, settings)) {
+ return {INVALID_HANDLE_VALUE, sp};
+ }
+
+ adjustForVirtualized(game, sp, settings);
+
+ return {startBinary(parent, sp), sp};
+}
+
} // namespace
diff --git a/src/spawn.h b/src/spawn.h
index 31b44739..d2853cd5 100644
--- a/src/spawn.h
+++ b/src/spawn.h
@@ -27,6 +27,7 @@ along with Mod Organizer. If not, see .
#include
class Settings;
+namespace MOBase { class IPluginGame; }
namespace spawn
{
@@ -46,6 +47,7 @@ struct SpawnParameters
QFileInfo binary;
QString arguments;
QDir currentDirectory;
+ QString steamAppID;
bool hooked = false;
HANDLE stdOut = INVALID_HANDLE_VALUE;
HANDLE stdErr = INVALID_HANDLE_VALUE;
@@ -69,6 +71,38 @@ bool checkBlacklist(
**/
HANDLE startBinary(QWidget* parent, const SpawnParameters& sp);
+
+class SpawnedProcess
+{
+public:
+ SpawnedProcess(HANDLE handle, SpawnParameters sp);
+
+ SpawnedProcess(const SpawnedProcess&) = delete;
+ SpawnedProcess& operator=(const SpawnedProcess&) = delete;
+ SpawnedProcess(SpawnedProcess&& other);
+ SpawnedProcess& operator=(SpawnedProcess&& other);
+ ~SpawnedProcess();
+
+ HANDLE releaseHandle();
+
+private:
+ HANDLE m_handle;
+ SpawnParameters m_parameters;
+
+ void destroy();
+};
+
+
+class Spawner
+{
+public:
+ SpawnedProcess spawn(
+ QWidget* parent, const MOBase::IPluginGame* game,
+ SpawnParameters sp, Settings& settings);
+
+private:
+};
+
} // namespace
--
cgit v1.3.1