diff --git a/src/app/application.cpp b/src/app/application.cpp index 9cc1d3558..de322790d 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -99,10 +99,10 @@ namespace // just a shortcut inline SettingsStorage *settings() { return SettingsStorage::instance(); } - const QString LOG_FOLDER("logs"); - const char PARAMS_SEPARATOR[] = "|"; + const QString LOG_FOLDER = QStringLiteral("logs"); + const QChar PARAMS_SEPARATOR = '|'; - const QString DEFAULT_PORTABLE_MODE_PROFILE_DIR = QLatin1String("profile"); + const QString DEFAULT_PORTABLE_MODE_PROFILE_DIR = QStringLiteral("profile"); const int MIN_FILELOG_SIZE = 1024; // 1KiB const int MAX_FILELOG_SIZE = 1000 * 1024 * 1024; // 1000MiB @@ -265,7 +265,7 @@ void Application::setFileLoggerAgeType(const int value) void Application::processMessage(const QString &message) { - QStringList params = message.split(QLatin1String(PARAMS_SEPARATOR), QString::SkipEmptyParts); + QStringList params = message.split(PARAMS_SEPARATOR, QString::SkipEmptyParts); // If Application is not running (i.e., other // components are not ready) store params if (m_running) @@ -409,7 +409,7 @@ void Application::allTorrentsFinished() bool Application::sendParams(const QStringList ¶ms) { - return sendMessage(params.join(QLatin1String(PARAMS_SEPARATOR))); + return sendMessage(params.join(PARAMS_SEPARATOR)); } // As program parameters, we can get paths or urls. diff --git a/src/app/cmdoptions.cpp b/src/app/cmdoptions.cpp index da831d654..5b5762182 100644 --- a/src/app/cmdoptions.cpp +++ b/src/app/cmdoptions.cpp @@ -402,7 +402,7 @@ QBtCommandLineParameters parseCommandLine(const QStringList &args) const QString &arg = args[i]; if ((arg.startsWith("--") && !arg.endsWith(".torrent")) - || (arg.startsWith("-") && (arg.size() == 2))) { + || (arg.startsWith('-') && (arg.size() == 2))) { // Parse known parameters if (arg == SHOW_HELP_OPTION) { result.showHelp = true; @@ -499,7 +499,7 @@ QString wrapText(const QString &text, int initialIndentation = USAGE_TEXT_COLUMN foreach (const QString &word, words.mid(1)) { if (lines.last().length() + word.length() + 1 < currentLineMaxLength) { - lines.last().append(" " + word); + lines.last().append(' ' + word); } else { lines.append(QString(initialIndentation, ' ') + word); diff --git a/src/base/bittorrent/magneturi.cpp b/src/base/bittorrent/magneturi.cpp index b306792c0..0c37eb139 100644 --- a/src/base/bittorrent/magneturi.cpp +++ b/src/base/bittorrent/magneturi.cpp @@ -46,7 +46,7 @@ namespace rawBc = rawBc.mid(8); // skip bc://bt/ rawBc = QByteArray::fromBase64(rawBc); // Decode base64 // Format is now AA/url_encoded_filename/size_bytes/info_hash/ZZ - QStringList parts = QString(rawBc).split("/"); + QStringList parts = QString(rawBc).split('/'); if (parts.size() != 5) return QString(); QString filename = parts.at(1); diff --git a/src/base/bittorrent/peerinfo.cpp b/src/base/bittorrent/peerinfo.cpp index 92d12cbc2..3db80ceb2 100644 --- a/src/base/bittorrent/peerinfo.cpp +++ b/src/base/bittorrent/peerinfo.cpp @@ -377,7 +377,7 @@ void PeerInfo::determineFlags() // L = Peer is local if (fromLSD()) { - m_flags += "L"; + m_flags += 'L'; flagsDescriptionList += "L = " + tr("peer from LSD"); } diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 86d54729c..8171d321d 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -688,7 +688,7 @@ QString Session::torrentTempPath(const TorrentInfo &torrentInfo) const if ((torrentInfo.filesCount() > 1) && !torrentInfo.hasRootFolder()) return tempPath() + QString::fromStdString(torrentInfo.nativeInfo()->orig_files().name()) - + "/"; + + '/'; return tempPath(); } @@ -793,7 +793,7 @@ bool Session::removeCategory(const QString &name) bool result = false; if (isSubcategoriesEnabled()) { // remove subcategories - const QString test = name + "/"; + const QString test = name + '/'; Dict::removeIf(m_categories, [this, &test, &result](const QString &category, const QString &) { if (category.startsWith(test)) { @@ -3664,7 +3664,7 @@ void Session::handleTorrentFinished(TorrentHandle *const torrent) const QString torrentRelpath = torrent->filePath(i); if (torrentRelpath.endsWith(".torrent", Qt::CaseInsensitive)) { qDebug("Found possible recursive torrent download."); - const QString torrentFullpath = torrent->savePath(true) + "/" + torrentRelpath; + const QString torrentFullpath = torrent->savePath(true) + '/' + torrentRelpath; qDebug("Full subtorrent path is %s", qUtf8Printable(torrentFullpath)); TorrentInfo torrentInfo = TorrentInfo::loadFromFile(torrentFullpath); if (torrentInfo.isValid()) { @@ -3814,7 +3814,7 @@ void Session::recursiveTorrentDownload(const InfoHash &hash) tr("Recursive download of file '%1' embedded in torrent '%2'" , "Recursive download of 'test.torrent' embedded in torrent 'test2'") .arg(Utils::Fs::toNativePath(torrentRelpath), torrent->name())); - const QString torrentFullpath = torrent->savePath() + "/" + torrentRelpath; + const QString torrentFullpath = torrent->savePath() + '/' + torrentRelpath; AddTorrentParams params; // Passing the save path along to the sub torrent file @@ -4309,7 +4309,7 @@ void Session::handleListenSucceededAlert(libt::listen_succeeded_alert *p) proto = "TCP"; else if (p->sock_type == libt::listen_succeeded_alert::tcp_ssl) proto = "TCP_SSL"; - qDebug() << "Successfully listening on " << proto << p->endpoint.address().to_string(ec).c_str() << "/" << p->endpoint.port(); + qDebug() << "Successfully listening on " << proto << p->endpoint.address().to_string(ec).c_str() << '/' << p->endpoint.port(); Logger::instance()->addMessage( tr("qBittorrent is successfully listening on interface %1 port: %2/%3", "e.g: qBittorrent is successfully listening on interface 192.168.0.1 port: TCP/6881") .arg(p->endpoint.address().to_string(ec).c_str(), proto, QString::number(p->endpoint.port())), Log::INFO); @@ -4336,7 +4336,7 @@ void Session::handleListenFailedAlert(libt::listen_failed_alert *p) proto = "I2P"; else if (p->sock_type == libt::listen_failed_alert::socks5) proto = "SOCKS5"; - qDebug() << "Failed listening on " << proto << p->endpoint.address().to_string(ec).c_str() << "/" << p->endpoint.port(); + qDebug() << "Failed listening on " << proto << p->endpoint.address().to_string(ec).c_str() << '/' << p->endpoint.port(); Logger::instance()->addMessage( tr("qBittorrent failed listening on interface %1 port: %2/%3. Reason: %4.", "e.g: qBittorrent failed listening on interface 192.168.0.1 port: TCP/6881. Reason: already in use.") diff --git a/src/base/bittorrent/torrentcreatorthread.cpp b/src/base/bittorrent/torrentcreatorthread.cpp index 85b2b3150..30a05dee6 100644 --- a/src/base/bittorrent/torrentcreatorthread.cpp +++ b/src/base/bittorrent/torrentcreatorthread.cpp @@ -89,7 +89,7 @@ void TorrentCreatorThread::run() emit updateProgress(0); try { - const QString parentPath = Utils::Fs::branchPath(m_params.inputPath) + "/"; + const QString parentPath = Utils::Fs::branchPath(m_params.inputPath) + '/'; // Adding files to the torrent libt::file_storage fs; diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index cb6efb875..7a729a1ad 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -328,7 +328,7 @@ QString TorrentHandle::rootPath(bool actual) const return QString(); QString firstFilePath = filePath(0); - const int slashIndex = firstFilePath.indexOf("/"); + const int slashIndex = firstFilePath.indexOf('/'); if (slashIndex >= 0) return QDir(savePath(actual)).absoluteFilePath(firstFilePath.left(slashIndex)); else @@ -556,7 +556,7 @@ bool TorrentHandle::belongsToCategory(const QString &category) const if (m_category == category) return true; - if (m_session->isSubcategoriesEnabled() && m_category.startsWith(category + "/")) + if (m_session->isSubcategoriesEnabled() && m_category.startsWith(category + '/')) return true; return false; @@ -1683,12 +1683,12 @@ void TorrentHandle::handleFileRenamedAlert(const libtorrent::file_renamed_alert // TODO: Check this! if (filesCount() > 1) { // Check if folders were renamed - QStringList oldPathParts = m_torrentInfo.origFilePath(p->index).split("/"); + QStringList oldPathParts = m_torrentInfo.origFilePath(p->index).split('/'); oldPathParts.removeLast(); - QString oldPath = oldPathParts.join("/"); - QStringList newPathParts = newName.split("/"); + QString oldPath = oldPathParts.join('/'); + QStringList newPathParts = newName.split('/'); newPathParts.removeLast(); - QString newPath = newPathParts.join("/"); + QString newPath = newPathParts.join('/'); if (!newPathParts.isEmpty() && (oldPath != newPath)) { qDebug("oldPath(%s) != newPath(%s)", qUtf8Printable(oldPath), qUtf8Printable(newPath)); oldPath = QString("%1/%2").arg(savePath(true), oldPath); @@ -2018,7 +2018,7 @@ void TorrentHandle::prioritizeFiles(const QVector &priorities) // Make sure the file does not already exists if (QDir(parentAbsPath).dirName() != ".unwanted") { QString unwantedAbsPath = parentAbsPath + "/.unwanted"; - QString newAbsPath = unwantedAbsPath + "/" + Utils::Fs::fileName(filepath); + QString newAbsPath = unwantedAbsPath + '/' + Utils::Fs::fileName(filepath); qDebug() << "Unwanted path is" << unwantedAbsPath; if (QFile::exists(newAbsPath)) { qWarning() << "File" << newAbsPath << "already exists at destination."; @@ -2038,8 +2038,8 @@ void TorrentHandle::prioritizeFiles(const QVector &priorities) } #endif QString parentPath = Utils::Fs::branchPath(filepath); - if (!parentPath.isEmpty() && !parentPath.endsWith("/")) - parentPath += "/"; + if (!parentPath.isEmpty() && !parentPath.endsWith('/')) + parentPath += '/'; renameFile(i, parentPath + ".unwanted/" + Utils::Fs::fileName(filepath)); } } @@ -2056,8 +2056,8 @@ void TorrentHandle::prioritizeFiles(const QVector &priorities) renameFile(i, QDir(newRelPath).filePath(oldName)); // Remove .unwanted directory if empty - qDebug() << "Attempting to remove .unwanted folder at " << QDir(spath + "/" + newRelPath).absoluteFilePath(".unwanted"); - QDir(spath + "/" + newRelPath).rmdir(".unwanted"); + qDebug() << "Attempting to remove .unwanted folder at " << QDir(spath + '/' + newRelPath).absoluteFilePath(".unwanted"); + QDir(spath + '/' + newRelPath).rmdir(".unwanted"); } } } diff --git a/src/base/bittorrent/tracker.cpp b/src/base/bittorrent/tracker.cpp index c95f24e56..601f06c38 100644 --- a/src/base/bittorrent/tracker.cpp +++ b/src/base/bittorrent/tracker.cpp @@ -60,7 +60,7 @@ bool Peer::operator==(const Peer &other) const QString Peer::uid() const { - return ip + ":" + QString::number(port); + return ip + ':' + QString::number(port); } libtorrent::entry Peer::toEntry(bool noPeerId) const diff --git a/src/base/net/dnsupdater.cpp b/src/base/net/dnsupdater.cpp index aefab36f1..422b07888 100644 --- a/src/base/net/dnsupdater.cpp +++ b/src/base/net/dnsupdater.cpp @@ -181,7 +181,7 @@ void DNSUpdater::processIPUpdateReply(const QString &reply) { Logger *const logger = Logger::instance(); qDebug() << Q_FUNC_INFO << reply; - QString code = reply.split(" ").first(); + QString code = reply.split(' ').first(); qDebug() << Q_FUNC_INFO << "Code:" << code; if ((code == "good") || (code == "nochg")) { diff --git a/src/base/net/smtp.cpp b/src/base/net/smtp.cpp index e8069f15d..691ba1890 100644 --- a/src/base/net/smtp.cpp +++ b/src/base/net/smtp.cpp @@ -299,7 +299,7 @@ QByteArray Smtp::encodeMimeHeader(const QString &key, const QString &value, QTex if (firstWord) line += word; else - line += " " + word; + line += ' ' + word; firstWord = false; } } @@ -423,7 +423,7 @@ void Smtp::authenticate() // Skip authentication logError("The SMTP server does not seem to support any of the authentications modes " "we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, " - "knowing it is likely to fail... Server Auth Modes: " + auth.join("|")); + "knowing it is likely to fail... Server Auth Modes: " + auth.join('|')); m_state = Authenticated; // At this point the server will not send any response // So fill the buffer with a fake one to pass the tests @@ -503,7 +503,7 @@ void Smtp::authLogin() void Smtp::logError(const QString &msg) { qDebug() << "Email Notification Error:" << msg; - Logger::instance()->addMessage(tr("Email Notification Error:") + " " + msg, Log::CRITICAL); + Logger::instance()->addMessage(tr("Email Notification Error:") + ' ' + msg, Log::CRITICAL); } QString Smtp::getCurrentDateTime() const @@ -529,7 +529,7 @@ QString Smtp::getCurrentDateTime() const std::snprintf(buf, sizeof(buf), "%+05d", timeOffset); QString timeOffsetStr = buf; - QString ret = weekDayStr + ", " + dayStr + " " + monthStr + " " + yearStr + " " + timeStr + " " + timeOffsetStr; + QString ret = weekDayStr + ", " + dayStr + ' ' + monthStr + ' ' + yearStr + ' ' + timeStr + ' ' + timeOffsetStr; return ret; } diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp index d3e6138bd..b02b1e5b5 100644 --- a/src/base/preferences.cpp +++ b/src/base/preferences.cpp @@ -256,7 +256,7 @@ void Preferences::setWinStartup(bool b) { QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); if (b) { - const QString binPath = "\"" + Utils::Fs::toNativePath(qApp->applicationFilePath()) + "\""; + const QString binPath = '"' + Utils::Fs::toNativePath(qApp->applicationFilePath()) + '"'; settings.setValue("qBittorrent", binPath); } else { @@ -500,7 +500,7 @@ void Preferences::setWebUiAuthSubnetWhitelist(QStringList subnets) QString Preferences::getServerDomains() const { - return value("Preferences/WebUI/ServerDomains", "*").toString(); + return value("Preferences/WebUI/ServerDomains", '*').toString(); } void Preferences::setServerDomains(const QString &str) @@ -510,7 +510,7 @@ void Preferences::setServerDomains(const QString &str) QString Preferences::getWebUiAddress() const { - return value("Preferences/WebUI/Address", "*").toString().trimmed(); + return value("Preferences/WebUI/Address", '*').toString().trimmed(); } void Preferences::setWebUiAddress(const QString &addr) @@ -987,7 +987,7 @@ QString Preferences::getPythonPath() // Fallback: Detect python from default locations const QStringList dirs = QDir("C:/").entryList(QStringList("Python*"), QDir::Dirs, QDir::Name | QDir::Reversed); foreach (const QString &dir, dirs) { - const QString path("C:/" + dir + "/"); + const QString path("C:/" + dir + '/'); if (QFile::exists(path + "python.exe")) return path; } @@ -1058,8 +1058,8 @@ void Preferences::setMagnetLinkAssoc(bool set) // Magnet association if (set) { - const QString commandStr = "\"" + qApp->applicationFilePath() + "\" \"%1\""; - const QString iconStr = "\"" + qApp->applicationFilePath() + "\",1"; + const QString commandStr = '"' + qApp->applicationFilePath() + "\" \"%1\""; + const QString iconStr = '"' + qApp->applicationFilePath() + "\",1"; settings.setValue("magnet/Default", "URL:Magnet link"); settings.setValue("magnet/Content Type", "application/x-magnet"); diff --git a/src/base/rss/rss_autodownloadrule.cpp b/src/base/rss/rss_autodownloadrule.cpp index 294bb528e..f7dbfc5af 100644 --- a/src/base/rss/rss_autodownloadrule.cpp +++ b/src/base/rss/rss_autodownloadrule.cpp @@ -502,7 +502,7 @@ void AutoDownloadRule::setMustContain(const QString &tokens) if (m_dataPtr->useRegex) m_dataPtr->mustContain = QStringList() << tokens; else - m_dataPtr->mustContain = tokens.split("|"); + m_dataPtr->mustContain = tokens.split('|'); // Check for single empty string - if so, no condition if ((m_dataPtr->mustContain.size() == 1) && m_dataPtr->mustContain[0].isEmpty()) @@ -516,7 +516,7 @@ void AutoDownloadRule::setMustNotContain(const QString &tokens) if (m_dataPtr->useRegex) m_dataPtr->mustNotContain = QStringList() << tokens; else - m_dataPtr->mustNotContain = tokens.split("|"); + m_dataPtr->mustNotContain = tokens.split('|'); // Check for single empty string - if so, no condition if ((m_dataPtr->mustNotContain.size() == 1) && m_dataPtr->mustNotContain[0].isEmpty()) @@ -605,12 +605,12 @@ int AutoDownloadRule::ignoreDays() const QString AutoDownloadRule::mustContain() const { - return m_dataPtr->mustContain.join("|"); + return m_dataPtr->mustContain.join('|'); } QString AutoDownloadRule::mustNotContain() const { - return m_dataPtr->mustNotContain.join("|"); + return m_dataPtr->mustNotContain.join('|'); } bool AutoDownloadRule::useSmartFilter() const diff --git a/src/base/search/searchhandler.cpp b/src/base/search/searchhandler.cpp index 8547087be..d2c518787 100644 --- a/src/base/search/searchhandler.cpp +++ b/src/base/search/searchhandler.cpp @@ -65,13 +65,13 @@ SearchHandler::SearchHandler(const QString &pattern, const QString &category, co const QStringList params { Utils::Fs::toNativePath(m_manager->engineLocation() + "/nova2.py"), - m_usedPlugins.join(","), + m_usedPlugins.join(','), m_category }; // Launch search m_searchProcess->setProgram(Utils::ForeignApps::pythonInfo().executableName); - m_searchProcess->setArguments(params + m_pattern.split(" ")); + m_searchProcess->setArguments(params + m_pattern.split(' ')); #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) connect(m_searchProcess, &QProcess::errorOccurred, this, &SearchHandler::processFailed); @@ -161,7 +161,7 @@ void SearchHandler::processFailed() // file url | file name | file size | nb seeds | nb leechers | Search engine url bool SearchHandler::parseSearchResult(const QString &line, SearchResult &searchResult) { - const QStringList parts = line.split("|"); + const QStringList parts = line.split('|'); const int nbFields = parts.size(); if (nbFields < (NB_PLUGIN_COLUMNS - 1)) return false; // -1 because desc_link is optional diff --git a/src/base/search/searchpluginmanager.cpp b/src/base/search/searchpluginmanager.cpp index a72eb0472..e920b836d 100644 --- a/src/base/search/searchpluginmanager.cpp +++ b/src/base/search/searchpluginmanager.cpp @@ -204,7 +204,7 @@ void SearchPluginManager::installPlugin(const QString &source) path = QUrl(path).toLocalFile(); QString pluginName = Utils::Fs::fileName(path); - pluginName.chop(pluginName.size() - pluginName.lastIndexOf(".")); + pluginName.chop(pluginName.size() - pluginName.lastIndexOf('.')); if (!path.endsWith(".py", Qt::CaseInsensitive)) emit pluginInstallationFailed(pluginName, tr("Unknown search engine plugin file format.")); @@ -375,7 +375,7 @@ void SearchPluginManager::pluginDownloaded(const QString &url, QString filePath) filePath = Utils::Fs::fromNativePath(filePath); QString pluginName = Utils::Fs::fileName(url); - pluginName.chop(pluginName.size() - pluginName.lastIndexOf(".")); // Remove extension + pluginName.chop(pluginName.size() - pluginName.lastIndexOf('.')); // Remove extension installPlugin_impl(pluginName, filePath); Utils::Fs::forceRemove(filePath); } @@ -502,13 +502,13 @@ void SearchPluginManager::parseVersionInfo(const QByteArray &info) foreach (QByteArray line, lines) { line = line.trimmed(); if (line.isEmpty()) continue; - if (line.startsWith("#")) continue; + if (line.startsWith('#')) continue; QList list = line.split(' '); if (list.size() != 2) continue; QString pluginName = QString(list.first()); - if (!pluginName.endsWith(":")) continue; + if (!pluginName.endsWith(':')) continue; pluginName.chop(1); // remove trailing ':' PluginVersion version = PluginVersion::tryParse(list.last(), {}); diff --git a/src/base/utils/fs.cpp b/src/base/utils/fs.cpp index 39f99a222..1a22eab0b 100644 --- a/src/base/utils/fs.cpp +++ b/src/base/utils/fs.cpp @@ -78,14 +78,14 @@ QString Utils::Fs::fromNativePath(const QString &path) QString Utils::Fs::fileExtension(const QString &filename) { QString ext = QString(filename).remove(QB_EXT); - const int pointIndex = ext.lastIndexOf("."); + const int pointIndex = ext.lastIndexOf('.'); return (pointIndex >= 0) ? ext.mid(pointIndex + 1) : QString(); } QString Utils::Fs::fileName(const QString &filePath) { QString path = fromNativePath(filePath); - const int slashIndex = path.lastIndexOf("/"); + const int slashIndex = path.lastIndexOf('/'); if (slashIndex == -1) return path; return path.mid(slashIndex + 1); @@ -94,7 +94,7 @@ QString Utils::Fs::fileName(const QString &filePath) QString Utils::Fs::folderName(const QString &filePath) { QString path = fromNativePath(filePath); - const int slashIndex = path.lastIndexOf("/"); + const int slashIndex = path.lastIndexOf('/'); if (slashIndex == -1) return path; return path.left(slashIndex); @@ -121,13 +121,13 @@ bool Utils::Fs::smartRemoveEmptyFolderTree(const QString &path) }; // travel from the deepest folder and remove anything unwanted on the way out. - QStringList dirList(path + "/"); // get all sub directories paths + QStringList dirList(path + '/'); // get all sub directories paths QDirIterator iter(path, (QDir::AllDirs | QDir::NoDotAndDotDot), QDirIterator::Subdirectories); while (iter.hasNext()) - dirList << iter.next() + "/"; + dirList << iter.next() + '/'; // sort descending by directory depth std::sort(dirList.begin(), dirList.end() - , [](const QString &l, const QString &r) { return l.count("/") > r.count("/"); }); + , [](const QString &l, const QString &r) { return l.count('/') > r.count('/'); }); for (const QString &p : qAsConst(dirList)) { // remove unwanted files @@ -139,7 +139,7 @@ bool Utils::Fs::smartRemoveEmptyFolderTree(const QString &path) QDir dir(p); QStringList tmpFileList = dir.entryList(QDir::Files); for (const QString &f : tmpFileList) { - if (f.endsWith("~")) + if (f.endsWith('~')) forceRemove(p + f); } @@ -246,9 +246,9 @@ qint64 Utils::Fs::freeDiskSpaceOnPath(const QString &path) QString Utils::Fs::branchPath(const QString &filePath, QString *removed) { QString ret = fromNativePath(filePath); - if (ret.endsWith("/")) + if (ret.endsWith('/')) ret.chop(1); - const int slashIndex = ret.lastIndexOf("/"); + const int slashIndex = ret.lastIndexOf('/'); if (slashIndex >= 0) { if (removed) *removed = ret.mid(slashIndex + 1); diff --git a/src/base/utils/misc.cpp b/src/base/utils/misc.cpp index 212445d5e..72dbb840d 100644 --- a/src/base/utils/misc.cpp +++ b/src/base/utils/misc.cpp @@ -501,7 +501,7 @@ void Utils::Misc::openFolderSelect(const QString &absolutePath) const QString path = Utils::Fs::fromNativePath(absolutePath); // If the item to select doesn't exist, try to open its parent if (!QFileInfo::exists(path)) { - openPath(path.left(path.lastIndexOf("/"))); + openPath(path.left(path.lastIndexOf('/'))); return; } #ifdef Q_OS_WIN @@ -540,10 +540,10 @@ void Utils::Misc::openFolderSelect(const QString &absolutePath) } else { // "caja" manager can't pinpoint the file, see: https://github.com/qbittorrent/qBittorrent/issues/5003 - openPath(path.left(path.lastIndexOf("/"))); + openPath(path.left(path.lastIndexOf('/'))); } #else - openPath(path.left(path.lastIndexOf("/"))); + openPath(path.left(path.lastIndexOf('/'))); #endif } diff --git a/src/gui/addnewtorrentdialog.cpp b/src/gui/addnewtorrentdialog.cpp index 5b9021cd2..30dc31d97 100644 --- a/src/gui/addnewtorrentdialog.cpp +++ b/src/gui/addnewtorrentdialog.cpp @@ -445,7 +445,7 @@ void AddNewTorrentDialog::updateDiskSpaceLabel() sizeString += " ("; sizeString += tr("Free space on disk: %1").arg(Utils::Misc::friendlyUnit(Utils::Fs::freeDiskSpaceOnPath( m_ui->savePath->selectedPath()))); - sizeString += ")"; + sizeString += ')'; m_ui->labelSize->setText(sizeString); } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index f84641d42..396e4a087 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2037,7 +2037,7 @@ bool MainWindow::addPythonPathToEnv() QString pathEnvar = QString::fromLocal8Bit(qgetenv("PATH").constData()); if (pathEnvar.isNull()) pathEnvar = ""; - pathEnvar = pythonPath + ";" + pathEnvar; + pathEnvar = pythonPath + ';' + pathEnvar; qDebug("New PATH envvar is: %s", qUtf8Printable(pathEnvar)); qputenv("PATH", Utils::Fs::toNativePath(pathEnvar).toLocal8Bit()); return true; @@ -2069,7 +2069,7 @@ void MainWindow::pythonDownloadSuccess(const QString &url, const QString &filePa if (QSysInfo::windowsVersion() >= QSysInfo::WV_VISTA) { QFile::rename(filePath, filePath + ".exe"); - installer.start("\"" + Utils::Fs::toNativePath(filePath) + ".exe\" /passive"); + installer.start('"' + Utils::Fs::toNativePath(filePath) + ".exe\" /passive"); } else { QFile::rename(filePath, filePath + ".msi"); diff --git a/src/gui/previewlistdelegate.h b/src/gui/previewlistdelegate.h index f26090c49..f8dea8270 100644 --- a/src/gui/previewlistdelegate.h +++ b/src/gui/previewlistdelegate.h @@ -70,7 +70,7 @@ public: QStyleOptionProgressBar newopt; qreal progress = index.data().toDouble() * 100.; newopt.rect = opt.rect; - newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + "%"); + newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + '%'); newopt.progress = static_cast(progress); newopt.maximum = 100; newopt.minimum = 0; diff --git a/src/gui/properties/peerlistdelegate.h b/src/gui/properties/peerlistdelegate.h index 29db78c9a..93f7f88f5 100644 --- a/src/gui/properties/peerlistdelegate.h +++ b/src/gui/properties/peerlistdelegate.h @@ -100,7 +100,7 @@ public: case RELEVANCE: { qreal progress = index.data().toDouble(); opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; - QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::String::fromDouble(progress * 100.0, 1) + "%"); + QItemDelegate::drawDisplay(painter, opt, opt.rect, Utils::String::fromDouble(progress * 100.0, 1) + '%'); } break; default: diff --git a/src/gui/properties/peerlistwidget.cpp b/src/gui/properties/peerlistwidget.cpp index 000c0d6ba..8f579ed7e 100644 --- a/src/gui/properties/peerlistwidget.cpp +++ b/src/gui/properties/peerlistwidget.cpp @@ -304,9 +304,9 @@ void PeerListWidget::copySelectedPeers() QString ip = m_listModel->data(m_listModel->index(row, PeerListDelegate::IP_HIDDEN)).toString(); QString myport = m_listModel->data(m_listModel->index(row, PeerListDelegate::PORT)).toString(); if (ip.indexOf('.') == -1) // IPv6 - selectedPeers << "[" + ip + "]:" + myport; + selectedPeers << '[' + ip + "]:" + myport; else // IPv4 - selectedPeers << ip + ":" + myport; + selectedPeers << ip + ':' + myport; } QApplication::clipboard()->setText(selectedPeers.join('\n')); } @@ -404,8 +404,8 @@ QStandardItem *PeerListWidget::addPeer(const QString &ip, BitTorrent::TorrentHan m_listModel->setData(m_listModel->index(row, PeerListDelegate::TOT_UP), peer.totalUpload()); m_listModel->setData(m_listModel->index(row, PeerListDelegate::RELEVANCE), peer.relevance()); QStringList downloadingFiles(torrent->info().filesForPiece(peer.downloadingPieceIndex())); - m_listModel->setData(m_listModel->index(row, PeerListDelegate::DOWNLOADING_PIECE), downloadingFiles.join(QLatin1String(";"))); - m_listModel->setData(m_listModel->index(row, PeerListDelegate::DOWNLOADING_PIECE), downloadingFiles.join(QLatin1String("\n")), Qt::ToolTipRole); + m_listModel->setData(m_listModel->index(row, PeerListDelegate::DOWNLOADING_PIECE), downloadingFiles.join(QLatin1Char(';'))); + m_listModel->setData(m_listModel->index(row, PeerListDelegate::DOWNLOADING_PIECE), downloadingFiles.join(QLatin1Char('\n')), Qt::ToolTipRole); return m_listModel->item(row, PeerListDelegate::IP); } diff --git a/src/gui/properties/propertieswidget.cpp b/src/gui/properties/propertieswidget.cpp index e0573a5ce..2a19a600f 100644 --- a/src/gui/properties/propertieswidget.cpp +++ b/src/gui/properties/propertieswidget.cpp @@ -474,7 +474,7 @@ void PropertiesWidget::loadDynamicData() // Progress qreal progress = m_torrent->progress() * 100.; - m_ui->labelProgressVal->setText(Utils::String::fromDouble(progress, 1) + "%"); + m_ui->labelProgressVal->setText(Utils::String::fromDouble(progress, 1) + '%'); m_downloadedPieces->setProgress(m_torrent->pieces(), m_torrent->downloadingPieces()); } else { diff --git a/src/gui/properties/proplistdelegate.cpp b/src/gui/properties/proplistdelegate.cpp index 075e617b8..f748f6462 100644 --- a/src/gui/properties/proplistdelegate.cpp +++ b/src/gui/properties/proplistdelegate.cpp @@ -87,7 +87,7 @@ void PropListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti QStyleOptionProgressBar newopt; qreal progress = index.data().toDouble() * 100.; newopt.rect = opt.rect; - newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + "%"); + newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + '%'); newopt.progress = int(progress); newopt.maximum = 100; newopt.minimum = 0; diff --git a/src/gui/properties/trackerlistwidget.cpp b/src/gui/properties/trackerlistwidget.cpp index 998c727d3..d4e131a86 100644 --- a/src/gui/properties/trackerlistwidget.cpp +++ b/src/gui/properties/trackerlistwidget.cpp @@ -371,9 +371,9 @@ void TrackerListWidget::loadTrackers() item->setText(COL_PEERS, QString::number(entry.nativeEntry().scrape_incomplete > 0 ? entry.nativeEntry().scrape_incomplete : 0)); item->setText(COL_DOWNLOADED, QString::number(entry.nativeEntry().scrape_downloaded > 0 ? entry.nativeEntry().scrape_downloaded : 0)); #else - item->setText(COL_SEEDS, "0"); - item->setText(COL_PEERS, "0"); - item->setText(COL_DOWNLOADED, "0"); + item->setText(COL_SEEDS, '0'); + item->setText(COL_PEERS, '0'); + item->setText(COL_DOWNLOADED, '0'); #endif item->setTextAlignment(COL_TIER, (Qt::AlignRight | Qt::AlignVCenter)); diff --git a/src/gui/rss/automatedrssdownloader.cpp b/src/gui/rss/automatedrssdownloader.cpp index da7ca8ab1..12124f1ad 100644 --- a/src/gui/rss/automatedrssdownloader.cpp +++ b/src/gui/rss/automatedrssdownloader.cpp @@ -675,7 +675,7 @@ void AutomatedRssDownloader::updateMustLineValidity() if (isRegex) tokens << text; else - foreach (const QString &token, text.split("|")) + foreach (const QString &token, text.split('|')) tokens << Utils::String::wildcardToRegex(token); foreach (const QString &token, tokens) { @@ -713,7 +713,7 @@ void AutomatedRssDownloader::updateMustNotLineValidity() if (isRegex) tokens << text; else - foreach (const QString &token, text.split("|")) + foreach (const QString &token, text.split('|')) tokens << Utils::String::wildcardToRegex(token); foreach (const QString &token, tokens) { diff --git a/src/gui/statusbar.cpp b/src/gui/statusbar.cpp index 93a8d71de..ce61ec2fb 100644 --- a/src/gui/statusbar.cpp +++ b/src/gui/statusbar.cpp @@ -209,14 +209,14 @@ void StatusBar::updateSpeedLabels() QString speedLbl = Utils::Misc::friendlyUnit(sessionStatus.payloadDownloadRate, true); int speedLimit = BitTorrent::Session::instance()->downloadSpeedLimit(); if (speedLimit) - speedLbl += " [" + Utils::Misc::friendlyUnit(speedLimit, true) + "]"; - speedLbl += " (" + Utils::Misc::friendlyUnit(sessionStatus.totalPayloadDownload) + ")"; + speedLbl += " [" + Utils::Misc::friendlyUnit(speedLimit, true) + ']'; + speedLbl += " (" + Utils::Misc::friendlyUnit(sessionStatus.totalPayloadDownload) + ')'; m_dlSpeedLbl->setText(speedLbl); speedLimit = BitTorrent::Session::instance()->uploadSpeedLimit(); speedLbl = Utils::Misc::friendlyUnit(sessionStatus.payloadUploadRate, true); if (speedLimit) - speedLbl += " [" + Utils::Misc::friendlyUnit(speedLimit, true) + "]"; - speedLbl += " (" + Utils::Misc::friendlyUnit(sessionStatus.totalPayloadUpload) + ")"; + speedLbl += " [" + Utils::Misc::friendlyUnit(speedLimit, true) + ']'; + speedLbl += " (" + Utils::Misc::friendlyUnit(sessionStatus.totalPayloadUpload) + ')'; m_upSpeedLbl->setText(speedLbl); } diff --git a/src/gui/tagfiltermodel.cpp b/src/gui/tagfiltermodel.cpp index 818b72d5a..8dcb6181d 100644 --- a/src/gui/tagfiltermodel.cpp +++ b/src/gui/tagfiltermodel.cpp @@ -39,16 +39,16 @@ namespace { QString getSpecialAllTag() { - static const QString *const ALL_TAG = new QString(" "); - Q_ASSERT(!BitTorrent::Session::isValidTag(*ALL_TAG)); - return *ALL_TAG; + const QString ALL_TAG = QLatin1String(" "); + Q_ASSERT(!BitTorrent::Session::isValidTag(ALL_TAG)); + return ALL_TAG; } QString getSpecialUntaggedTag() { - static const QString *const UNTAGGED_TAG = new QString(" "); - Q_ASSERT(!BitTorrent::Session::isValidTag(*UNTAGGED_TAG)); - return *UNTAGGED_TAG; + const QString UNTAGGED_TAG = QLatin1String(" "); + Q_ASSERT(!BitTorrent::Session::isValidTag(UNTAGGED_TAG)); + return UNTAGGED_TAG; } } diff --git a/src/gui/transferlistdelegate.cpp b/src/gui/transferlistdelegate.cpp index 584ead328..5e8f0b756 100644 --- a/src/gui/transferlistdelegate.cpp +++ b/src/gui/transferlistdelegate.cpp @@ -91,7 +91,7 @@ void TransferListDelegate::paint(QPainter *painter, const QStyleOptionViewItem & qlonglong total = index.data(Qt::UserRole).toLongLong(); if (hideValues && (!value && !total)) break; - QString display = QString::number(value) + " (" + QString::number(total) + ")"; + QString display = QString::number(value) + " (" + QString::number(total) + ')'; opt.displayAlignment = Qt::AlignRight | Qt::AlignVCenter; QItemDelegate::drawDisplay(painter, opt, opt.rect, display); } @@ -160,7 +160,7 @@ void TransferListDelegate::paint(QPainter *painter, const QStyleOptionViewItem & QStyleOptionProgressBar newopt; qreal progress = index.data().toDouble() * 100.; newopt.rect = opt.rect; - newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + "%"); + newopt.text = ((progress == 100.0) ? QString("100%") : Utils::String::fromDouble(progress, 1) + '%'); newopt.progress = static_cast(progress); newopt.maximum = 100; newopt.minimum = 0; diff --git a/src/gui/transferlistmodel.cpp b/src/gui/transferlistmodel.cpp index f6b81a90e..adfd8773d 100644 --- a/src/gui/transferlistmodel.cpp +++ b/src/gui/transferlistmodel.cpp @@ -93,7 +93,7 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation, if (orientation == Qt::Horizontal) { if (role == Qt::DisplayRole) { switch (section) { - case TR_PRIORITY: return "#"; + case TR_PRIORITY: return QChar('#'); case TR_NAME: return tr("Name", "i.e: torrent name"); case TR_SIZE: return tr("Size", "i.e: torrent size"); case TR_PROGRESS: return tr("Done", "% Done"); diff --git a/src/gui/utils.cpp b/src/gui/utils.cpp index e2279687a..08ca7b59b 100644 --- a/src/gui/utils.cpp +++ b/src/gui/utils.cpp @@ -73,7 +73,7 @@ QPixmap Utils::Gui::scaledPixmap(const QString &path, const QWidget *widget, con QPixmap Utils::Gui::scaledPixmapSvg(const QString &path, const QWidget *widget, const int baseHeight) { const int scaledHeight = baseHeight * Utils::Gui::screenScalingFactor(widget); - const QString normalizedKey = path + "@" + QString::number(scaledHeight); + const QString normalizedKey = path + '@' + QString::number(scaledHeight); QPixmap pm; QPixmapCache cache; diff --git a/src/webui/api/synccontroller.cpp b/src/webui/api/synccontroller.cpp index a90e69a93..d8fe4d464 100644 --- a/src/webui/api/synccontroller.cpp +++ b/src/webui/api/synccontroller.cpp @@ -465,7 +465,7 @@ void SyncController::torrentPeersAction() peer[KEY_PEER_RELEVANCE] = pi.relevance(); peer[KEY_PEER_FILES] = torrent->info().filesForPiece(pi.downloadingPieceIndex()).join(QLatin1String("\n")); - peers[pi.address().ip.toString() + ":" + QString::number(pi.address().port)] = peer; + peers[pi.address().ip.toString() + ':' + QString::number(pi.address().port)] = peer; } data["peers"] = peers; diff --git a/src/webui/api/torrentscontroller.cpp b/src/webui/api/torrentscontroller.cpp index 12ddcddfb..99e043638 100644 --- a/src/webui/api/torrentscontroller.cpp +++ b/src/webui/api/torrentscontroller.cpp @@ -734,16 +734,16 @@ void TorrentsController::setLocationAction() { checkParams({"hashes", "location"}); - const QStringList hashes {params()["hashes"].split("|")}; + const QStringList hashes {params()["hashes"].split('|')}; const QString newLocation {params()["location"].trimmed()}; if (newLocation.isEmpty()) throw APIError(APIErrorType::BadParams, tr("Save path is empty")); - + // try to create the location if it does not exist if (!QDir(newLocation).mkpath(".")) throw APIError(APIErrorType::Conflict, tr("Cannot make save path")); - + // check permissions if (!QFileInfo(newLocation).isWritable()) throw APIError(APIErrorType::AccessDenied, tr("Cannot write to directory"));