summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--src/bbcode.cpp92
-rw-r--r--src/browserdialog.cpp20
-rw-r--r--src/browserview.cpp4
-rw-r--r--src/categories.cpp2
-rw-r--r--src/categoriesdialog.cpp6
-rw-r--r--src/csvbuilder.cpp2
-rw-r--r--src/directoryrefresher.h14
-rw-r--r--src/dlls.manifest.debug.qt567
-rw-r--r--src/dlls.manifest.qt553
-rw-r--r--src/editexecutablesdialog.cpp2
-rw-r--r--src/env.cpp6
-rw-r--r--src/envmetrics.cpp2
-rw-r--r--src/envshell.cpp8
-rw-r--r--src/executableslist.cpp2
-rw-r--r--src/filedialogmemory.h2
-rw-r--r--src/filerenamer.cpp4
-rw-r--r--src/filetree.cpp4
-rw-r--r--src/filetreemodel.cpp4
-rw-r--r--src/glob_matching.h4
-rw-r--r--src/iconfetcher.cpp6
-rw-r--r--src/iconfetcher.h7
-rw-r--r--src/instancemanager.cpp2
-rw-r--r--src/instancemanagerdialog.cpp2
-rw-r--r--src/loglist.cpp2
-rw-r--r--src/loot.cpp2
-rw-r--r--src/lootdialog.cpp2
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/moapplication.cpp4
-rw-r--r--src/modinfo.cpp10
-rw-r--r--src/modinfo.h4
-rw-r--r--src/modinfodialogconflicts.cpp2
-rw-r--r--src/modinfodialogfiletree.cpp4
-rw-r--r--src/modinfodialogimages.cpp4
-rw-r--r--src/modinforegular.cpp2
-rw-r--r--src/modlistsortproxy.cpp4
-rw-r--r--src/nexusinterface.cpp6
-rw-r--r--src/nxmaccessmanager.cpp5
-rw-r--r--src/organizercore.cpp21
-rw-r--r--src/pch.h6
-rw-r--r--src/pluginlistsortproxy.cpp6
-rw-r--r--src/processrunner.cpp4
-rw-r--r--src/qtgroupingproxy.cpp74
-rw-r--r--src/qtgroupingproxy.h2
-rw-r--r--src/settingsdialoggeneral.cpp9
-rw-r--r--src/spawn.cpp8
-rw-r--r--src/statusbar.cpp2
-rw-r--r--src/texteditor.cpp2
48 files changed, 268 insertions, 239 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7129c77c..03ed0307 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,9 @@ set(project_type exe)
set(executable_name ModOrganizer)
set(enable_warnings OFF)
+set(OPENSSL_USE_STATIC_LIBS FALSE CACHE STRING "" FORCE)
+set(MySQL_INCLUDE_DIRS CACHE STRING "" FORCE)
+
# appveyor does not build modorganizer in its standard location, so use
# DEPENDENCIES_DIR to find cmake_common
if(DEFINED DEPENDENCIES_DIR)
diff --git a/src/bbcode.cpp b/src/bbcode.cpp
index e56c4ea2..5e888b91 100644
--- a/src/bbcode.cpp
+++ b/src/bbcode.cpp
@@ -19,7 +19,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "bbcode.h"
#include <log.h>
-#include <QRegExp>
+#include <QRegularExpression>
#include <map>
namespace BBCode {
@@ -28,7 +28,7 @@ namespace log = MOBase::log;
class BBCodeMap {
- typedef std::map<QString, std::pair<QRegExp, QString> > TagMap;
+ typedef std::map<QString, std::pair<QRegularExpression, QString> > TagMap;
public:
@@ -40,8 +40,8 @@ public:
QString convertTag(QString input, int &length)
{
// extract the tag name
- m_TagNameExp.indexIn(input, 1, QRegExp::CaretAtOffset);
- QString tagName = m_TagNameExp.cap(0).toLower();
+ auto match = m_TagNameExp.match(input, 1, QRegularExpression::NormalMatch, QRegularExpression::AnchoredMatchOption);
+ QString tagName = match.captured(0).toLower();
TagMap::iterator tagIter = m_TagMap.find(tagName);
if (tagIter != m_TagMap.end()) {
// recognized tag
@@ -53,7 +53,7 @@ public:
int closeTagLength = 0;
if (tagName == "*") {
// ends at the next bullet point
- closeTagPos = input.indexOf(QRegExp("(\\[\\*\\]|</ul>)", Qt::CaseInsensitive), 3);
+ closeTagPos = input.indexOf(QRegularExpression("(\\[\\*\\]|</ul>)", QRegularExpression::CaseInsensitiveOption), 3);
// leave closeTagLength at 0 because we don't want to "eat" the next bullet point
} else if (tagName == "line") {
// ends immediately after the tag
@@ -73,11 +73,12 @@ public:
if (closeTagPos > -1) {
length = closeTagPos + closeTagLength;
QString temp = input.mid(0, length);
- if (tagIter->second.first.indexIn(temp) == 0) {
+ auto match = tagIter->second.first.match(temp);
+ if (match.hasMatch()) {
if (tagIter->second.second.isEmpty()) {
if (tagName == "color") {
- QString color = tagIter->second.first.cap(1);
- QString content = tagIter->second.first.cap(2);
+ QString color = match.captured(1);
+ QString content = match.captured(2);
if (color.at(0) == '#') {
return temp.replace(tagIter->second.first, QString("<font style=\"color: %1;\">%2</font>").arg(color, content));
} else {
@@ -92,7 +93,7 @@ public:
}
} else {
if (tagName == "*") {
- temp.remove(QRegExp("(\\[/\\*\\])?(<br/>)?$"));
+ temp.remove(QRegularExpression("(\\[/\\*\\])?(<br/>)?$"));
}
return temp.replace(tagIter->second.first, tagIter->second.second);
}
@@ -115,84 +116,83 @@ private:
BBCodeMap()
: m_TagNameExp("^[a-zA-Z*]*=?")
{
- m_TagMap["b"] = std::make_pair(QRegExp("\\[b\\](.*)\\[/b\\]"),
+ m_TagMap["b"] = std::make_pair(QRegularExpression("\\[b\\](.*)\\[/b\\]"),
"<b>\\1</b>");
- m_TagMap["i"] = std::make_pair(QRegExp("\\[i\\](.*)\\[/i\\]"),
+ m_TagMap["i"] = std::make_pair(QRegularExpression("\\[i\\](.*)\\[/i\\]"),
"<i>\\1</i>");
- m_TagMap["u"] = std::make_pair(QRegExp("\\[u\\](.*)\\[/u\\]"),
+ m_TagMap["u"] = std::make_pair(QRegularExpression("\\[u\\](.*)\\[/u\\]"),
"<u>\\1</u>");
- m_TagMap["s"] = std::make_pair(QRegExp("\\[s\\](.*)\\[/s\\]"),
+ m_TagMap["s"] = std::make_pair(QRegularExpression("\\[s\\](.*)\\[/s\\]"),
"<s>\\1</s>");
- m_TagMap["sub"] = std::make_pair(QRegExp("\\[sub\\](.*)\\[/sub\\]"),
+ m_TagMap["sub"] = std::make_pair(QRegularExpression("\\[sub\\](.*)\\[/sub\\]"),
"<sub>\\1</sub>");
- m_TagMap["sup"] = std::make_pair(QRegExp("\\[sup\\](.*)\\[/sup\\]"),
+ m_TagMap["sup"] = std::make_pair(QRegularExpression("\\[sup\\](.*)\\[/sup\\]"),
"<sup>\\1</sup>");
- m_TagMap["size="] = std::make_pair(QRegExp("\\[size=([^\\]]*)\\](.*)\\[/size\\]"),
+ m_TagMap["size="] = std::make_pair(QRegularExpression("\\[size=([^\\]]*)\\](.*)\\[/size\\]"),
"<font size=\"\\1\">\\2</font>");
- m_TagMap["color="] = std::make_pair(QRegExp("\\[color=([^\\]]*)\\](.*)\\[/color\\]"),
+ m_TagMap["color="] = std::make_pair(QRegularExpression("\\[color=([^\\]]*)\\](.*)\\[/color\\]"),
"");
- m_TagMap["font="] = std::make_pair(QRegExp("\\[font=([^\\]]*)\\](.*)\\[/font\\]"),
+ m_TagMap["font="] = std::make_pair(QRegularExpression("\\[font=([^\\]]*)\\](.*)\\[/font\\]"),
"<font style=\"font-family: \\1;\">\\2</font>");
- m_TagMap["center"] = std::make_pair(QRegExp("\\[center\\](.*)\\[/center\\]"),
+ m_TagMap["center"] = std::make_pair(QRegularExpression("\\[center\\](.*)\\[/center\\]"),
"<div align=\"center\">\\1</div>");
- m_TagMap["quote"] = std::make_pair(QRegExp("\\[quote\\](.*)\\[/quote\\]"),
+ m_TagMap["quote"] = std::make_pair(QRegularExpression("\\[quote\\](.*)\\[/quote\\]"),
"<figure class=\"quote\"><blockquote>\\1</blockquote></figure>");
- m_TagMap["quote="] = std::make_pair(QRegExp("\\[quote=([^\\]]*)\\](.*)\\[/quote\\]"),
+ m_TagMap["quote="] = std::make_pair(QRegularExpression("\\[quote=([^\\]]*)\\](.*)\\[/quote\\]"),
"<figure class=\"quote\"><blockquote>\\2</blockquote></figure>");
- m_TagMap["spoiler"] = std::make_pair(QRegExp("\\[spoiler\\](.*)\\[/spoiler\\]"),
+ m_TagMap["spoiler"] = std::make_pair(QRegularExpression("\\[spoiler\\](.*)\\[/spoiler\\]"),
"<details><summary>Spoiler: <div class=\"bbc_spoiler_show\">Show</div></summary><div class=\"spoiler_content\">\\1</div></details>");
- m_TagMap["code"] = std::make_pair(QRegExp("\\[code\\](.*)\\[/code\\]"),
+ m_TagMap["code"] = std::make_pair(QRegularExpression("\\[code\\](.*)\\[/code\\]"),
"<code>\\1</code>");
- m_TagMap["heading"]= std::make_pair(QRegExp("\\[heading\\](.*)\\[/heading\\]"),
+ m_TagMap["heading"]= std::make_pair(QRegularExpression("\\[heading\\](.*)\\[/heading\\]"),
"<h2><strong>\\1</strong></h2>");
- m_TagMap["line"] = std::make_pair(QRegExp("\\[line\\]"),
+ m_TagMap["line"] = std::make_pair(QRegularExpression("\\[line\\]"),
"<hr>");
// lists
- m_TagMap["list"] = std::make_pair(QRegExp("\\[list\\](.*)\\[/list\\]"),
+ m_TagMap["list"] = std::make_pair(QRegularExpression("\\[list\\](.*)\\[/list\\]"),
"<ul>\\1</ul>");
- m_TagMap["list="] = std::make_pair(QRegExp("\\[list.*\\](.*)\\[/list\\]"),
+ m_TagMap["list="] = std::make_pair(QRegularExpression("\\[list.*\\](.*)\\[/list\\]"),
"<ol>\\1</ol>");
- m_TagMap["ul"] = std::make_pair(QRegExp("\\[ul\\](.*)\\[/ul\\]"),
+ m_TagMap["ul"] = std::make_pair(QRegularExpression("\\[ul\\](.*)\\[/ul\\]"),
"<ul>\\1</ul>");
- m_TagMap["ol"] = std::make_pair(QRegExp("\\[ol\\](.*)\\[/ol\\]"),
+ m_TagMap["ol"] = std::make_pair(QRegularExpression("\\[ol\\](.*)\\[/ol\\]"),
"<ol>\\1</ol>");
- m_TagMap["li"] = std::make_pair(QRegExp("\\[li\\](.*)\\[/li\\]"),
+ m_TagMap["li"] = std::make_pair(QRegularExpression("\\[li\\](.*)\\[/li\\]"),
"<li>\\1</li>");
// tables
- m_TagMap["table"] = std::make_pair(QRegExp("\\[table\\](.*)\\[/table\\]"),
+ m_TagMap["table"] = std::make_pair(QRegularExpression("\\[table\\](.*)\\[/table\\]"),
"<table>\\1</table>");
- m_TagMap["tr"] = std::make_pair(QRegExp("\\[tr\\](.*)\\[/tr\\]"),
+ m_TagMap["tr"] = std::make_pair(QRegularExpression("\\[tr\\](.*)\\[/tr\\]"),
"<tr>\\1</tr>");
- m_TagMap["th"] = std::make_pair(QRegExp("\\[th\\](.*)\\[/th\\]"),
+ m_TagMap["th"] = std::make_pair(QRegularExpression("\\[th\\](.*)\\[/th\\]"),
"<th>\\1</th>");
- m_TagMap["td"] = std::make_pair(QRegExp("\\[td\\](.*)\\[/td\\]"),
+ m_TagMap["td"] = std::make_pair(QRegularExpression("\\[td\\](.*)\\[/td\\]"),
"<td>\\1</td>");
// web content
- m_TagMap["url"] = std::make_pair(QRegExp("\\[url\\](.*)\\[/url\\]"),
+ m_TagMap["url"] = std::make_pair(QRegularExpression("\\[url\\](.*)\\[/url\\]"),
"<a href=\"\\1\">\\1</a>");
- m_TagMap["url="] = std::make_pair(QRegExp("\\[url=([^\\]]*)\\](.*)\\[/url\\]"),
+ m_TagMap["url="] = std::make_pair(QRegularExpression("\\[url=([^\\]]*)\\](.*)\\[/url\\]"),
"<a href=\"\\1\">\\2</a>");
- m_TagMap["img"] = std::make_pair(QRegExp("\\[img(?:\\s*width=\\d+\\s*,?\\s*height=\\d+)?\\](.*)\\[/img\\]"),
+ m_TagMap["img"] = std::make_pair(QRegularExpression("\\[img(?:\\s*width=\\d+\\s*,?\\s*height=\\d+)?\\](.*)\\[/img\\]"),
"<img src=\"\\1\">");
- m_TagMap["img="] = std::make_pair(QRegExp("\\[img=([^\\]]*)\\](.*)\\[/img\\]"),
+ m_TagMap["img="] = std::make_pair(QRegularExpression("\\[img=([^\\]]*)\\](.*)\\[/img\\]"),
"<img src=\"\\2\" alt=\"\\1\">");
- m_TagMap["email="] = std::make_pair(QRegExp("\\[email=\"?([^\\]]*)\"?\\](.*)\\[/email\\]"),
+ m_TagMap["email="] = std::make_pair(QRegularExpression("\\[email=\"?([^\\]]*)\"?\\](.*)\\[/email\\]"),
"<a href=\"mailto:\\1\">\\2</a>");
- m_TagMap["youtube"] = std::make_pair(QRegExp("\\[youtube\\](.*)\\[/youtube\\]"),
+ m_TagMap["youtube"] = std::make_pair(QRegularExpression("\\[youtube\\](.*)\\[/youtube\\]"),
"<a href=\"https://www.youtube.com/watch?v=\\1\">https://www.youtube.com/watch?v=\\1</a>");
// make all patterns non-greedy and case-insensitive
for (TagMap::iterator iter = m_TagMap.begin(); iter != m_TagMap.end(); ++iter) {
- iter->second.first.setCaseSensitivity(Qt::CaseInsensitive);
- iter->second.first.setMinimal(true);
+ iter->second.first.setPatternOptions(QRegularExpression::CaseInsensitiveOption | QRegularExpression::InvertedGreedinessOption);
}
// this tag is in fact greedy
- m_TagMap["*"] = std::make_pair(QRegExp("\\[\\*\\](.*)"),
+ m_TagMap["*"] = std::make_pair(QRegularExpression("\\[\\*\\](.*)"),
"<li>\\1</li>");
m_ColorMap.insert(std::make_pair<QString, QString>("red", "FF0000"));
@@ -216,7 +216,7 @@ private:
private:
- QRegExp m_TagNameExp;
+ QRegularExpression m_TagNameExp;
TagMap m_TagMap;
std::map<QString, QString> m_ColorMap;
};
@@ -241,7 +241,7 @@ QString convertToHTML(const QString &inputParam)
// iterate over the input buffer
while ((pos = input.indexOf('[', lastBlock)) != -1) {
// append everything between the previous tag-block and the current one
- result.append(input.midRef(lastBlock, pos - lastBlock));
+ result.append(input.mid(lastBlock, pos - lastBlock));
if ((pos < (input.size() - 1)) && (input.at(pos + 1) == '/')) {
// skip invalid end tag
@@ -272,7 +272,7 @@ QString convertToHTML(const QString &inputParam)
}
// append the remainder (everything after the last tag)
- result.append(input.midRef(lastBlock));
+ result.append(input.mid(lastBlock));
return result;
}
diff --git a/src/browserdialog.cpp b/src/browserdialog.cpp
index 72cb8862..8e341363 100644
--- a/src/browserdialog.cpp
+++ b/src/browserdialog.cpp
@@ -174,16 +174,18 @@ void BrowserDialog::titleChanged(const QString &title)
QString BrowserDialog::guessFileName(const QString &url)
{
- QRegExp uploadsExp(QString("https://.+/uploads/([^/]+)$"));
- if (uploadsExp.indexIn(url) != -1) {
+ QRegularExpression uploadsExp(QString("https://.+/uploads/([^/]+)$"));
+ auto match = uploadsExp.match(url);
+ if (match.hasMatch()) {
// these seem to be premium downloads
- return uploadsExp.cap(1);
+ return match.captured(1);
}
- QRegExp filesExp(QString("https://.+\\?file=([^&]+)"));
- if (filesExp.indexIn(url) != -1) {
+ QRegularExpression filesExp(QString("https://.+\\?file=([^&]+)"));
+ match = filesExp.match(url);
+ if (match.hasMatch()) {
// a regular manual download?
- return filesExp.cap(1);
+ return match.captured(1);
}
return "unknown";
}
@@ -196,13 +198,13 @@ void BrowserDialog::unsupportedContent(QNetworkReply *reply)
log::error("sender not a page");
return;
}
- BrowserView *view = qobject_cast<BrowserView*>(page->view());
+ /*browserview *view = qobject_cast<browserview*>(page->view());
if (view == nullptr) {
log::error("no view?");
return;
- }
+ }*/
- emit requestDownload(view->url(), reply);
+ emit requestDownload(page->url(), reply);
} catch (const std::exception &e) {
if (isVisible()) {
MessageDialog::showMessage(tr("failed to start download"), this);
diff --git a/src/browserview.cpp b/src/browserview.cpp
index 0b871e23..81fd8a74 100644
--- a/src/browserview.cpp
+++ b/src/browserview.cpp
@@ -22,7 +22,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QEvent>
#include <QKeyEvent>
#include <QNetworkDiskCache>
-#include <QWebEngineContextMenuData>
+#include <QWebEngineContextMenuRequest>
#include <QWebEngineSettings>
#include <QMenu>
#include <Shlwapi.h>
@@ -55,7 +55,7 @@ bool BrowserView::eventFilter(QObject *obj, QEvent *event)
}
} else if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
- if (mouseEvent->button() == Qt::MidButton) {
+ if (mouseEvent->button() == Qt::MouseButton::MiddleButton) {
mouseEvent->ignore();
return true;
}
diff --git a/src/categories.cpp b/src/categories.cpp
index 4ddd71d9..01383031 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -160,7 +160,7 @@ void CategoryFactory::saveCategories()
QByteArray line;
line.append(QByteArray::number(iter->m_ID)).append("|")
.append(iter->m_Name.toUtf8()).append("|")
- .append(VectorJoin(iter->m_NexusIDs, ",")).append("|")
+ .append(VectorJoin(iter->m_NexusIDs, ",").toUtf8()).append("|")
.append(QByteArray::number(iter->m_ParentID)).append("\n");
categoryFile.write(line);
}
diff --git a/src/categoriesdialog.cpp b/src/categoriesdialog.cpp
index b5194bf0..5181d9f1 100644
--- a/src/categoriesdialog.cpp
+++ b/src/categoriesdialog.cpp
@@ -23,7 +23,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "utility.h"
#include "settings.h"
#include <QItemDelegate>
-#include <QRegExpValidator>
+#include <QRegularExpressionValidator>
#include <QLineEdit>
#include <QMenu>
@@ -134,7 +134,7 @@ void CategoriesDialog::commitChanges()
for (int i = 0; i < ui->categoriesTable->rowCount(); ++i) {
int index = ui->categoriesTable->verticalHeader()->logicalIndex(i);
QString nexusIDString = ui->categoriesTable->item(index, 2)->text();
- QStringList nexusIDStringList = nexusIDString.split(',', QString::SkipEmptyParts);
+ QStringList nexusIDStringList = nexusIDString.split(',', Qt::SkipEmptyParts);
std::vector<int> nexusIDs;
for (QStringList::iterator iter = nexusIDStringList.begin();
iter != nexusIDStringList.end(); ++iter) {
@@ -189,7 +189,7 @@ void CategoriesDialog::fillTable()
table->setItemDelegateForColumn(0, new ValidatingDelegate(this, new NewIDValidator(m_IDs)));
- table->setItemDelegateForColumn(2, new ValidatingDelegate(this, new QRegExpValidator(QRegExp("([0-9]+)?(,[0-9]+)*"), this)));
+ table->setItemDelegateForColumn(2, new ValidatingDelegate(this, new QRegularExpressionValidator(QRegularExpression("([0-9]+)?(,[0-9]+)*"), this)));
table->setItemDelegateForColumn(3, new ValidatingDelegate(this, new ExistingIDValidator(m_IDs)));
int row = 0;
diff --git a/src/csvbuilder.cpp b/src/csvbuilder.cpp
index fa4218a2..788c9438 100644
--- a/src/csvbuilder.cpp
+++ b/src/csvbuilder.cpp
@@ -4,7 +4,7 @@
CSVBuilder::CSVBuilder(QIODevice *target)
: m_Out(target), m_Separator(','), m_LineBreak(BREAK_CRLF)
{
- m_Out.setCodec("UTF-8");
+ m_Out.setEncoding(QStringConverter::Encoding::Utf8);
m_QuoteMode[TYPE_INTEGER] = QUOTE_NEVER;
m_QuoteMode[TYPE_FLOAT] = QUOTE_NEVER;
diff --git a/src/directoryrefresher.h b/src/directoryrefresher.h
index 0677998b..7cdda99d 100644
--- a/src/directoryrefresher.h
+++ b/src/directoryrefresher.h
@@ -34,8 +34,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
**/
class DirectoryRefresher : public QObject
{
-
- Q_OBJECT
+ Q_OBJECT;
public:
struct EntryInfo
@@ -54,11 +53,8 @@ public:
int priority;
};
- DirectoryRefresher(std::size_t threadCount);
- // noncopyable
- DirectoryRefresher(const DirectoryRefresher&) = delete;
- DirectoryRefresher& operator=(const DirectoryRefresher&) = delete;
+ DirectoryRefresher(std::size_t threadCount);
/**
* @brief retrieve the updated directory structure
@@ -82,7 +78,7 @@ public:
* @param modDirectory the mod directory
* @note this function could be obsoleted easily by storing absolute paths in the parameter to setMods. This is legacy
*/
- void setModDirectory(const QString &modDirectory);
+ //void setModDirectory(const QString &modDirectory);
/**
* @brief remove files from the directory structure that are known to be irrelevant to the game
@@ -157,9 +153,9 @@ private:
};
-class DirectoryRefreshProgress : QObject
+class DirectoryRefreshProgress : public QObject
{
- Q_OBJECT;
+ Q_OBJECT
public:
DirectoryRefreshProgress(DirectoryRefresher* r) :
diff --git a/src/dlls.manifest.debug.qt5 b/src/dlls.manifest.debug.qt5
index a2f75206..728c01b2 100644
--- a/src/dlls.manifest.debug.qt5
+++ b/src/dlls.manifest.debug.qt5
@@ -1,29 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="dlls" version="1.0.0.0" processorArchitecture="x86"/>
- <file name="icuin54.dll"/>
- <file name="icuuc54.dll"/>
- <file name="icudt54.dll"/>
- <file name="Qt5Cored.dll"/>
- <file name="Qt5Declaratived.dll"/>
- <file name="Qt5Guid.dll"/>
- <file name="Qt5Multimediad.dll"/>
- <file name="Qt5MultimediaWidgetsd.dll"/>
- <file name="Qt5Networkd.dll"/>
- <file name="Qt5OpenGLd.dll"/>
- <file name="Qt5Positioningd.dll"/>
- <file name="Qt5PrintSupportd.dll"/>
- <file name="Qt5Qmld.dll"/>
- <file name="Qt5Quickd.dll"/>
- <file name="Qt5Sensorsd.dll"/>
- <file name="Qt5Scriptd.dll"/>
- <file name="Qt5Sqld.dll"/>
- <file name="Qt5Svgd.dll"/>
- <file name="Qt5WebChanneld.dll"/>
- <file name="Qt5WebKitd.dll"/>
- <file name="Qt5WebKitWidgetsd.dll"/>
- <file name="Qt5Widgetsd.dll"/>
- <file name="Qt5WinExtrasd.dll"/>
- <file name="Qt5Xmld.dll"/>
- <file name="Qt5XmlPatternsd.dll"/>
+ <file name="7z.dll"/>
+ <file name="archive.dll"/>
+ <file name="d3dcompiler_47.dll"/>
+ <file name="libbsarch.dll"/>
+ <file name="libcrypto-1_1-x64.dll"/>
+ <file name="libEGL.dll"/>
+ <file name="libGLESV2.dll"/>
+ <file name="liblz4.dll"/>
+ <file name="libssl-1_1-x64.dll"/>
+ <file name="opengl32sw.dll"/>
+ <file name="Qt6Concurrent.dll"/>
+ <file name="Qt6Core.dll"/>
+ <file name="Qt6Core5Compat.dll"/>
+ <file name="Qt6Gui.dll"/>
+ <file name="Qt6Network.dll"/>
+ <file name="Qt6OpenGL.dll"/>
+ <file name="Qt6OpenGLWidgets.dll"/>
+ <file name="Qt6Positioning.dll"/>
+ <file name="Qt6PrintSupport.dll"/>
+ <file name="Qt6Qml.dll"/>
+ <file name="Qt6QmlLocalStorage.dll"/>
+ <file name="Qt6QmlModels.dll"/>
+ <file name="Qt6QmlWorkerScript.dll"/>
+ <file name="Qt6QmlXmlListModel.dll"/>
+ <file name="Qt6Quick.dll"/>
+ <file name="Qt6QuickControls2.dll"/>
+ <file name="Qt6QuickControls2Impl.dll"/>
+ <file name="Qt6QuickDialogs2.dll"/>
+ <file name="Qt6QuickDialogs2QuickImpl.dll"/>
+ <file name="Qt6QuickDialogs2Utils.dll"/>
+ <file name="Qt6QuickLayouts.dll"/>
+ <file name="Qt6QuickParticles.dll"/>
+ <file name="Qt6QuickShapes.dll"/>
+ <file name="Qt6QuickTemplates2.dll"/>
+ <file name="Qt6QuickWidgets.dll"/>
+ <file name="Qt6Sql.dll"/>
+ <file name="Qt6Svg.dll"/>
+ <file name="Qt6WebChannel.dll"/>
+ <file name="Qt6WebEngineCore.dll"/>
+ <file name="Qt6WebEngineWidgets.dll"/>
+ <file name="Qt6WebSockets.dll"/>
+ <file name="Qt6Widgets.dll"/>
</assembly>
diff --git a/src/dlls.manifest.qt5 b/src/dlls.manifest.qt5
index cae74df1..ebda0f8a 100644
--- a/src/dlls.manifest.qt5
+++ b/src/dlls.manifest.qt5
@@ -4,26 +4,43 @@
<file name="7z.dll"/>
<file name="archive.dll"/>
<file name="d3dcompiler_47.dll"/>
+ <file name="libbsarch.dll"/>
+ <file name="libcrypto-1_1-x64.dll"/>
<file name="libEGL.dll"/>
<file name="libGLESV2.dll"/>
<file name="liblz4.dll"/>
+ <file name="libssl-1_1-x64.dll"/>
<file name="opengl32sw.dll"/>
- <file name="Qt5Core.dll"/>
- <file name="Qt5Gui.dll"/>
- <file name="Qt5Network.dll"/>
- <file name="Qt5Positioning.dll"/>
- <file name="Qt5PrintSupport.dll"/>
- <file name="Qt5Qml.dll"/>
- <file name="Qt5QmlModels.dll"/>
- <file name="Qt5QmlWorkerScript.dll"/>
- <file name="Qt5Quick.dll"/>
- <file name="Qt5QuickWidgets.dll"/>
- <file name="Qt5SerialPort.dll"/>
- <file name="Qt5Svg.dll"/>
- <file name="Qt5WebChannel.dll"/>
- <file name="Qt5WebEngineCore.dll"/>
- <file name="Qt5WebEngineWidgets.dll"/>
- <file name="Qt5WebSockets.dll"/>
- <file name="Qt5Widgets.dll"/>
- <file name="Qt5WinExtras.dll"/>
+ <file name="Qt6Concurrent.dll"/>
+ <file name="Qt6Core.dll"/>
+ <file name="Qt6Core5Compat.dll"/>
+ <file name="Qt6Gui.dll"/>
+ <file name="Qt6Network.dll"/>
+ <file name="Qt6OpenGL.dll"/>
+ <file name="Qt6OpenGLWidgets.dll"/>
+ <file name="Qt6Positioning.dll"/>
+ <file name="Qt6PrintSupport.dll"/>
+ <file name="Qt6Qml.dll"/>
+ <file name="Qt6QmlLocalStorage.dll"/>
+ <file name="Qt6QmlModels.dll"/>
+ <file name="Qt6QmlWorkerScript.dll"/>
+ <file name="Qt6QmlXmlListModel.dll"/>
+ <file name="Qt6Quick.dll"/>
+ <file name="Qt6QuickControls2.dll"/>
+ <file name="Qt6QuickControls2Impl.dll"/>
+ <file name="Qt6QuickDialogs2.dll"/>
+ <file name="Qt6QuickDialogs2QuickImpl.dll"/>
+ <file name="Qt6QuickDialogs2Utils.dll"/>
+ <file name="Qt6QuickLayouts.dll"/>
+ <file name="Qt6QuickParticles.dll"/>
+ <file name="Qt6QuickShapes.dll"/>
+ <file name="Qt6QuickTemplates2.dll"/>
+ <file name="Qt6QuickWidgets.dll"/>
+ <file name="Qt6Sql.dll"/>
+ <file name="Qt6Svg.dll"/>
+ <file name="Qt6WebChannel.dll"/>
+ <file name="Qt6WebEngineCore.dll"/>
+ <file name="Qt6WebEngineWidgets.dll"/>
+ <file name="Qt6WebSockets.dll"/>
+ <file name="Qt6Widgets.dll"/>
</assembly>
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp
index 7272e3fd..ea7d20de 100644
--- a/src/editexecutablesdialog.cpp
+++ b/src/editexecutablesdialog.cpp
@@ -482,7 +482,7 @@ void EditExecutablesDialog::save()
e->title(newTitle);
}
- e->binaryInfo(ui->binary->text());
+ e->binaryInfo(QFileInfo(ui->binary->text()));
e->workingDirectory(ui->workingDirectory->text());
e->arguments(ui->arguments->text());
diff --git a/src/env.cpp b/src/env.cpp
index 4f4bc555..818ce8fb 100644
--- a/src/env.cpp
+++ b/src/env.cpp
@@ -801,7 +801,7 @@ std::pair<QString, QString> splitExeAndArguments(const QString& cmd)
}
} else {
// no double-quotes, find the first whitespace
- exeEnd = cmd.indexOf(QRegExp("\\s"));
+ exeEnd = cmd.indexOf(QRegularExpression("\\s"));
if (exeEnd == -1) {
exeEnd = cmd.size();
}
@@ -844,7 +844,7 @@ Association getAssociation(const QFileInfo& targetInfo)
log::debug("split into exe='{}' and cmd='{}'", p.first, p.second);
- return {p.first, *cmd, p.second};
+ return {QFileInfo(p.first), *cmd, p.second};
}
@@ -1108,7 +1108,7 @@ DWORD findOtherPid()
// going through processes, trying to find one with the same name and a
// different pid than this process has
for (const auto& p : processes) {
- if (p.name() == filename) {
+ if (p.name().toStdWString() == filename) {
if (p.pid() != thisPid) {
return p.pid();
}
diff --git a/src/envmetrics.cpp b/src/envmetrics.cpp
index 5fb80449..b47ca2f5 100644
--- a/src/envmetrics.cpp
+++ b/src/envmetrics.cpp
@@ -4,7 +4,7 @@
#include <shellscalingapi.h>
#include <log.h>
#include <utility.h>
-#include <QDesktopWidget>
+#include <QScreen>
namespace env
{
diff --git a/src/envshell.cpp b/src/envshell.cpp
index 33ec0624..d38859a2 100644
--- a/src/envshell.cpp
+++ b/src/envshell.cpp
@@ -70,9 +70,9 @@ public:
{
}
- bool nativeEventFilter(const QByteArray& type, void* m, long* lresultOut) override
+ bool nativeEventFilter(const QByteArray& eventType, void* message, qintptr* result) override
{
- MSG* msg = (MSG*)m;
+ MSG* msg = (MSG*)message;
if (!msg) {
return false;
}
@@ -81,8 +81,8 @@ public:
const bool r = m_f(msg->hwnd, msg->message, msg->wParam, msg->lParam, &lr);
- if (lresultOut) {
- *lresultOut = lr;
+ if (result) {
+ *result = lr;
}
return r;
diff --git a/src/executableslist.cpp b/src/executableslist.cpp
index 78aa981d..137f38dc 100644
--- a/src/executableslist.cpp
+++ b/src/executableslist.cpp
@@ -94,7 +94,7 @@ void ExecutablesList::load(const MOBase::IPluginGame* game, const Settings& s)
setExecutable(Executable()
.title(map["title"].toString())
- .binaryInfo(map["binary"].toString())
+ .binaryInfo(QFileInfo(map["binary"].toString()))
.arguments(map["arguments"].toString())
.steamAppID(map["steamAppID"].toString())
.workingDirectory(map["workingDirectory"].toString())
diff --git a/src/filedialogmemory.h b/src/filedialogmemory.h
index 8b8a3b76..11b156ed 100644
--- a/src/filedialogmemory.h
+++ b/src/filedialogmemory.h
@@ -38,7 +38,7 @@ public:
static QString getOpenFileName(
const QString &dirID, QWidget *parent = 0, const QString &caption = QString(),
const QString &dir = QString(), const QString &filter = QString(),
- QString *selectedFilter = 0, QFileDialog::Options options = 0);
+ QString *selectedFilter = 0, QFileDialog::Options options = QFileDialog::Option(0));
static QString getExistingDirectory(
const QString &dirID, QWidget *parent = 0, const QString &caption = QString(),
diff --git a/src/filerenamer.cpp b/src/filerenamer.cpp
index 7fc90eb2..dd5876b6 100644
--- a/src/filerenamer.cpp
+++ b/src/filerenamer.cpp
@@ -38,7 +38,7 @@ FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QSt
log::debug("removing {}", newName);
// user wants to replace the file, so remove it
- const auto r = shell::Delete(newName);
+ const auto r = shell::Delete(QFileInfo(newName));
if (!r.success()) {
log::error("failed to remove '{}': {}", newName, r.toString());
@@ -68,7 +68,7 @@ FileRenamer::RenameResults FileRenamer::rename(const QString& oldName, const QSt
}
// target either didn't exist or was removed correctly
- const auto r = shell::Rename(oldName, newName);
+ const auto r = shell::Rename(QFileInfo(oldName), QFileInfo(newName));
if (!r.success()) {
log::error(
diff --git a/src/filetree.cpp b/src/filetree.cpp
index cf20d4fd..02c85fdd 100644
--- a/src/filetree.cpp
+++ b/src/filetree.cpp
@@ -568,7 +568,7 @@ bool FileTree::showShellMenu(QPoint pos)
.arg(item->realPath()));
}
- itor->second.addFile(item->realPath());
+ itor->second.addFile(QFileInfo(item->realPath()));
++totalFiles;
if (item->isConflicted()) {
@@ -611,7 +611,7 @@ bool FileTree::showShellMenu(QPoint pos)
.arg(QString::fromStdWString(fullPath)));
}
- itor->second.addFile(QString::fromStdWString(fullPath));
+ itor->second.addFile(QFileInfo(QString::fromStdWString(fullPath)));
}
}
}
diff --git a/src/filetreemodel.cpp b/src/filetreemodel.cpp
index 22bcda28..bd9cd067 100644
--- a/src/filetreemodel.cpp
+++ b/src/filetreemodel.cpp
@@ -1100,8 +1100,8 @@ QVariant FileTreeModel::displayData(const FileTreeItem* item, int column) const
case LastModified:
{
if (auto d=item->lastModified()) {
- if (d->isValid()) {
- return d->toString(Qt::SystemLocaleDate);
+ if (d.has_value() && d.value().isValid()) {
+ return QLocale::system().toString(d.value(), QLocale::ShortFormat);
}
}
diff --git a/src/glob_matching.h b/src/glob_matching.h
index 69e2d2a4..e7e7b621 100644
--- a/src/glob_matching.h
+++ b/src/glob_matching.h
@@ -114,8 +114,8 @@ namespace MOShared {
while (str_it != str_end)
{
- CharT current_pat = 0;
- CharT current_str = -1;
+ CharT current_pat = QChar(0);
+ CharT current_str = QChar(-1);
if (pat_it != pat_end)
{
current_pat = case_sensitive ? *pat_it : traits::tolower(*pat_it);
diff --git a/src/iconfetcher.cpp b/src/iconfetcher.cpp
index c10adc8d..32b0d58b 100644
--- a/src/iconfetcher.cpp
+++ b/src/iconfetcher.cpp
@@ -53,7 +53,7 @@ QVariant IconFetcher::icon(const QString& path) const
return m_quickCache.file;
}
- return extensionIcon(path.midRef(dot));
+ return extensionIcon(QStringView{path}.mid(dot));
}
}
@@ -110,7 +110,7 @@ void IconFetcher::checkCache(Cache& cache)
std::map<QString, QPixmap> map;
for (auto&& ext : queue) {
- map.emplace(std::move(ext), getPixmapIcon(ext));
+ map.emplace(std::move(ext), getPixmapIcon(QFileInfo(ext)));
}
{
@@ -145,7 +145,7 @@ QVariant IconFetcher::fileIcon(const QString& path) const
return {};
}
-QVariant IconFetcher::extensionIcon(const QStringRef& ext) const
+QVariant IconFetcher::extensionIcon(const QStringView& ext) const
{
{
std::scoped_lock lock(m_extensionCache.mapMutex);
diff --git a/src/iconfetcher.h b/src/iconfetcher.h
index 030bfb79..78857d05 100644
--- a/src/iconfetcher.h
+++ b/src/iconfetcher.h
@@ -1,8 +1,9 @@
#ifndef MODORGANIZER_ICONFETCHER_INCLUDED
#define MODORGANIZER_ICONFETCHER_INCLUDED
-
-#include <QFileIconProvider>
+#include <set>
#include <mutex>
+#include <QFileIconProvider>
+#include <QStringView>
class IconFetcher
{
@@ -70,7 +71,7 @@ private:
void queue(Cache& cache, QString path) const;
QVariant fileIcon(const QString& path) const;
- QVariant extensionIcon(const QStringRef& ext) const;
+ QVariant extensionIcon(const QStringView& ext) const;
};
#endif // MODORGANIZER_ICONFETCHER_INCLUDED
diff --git a/src/instancemanager.cpp b/src/instancemanager.cpp
index f2c031d0..3a5aee4c 100644
--- a/src/instancemanager.cpp
+++ b/src/instancemanager.cpp
@@ -590,7 +590,7 @@ QString InstanceManager::instancePath(const QString& instanceName) const
QString InstanceManager::globalInstancesRootPath() const
{
return QDir::fromNativeSeparators(
- QStandardPaths::writableLocation(QStandardPaths::DataLocation));
+ QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation));
}
QString InstanceManager::iniPath(const QString& instanceDir) const
diff --git a/src/instancemanagerdialog.cpp b/src/instancemanagerdialog.cpp
index f21ff695..776b2496 100644
--- a/src/instancemanagerdialog.cpp
+++ b/src/instancemanagerdialog.cpp
@@ -416,7 +416,7 @@ void InstanceManagerDialog::rename()
log::info("renaming {} to {}", src, dest);
- const auto r = shell::Rename(src, dest, false);
+ const auto r = shell::Rename(QFileInfo(src), QFileInfo(dest), false);
if (!r) {
QMessageBox::critical(
diff --git a/src/loglist.cpp b/src/loglist.cpp
index e6b8b724..07592edc 100644
--- a/src/loglist.cpp
+++ b/src/loglist.cpp
@@ -139,7 +139,7 @@ QVariant LogModel::data(const QModelIndex& index, int role) const
const std::time_t tt = s.count();
const int frac = static_cast<int>(ms.count() % 1000);
- const auto time = QDateTime::fromTime_t(tt).time().addMSecs(frac);
+ const auto time = QDateTime::fromSecsSinceEpoch(tt).time().addMSecs(frac);
return time.toString("hh:mm:ss.zzz");
} else if (index.column() == 2) {
return QString::fromStdString(e.message);
diff --git a/src/loot.cpp b/src/loot.cpp
index d41fd77b..9c9ab2ae 100644
--- a/src/loot.cpp
+++ b/src/loot.cpp
@@ -714,7 +714,7 @@ void Loot::deleteReportFile()
{
if (QFile::exists(LootReportPath)) {
log::debug("deleting temporary loot report '{}'", LootReportPath);
- const auto r = shell::Delete(LootReportPath);
+ const auto r = shell::Delete(QFileInfo(LootReportPath));
if (!r) {
log::error(
diff --git a/src/lootdialog.cpp b/src/lootdialog.cpp
index 3673c5c6..9f7b16f0 100644
--- a/src/lootdialog.cpp
+++ b/src/lootdialog.cpp
@@ -114,7 +114,7 @@ void LootDialog::addOutput(const QString& s)
return;
}
- const auto lines = s.split(QRegExp("[\\r\\n]"), QString::SkipEmptyParts);
+ const auto lines = s.split(QRegularExpression("[\\r\\n]"), Qt::SkipEmptyParts);
for (auto&& line : lines) {
if (line.isEmpty()) {
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 028aabfd..906e40d6 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -387,8 +387,8 @@ MainWindow::MainWindow(Settings &settings
connect(&m_OrganizerCore, &OrganizerCore::directoryStructureReady,
this, &MainWindow::onDirectoryStructureChanged);
- connect(m_OrganizerCore.directoryRefresher(), &DirectoryRefresher::progress,
- this, &MainWindow::refresherProgress);
+ connect(m_OrganizerCore.directoryRefresher(), SIGNAL(progress(DirectoryRefreshProgress*)),
+ this, SLOT(refresherProgress(DirectoryRefreshProgress*)));
connect(m_OrganizerCore.directoryRefresher(), SIGNAL(error(QString)), this, SLOT(showError(QString)));
connect(&m_OrganizerCore.settings(), SIGNAL(languageChanged(QString)), this, SLOT(languageChange(QString)));
diff --git a/src/moapplication.cpp b/src/moapplication.cpp
index 2e3af26e..744b6b63 100644
--- a/src/moapplication.cpp
+++ b/src/moapplication.cpp
@@ -232,10 +232,6 @@ int MOApplication::setup(MOMultiProcess& multiProcess, bool forceSelect)
purgeOldFiles();
}
- QWindowsWindowFunctions::setWindowActivationBehavior(
- QWindowsWindowFunctions::AlwaysActivateWindow);
-
-
// loading settings
m_settings.reset(new Settings(m_instance->iniPath(), true));
log::getDefault().setLevel(m_settings->diagnostics().logLevel());
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 59026262..3c54fc27 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -55,7 +55,7 @@ ModInfo::Ptr ModInfo::s_Overwrite;
std::map<QString, unsigned int, MOBase::FileNameComparator> ModInfo::s_ModsByName;
std::map<std::pair<QString, int>, std::vector<unsigned int>> ModInfo::s_ModsByModID;
int ModInfo::s_NextID;
-QMutex ModInfo::s_Mutex(QMutex::Recursive);
+QRecursiveMutex ModInfo::s_Mutex;
QString ModInfo::s_HiddenExt(".mohidden");
@@ -67,14 +67,14 @@ bool ModInfo::ByName(const ModInfo::Ptr &LHS, const ModInfo::Ptr &RHS)
bool ModInfo::isSeparatorName(const QString& name)
{
- static QRegExp separatorExp(".*_separator");
- return separatorExp.exactMatch(name);
+ static QRegularExpression separatorExp(QRegularExpression::anchoredPattern(".*_separator"));
+ return separatorExp.match(name).hasMatch();
}
bool ModInfo::isBackupName(const QString& name)
{
- static QRegExp backupExp(".*backup[0-9]*");
- return backupExp.exactMatch(name);
+ static QRegularExpression backupExp(QRegularExpression::anchoredPattern(".*backup[0-9]*"));
+ return backupExp.match(name).hasMatch();
}
bool ModInfo::isRegularName(const QString& name)
diff --git a/src/modinfo.h b/src/modinfo.h
index b835f352..8f82a453 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -29,7 +29,7 @@ class PluginContainer;
class QDir;
class QDateTime;
-#include <QMutex>
+#include <QRecursiveMutex>
#include <QSharedPointer>
#include <QString>
#include <QStringList>
@@ -980,7 +980,7 @@ protected:
protected:
- static QMutex s_Mutex;
+ static QRecursiveMutex s_Mutex;
static std::vector<ModInfo::Ptr> s_Collection;
static ModInfo::Ptr s_Overwrite;
static std::map<QString, unsigned int, MOBase::FileNameComparator> s_ModsByName;
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index bb3346f7..923e9778 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -245,7 +245,7 @@ void ConflictsTab::openItems(QTreeView* tree, bool hooked)
void ConflictsTab::openItem(const ConflictItem* item, bool hooked)
{
core().processRunner()
- .setFromFile(parentWidget(), item->fileName())
+ .setFromFile(parentWidget(), QFileInfo(item->fileName()))
.setHooked(hooked)
.setWaitForCompletion()
.run();
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index cc0e6493..9f39447d 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -172,7 +172,7 @@ void FileTreeTab::onOpen()
const auto path = m_fs->filePath(selection);
core().processRunner()
- .setFromFile(parentWidget(), path)
+ .setFromFile(parentWidget(), QFileInfo(path))
.setHooked(false)
.setWaitForCompletion()
.run();
@@ -187,7 +187,7 @@ void FileTreeTab::onRunHooked()
const auto path = m_fs->filePath(selection);
core().processRunner()
- .setFromFile(parentWidget(), path)
+ .setFromFile(parentWidget(), QFileInfo(path))
.setHooked(true)
.setWaitForCompletion()
.run();
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 0abbe53a..530d23d5 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -234,8 +234,8 @@ void ImagesTab::getSupportedFormats()
}
// make sure it starts with a dot
- if (s[0] != ".") {
- s = "." + s;
+ if (s[0] != '.') {
+ s = '.' + s;
}
m_supportedFormats.emplace_back(std::move(s));
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 94f2fc31..f3dd1caa 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -186,7 +186,7 @@ void ModInfoRegular::readMeta()
QString categoriesString = metaFile.value("category", "").toString();
- QStringList categories = categoriesString.split(',', QString::SkipEmptyParts);
+ QStringList categories = categoriesString.split(',', Qt::SkipEmptyParts);
for (QStringList::iterator iter = categories.begin(); iter != categories.end(); ++iter) {
bool ok = false;
int categoryID = iter->toInt(&ok);
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 4084af24..a34f730f 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -462,13 +462,13 @@ bool ModListSortProxy::filterMatchesMod(ModInfo::Ptr info, bool enabled) const
bool display = false;
QString filterCopy = QString(m_Filter);
filterCopy.replace("||", ";").replace("OR", ";").replace("|", ";");
- QStringList ORList = filterCopy.split(";", QString::SkipEmptyParts);
+ QStringList ORList = filterCopy.split(";", Qt::SkipEmptyParts);
bool segmentGood = true;
//split in ORSegments that internally use AND logic
for (auto& ORSegment : ORList) {
- QStringList ANDKeywords = ORSegment.split(" ", QString::SkipEmptyParts);
+ QStringList ANDKeywords = ORSegment.split(" ", Qt::SkipEmptyParts);
segmentGood = true;
bool foundKeyword = false;
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 2e4496e1..5bda2b93 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -103,7 +103,7 @@ void NexusBridge::nxmFilesAvailable(QString gameName, int modID, QVariant userDa
if (iter != m_RequestIDs.end()) {
m_RequestIDs.erase(iter);
- QList<ModRepositoryFileInfo> fileInfoList;
+ QList<ModRepositoryFileInfo*> fileInfoList;
QVariantMap resultInfo = resultData.toMap();
QList resultList = resultInfo["files"].toList();
@@ -118,7 +118,7 @@ void NexusBridge::nxmFilesAvailable(QString gameName, int modID, QVariant userDa
temp.categoryID = fileInfo["category_id"].toInt();
temp.fileID = fileInfo["file_id"].toInt();
temp.fileSize = fileInfo["size"].toInt();
- fileInfoList.append(temp);
+ fileInfoList.append(&temp);
}
emit filesAvailable(gameName, modID, userData, fileInfoList);
@@ -325,7 +325,7 @@ void NexusInterface::interpretNexusFileName(const QString &fileName, QString &mo
if (query) {
SelectionDialog selection(tr("Please pick the mod ID for \"%1\"").arg(fileName));
int index = 0;
- auto splits = fileName.split(QRegExp("[^0-9]"), QString::KeepEmptyParts);
+ auto splits = fileName.split(QRegularExpression("[^0-9]"), Qt::KeepEmptyParts);
for (auto substr : splits) {
bool ok = false;
int value = substr.toInt(&ok);
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp
index 001e1bb1..f05aeb36 100644
--- a/src/nxmaccessmanager.cpp
+++ b/src/nxmaccessmanager.cpp
@@ -786,11 +786,6 @@ NXMAccessManager::NXMAccessManager(QObject *parent, Settings* s, const QString &
setCookieJar(new PersistentCookieJar(QDir::fromNativeSeparators(
m_Settings->paths().cache() + "/nexus_cookies.dat")));
}
-
- if (networkAccessible() == QNetworkAccessManager::UnknownAccessibility) {
- // why is this necessary all of a sudden?
- setNetworkAccessible(QNetworkAccessManager::Accessible);
- }
}
void NXMAccessManager::setTopLevelWidget(QWidget* w)
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 7cf3212a..0807957b 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1428,17 +1428,20 @@ void OrganizerCore::requestDownload(const QUrl &url, QNetworkReply *reply)
QString gameName = "";
int modID = 0;
int fileID = 0;
- QRegExp nameExp("www\\.nexusmods\\.com/(\\a+)/");
- if (nameExp.indexIn(url.toString()) != -1) {
- gameName = nameExp.cap(1);
+ QRegularExpression nameExp("www\\.nexusmods\\.com/(\\a+)/");
+ auto match = nameExp.match(url.toString());
+ if (match.hasMatch()) {
+ gameName = match.captured(1);
}
- QRegExp modExp("mods/(\\d+)");
- if (modExp.indexIn(url.toString()) != -1) {
- modID = modExp.cap(1).toInt();
+ QRegularExpression modExp("mods/(\\d+)");
+ match = modExp.match(url.toString());
+ if (match.hasMatch()) {
+ modID = match.captured(1).toInt();
}
- QRegExp fileExp("fid=(\\d+)");
- if (fileExp.indexIn(reply->url().toString()) != -1) {
- fileID = fileExp.cap(1).toInt();
+ QRegularExpression fileExp("fid=(\\d+)");
+ match = fileExp.match(url.toString());
+ if (match.hasMatch()) {
+ fileID = match.captured(1).toInt();
}
m_DownloadManager.addDownload(reply,
new ModRepositoryFileInfo(gameName, modID, fileID));
diff --git a/src/pch.h b/src/pch.h
index bfc7f2d2..b9958710 100644
--- a/src/pch.h
+++ b/src/pch.h
@@ -184,9 +184,8 @@
#include <QQueue>
#include <QRadioButton>
#include <QRect>
-#include <QRegExp>
-#include <QRegExpValidator>
#include <QRegularExpression>
+#include <QRegularExpressionValidator>
#include <QResizeEvent>
#include <QScopedArrayPointer>
#include <QScopedPointer>
@@ -243,7 +242,7 @@
#include <QVariantMap>
#include <QVector>
#include <QVersionNumber>
-#include <QWebEngineContextMenuData>
+#include <QWebEngineContextMenuRequest>
#include <QWebEngineHistory>
#include <QWebEnginePage>
#include <QWebEngineProfile>
@@ -263,7 +262,6 @@
#include <QtDebug>
#include <QtGlobal>
#include <QtGui/QtGui>
-#include <QtPlatformHeaders/QWindowsWindowFunctions>
#include <QtPlugin>
#include <QtTest/QtTest>
#include <QStandardPaths>
diff --git a/src/pluginlistsortproxy.cpp b/src/pluginlistsortproxy.cpp
index 44285fd1..308a1398 100644
--- a/src/pluginlistsortproxy.cpp
+++ b/src/pluginlistsortproxy.cpp
@@ -72,7 +72,7 @@ bool PluginListSortProxy::lessThan(const QModelIndex &left,
} else {
for (int i = 0; i < lhsList.size(); ++i) {
if (lhsList.at(i) != rhsList.at(i)) {
- return lhsList.at(i) < rhsList.at(i);
+ return lhsList.at(i).toString() < rhsList.at(i).toString();
}
}
return false;
@@ -122,13 +122,13 @@ bool PluginListSortProxy::filterMatchesPlugin(const QString &plugin) const
bool display = false;
QString filterCopy = QString(m_CurrentFilter);
filterCopy.replace("||", ";").replace("OR", ";").replace("|", ";");
- QStringList ORList = filterCopy.split(";", QString::SkipEmptyParts);
+ QStringList ORList = filterCopy.split(";", Qt::SkipEmptyParts);
bool segmentGood = true;
//split in ORSegments that internally use AND logic
for (auto& ORSegment : ORList) {
- QStringList ANDKeywords = ORSegment.split(" ", QString::SkipEmptyParts);
+ QStringList ANDKeywords = ORSegment.split(" ", Qt::SkipEmptyParts);
segmentGood = true;
//check each word in the segment for match, each word needs to be matched but it doesn't matter where.
diff --git a/src/processrunner.cpp b/src/processrunner.cpp
index 4d83d0c8..4a954dee 100644
--- a/src/processrunner.cpp
+++ b/src/processrunner.cpp
@@ -649,7 +649,7 @@ ProcessRunner& ProcessRunner::setFromFileOrExecutable(
throw MyException(QObject::tr("No profile set"));
}
- setBinary(executable);
+ setBinary(QFileInfo(executable));
setArguments(args.join(" "));
setCurrentDirectory(cwd);
setProfileName(profileOverride);
@@ -659,7 +659,7 @@ ProcessRunner& ProcessRunner::setFromFileOrExecutable(
if (m_sp.binary.isRelative()) {
// relative path, should be relative to game directory
- setBinary(m_core.managedGame()->gameDirectory().absoluteFilePath(executable));
+ setBinary(QFileInfo(m_core.managedGame()->gameDirectory().absoluteFilePath(executable)));
}
if (cwd == "") {
diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp
index a8c7ce1d..d00bd288 100644
--- a/src/qtgroupingproxy.cpp
+++ b/src/qtgroupingproxy.cpp
@@ -152,7 +152,7 @@ QtGroupingProxy::belongsTo( const QModelIndex &idx )
return rowDataList;
}
-/* m_groupHash layout
+/* m_groupMap layout
* key : index of the group in m_groupMaps
* value : a QList of the original rows in sourceModel() for the children of this group
*
@@ -167,7 +167,7 @@ QtGroupingProxy::buildTree()
return;
beginResetModel();
- m_groupHash.clear();
+ m_groupMap.clear();
//don't clear the data maps since most of it will probably be needed again.
m_parentCreateList.clear();
@@ -189,9 +189,9 @@ QtGroupingProxy::buildTree()
quint32 quint32max = std::numeric_limits<quint32>::max();
std::vector<int> rmgroups;
- QHash<quint32, QList<int> > temp;
+ QMap<quint32, QList<int> > temp;
- for (auto iter = m_groupHash.begin(); iter != m_groupHash.end(); ++iter) {
+ for (auto iter = m_groupMap.begin(); iter != m_groupMap.end(); ++iter) {
if ((iter.key() == quint32max) ||
(iter->count() < 2)) {
temp[quint32max].append(iter.value());
@@ -202,7 +202,7 @@ QtGroupingProxy::buildTree()
temp[currentKey++] = *iter;
}
}
- m_groupHash = temp;
+ m_groupMap = temp;
// second loop is necessary because qt containers can't be iterated from end to front
// and removing by index from begin to end is ugly
@@ -225,8 +225,8 @@ QtGroupingProxy::addSourceRow( const QModelIndex &idx )
if( groupData.isEmpty() )
{
updatedGroups << -1;
- if( !m_groupHash.keys().contains( std::numeric_limits<quint32>::max() ) )
- m_groupHash.insert( std::numeric_limits<quint32>::max(), QList<int>() ); //add an empty placeholder
+ if( !m_groupMap.keys().contains( std::numeric_limits<quint32>::max() ) )
+ m_groupMap.insert( std::numeric_limits<quint32>::max(), QList<int>() ); //add an empty placeholder
}
//an item can be in multiple groups
@@ -254,16 +254,16 @@ QtGroupingProxy::addSourceRow( const QModelIndex &idx )
updatedGroup = m_groupMaps.count() - 1;
}
- if( !m_groupHash.keys().contains( updatedGroup ) )
- m_groupHash.insert( updatedGroup, QList<int>() ); //add an empty placeholder
+ if( !m_groupMap.keys().contains( updatedGroup ) )
+ m_groupMap.insert( updatedGroup, QList<int>() ); //add an empty placeholder
}
if( !updatedGroups.contains( updatedGroup ) )
updatedGroups << updatedGroup;
}
- //update m_groupHash to the new source-model layout (one row added)
- QMutableHashIterator<quint32, QList<int> > i( m_groupHash );
+ //update m_groupMap to the new source-model layout (one row added)
+ QMutableMapIterator<quint32, QList<int> > i( m_groupMap );
while( i.hasNext() )
{
i.next();
@@ -360,7 +360,7 @@ QtGroupingProxy::rowCount( const QModelIndex &index ) const
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<quint32>::max() ).count();
+ int rows = m_groupMaps.count() + m_groupMap.value( std::numeric_limits<quint32>::max() ).count();
return rows;
}
@@ -368,7 +368,7 @@ QtGroupingProxy::rowCount( const QModelIndex &index ) const
if( isGroup( index ) )
{
qint64 groupIndex = index.row();
- int rows = m_groupHash.value( groupIndex ).count();
+ int rows = m_groupMap.value( groupIndex ).count();
return rows;
} else {
QModelIndex originalIndex = mapToSource( index );
@@ -455,7 +455,7 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
} break;
case Qt::CheckStateRole: {
if (column != 0) return QVariant();
- int childCount = m_groupHash.value( row ).count();
+ int childCount = m_groupMap.value( row ).count();
int checked = 0;
QModelIndex parentIndex = this->index( row, 0, index.parent() );
for( int childRow = 0; childRow < childCount; ++childRow )
@@ -470,7 +470,7 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
} break;
default: {
QModelIndex parentIndex = this->index( row, 0, index.parent() );
- if (m_groupHash.value( row ).count() > 0) {
+ if (m_groupMap.value( row ).count() > 0) {
return this->index(0, column, parentIndex).data(role);
} else {
return QVariant();
@@ -498,7 +498,7 @@ QtGroupingProxy::data( const QModelIndex &index, int role ) const
//map all data from children to columns of group to allow grouping one level up
QVariantList variantsOfChildren;
- int childCount = m_groupHash.value( row ).count();
+ int childCount = m_groupMap.value( row ).count();
if( childCount == 0 )
return QVariant();
@@ -573,7 +573,7 @@ QtGroupingProxy::setData( const QModelIndex &idx, const QVariant &value, int rol
m_groupMaps[idx.row()].insert( idx.column(), columnData );
int columnToChange = idx.column() ? idx.column() : m_groupedColumn;
- foreach( int originalRow, m_groupHash.value( idx.row() ) )
+ foreach( int originalRow, m_groupMap.value( idx.row() ) )
{
QModelIndex childIdx = sourceModel()->index( originalRow, columnToChange,
m_rootNode );
@@ -620,7 +620,7 @@ QtGroupingProxy::mapToSource( const QModelIndex &index ) const
if( !proxyParent.isValid() )
indexInGroup -= m_groupMaps.count();
- QList<int> childRows = m_groupHash.value( proxyParent.row() );
+ QList<int> childRows = m_groupMap.value( proxyParent.row() );
if( childRows.isEmpty() || indexInGroup >= childRows.count() || indexInGroup < 0 )
return QModelIndex();
@@ -663,7 +663,7 @@ QtGroupingProxy::mapFromSource( const QModelIndex &idx ) const
{
//idx is an item in the top level of the source model (child of the rootnode)
int groupRow = -1;
- QHashIterator<quint32, QList<int> > iterator( m_groupHash );
+ QMapIterator<quint32, QList<int> > iterator( m_groupMap );
while( iterator.hasNext() )
{
iterator.next();
@@ -677,14 +677,14 @@ QtGroupingProxy::mapFromSource( const QModelIndex &idx ) const
if( groupRow != -1 ) //it's in a group, let's find the correct row.
{
proxyParent = this->index( groupRow, 0, QModelIndex() );
- proxyRow = m_groupHash.value( groupRow ).indexOf( sourceRow );
+ proxyRow = m_groupMap.value( groupRow ).indexOf( sourceRow );
}
else
{
proxyParent = QModelIndex();
// if the proxy item is not in a group it will be below the groups.
int groupLength = m_groupMaps.count();
- int i = m_groupHash.value( std::numeric_limits<quint32>::max() ).indexOf( sourceRow );
+ int i = m_groupMap.value( std::numeric_limits<quint32>::max() ).indexOf( sourceRow );
proxyRow = groupLength + i;
}
@@ -702,7 +702,7 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
if( rootFlags.testFlag( Qt::ItemIsDropEnabled ) )
return Qt::ItemFlags( Qt::ItemIsDropEnabled );
- return 0;
+ return Qt::ItemFlags(0);
}
//only if the grouped column has the editable flag set allow the
@@ -716,7 +716,7 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
if (idx.column() == 0) {
bool checkable = true;
- foreach ( int originalRow, m_groupHash.value( idx.row() ) )
+ foreach ( int originalRow, m_groupMap.value( idx.row() ) )
{
QModelIndex originalIdx = sourceModel()->index( originalRow, 0,
m_rootNode.parent() );
@@ -732,7 +732,7 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
}
//it's possible to have empty groups
- if( m_groupHash.value( idx.row() ).count() == 0 )
+ if( m_groupMap.value( idx.row() ).count() == 0 )
{
//check the flags of this column with the root node
QModelIndex originalRootNode = sourceModel()->index( m_rootNode.row(), m_groupedColumn,
@@ -741,7 +741,7 @@ QtGroupingProxy::flags( const QModelIndex &idx ) const
}
else
{
- foreach( int originalRow, m_groupHash.value( idx.row() ) )
+ foreach( int originalRow, m_groupMap.value( idx.row() ) )
{
QModelIndex originalIdx = sourceModel()->index( originalRow, m_groupedColumn,
m_rootNode );
@@ -815,7 +815,7 @@ bool
QtGroupingProxy::removeGroup( const QModelIndex &idx )
{
beginRemoveRows( idx.parent(), idx.row(), idx.row() );
- m_groupHash.remove( idx.row() );
+ m_groupMap.remove( idx.row() );
m_groupMaps.removeAt( idx.row() );
m_parentCreateList.removeAt( idx.internalId() );
endRemoveRows();
@@ -832,7 +832,7 @@ QtGroupingProxy::hasChildren( const QModelIndex &parent ) const
}
if( isGroup( parent ) ) {
- return !m_groupHash.value( parent.row() ).isEmpty();
+ return !m_groupMap.value( parent.row() ).isEmpty();
}
return sourceModel()->hasChildren( mapToSource( parent ) );
@@ -843,7 +843,7 @@ QtGroupingProxy::dropMimeData(const QMimeData *data, Qt::DropAction action, int
{
QModelIndex idx = index(row, column, parent);
if (isGroup(idx)) {
- QList<int> childRows = m_groupHash.value(idx.row());
+ QList<int> childRows = m_groupMap.value(idx.row());
int max = *std::max_element(childRows.begin(), childRows.end());
QModelIndex newIdx = mapToSource(index(max, column, idx));
@@ -900,12 +900,12 @@ QtGroupingProxy::modelRowsAboutToBeRemoved( const QModelIndex &parent, int start
{
if( parent == m_rootNode )
{
- QHash<quint32, QList<int> >::const_iterator i;
+ QMap<quint32, QList<int> >::const_iterator i;
//HACK, we are going to call beginRemoveRows() multiple times without
// endRemoveRows() if a source index is in multiple groups.
// This can be a problem for some views/proxies, but Q*Views can handle it.
// TODO: investigate a queue for applying proxy model changes in the correct order
- for( i = m_groupHash.constBegin(); i != m_groupHash.constEnd(); ++i )
+ for( i = m_groupMap.constBegin(); i != m_groupMap.constEnd(); ++i )
{
int groupIndex = i.key();
const QList<int> &groupList = i.value();
@@ -936,7 +936,7 @@ QtGroupingProxy::modelRowsRemoved( const QModelIndex &parent, int start, int end
{
if( parent == m_rootNode )
{
- //TODO: can be optimised by iterating over m_groupHash and checking start <= r < end
+ //TODO: can be optimised by iterating over m_groupMap and checking start <= r < end
//rather than increasing i we change the stored sourceRows in-place and reuse argument start
//X-times (where X = end - start).
@@ -945,7 +945,7 @@ QtGroupingProxy::modelRowsRemoved( const QModelIndex &parent, int start, int end
//HACK: we are going to iterate the hash in reverse so calls to endRemoveRows()
// are matched up with the beginRemoveRows() in modelRowsAboutToBeRemoved()
//NOTE: easier to do reverse with java style iterator
- QMutableHashIterator<quint32, QList<int> > iter( m_groupHash );
+ QMutableMapIterator<quint32, QList<int> > iter( m_groupMap );
iter.toBack();
while( iter.hasPrevious() )
{
@@ -1020,19 +1020,19 @@ QtGroupingProxy::dumpGroups() const
QString s;
QDebug debug(&s);
- debug << "m_groupHash:\n";
- for( int groupIndex = -1; groupIndex < m_groupHash.keys().count() - 1; groupIndex++ )
+ debug << "m_groupMap:\n";
+ for( int groupIndex = -1; groupIndex < m_groupMap.keys().count() - 1; groupIndex++ )
{
- debug << groupIndex << " : " << m_groupHash.value( groupIndex ) << "\n";
+ debug << groupIndex << " : " << m_groupMap.value( groupIndex ) << "\n";
}
debug << "m_groupMaps:\n";
for( int groupIndex = 0; groupIndex < m_groupMaps.count(); groupIndex++ )
{
- debug << m_groupMaps[groupIndex] << ": " << m_groupHash.value( groupIndex ) << "\n";
+ debug << m_groupMaps[groupIndex] << ": " << m_groupMap.value( groupIndex ) << "\n";
}
- debug << m_groupHash.value( std::numeric_limits<quint32>::max() );
+ debug << m_groupMap.value( std::numeric_limits<quint32>::max() );
log::debug("{}", s);
}
diff --git a/src/qtgroupingproxy.h b/src/qtgroupingproxy.h
index c4459297..c6116d8a 100644
--- a/src/qtgroupingproxy.h
+++ b/src/qtgroupingproxy.h
@@ -115,7 +115,7 @@ protected:
* reordered when rows are inserted or removed.
* TODO:use some auto-incrementing container class (steveire's?) for the list
*/
- QHash<quint32, QList<int> > m_groupHash;
+ QMap<quint32, QList<int> > m_groupMap;
/** The data cache of the groups.
* This can be pre-loaded with data in belongsTo()
*/
diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp
index b0f40882..48045245 100644
--- a/src/settingsdialoggeneral.cpp
+++ b/src/settingsdialoggeneral.cpp
@@ -72,7 +72,7 @@ void GeneralSettingsTab::addLanguages()
QString::fromStdWString(AppConfig::translationPrefix()) +
"_([a-z]{2,3}(_[A-Z]{2,2})?).qm";
- const QRegExp exp(pattern);
+ const QRegularExpression exp(QRegularExpression::anchoredPattern(pattern));
QDirIterator iter(
QCoreApplication::applicationDirPath() + "/translations",
@@ -84,11 +84,12 @@ void GeneralSettingsTab::addLanguages()
iter.next();
const QString file = iter.fileName();
- if (!exp.exactMatch(file)) {
+ auto match = exp.match(file);
+ if (!match.hasMatch()) {
continue;
}
- const QString languageCode = exp.cap(1);
+ const QString languageCode = match.captured(1);
const QLocale locale(languageCode);
QString languageString = QString("%1 (%2)")
@@ -103,7 +104,7 @@ void GeneralSettingsTab::addLanguages()
}
}
- languages.push_back({languageString, exp.cap(1)});
+ languages.push_back({languageString, match.captured(1)});
}
if (!ui->languageBox->findText("English")) {
diff --git a/src/spawn.cpp b/src/spawn.cpp
index fbd4c286..cc8f47bb 100644
--- a/src/spawn.cpp
+++ b/src/spawn.cpp
@@ -252,7 +252,7 @@ void helperFailed(
const std::wstring& cwd, const std::wstring& args)
{
SpawnParameters sp;
- sp.binary = QString::fromStdWString(binary);
+ sp.binary = QFileInfo(QString::fromStdWString(binary));
sp.currentDirectory.setPath(QString::fromStdWString(cwd));
sp.arguments = QString::fromStdWString(args);
@@ -620,7 +620,7 @@ bool startSteam(QWidget* parent)
}
SpawnParameters sp;
- sp.binary = exe;
+ sp.binary = QFileInfo(exe);
// See if username and password supplied. If so, pass them into steam.
QString username, password;
@@ -911,7 +911,7 @@ QFileInfo getCmdPath()
{
const auto p = env::get("COMSPEC");
if (!p.isEmpty()) {
- return p;
+ return QFileInfo(p);
}
QString systemDirectory;
@@ -930,7 +930,7 @@ QFileInfo getCmdPath()
systemDirectory = "C:\\Windows\\System32\\";
}
- return systemDirectory + "cmd.exe";
+ return QFileInfo(systemDirectory + "cmd.exe");
}
FileExecutionTypes getFileExecutionType(const QFileInfo& target)
diff --git a/src/statusbar.cpp b/src/statusbar.cpp
index 39acc32e..094aa743 100644
--- a/src/statusbar.cpp
+++ b/src/statusbar.cpp
@@ -229,7 +229,7 @@ QString StatusBarAction::cleanupActionText(const QString& original) const
{
QString s = original;
- s.replace(QRegExp("\\&([^&])"), "\\1"); // &Item -> Item
+ s.replace(QRegularExpression("\\&([^&])"), "\\1"); // &Item -> Item
s.replace("&&", "&"); // &&Item -> &Item
if (s.endsWith("...")) {
diff --git a/src/texteditor.cpp b/src/texteditor.cpp
index 4a8080f4..af4c63c8 100644
--- a/src/texteditor.cpp
+++ b/src/texteditor.cpp
@@ -284,7 +284,7 @@ void TextEditor::resizeEvent(QResizeEvent* e)
void TextEditor::paintLineNumbers(QPaintEvent* e, const QColor& textColor)
{
QStyleOption opt;
- opt.init(m_lineNumbers);
+ opt.initFrom(m_lineNumbers);
QPainter painter(m_lineNumbers);