diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index fd57e203a..31c77a344 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -2020,7 +2020,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { } } else if (portmap_error_alert* p = dynamic_cast(a.get())) { - addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping failure, message: %1").arg(QString(p->message().c_str())), "red"); + addConsoleMessage(tr("UPnP/NAT-PMP: Port mapping failure, message: %1").arg(misc::toQString(p->message())), "red"); //emit UPnPError(QString(p->msg().c_str())); } else if (portmap_alert* p = dynamic_cast(a.get())) { @@ -2112,15 +2112,15 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { } if(appendLabelToSavePath) { qDebug("appendLabelToSavePath is true"); - QString label = TorrentTempData::getLabel(hash); + const QString &label = TorrentTempData::getLabel(hash); if(!label.isEmpty()) { - QDir save_dir(savePath); + const QDir &save_dir(savePath); if(save_dir.dirName() != label) { savePath = save_dir.absoluteFilePath(label); } } } - qDebug("getSavePath, got save_path from temp data: %s", savePath.toLocal8Bit().data()); + qDebug("getSavePath, got save_path from temp data: %s", qPrintable(savePath)); } else { savePath = TorrentPersistentData::getSavePath(hash); if(savePath.isEmpty()) { @@ -2130,7 +2130,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { savePath = defaultSavePath; } if(!fromScanDir && appendLabelToSavePath) { - QString label = TorrentPersistentData::getLabel(hash); + const QString &label = TorrentPersistentData::getLabel(hash); if(!label.isEmpty()) { QDir save_dir(savePath); if(save_dir.dirName() != label) { @@ -2138,7 +2138,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { } } } - qDebug("getSavePath, got save_path from persistent data: %s", savePath.toLocal8Bit().data()); + qDebug("getSavePath, got save_path from persistent data: %s", qPrintable(savePath)); } // Clean path savePath = misc::expandPath(savePath); @@ -2147,7 +2147,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { QDir saveDir(savePath); if(!saveDir.exists()) { if(!saveDir.mkpath(saveDir.absolutePath())) { - std::cerr << "Couldn't create the save directory: " << saveDir.path().toLocal8Bit().data() << "\n"; + std::cerr << "Couldn't create the save directory: " << qPrintable(saveDir.path()) << "\n"; // XXX: Do something else? } } @@ -2180,7 +2180,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { void Bittorrent::downloadUrlAndSkipDialog(QString url, QString save_path) { //emit aboutToDownloadFromUrl(url); - QUrl qurl = QUrl::fromEncoded(url.toLocal8Bit()); + const QUrl &qurl = QUrl::fromEncoded(url.toLocal8Bit()); if(!save_path.isEmpty()) savepath_fromurl[qurl] = save_path; url_skippingDlg << qurl; @@ -2190,7 +2190,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // Add to Bittorrent session the downloaded torrent file void Bittorrent::processDownloadedFile(QString url, QString file_path) { - int index = url_skippingDlg.indexOf(QUrl::fromEncoded(url.toLocal8Bit())); + const int index = url_skippingDlg.indexOf(QUrl::fromEncoded(url.toLocal8Bit())); if(index < 0) { // Add file to torrent download list emit newDownloadedTorrent(file_path, url); @@ -2204,7 +2204,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // session. Payload means that it only take into // account "useful" part of the rate float Bittorrent::getPayloadDownloadRate() const{ - session_status sessionStatus = s->status(); + const session_status &sessionStatus = s->status(); return sessionStatus.payload_download_rate; } @@ -2212,7 +2212,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // session. Payload means that it only take into // account "useful" part of the rate float Bittorrent::getPayloadUploadRate() const{ - session_status sessionStatus = s->status(); + const session_status &sessionStatus = s->status(); return sessionStatus.payload_upload_rate; } @@ -2222,7 +2222,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { if(DHTEnabled) { try{ entry dht_state = s->dht_state(); - boost::filesystem::ofstream out((misc::cacheLocation()+QDir::separator()+QString::fromUtf8("dht_state")).toLocal8Bit().data(), std::ios_base::binary); + boost::filesystem::ofstream out((misc::cacheLocation()+QDir::separator()+QString::fromUtf8("dht_state")).toLocal8Bit().constData(), std::ios_base::binary); out.unsetf(std::ios_base::skipws); bencode(std::ostream_iterator(out), dht_state); qDebug("DHT entry saved"); @@ -2242,8 +2242,8 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { void Bittorrent::startUpTorrents() { qDebug("Resuming unfinished torrents"); QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - QDir torrentBackup(misc::BTBackupLocation()); - QStringList known_torrents = TorrentPersistentData::knownTorrents(); + const QDir &torrentBackup(misc::BTBackupLocation()); + const QStringList &known_torrents = TorrentPersistentData::knownTorrents(); if(known_torrents.empty() && !settings.value("v1_4_x_torrent_imported", false).toBool()) { qDebug("No known torrent, importing old torrents"); @@ -2255,11 +2255,11 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // we switch the v1.5 way of resuming torrents on startup QStringList filters; filters << "*.torrent"; - QStringList torrents_on_hd = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); + const QStringList &torrents_on_hd = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); foreach(QString hash, torrents_on_hd) { hash.chop(8); // remove trailing .torrent if(!known_torrents.contains(hash)) { - std::cerr << "ERROR Detected!!! Adding back torrent " << hash.toLocal8Bit().data() << " which got lost for some reason." << std::endl; + std::cerr << "ERROR Detected!!! Adding back torrent " << qPrintable(hash) << " which got lost for some reason." << std::endl; addTorrent(torrentBackup.path()+QDir::separator()+hash+".torrent", false, QString(), true); } } @@ -2275,14 +2275,14 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { } else { filePath = torrentBackup.path()+QDir::separator()+hash+".torrent"; } - int prio = TorrentPersistentData::getPriority(hash); + const int prio = TorrentPersistentData::getPriority(hash); misc::insertSort2(hashes, qMakePair(prio, hash)); } // Resume downloads QPair couple; foreach(couple, hashes) { - QString hash = couple.second; - qDebug("Starting up torrent %s", hash.toLocal8Bit().data()); + const QString &hash = couple.second; + qDebug("Starting up torrent %s", qPrintable(hash)); if(TorrentPersistentData::isMagnet(hash)) { addMagnetUri(TorrentPersistentData::getMagnetUri(hash), true); } else { @@ -2292,7 +2292,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { } else { // Resume downloads foreach(const QString &hash, known_torrents) { - qDebug("Starting up torrent %s", hash.toLocal8Bit().data()); + qDebug("Starting up torrent %s", qPrintable(hash)); if(TorrentPersistentData::isMagnet(hash)) addMagnetUri(TorrentPersistentData::getMagnetUri(hash), true); else @@ -2306,10 +2306,9 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // TODO: Remove in qBittorrent v2.2.0 void Bittorrent::importOldTempData(QString torrent_path) { // Create torrent hash - boost::intrusive_ptr t; try { - t = new torrent_info(torrent_path.toLocal8Bit().data()); - QString hash = misc::toQString(t->info_hash()); + boost::intrusive_ptr t = new torrent_info(torrent_path.toLocal8Bit().data()); + const QString &hash = misc::toQString(t->info_hash()); // Load save path QFile savepath_file(misc::BTBackupLocation()+QDir::separator()+hash+".savepath"); QByteArray line; @@ -2317,9 +2316,9 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { if(savepath_file.open(QIODevice::ReadOnly | QIODevice::Text)) { line = savepath_file.readAll(); savepath_file.close(); - qDebug(" -> Save path: %s", line.data()); + qDebug(" -> Save path: %s", line.constData()); savePath = QString::fromUtf8(line.data()); - qDebug("Imported the following save path: %s", savePath.toLocal8Bit().data()); + qDebug("Imported the following save path: %s", qPrintable(savePath)); TorrentTempData::setSavePath(hash, savePath); } // Load pieces priority @@ -2327,9 +2326,9 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { if(pieces_file.exists()){ // Read saved file if(pieces_file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QByteArray pieces_priorities = pieces_file.readAll(); + const QByteArray &pieces_priorities = pieces_file.readAll(); pieces_file.close(); - QList pieces_priorities_list = pieces_priorities.split('\n'); + const QList &pieces_priorities_list = pieces_priorities.split('\n'); std::vector pp; for(int i=0; inum_files(); ++i) { int priority = pieces_priorities_list.at(i).toInt(); @@ -2356,14 +2355,14 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { // TODO: Remove in qBittorrent v2.2.0 void Bittorrent::applyFormerAttributeFiles(QTorrentHandle h) { // Load trackers - QDir torrentBackup(misc::BTBackupLocation()); + const QDir &torrentBackup(misc::BTBackupLocation()); QFile tracker_file(torrentBackup.path()+QDir::separator()+ h.hash() + ".trackers"); if(tracker_file.exists()) { if(tracker_file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QStringList lines = QString::fromUtf8(tracker_file.readAll().data()).split("\n"); + const QStringList &lines = QString::fromUtf8(tracker_file.readAll().data()).split("\n"); std::vector trackers; foreach(const QString &line, lines) { - QStringList parts = line.split("|"); + const QStringList &parts = line.split("|"); if(parts.size() != 2) continue; announce_entry t(parts[0].toStdString()); t.tier = parts[1].toInt(); @@ -2379,13 +2378,13 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { QFile urlseeds_file(misc::BTBackupLocation()+QDir::separator()+h.hash()+".urlseeds"); if(urlseeds_file.exists()) { if(urlseeds_file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QByteArray urlseeds_lines = urlseeds_file.readAll(); + const QByteArray &urlseeds_lines = urlseeds_file.readAll(); urlseeds_file.close(); - QList url_seeds = urlseeds_lines.split('\n'); + const QList &url_seeds = urlseeds_lines.split('\n'); // First remove from the torrent the url seeds that were deleted // in a previous session QStringList seeds_to_delete; - QStringList existing_seeds = h.url_seeds(); + const QStringList &existing_seeds = h.url_seeds(); foreach(const QString &existing_seed, existing_seeds) { if(!url_seeds.contains(existing_seed.toLocal8Bit())) { seeds_to_delete << existing_seed; @@ -2408,11 +2407,11 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { QFile speeds_file(misc::BTBackupLocation()+QDir::separator()+h.hash()+".speedLimits"); if(speeds_file.exists()) { if(speeds_file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QByteArray speed_limits = speeds_file.readAll(); + const QByteArray &speed_limits = speeds_file.readAll(); speeds_file.close(); - QList speeds = speed_limits.split(' '); + const QList &speeds = speed_limits.split(' '); if(speeds.size() != 2) { - std::cerr << "Invalid .speedLimits file for " << h.hash().toStdString() << '\n'; + std::cerr << "Invalid .speedLimits file for " << qPrintable(h.hash()) << '\n'; return; } h.set_download_limit(speeds.at(0).toInt()); @@ -2427,19 +2426,17 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); Q_ASSERT(!settings.value("v1_4_x_torrent_imported", false).toBool()); // Import old torrent - QDir torrentBackup(misc::BTBackupLocation()); - QStringList fileNames; + const QDir &torrentBackup(misc::BTBackupLocation()); QStringList filters; filters << "*.torrent"; - fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); + const QStringList &fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); if(isQueueingEnabled()) { QList > filePaths; foreach(const QString &fileName, fileNames) { QString filePath = torrentBackup.path()+QDir::separator()+fileName; int prio = 99999; // Get priority - QString prioPath = filePath; - prioPath.replace(".torrent", ".prio"); + const QString &prioPath = filePath.replace(".torrent", ".prio"); if(QFile::exists(prioPath)) { QFile prio_file(prioPath); if(prio_file.open(QIODevice::ReadOnly | QIODevice::Text)) { @@ -2463,12 +2460,12 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { h.set_sequential_download(TorrentTempData::isSequential(h.hash())); } applyFormerAttributeFiles(h); - QString savePath = TorrentTempData::getSavePath(h.hash()); + const QString &savePath = TorrentTempData::getSavePath(h.hash()); // Save persistent data for new torrent TorrentPersistentData::saveTorrentPersistentData(h); // Save save_path if(!defaultTempPath.isEmpty() && !savePath.isNull()) { - qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); + qDebug("addTorrent: Saving save_path in persistent data: %s", qPrintable(savePath)); TorrentPersistentData::saveSavePath(h.hash(), savePath); } } @@ -2487,12 +2484,12 @@ void Bittorrent::addConsoleMessage(QString msg, QString) { h.set_sequential_download(TorrentTempData::isSequential(h.hash())); } applyFormerAttributeFiles(h); - QString savePath = TorrentTempData::getSavePath(h.hash()); + const QString &savePath = TorrentTempData::getSavePath(h.hash()); // Save persistent data for new torrent TorrentPersistentData::saveTorrentPersistentData(h); // Save save_path if(!defaultTempPath.isEmpty() && !savePath.isNull()) { - qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); + qDebug("addTorrent: Saving save_path in persistent data: %s", qPrintable(savePath)); TorrentPersistentData::saveSavePath(h.hash(), savePath); } } diff --git a/src/bittorrent.h b/src/bittorrent.h index 155c5087b..c0c885c24 100644 --- a/src/bittorrent.h +++ b/src/bittorrent.h @@ -89,62 +89,6 @@ public: class Bittorrent : public QObject { Q_OBJECT -private: - // Bittorrent - session *s; - QPointer timerAlerts; - QPointer bd_scheduler; - QMap savepath_fromurl; - QHash > trackersInfos; - QStringList torrentsToPausedAfterChecking; - // Ratio - QPointer BigRatioTimer; - // HTTP - QPointer downloader; - // File System - ScanFoldersModel *m_scanFolders; - // Console / Log - QStringList consoleMessages; - QStringList peerBanMessages; - // Settings - bool preAllocateAll; - bool addInPause; - float ratio_limit; - bool UPnPEnabled; - bool NATPMPEnabled; - bool LSDEnabled; - bool DHTEnabled; - int current_dht_port; - bool PeXEnabled; - bool queueingEnabled; - bool appendLabelToSavePath; - bool torrentExport; -#ifdef LIBTORRENT_0_15 - bool appendqBExtension; -#endif - QString defaultSavePath; - QString defaultTempPath; - // ETA Computation - QPointer timerETA; - QHash > ETA_samples; - // IP filtering - QPointer filterParser; - QString filterPath; - // Web UI - QPointer httpServer; - QList url_skippingDlg; - // Fast exit (async) - bool exiting; - // GeoIP -#ifndef DISABLE_GUI - bool geoipDBLoaded; - bool resolve_countries; -#endif - -protected: - QString getSavePath(QString hash, bool fromScanDir = false, QString filePath = QString()); - bool initWebUi(QString username, QString password, int port); - public: // Constructor / Destructor Bittorrent(); @@ -241,6 +185,10 @@ public slots: void configureSession(); void banIP(QString ip); +protected: + QString getSavePath(QString hash, bool fromScanDir = false, QString filePath = QString()); + bool initWebUi(QString username, QString password, int port); + protected slots: void addTorrentsFromScanFolder(QStringList&); void readAlerts(); @@ -265,6 +213,59 @@ signals: void savePathChanged(QTorrentHandle &h); void newConsoleMessage(QString msg); void alternativeSpeedsModeChanged(bool alternative); + +private: + // Bittorrent + session *s; + QPointer timerAlerts; + QPointer bd_scheduler; + QMap savepath_fromurl; + QHash > trackersInfos; + QStringList torrentsToPausedAfterChecking; + // Ratio + QPointer BigRatioTimer; + // HTTP + QPointer downloader; + // File System + ScanFoldersModel *m_scanFolders; + // Console / Log + QStringList consoleMessages; + QStringList peerBanMessages; + // Settings + bool preAllocateAll; + bool addInPause; + float ratio_limit; + bool UPnPEnabled; + bool NATPMPEnabled; + bool LSDEnabled; + bool DHTEnabled; + int current_dht_port; + bool PeXEnabled; + bool queueingEnabled; + bool appendLabelToSavePath; + bool torrentExport; +#ifdef LIBTORRENT_0_15 + bool appendqBExtension; +#endif + QString defaultSavePath; + QString defaultTempPath; + // ETA Computation + QPointer timerETA; + QHash > ETA_samples; + // IP filtering + QPointer filterParser; + QString filterPath; + // Web UI + QPointer httpServer; + QList url_skippingDlg; + // Fast exit (async) + bool exiting; + // GeoIP +#ifndef DISABLE_GUI + bool geoipDBLoaded; + bool resolve_countries; +#endif + }; #endif diff --git a/src/misc.h b/src/misc.h index cb90b090a..b02612602 100644 --- a/src/misc.h +++ b/src/misc.h @@ -138,22 +138,22 @@ public: if(!destDir.mkpath(destDir.absolutePath())) return; } // List source directory - QFileInfoList content = sourceDir.entryInfoList(); + const QFileInfoList &content = sourceDir.entryInfoList(); foreach(const QFileInfo& child, content) { if(child.fileName()[0] == '.') continue; if(child.isDir()) { copyDir(child.absoluteFilePath(), dst_path+QDir::separator()+QDir(child.absoluteFilePath()).dirName()); continue; } - QString src_child_path = child.absoluteFilePath(); - QString dest_child_path = destDir.absoluteFilePath(child.fileName()); + const QString &src_child_path = child.absoluteFilePath(); + const QString &dest_child_path = destDir.absoluteFilePath(child.fileName()); // Copy the file from src to dest QFile::copy(src_child_path, dest_child_path); // Remove source file QFile::remove(src_child_path); } // Remove source folder - QString dir_name = sourceDir.dirName(); + const QString &dir_name = sourceDir.dirName(); if(sourceDir.cdUp()) { sourceDir.rmdir(dir_name); } @@ -163,15 +163,15 @@ public: // For backward compatibility // Remove after some releases static void moveToXDGFolders() { - QString old_qBtPath = QDir::homePath()+QDir::separator()+QString::fromUtf8(".qbittorrent") + QDir::separator(); + const QString &old_qBtPath = QDir::homePath()+QDir::separator()+QString::fromUtf8(".qbittorrent") + QDir::separator(); if(QDir(old_qBtPath).exists()) { // Copy BT_backup folder - QString old_BTBackupPath = old_qBtPath + "BT_backup"; + const QString &old_BTBackupPath = old_qBtPath + "BT_backup"; if(QDir(old_BTBackupPath).exists()) { copyDir(old_BTBackupPath, BTBackupLocation()); } // Copy search engine folder - QString old_searchPath = old_qBtPath + "search_engine"; + const QString &old_searchPath = old_qBtPath + "search_engine"; if(QDir(old_searchPath).exists()) { copyDir(old_searchPath, searchEngineLocation()); } @@ -190,23 +190,25 @@ public: } static QString toValidFileSystemName(QString filename) { - qDebug("toValidFSName: %s", filename.toLocal8Bit().data()); + qDebug("toValidFSName: %s", qPrintable(filename)); filename = filename.replace("\\", "/").trimmed(); - QRegExp regex("[/:?\"*<>|]"); + const QRegExp regex("[/:?\"*<>|]"); filename = filename.replace(regex, " ").trimmed(); - qDebug("toValidFSName, result: %s", filename.toLocal8Bit().data()); + qDebug("toValidFSName, result: %s", qPrintable(filename)); return filename; } static bool isValidFileSystemName(QString filename) { filename = filename.replace("\\", "/").trimmed(); if(filename.isEmpty()) return false; - QRegExp regex("[/:?\"*<>|]"); + const QRegExp regex("[/:?\"*<>|]"); if(filename.contains(regex)) return false; return true; } +/* Ported from Qt4 to drop dependency on QtGui */ + #ifdef Q_WS_MAC static QString getFullPath(const FSRef &ref) { @@ -271,11 +273,13 @@ public: #endif } + /* End of Qt4 code */ + #ifndef DISABLE_GUI // Get screen center static QPoint screenCenter(QWidget *win) { int scrn = 0; - QWidget *w = win->window(); + const QWidget *w = win->window(); if(w) scrn = QApplication::desktop()->screenNumber(w); @@ -290,7 +294,7 @@ public: #endif static QString searchEngineLocation() { - QString location = QDir::cleanPath(QDesktopServicesDataLocation() + const QString &location = QDir::cleanPath(QDesktopServicesDataLocation() + QDir::separator() + "search_engine"); QDir locationDir(location); if(!locationDir.exists()) @@ -299,7 +303,7 @@ public: } static QString BTBackupLocation() { - QString location = QDir::cleanPath(QDesktopServicesDataLocation() + const QString &location = QDir::cleanPath(QDesktopServicesDataLocation() + QDir::separator() + "BT_backup"); QDir locationDir(location); if(!locationDir.exists()) @@ -308,7 +312,7 @@ public: } static QString cacheLocation() { - QString location = QDir::cleanPath(QDesktopServicesCacheLocation()); + const QString &location = QDir::cleanPath(QDesktopServicesCacheLocation()); QDir locationDir(location); if(!locationDir.exists()) locationDir.mkpath(locationDir.absolutePath()); @@ -325,7 +329,7 @@ public: #ifndef Q_WS_WIN unsigned long long available; struct statfs stats; - int ret = statfs ((dir_path.path()+"/.").toLocal8Bit().data(), &stats) ; + const int ret = statfs ((dir_path.path()+"/.").toLocal8Bit().data(), &stats) ; if(ret == 0) { available = ((unsigned long long)stats.f_bavail) * ((unsigned long long)stats.f_bsize) ; @@ -371,7 +375,7 @@ public: char i = 0; while(val >= 1024. && i++<6) val /= 1024.; - return QString(QByteArray::number(val, 'f', 1)) + " " + units[(int)i]; + return QString::number(val, 'f', 1) + " " + units[(int)i]; } static bool isPreviewable(QString extension){ @@ -451,7 +455,7 @@ public: // Can't use template class for QString because >,< use unicode code for sorting // which is not what a human would expect when sorting strings. - static void insertSortString(QList > &list, QPair value, Qt::SortOrder sortOrder) { + static void insertSortString(QList > &list, const QPair &value, Qt::SortOrder sortOrder) { int i = 0; if(sortOrder == Qt::AscendingOrder) { while(i < list.size() and QString::localeAwareCompare(value.second, list.at(i).second) > 0) { @@ -467,11 +471,11 @@ public: static bool removeEmptyTree(QString path) { QDir dir(path); - foreach(QString child, dir.entryList(QDir::AllDirs)) { + foreach(const QString &child, dir.entryList(QDir::AllDirs)) { if(child == "." || child == "..") continue; return removeEmptyTree(dir.absoluteFilePath(child)); } - QString dir_name = dir.dirName(); + const QString &dir_name = dir.dirName(); if(dir.cdUp()) { return dir.rmdir(dir_name); } @@ -480,10 +484,10 @@ public: static QString magnetUriToName(QString magnet_uri) { QString name = ""; - QRegExp regHex("dn=([^&]+)"); - int pos = regHex.indexIn(magnet_uri); + const QRegExp regHex("dn=([^&]+)"); + const int pos = regHex.indexIn(magnet_uri); if(pos > -1) { - QString found = regHex.cap(1); + const QString &found = regHex.cap(1); // URL decode name = QUrl::fromPercentEncoding(found.toLocal8Bit()).replace("+", " "); } @@ -492,32 +496,32 @@ public: static QString magnetUriToHash(QString magnet_uri) { QString hash = ""; - QRegExp regHex("urn:btih:([0-9A-Za-z]+)"); + const QRegExp regHex("urn:btih:([0-9A-Za-z]+)"); // Hex int pos = regHex.indexIn(magnet_uri); if(pos > -1) { - QString found = regHex.cap(1); + const QString &found = regHex.cap(1); if(found.length() == 40) { - sha1_hash sha1(QString(QByteArray::fromHex(regHex.cap(1).toLocal8Bit())).toStdString()); - qDebug("magnetUriToHash (Hex): hash: %s", sha1.to_string().c_str()); + const sha1_hash sha1(QString(QByteArray::fromHex(regHex.cap(1).toLocal8Bit())).toStdString()); + qDebug("magnetUriToHash (Hex): hash: %s", qPrintable(misc::toQString(sha1))); return misc::toQString(sha1); } } // Base 32 - QRegExp regBase32("urn:btih:([A-Za-z2-7=]+)"); + const QRegExp regBase32("urn:btih:([A-Za-z2-7=]+)"); pos = regBase32.indexIn(magnet_uri); if(pos > -1) { - QString found = regBase32.cap(1); + const QString &found = regBase32.cap(1); if(found.length() > 20 && (found.length()*5)%40 == 0) { - sha1_hash sha1(base32decode(regBase32.cap(1).toStdString())); + const sha1_hash sha1(base32decode(regBase32.cap(1).toStdString())); hash = misc::toQString(sha1); } } - qDebug("magnetUriToHash (base32): hash: %s", hash.toLocal8Bit().data()); + qDebug("magnetUriToHash (base32): hash: %s", qPrintable(hash)); return hash; } - static QString boostTimeToQString(boost::optional boostDate) { + static QString boostTimeToQString(const boost::optional boostDate) { if(!boostDate) return tr("Unknown"); struct std::tm tm = boost::posix_time::to_tm(*boostDate); return QDateTime::fromTime_t(mktime(&tm)).toString(Qt::DefaultLocaleLongDate);