Browse Source

Merge pull request #17259 from Chocobo1/cleanup

Make use of chrono literals from std library
adaptive-webui-19844
Chocobo1 2 years ago committed by GitHub
parent
commit
41a38428fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/app/applicationinstancemanager.h
  2. 2
      src/app/cmdoptions.cpp
  3. 5
      src/app/main.cpp
  4. 6
      src/base/bittorrent/bandwidthscheduler.cpp
  5. 2
      src/base/bittorrent/filterparserthread.cpp
  6. 2
      src/base/bittorrent/portforwarderimpl.h
  7. 11
      src/base/bittorrent/session.cpp
  8. 2
      src/base/bittorrent/statistics.cpp
  9. 4
      src/base/bittorrent/torrentimpl.h
  10. 2
      src/base/bittorrent/tracker.h
  11. 4
      src/base/http/connection.h
  12. 12
      src/base/http/server.cpp
  13. 4
      src/base/http/server.h
  14. 7
      src/base/net/dnsupdater.cpp
  15. 2
      src/base/net/dnsupdater.h
  16. 8
      src/base/net/geoipdatabase.cpp
  17. 16
      src/base/net/geoipdatabase.h
  18. 2
      src/base/net/geoipmanager.cpp
  19. 4
      src/base/net/geoipmanager.h
  20. 3
      src/base/net/smtp.cpp
  21. 10
      src/base/net/smtp.h
  22. 6
      src/base/rss/rss_autodownloader.h
  23. 9
      src/base/rss/rss_session.cpp
  24. 6
      src/base/rss/rss_session.h
  25. 4
      src/base/search/searchdownloadhandler.h
  26. 6
      src/base/search/searchhandler.cpp
  27. 6
      src/base/search/searchhandler.h
  28. 6
      src/base/settingsstorage.cpp
  29. 4
      src/base/torrentfileswatcher.cpp
  30. 4
      src/base/utils/io.h
  31. 2
      src/base/utils/random.cpp
  32. 2
      src/gui/aboutdialog.h
  33. 2
      src/gui/addnewtorrentdialog.h
  34. 2
      src/gui/autoexpandabledialog.h
  35. 6
      src/gui/banlistoptionsdialog.h
  36. 6
      src/gui/categoryfiltermodel.cpp
  37. 2
      src/gui/categoryfiltermodel.h
  38. 4
      src/gui/cookiesdialog.h
  39. 2
      src/gui/deletionconfirmationdialog.h
  40. 2
      src/gui/downloadfromurldialog.h
  41. 4
      src/gui/executionlogwidget.h
  42. 12
      src/gui/fspathedit.cpp
  43. 2
      src/gui/fspathedit.h
  44. 8
      src/gui/fspathedit_p.h
  45. 6
      src/gui/ipsubnetwhitelistoptionsdialog.h
  46. 2
      src/gui/lineedit.h
  47. 2
      src/gui/mainwindow.cpp
  48. 28
      src/gui/mainwindow.h
  49. 6
      src/gui/optionsdialog.h
  50. 2
      src/gui/powermanagement/powermanagement.h
  51. 8
      src/gui/previewselectdialog.h
  52. 2
      src/gui/properties/peersadditiondialog.h
  53. 2
      src/gui/properties/propertieswidget.cpp
  54. 22
      src/gui/properties/propertieswidget.h
  55. 2
      src/gui/properties/proplistdelegate.h
  56. 1
      src/gui/properties/proptabbar.cpp
  57. 4
      src/gui/properties/proptabbar.h
  58. 4
      src/gui/properties/speedplotview.cpp
  59. 2
      src/gui/properties/speedplotview.h
  60. 1
      src/gui/properties/speedwidget.cpp
  61. 16
      src/gui/properties/speedwidget.h
  62. 8
      src/gui/properties/trackerlistwidget.h
  63. 4
      src/gui/properties/trackersadditiondialog.h
  64. 6
      src/gui/rss/automatedrssdownloader.h
  65. 2
      src/gui/rss/feedlistwidget.h
  66. 4
      src/gui/rss/htmlbrowser.h
  67. 6
      src/gui/rss/rsswidget.h
  68. 4
      src/gui/search/pluginselectdialog.h
  69. 2
      src/gui/search/pluginsourcedialog.h
  70. 10
      src/gui/search/searchjobwidget.h
  71. 1
      src/gui/search/searchwidget.cpp
  72. 6
      src/gui/search/searchwidget.h
  73. 7
      src/gui/shutdownconfirmdialog.cpp
  74. 4
      src/gui/shutdownconfirmdialog.h
  75. 2
      src/gui/speedlimitdialog.h
  76. 2
      src/gui/stacktracedialog.h
  77. 2
      src/gui/statsdialog.h
  78. 10
      src/gui/statusbar.h
  79. 2
      src/gui/torrentcategorydialog.h
  80. 2
      src/gui/torrentcontentfiltermodel.h
  81. 4
      src/gui/torrentcontentmodel.cpp
  82. 5
      src/gui/torrentcontentmodelitem.cpp
  83. 12
      src/gui/torrentcontentmodelitem.h
  84. 4
      src/gui/torrentcreatordialog.h
  85. 2
      src/gui/torrentoptionsdialog.h
  86. 2
      src/gui/trackerentriesdialog.h
  87. 10
      src/gui/transferlistfilterswidget.h
  88. 9
      src/gui/transferlistmodel.cpp
  89. 6
      src/gui/transferlistwidget.h
  90. 2
      src/gui/tristateaction.h
  91. 2
      src/gui/watchedfolderoptionsdialog.h
  92. 2
      src/gui/watchedfoldersmodel.h
  93. 5
      src/webui/api/appcontroller.cpp

2
src/app/applicationinstancemanager.h

@ -51,6 +51,6 @@ signals:
void messageReceived(const QString &message); void messageReceived(const QString &message);
private: private:
QtLocalPeer *m_peer; QtLocalPeer *m_peer = nullptr;
const bool m_isFirstInstance; const bool m_isFirstInstance;
}; };

2
src/app/cmdoptions.cpp

@ -97,7 +97,7 @@ namespace
} }
private: private:
const char *m_name; const char *m_name = nullptr;
const char m_shortcut; const char m_shortcut;
}; };

5
src/app/main.cpp

@ -29,6 +29,7 @@
#include <QtGlobal> #include <QtGlobal>
#include <chrono>
#include <cstdlib> #include <cstdlib>
#include <memory> #include <memory>
@ -79,6 +80,8 @@ Q_IMPORT_PLUGIN(QICOPlugin)
#include "gui/utils.h" #include "gui/utils.h"
#endif #endif
using namespace std::chrono_literals;
void displayVersion(); void displayVersion();
bool userAgreesWithLegalNotice(); bool userAgreesWithLegalNotice();
void displayBadArgMessage(const QString &message); void displayBadArgMessage(const QString &message);
@ -284,7 +287,7 @@ void showSplashScreen()
painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version); painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version);
QSplashScreen *splash = new QSplashScreen(splashImg); QSplashScreen *splash = new QSplashScreen(splashImg);
splash->show(); splash->show();
QTimer::singleShot(1500, splash, &QObject::deleteLater); QTimer::singleShot(1500ms, splash, &QObject::deleteLater);
qApp->processEvents(); qApp->processEvents();
} }
#endif // DISABLE_GUI #endif // DISABLE_GUI

6
src/base/bittorrent/bandwidthscheduler.cpp

@ -29,14 +29,16 @@
#include "bandwidthscheduler.h" #include "bandwidthscheduler.h"
#include <chrono>
#include <utility> #include <utility>
#include <QDate> #include <QDate>
#include <QTime> #include <QTime>
#include <QTimer>
#include "base/preferences.h" #include "base/preferences.h"
using namespace std::chrono_literals;
BandwidthScheduler::BandwidthScheduler(QObject *parent) BandwidthScheduler::BandwidthScheduler(QObject *parent)
: QObject(parent) : QObject(parent)
, m_lastAlternative(false) , m_lastAlternative(false)
@ -51,7 +53,7 @@ void BandwidthScheduler::start()
// Timeout regularly to accommodate for external system clock changes // Timeout regularly to accommodate for external system clock changes
// eg from the user or from a timesync utility // eg from the user or from a timesync utility
m_timer.start(30000); m_timer.start(30s);
} }
bool BandwidthScheduler::isTimeForAlternative() const bool BandwidthScheduler::isTimeForAlternative() const

2
src/base/bittorrent/filterparserthread.cpp

@ -48,7 +48,7 @@ namespace
unsigned char octetIndex = 0; unsigned char octetIndex = 0;
const char *octetStart = str; const char *octetStart = str;
char *endptr; char *endptr = nullptr;
for (; *str; ++str) for (; *str; ++str)
{ {
if (*str == '.') if (*str == '.')

2
src/base/bittorrent/portforwarderimpl.h

@ -58,6 +58,6 @@ private:
void stop(); void stop();
CachedSettingValue<bool> m_storeActive; CachedSettingValue<bool> m_storeActive;
lt::session *m_provider; lt::session *m_provider = nullptr;
QHash<quint16, std::vector<lt::port_mapping_t>> m_mappedPorts; QHash<quint16, std::vector<lt::port_mapping_t>> m_mappedPorts;
}; };

11
src/base/bittorrent/session.cpp

@ -30,6 +30,7 @@
#include "session.h" #include "session.h"
#include <algorithm> #include <algorithm>
#include <chrono>
#include <cstdint> #include <cstdint>
#include <ctime> #include <ctime>
#include <queue> #include <queue>
@ -107,6 +108,7 @@
#include "torrentimpl.h" #include "torrentimpl.h"
#include "tracker.h" #include "tracker.h"
using namespace std::chrono_literals;
using namespace BitTorrent; using namespace BitTorrent;
const Path CATEGORIES_FILE_NAME {u"categories.json"_qs}; const Path CATEGORIES_FILE_NAME {u"categories.json"_qs};
@ -442,11 +444,11 @@ Session::Session(QObject *parent)
m_port = Utils::Random::rand(1024, 65535); m_port = Utils::Random::rand(1024, 65535);
m_recentErroredTorrentsTimer->setSingleShot(true); m_recentErroredTorrentsTimer->setSingleShot(true);
m_recentErroredTorrentsTimer->setInterval(1000); m_recentErroredTorrentsTimer->setInterval(1s);
connect(m_recentErroredTorrentsTimer, &QTimer::timeout connect(m_recentErroredTorrentsTimer, &QTimer::timeout
, this, [this]() { m_recentErroredTorrents.clear(); }); , this, [this]() { m_recentErroredTorrents.clear(); });
m_seedingLimitTimer->setInterval(10000); m_seedingLimitTimer->setInterval(10s);
connect(m_seedingLimitTimer, &QTimer::timeout, this, &Session::processShareLimits); connect(m_seedingLimitTimer, &QTimer::timeout, this, &Session::processShareLimits);
initializeNativeSession(); initializeNativeSession();
@ -497,7 +499,7 @@ Session::Session(QObject *parent)
const int saveInterval = saveResumeDataInterval(); const int saveInterval = saveResumeDataInterval();
if (saveInterval > 0) if (saveInterval > 0)
{ {
m_resumeDataTimer->setInterval(saveInterval * 60 * 1000); m_resumeDataTimer->setInterval(std::chrono::minutes(saveInterval));
m_resumeDataTimer->start(); m_resumeDataTimer->start();
} }
@ -2907,7 +2909,7 @@ void Session::setSaveResumeDataInterval(const int value)
if (value > 0) if (value > 0)
{ {
m_resumeDataTimer->setInterval(value * 60 * 1000); m_resumeDataTimer->setInterval(std::chrono::minutes(value));
m_resumeDataTimer->start(); m_resumeDataTimer->start();
} }
else else
@ -5243,7 +5245,6 @@ void Session::handleSessionStatsAlert(const lt::session_stats_alert *p)
{ {
Q_ASSERT(current >= previous); Q_ASSERT(current >= previous);
Q_ASSERT(interval >= 0); Q_ASSERT(interval >= 0);
using namespace std::chrono_literals;
return (((current - previous) * lt::microseconds(1s).count()) / interval); return (((current - previous) * lt::microseconds(1s).count()) / interval);
}; };

2
src/base/bittorrent/statistics.cpp

@ -40,7 +40,7 @@
using namespace std::chrono_literals; using namespace std::chrono_literals;
using namespace BitTorrent; using namespace BitTorrent;
const qint64 SAVE_INTERVAL = std::chrono::milliseconds(15min).count(); const int SAVE_INTERVAL = std::chrono::milliseconds(15min).count();
Statistics::Statistics(Session *session) Statistics::Statistics(Session *session)
: QObject(session) : QObject(session)

4
src/base/bittorrent/torrentimpl.h

@ -288,8 +288,8 @@ namespace BitTorrent
nonstd::expected<lt::entry, QString> exportTorrent() const; nonstd::expected<lt::entry, QString> exportTorrent() const;
Session *const m_session; Session *const m_session = nullptr;
lt::session *m_nativeSession; lt::session *m_nativeSession = nullptr;
lt::torrent_handle m_nativeHandle; lt::torrent_handle m_nativeHandle;
mutable lt::torrent_status m_nativeStatus; mutable lt::torrent_status m_nativeStatus;
TorrentState m_state = TorrentState::Unknown; TorrentState m_state = TorrentState::Unknown;

2
src/base/bittorrent/tracker.h

@ -103,7 +103,7 @@ namespace BitTorrent
void unregisterPeer(const TrackerAnnounceRequest &announceReq); void unregisterPeer(const TrackerAnnounceRequest &announceReq);
void prepareAnnounceResponse(const TrackerAnnounceRequest &announceReq); void prepareAnnounceResponse(const TrackerAnnounceRequest &announceReq);
Http::Server *m_server; Http::Server *m_server = nullptr;
Http::Request m_request; Http::Request m_request;
Http::Environment m_env; Http::Environment m_env;

4
src/base/http/connection.h

@ -57,8 +57,8 @@ namespace Http
void read(); void read();
void sendResponse(const Response &response) const; void sendResponse(const Response &response) const;
QTcpSocket *m_socket; QTcpSocket *m_socket = nullptr;
IRequestHandler *m_requestHandler; IRequestHandler *m_requestHandler = nullptr;
QByteArray m_receivedData; QByteArray m_receivedData;
QElapsedTimer m_idleTimer; QElapsedTimer m_idleTimer;
}; };

12
src/base/http/server.cpp

@ -31,6 +31,7 @@
#include "server.h" #include "server.h"
#include <algorithm> #include <algorithm>
#include <chrono>
#include <QNetworkProxy> #include <QNetworkProxy>
#include <QSslCipher> #include <QSslCipher>
@ -44,11 +45,13 @@
#include "base/utils/net.h" #include "base/utils/net.h"
#include "connection.h" #include "connection.h"
using namespace std::chrono_literals;
namespace namespace
{ {
const int KEEP_ALIVE_DURATION = 7 * 1000; // milliseconds const int KEEP_ALIVE_DURATION = std::chrono::milliseconds(7s).count();
const int CONNECTIONS_LIMIT = 500; const int CONNECTIONS_LIMIT = 500;
const int CONNECTIONS_SCAN_INTERVAL = 2; // seconds const std::chrono::seconds CONNECTIONS_SCAN_INTERVAL {2};
QList<QSslCipher> safeCipherList() QList<QSslCipher> safeCipherList()
{ {
@ -71,7 +74,6 @@ using namespace Http;
Server::Server(IRequestHandler *requestHandler, QObject *parent) Server::Server(IRequestHandler *requestHandler, QObject *parent)
: QTcpServer(parent) : QTcpServer(parent)
, m_requestHandler(requestHandler) , m_requestHandler(requestHandler)
, m_https(false)
{ {
setProxy(QNetworkProxy::NoProxy); setProxy(QNetworkProxy::NoProxy);
@ -81,14 +83,14 @@ Server::Server(IRequestHandler *requestHandler, QObject *parent)
auto *dropConnectionTimer = new QTimer(this); auto *dropConnectionTimer = new QTimer(this);
connect(dropConnectionTimer, &QTimer::timeout, this, &Server::dropTimedOutConnection); connect(dropConnectionTimer, &QTimer::timeout, this, &Server::dropTimedOutConnection);
dropConnectionTimer->start(CONNECTIONS_SCAN_INTERVAL * 1000); dropConnectionTimer->start(CONNECTIONS_SCAN_INTERVAL);
} }
void Server::incomingConnection(const qintptr socketDescriptor) void Server::incomingConnection(const qintptr socketDescriptor)
{ {
if (m_connections.size() >= CONNECTIONS_LIMIT) return; if (m_connections.size() >= CONNECTIONS_LIMIT) return;
QTcpSocket *serverSocket; QTcpSocket *serverSocket = nullptr;
if (m_https) if (m_https)
serverSocket = new QSslSocket(this); serverSocket = new QSslSocket(this);
else else

4
src/base/http/server.h

@ -58,10 +58,10 @@ namespace Http
void incomingConnection(qintptr socketDescriptor) override; void incomingConnection(qintptr socketDescriptor) override;
void removeConnection(Connection *connection); void removeConnection(Connection *connection);
IRequestHandler *m_requestHandler; IRequestHandler *m_requestHandler = nullptr;
QSet<Connection *> m_connections; // for tracking persistent connections QSet<Connection *> m_connections; // for tracking persistent connections
bool m_https; bool m_https = false;
QList<QSslCertificate> m_certificates; QList<QSslCertificate> m_certificates;
QSslKey m_key; QSslKey m_key;
}; };

7
src/base/net/dnsupdater.cpp

@ -37,8 +37,11 @@
#include "base/net/downloadmanager.h" #include "base/net/downloadmanager.h"
#include "base/version.h" #include "base/version.h"
using namespace std::chrono_literals;
using namespace Net; using namespace Net;
const std::chrono::seconds IP_CHECK_INTERVAL = 30min;
DNSUpdater::DNSUpdater(QObject *parent) DNSUpdater::DNSUpdater(QObject *parent)
: QObject(parent) : QObject(parent)
, m_state(OK) , m_state(OK)
@ -52,13 +55,13 @@ DNSUpdater::DNSUpdater(QObject *parent)
m_lastIP = QHostAddress(pref->getDNSLastIP()); m_lastIP = QHostAddress(pref->getDNSLastIP());
// Start IP checking timer // Start IP checking timer
m_ipCheckTimer.setInterval(IP_CHECK_INTERVAL_MS); m_ipCheckTimer.setInterval(IP_CHECK_INTERVAL);
connect(&m_ipCheckTimer, &QTimer::timeout, this, &DNSUpdater::checkPublicIP); connect(&m_ipCheckTimer, &QTimer::timeout, this, &DNSUpdater::checkPublicIP);
m_ipCheckTimer.start(); m_ipCheckTimer.start();
// Check lastUpdate to avoid flooding // Check lastUpdate to avoid flooding
if (!m_lastIPCheckTime.isValid() if (!m_lastIPCheckTime.isValid()
|| (m_lastIPCheckTime.secsTo(QDateTime::currentDateTime()) * 1000 > IP_CHECK_INTERVAL_MS)) || (m_lastIPCheckTime.secsTo(QDateTime::currentDateTime()) > IP_CHECK_INTERVAL.count()))
{ {
checkPublicIP(); checkPublicIP();
} }

2
src/base/net/dnsupdater.h

@ -68,8 +68,6 @@ namespace Net
FATAL FATAL
}; };
static const int IP_CHECK_INTERVAL_MS = 1800000; // 30 min
QString getUpdateUrl() const; QString getUpdateUrl() const;
void processIPUpdateReply(const QString &reply); void processIPUpdateReply(const QString &reply);

8
src/base/net/geoipdatabase.cpp

@ -76,13 +76,7 @@ struct DataFieldDescriptor
}; };
GeoIPDatabase::GeoIPDatabase(const quint32 size) GeoIPDatabase::GeoIPDatabase(const quint32 size)
: m_ipVersion(0) : m_size(size)
, m_recordSize(0)
, m_nodeCount(0)
, m_nodeSize(0)
, m_indexSize(0)
, m_recordBytes(0)
, m_size(size)
, m_data(new uchar[size]) , m_data(new uchar[size])
{ {
} }

16
src/base/net/geoipdatabase.h

@ -73,16 +73,16 @@ private:
template <typename T> QVariant readPlainValue(quint32 &offset, quint8 len) const; template <typename T> QVariant readPlainValue(quint32 &offset, quint8 len) const;
// Metadata // Metadata
quint16 m_ipVersion; quint16 m_ipVersion = 0;
quint16 m_recordSize; quint16 m_recordSize = 0;
quint32 m_nodeCount; quint32 m_nodeCount = 0;
int m_nodeSize; int m_nodeSize = 0;
int m_indexSize; int m_indexSize = 0;
int m_recordBytes; int m_recordBytes = 0;
QDateTime m_buildEpoch; QDateTime m_buildEpoch;
QString m_dbType; QString m_dbType;
// Search data // Search data
mutable QHash<quint32, QString> m_countries; mutable QHash<quint32, QString> m_countries;
quint32 m_size; quint32 m_size = 0;
uchar *m_data; uchar *m_data = nullptr;
}; };

2
src/base/net/geoipmanager.cpp

@ -54,8 +54,6 @@ using namespace Net;
GeoIPManager *GeoIPManager::m_instance = nullptr; GeoIPManager *GeoIPManager::m_instance = nullptr;
GeoIPManager::GeoIPManager() GeoIPManager::GeoIPManager()
: m_enabled(false)
, m_geoIPDatabase(nullptr)
{ {
configure(); configure();
connect(Preferences::instance(), &Preferences::changed, this, &GeoIPManager::configure); connect(Preferences::instance(), &Preferences::changed, this, &GeoIPManager::configure);

4
src/base/net/geoipmanager.h

@ -66,8 +66,8 @@ namespace Net
void manageDatabaseUpdate(); void manageDatabaseUpdate();
void downloadDatabaseFile(); void downloadDatabaseFile();
bool m_enabled; bool m_enabled = false;
GeoIPDatabase *m_geoIPDatabase; GeoIPDatabase *m_geoIPDatabase = nullptr;
static GeoIPManager *m_instance; static GeoIPManager *m_instance;
}; };

3
src/base/net/smtp.cpp

@ -103,9 +103,6 @@ using namespace Net;
Smtp::Smtp(QObject *parent) Smtp::Smtp(QObject *parent)
: QObject(parent) : QObject(parent)
, m_state(Init)
, m_useSsl(false)
, m_authType(AuthPlain)
{ {
static bool needToRegisterMetaType = true; static bool needToRegisterMetaType = true;

10
src/base/net/smtp.h

@ -103,18 +103,18 @@ namespace Net
QByteArray m_message; QByteArray m_message;
#ifndef QT_NO_OPENSSL #ifndef QT_NO_OPENSSL
QSslSocket *m_socket; QSslSocket *m_socket = nullptr;
#else #else
QTcpSocket *m_socket; QTcpSocket *m_socket = nullptr;
#endif #endif
QString m_from; QString m_from;
QString m_rcpt; QString m_rcpt;
QString m_response; QString m_response;
int m_state; int m_state = Init;
QHash<QString, QString> m_extensions; QHash<QString, QString> m_extensions;
QByteArray m_buffer; QByteArray m_buffer;
bool m_useSsl; bool m_useSsl = false;
AuthType m_authType; AuthType m_authType = AuthPlain;
QString m_username; QString m_username;
QString m_password; QString m_password;
}; };

6
src/base/rss/rss_autodownloader.h

@ -136,9 +136,9 @@ namespace RSS
SettingValue<QVariant> m_storeSmartEpisodeFilter; SettingValue<QVariant> m_storeSmartEpisodeFilter;
SettingValue<bool> m_storeDownloadRepacks; SettingValue<bool> m_storeDownloadRepacks;
QTimer *m_processingTimer; QTimer *m_processingTimer = nullptr;
QThread *m_ioThread; QThread *m_ioThread = nullptr;
AsyncFileStorage *m_fileStorage; AsyncFileStorage *m_fileStorage = nullptr;
QHash<QString, AutoDownloadRule> m_rules; QHash<QString, AutoDownloadRule> m_rules;
QList<QSharedPointer<ProcessingJob>> m_processingQueue; QList<QSharedPointer<ProcessingJob>> m_processingQueue;
QHash<QString, QSharedPointer<ProcessingJob>> m_waitingJobs; QHash<QString, QSharedPointer<ProcessingJob>> m_waitingJobs;

9
src/base/rss/rss_session.cpp

@ -30,6 +30,8 @@
#include "rss_session.h" #include "rss_session.h"
#include <chrono>
#include <QDebug> #include <QDebug>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
@ -48,7 +50,6 @@
#include "rss_folder.h" #include "rss_folder.h"
#include "rss_item.h" #include "rss_item.h"
const int MsecsPerMin = 60000;
const QString CONF_FOLDER_NAME = u"rss"_qs; const QString CONF_FOLDER_NAME = u"rss"_qs;
const QString DATA_FOLDER_NAME = u"rss/articles"_qs; const QString DATA_FOLDER_NAME = u"rss/articles"_qs;
const QString FEEDS_FILE_NAME = u"feeds.json"_qs; const QString FEEDS_FILE_NAME = u"feeds.json"_qs;
@ -92,7 +93,7 @@ Session::Session()
connect(&m_refreshTimer, &QTimer::timeout, this, &Session::refresh); connect(&m_refreshTimer, &QTimer::timeout, this, &Session::refresh);
if (isProcessingEnabled()) if (isProcessingEnabled())
{ {
m_refreshTimer.start(refreshInterval() * MsecsPerMin); m_refreshTimer.start(std::chrono::minutes(refreshInterval()));
refresh(); refresh();
} }
@ -433,7 +434,7 @@ void Session::setProcessingEnabled(const bool enabled)
m_storeProcessingEnabled = enabled; m_storeProcessingEnabled = enabled;
if (enabled) if (enabled)
{ {
m_refreshTimer.start(refreshInterval() * MsecsPerMin); m_refreshTimer.start(std::chrono::minutes(refreshInterval()));
refresh(); refresh();
} }
else else
@ -480,7 +481,7 @@ void Session::setRefreshInterval(const int refreshInterval)
if (m_storeRefreshInterval != refreshInterval) if (m_storeRefreshInterval != refreshInterval)
{ {
m_storeRefreshInterval = refreshInterval; m_storeRefreshInterval = refreshInterval;
m_refreshTimer.start(m_storeRefreshInterval * MsecsPerMin); m_refreshTimer.start(std::chrono::minutes(m_storeRefreshInterval));
} }
} }

6
src/base/rss/rss_session.h

@ -158,9 +158,9 @@ namespace RSS
CachedSettingValue<bool> m_storeProcessingEnabled; CachedSettingValue<bool> m_storeProcessingEnabled;
CachedSettingValue<int> m_storeRefreshInterval; CachedSettingValue<int> m_storeRefreshInterval;
CachedSettingValue<int> m_storeMaxArticlesPerFeed; CachedSettingValue<int> m_storeMaxArticlesPerFeed;
QThread *m_workingThread; QThread *m_workingThread = nullptr;
AsyncFileStorage *m_confFileStorage; AsyncFileStorage *m_confFileStorage = nullptr;
AsyncFileStorage *m_dataFileStorage; AsyncFileStorage *m_dataFileStorage = nullptr;
QTimer m_refreshTimer; QTimer m_refreshTimer;
QHash<QString, Item *> m_itemsByPath; QHash<QString, Item *> m_itemsByPath;
QHash<QUuid, Feed *> m_feedsByUID; QHash<QUuid, Feed *> m_feedsByUID;

4
src/base/search/searchdownloadhandler.h

@ -49,6 +49,6 @@ signals:
private: private:
void downloadProcessFinished(int exitcode); void downloadProcessFinished(int exitcode);
SearchPluginManager *m_manager; SearchPluginManager *m_manager = nullptr;
QProcess *m_downloadProcess; QProcess *m_downloadProcess = nullptr;
}; };

6
src/base/search/searchhandler.cpp

@ -29,6 +29,8 @@
#include "searchhandler.h" #include "searchhandler.h"
#include <chrono>
#include <QMetaObject> #include <QMetaObject>
#include <QProcess> #include <QProcess>
#include <QTimer> #include <QTimer>
@ -40,6 +42,8 @@
#include "base/utils/fs.h" #include "base/utils/fs.h"
#include "searchpluginmanager.h" #include "searchpluginmanager.h"
using namespace std::chrono_literals;
namespace namespace
{ {
enum SearchResultColumn enum SearchResultColumn
@ -85,7 +89,7 @@ SearchHandler::SearchHandler(const QString &pattern, const QString &category, co
m_searchTimeout->setSingleShot(true); m_searchTimeout->setSingleShot(true);
connect(m_searchTimeout, &QTimer::timeout, this, &SearchHandler::cancelSearch); connect(m_searchTimeout, &QTimer::timeout, this, &SearchHandler::cancelSearch);
m_searchTimeout->start(180000); // 3 min m_searchTimeout->start(3min);
// deferred start allows clients to handle starting-related signals // deferred start allows clients to handle starting-related signals
QMetaObject::invokeMethod(this, [this]() { m_searchProcess->start(QIODevice::ReadOnly); } QMetaObject::invokeMethod(this, [this]() { m_searchProcess->start(QIODevice::ReadOnly); }

6
src/base/search/searchhandler.h

@ -83,9 +83,9 @@ private:
const QString m_pattern; const QString m_pattern;
const QString m_category; const QString m_category;
const QStringList m_usedPlugins; const QStringList m_usedPlugins;
SearchPluginManager *m_manager; SearchPluginManager *m_manager = nullptr;
QProcess *m_searchProcess; QProcess *m_searchProcess = nullptr;
QTimer *m_searchTimeout; QTimer *m_searchTimeout = nullptr;
QByteArray m_searchResultLineTruncated; QByteArray m_searchResultLineTruncated;
bool m_searchCancelled = false; bool m_searchCancelled = false;
QList<SearchResult> m_results; QList<SearchResult> m_results;

6
src/base/settingsstorage.cpp

@ -29,7 +29,9 @@
#include "settingsstorage.h" #include "settingsstorage.h"
#include <chrono>
#include <memory> #include <memory>
#include <QFile> #include <QFile>
#include <QHash> #include <QHash>
@ -39,6 +41,8 @@
#include "profile.h" #include "profile.h"
#include "utils/fs.h" #include "utils/fs.h"
using namespace std::chrono_literals;
namespace namespace
{ {
// Encapsulates serialization of settings in "atomic" way. // Encapsulates serialization of settings in "atomic" way.
@ -73,7 +77,7 @@ SettingsStorage::SettingsStorage()
: m_data {TransactionalSettings(u"qBittorrent"_qs).read()} : m_data {TransactionalSettings(u"qBittorrent"_qs).read()}
{ {
m_timer.setSingleShot(true); m_timer.setSingleShot(true);
m_timer.setInterval(5 * 1000); m_timer.setInterval(5s);
connect(&m_timer, &QTimer::timeout, this, &SettingsStorage::save); connect(&m_timer, &QTimer::timeout, this, &SettingsStorage::save);
} }

4
src/base/torrentfileswatcher.cpp

@ -63,7 +63,7 @@
using namespace std::chrono_literals; using namespace std::chrono_literals;
const std::chrono::duration WATCH_INTERVAL = 10s; const std::chrono::seconds WATCH_INTERVAL {10};
const int MAX_FAILED_RETRIES = 5; const int MAX_FAILED_RETRIES = 5;
const QString CONF_FILE_NAME = u"watched_folders.json"_qs; const QString CONF_FILE_NAME = u"watched_folders.json"_qs;
@ -478,7 +478,7 @@ void TorrentFilesWatcher::Worker::removeWatchedFolder(const Path &path)
void TorrentFilesWatcher::Worker::scheduleWatchedFolderProcessing(const Path &path) void TorrentFilesWatcher::Worker::scheduleWatchedFolderProcessing(const Path &path)
{ {
QTimer::singleShot(2000, this, [this, path]() QTimer::singleShot(2s, this, [this, path]()
{ {
processWatchedFolder(path); processWatchedFolder(path);
}); });

4
src/base/utils/io.h

@ -76,9 +76,9 @@ namespace Utils::IO
} }
private: private:
QFileDevice *m_device; QFileDevice *m_device = nullptr;
std::shared_ptr<QByteArray> m_buffer; std::shared_ptr<QByteArray> m_buffer;
int m_bufferSize; int m_bufferSize = 0;
}; };
nonstd::expected<void, QString> saveToFile(const Path &path, const QByteArray &data); nonstd::expected<void, QString> saveToFile(const Path &path, const QByteArray &data);

2
src/base/utils/random.cpp

@ -125,7 +125,7 @@ namespace
} }
private: private:
FILE *m_randDev; FILE *m_randDev = nullptr;
}; };
#endif #endif
} }

2
src/gui/aboutdialog.h

@ -47,6 +47,6 @@ public:
~AboutDialog() override; ~AboutDialog() override;
private: private:
Ui::AboutDialog *m_ui; Ui::AboutDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
}; };

2
src/gui/addnewtorrentdialog.h

@ -115,7 +115,7 @@ private:
void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
Ui::AddNewTorrentDialog *m_ui; Ui::AddNewTorrentDialog *m_ui = nullptr;
TorrentContentFilterModel *m_contentModel = nullptr; TorrentContentFilterModel *m_contentModel = nullptr;
PropListDelegate *m_contentDelegate = nullptr; PropListDelegate *m_contentDelegate = nullptr;
BitTorrent::MagnetUri m_magnetURI; BitTorrent::MagnetUri m_magnetURI;

2
src/gui/autoexpandabledialog.h

@ -55,5 +55,5 @@ protected:
void showEvent(QShowEvent *e) override; void showEvent(QShowEvent *e) override;
private: private:
Ui::AutoExpandableDialog *m_ui; Ui::AutoExpandableDialog *m_ui = nullptr;
}; };

6
src/gui/banlistoptionsdialog.h

@ -56,9 +56,9 @@ private slots:
void on_txtIP_textChanged(const QString &ip); void on_txtIP_textChanged(const QString &ip);
private: private:
Ui::BanListOptionsDialog *m_ui; Ui::BanListOptionsDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
QStringListModel *m_model; QStringListModel *m_model = nullptr;
QSortFilterProxyModel *m_sortFilter; QSortFilterProxyModel *m_sortFilter = nullptr;
bool m_modified = false; bool m_modified = false;
}; };

6
src/gui/categoryfiltermodel.cpp

@ -40,8 +40,6 @@ class CategoryModelItem
{ {
public: public:
CategoryModelItem() CategoryModelItem()
: m_parent(nullptr)
, m_torrentsCount(0)
{ {
} }
@ -154,9 +152,9 @@ public:
} }
private: private:
CategoryModelItem *m_parent; CategoryModelItem *m_parent = nullptr;
QString m_name; QString m_name;
int m_torrentsCount; int m_torrentsCount = 0;
QHash<QString, CategoryModelItem *> m_children; QHash<QString, CategoryModelItem *> m_children;
QStringList m_childUids; QStringList m_childUids;
}; };

2
src/gui/categoryfiltermodel.h

@ -75,5 +75,5 @@ private:
CategoryModelItem *findItem(const QString &fullName) const; CategoryModelItem *findItem(const QString &fullName) const;
bool m_isSubcategoriesEnabled; bool m_isSubcategoriesEnabled;
CategoryModelItem *m_rootItem; CategoryModelItem *m_rootItem = nullptr;
}; };

4
src/gui/cookiesdialog.h

@ -56,8 +56,8 @@ private slots:
void onButtonDeleteClicked(); void onButtonDeleteClicked();
private: private:
Ui::CookiesDialog *m_ui; Ui::CookiesDialog *m_ui = nullptr;
CookiesModel *m_cookiesModel; CookiesModel *m_cookiesModel = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
SettingValue<QByteArray> m_storeViewState; SettingValue<QByteArray> m_storeViewState;

2
src/gui/deletionconfirmationdialog.h

@ -53,5 +53,5 @@ private slots:
void on_rememberBtn_clicked(); void on_rememberBtn_clicked();
private: private:
Ui::DeletionConfirmationDialog *m_ui; Ui::DeletionConfirmationDialog *m_ui = nullptr;
}; };

2
src/gui/downloadfromurldialog.h

@ -53,6 +53,6 @@ private slots:
void downloadButtonClicked(); void downloadButtonClicked();
private: private:
Ui::DownloadFromURLDialog *m_ui; Ui::DownloadFromURLDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
}; };

4
src/gui/executionlogwidget.h

@ -55,6 +55,6 @@ public:
private: private:
void displayContextMenu(const LogListView *view, const BaseLogModel *model) const; void displayContextMenu(const LogListView *view, const BaseLogModel *model) const;
Ui::ExecutionLogWidget *m_ui; Ui::ExecutionLogWidget *m_ui = nullptr;
LogFilterModel *m_messageFilterModel; LogFilterModel *m_messageFilterModel = nullptr;
}; };

12
src/gui/fspathedit.cpp

@ -46,8 +46,8 @@ namespace
{ {
struct TrStringWithComment struct TrStringWithComment
{ {
const char *source; const char *source = nullptr;
const char *comment; const char *comment = nullptr;
QString tr() const QString tr() const
{ {
@ -76,15 +76,15 @@ class FileSystemPathEdit::FileSystemPathEditPrivate
void browseActionTriggered(); void browseActionTriggered();
QString dialogCaptionOrDefault() const; QString dialogCaptionOrDefault() const;
FileSystemPathEdit *q_ptr; FileSystemPathEdit *q_ptr = nullptr;
std::unique_ptr<Private::FileEditorWithCompletion> m_editor; std::unique_ptr<Private::FileEditorWithCompletion> m_editor;
QAction *m_browseAction; QAction *m_browseAction = nullptr;
QToolButton *m_browseBtn; QToolButton *m_browseBtn = nullptr;
QString m_fileNameFilter; QString m_fileNameFilter;
Mode m_mode; Mode m_mode;
Path m_lastSignaledPath; Path m_lastSignaledPath;
QString m_dialogCaption; QString m_dialogCaption;
Private::FileSystemPathValidator *m_validator; Private::FileSystemPathValidator *m_validator = nullptr;
}; };
FileSystemPathEdit::FileSystemPathEditPrivate::FileSystemPathEditPrivate( FileSystemPathEdit::FileSystemPathEditPrivate::FileSystemPathEditPrivate(

2
src/gui/fspathedit.h

@ -111,7 +111,7 @@ private:
QWidget *editWidgetImpl() const; QWidget *editWidgetImpl() const;
FileSystemPathEditPrivate *d_ptr; FileSystemPathEditPrivate *d_ptr = nullptr;
}; };
/// Widget which uses QLineEdit for path editing /// Widget which uses QLineEdit for path editing

8
src/gui/fspathedit_p.h

@ -138,11 +138,11 @@ namespace Private
static QString warningText(FileSystemPathValidator::TestResult r); static QString warningText(FileSystemPathValidator::TestResult r);
void showCompletionPopup(); void showCompletionPopup();
QFileSystemModel *m_completerModel; QFileSystemModel *m_completerModel = nullptr;
QCompleter *m_completer; QCompleter *m_completer = nullptr;
QAction *m_browseAction; QAction *m_browseAction = nullptr;
QAction *m_warningAction = nullptr;
QFileIconProvider m_iconProvider; QFileIconProvider m_iconProvider;
QAction *m_warningAction;
}; };
class FileComboEdit final : public QComboBox, public FileEditorWithCompletion class FileComboEdit final : public QComboBox, public FileEditorWithCompletion

6
src/gui/ipsubnetwhitelistoptionsdialog.h

@ -56,10 +56,10 @@ private slots:
void on_txtIPSubnet_textChanged(const QString &subnetStr); void on_txtIPSubnet_textChanged(const QString &subnetStr);
private: private:
Ui::IPSubnetWhitelistOptionsDialog *m_ui; Ui::IPSubnetWhitelistOptionsDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
QStringListModel *m_model; QStringListModel *m_model = nullptr;
QSortFilterProxyModel *m_sortFilter; QSortFilterProxyModel *m_sortFilter = nullptr;
bool m_modified = false; bool m_modified = false;
}; };

2
src/gui/lineedit.h

@ -26,5 +26,5 @@ protected:
void keyPressEvent(QKeyEvent *event) override; void keyPressEvent(QKeyEvent *event) override;
private: private:
QToolButton *m_searchButton; QToolButton *m_searchButton = nullptr;
}; };

2
src/gui/mainwindow.cpp

@ -1762,7 +1762,7 @@ void MainWindow::createTrayIcon(const int retries)
if (retries > 0) if (retries > 0)
{ {
LogMsg(tr("System tray icon is not available, retrying..."), Log::WARNING); LogMsg(tr("System tray icon is not available, retrying..."), Log::WARNING);
QTimer::singleShot(std::chrono::seconds(2), this, [this, retries]() QTimer::singleShot(2s, this, [this, retries]()
{ {
if (Preferences::instance()->systemTrayEnabled()) if (Preferences::instance()->systemTrayEnabled())
createTrayIcon(retries - 1); createTrayIcon(retries - 1);

28
src/gui/mainwindow.h

@ -219,9 +219,9 @@ private:
void showStatusBar(bool show); void showStatusBar(bool show);
void showFiltersSidebar(bool show); void showFiltersSidebar(bool show);
Ui::MainWindow *m_ui; Ui::MainWindow *m_ui = nullptr;
QFileSystemWatcher *m_executableWatcher; QFileSystemWatcher *m_executableWatcher = nullptr;
// GUI related // GUI related
bool m_posInitialized = false; bool m_posInitialized = false;
QPointer<QTabWidget> m_tabs; QPointer<QTabWidget> m_tabs;
@ -237,27 +237,27 @@ private:
#endif #endif
QPointer<QMenu> m_trayIconMenu; QPointer<QMenu> m_trayIconMenu;
TransferListWidget *m_transferListWidget; TransferListWidget *m_transferListWidget = nullptr;
TransferListFiltersWidget *m_transferListFiltersWidget = nullptr; TransferListFiltersWidget *m_transferListFiltersWidget = nullptr;
PropertiesWidget *m_propertiesWidget; PropertiesWidget *m_propertiesWidget = nullptr;
bool m_displaySpeedInTitle; bool m_displaySpeedInTitle = false;
bool m_forceExit = false; bool m_forceExit = false;
bool m_uiLocked; bool m_uiLocked = false;
bool m_unlockDlgShowing = false; bool m_unlockDlgShowing = false;
LineEdit *m_searchFilter; LineEdit *m_searchFilter = nullptr;
QAction *m_searchFilterAction; QAction *m_searchFilterAction = nullptr;
// Widgets // Widgets
QAction *m_queueSeparator; QAction *m_queueSeparator = nullptr;
QAction *m_queueSeparatorMenu; QAction *m_queueSeparatorMenu = nullptr;
QSplitter *m_splitter; QSplitter *m_splitter = nullptr;
QPointer<SearchWidget> m_searchWidget; QPointer<SearchWidget> m_searchWidget;
QPointer<RSSWidget> m_rssWidget; QPointer<RSSWidget> m_rssWidget;
QPointer<ExecutionLogWidget> m_executionLog; QPointer<ExecutionLogWidget> m_executionLog;
// Power Management // Power Management
PowerManagement *m_pwr; PowerManagement *m_pwr = nullptr;
QTimer *m_preventTimer; QTimer *m_preventTimer = nullptr;
bool m_hasPython = false; bool m_hasPython = false;
QMenu *m_toolbarMenu; QMenu *m_toolbarMenu = nullptr;
SettingValue<bool> m_storeExecutionLogEnabled; SettingValue<bool> m_storeExecutionLogEnabled;
SettingValue<bool> m_storeDownloadTrackerFavicon; SettingValue<bool> m_storeDownloadTrackerFavicon;

6
src/gui/optionsdialog.h

@ -177,14 +177,14 @@ private:
bool schedTimesOk(); bool schedTimesOk();
Ui::OptionsDialog *m_ui; Ui::OptionsDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
SettingValue<QStringList> m_storeHSplitterSize; SettingValue<QStringList> m_storeHSplitterSize;
SettingValue<int> m_storeLastViewedPage; SettingValue<int> m_storeLastViewedPage;
QPushButton *m_applyButton; QPushButton *m_applyButton = nullptr;
AdvancedSettings *m_advancedSettings; AdvancedSettings *m_advancedSettings = nullptr;
bool m_refreshingIpFilter = false; bool m_refreshingIpFilter = false;
}; };

2
src/gui/powermanagement/powermanagement.h

@ -58,7 +58,7 @@ private:
bool m_busy = false; bool m_busy = false;
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) && defined(QT_DBUS_LIB) #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) && defined(QT_DBUS_LIB)
PowerManagementInhibitor *m_inhibitor; PowerManagementInhibitor *m_inhibitor = nullptr;
#endif #endif
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
IOPMAssertionID m_assertionID; IOPMAssertionID m_assertionID;

8
src/gui/previewselectdialog.h

@ -78,10 +78,10 @@ private:
void loadWindowState(); void loadWindowState();
void saveWindowState(); void saveWindowState();
Ui::PreviewSelectDialog *m_ui; Ui::PreviewSelectDialog *m_ui = nullptr;
QStandardItemModel *m_previewListModel; QStandardItemModel *m_previewListModel = nullptr;
PreviewListDelegate *m_listDelegate; PreviewListDelegate *m_listDelegate = nullptr;
const BitTorrent::Torrent *m_torrent; const BitTorrent::Torrent *m_torrent = nullptr;
bool m_headerStateInitialized = false; bool m_headerStateInitialized = false;
// Settings // Settings

2
src/gui/properties/peersadditiondialog.h

@ -53,6 +53,6 @@ protected slots:
void validateInput(); void validateInput();
private: private:
Ui::PeersAdditionDialog *m_ui; Ui::PeersAdditionDialog *m_ui = nullptr;
QVector<BitTorrent::PeerAddress> m_peersList; QVector<BitTorrent::PeerAddress> m_peersList;
}; };

2
src/gui/properties/propertieswidget.cpp

@ -73,8 +73,6 @@
PropertiesWidget::PropertiesWidget(QWidget *parent) PropertiesWidget::PropertiesWidget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
, m_ui(new Ui::PropertiesWidget()) , m_ui(new Ui::PropertiesWidget())
, m_torrent(nullptr)
, m_handleWidth(-1)
{ {
m_ui->setupUi(this); m_ui->setupUi(this);
setAutoFillBackground(true); setAutoFillBackground(true);

22
src/gui/properties/propertieswidget.h

@ -112,18 +112,18 @@ private:
void openParentFolder(const QModelIndex &index) const; void openParentFolder(const QModelIndex &index) const;
Path getFullPath(const QModelIndex &index) const; Path getFullPath(const QModelIndex &index) const;
Ui::PropertiesWidget *m_ui; Ui::PropertiesWidget *m_ui = nullptr;
BitTorrent::Torrent *m_torrent; BitTorrent::Torrent *m_torrent = nullptr;
SlideState m_state; SlideState m_state;
TorrentContentFilterModel *m_propListModel; TorrentContentFilterModel *m_propListModel = nullptr;
PropListDelegate *m_propListDelegate; PropListDelegate *m_propListDelegate = nullptr;
PeerListWidget *m_peerList; PeerListWidget *m_peerList = nullptr;
TrackerListWidget *m_trackerList; TrackerListWidget *m_trackerList = nullptr;
QWidget *m_speedWidget = nullptr; QWidget *m_speedWidget = nullptr;
QList<int> m_slideSizes; QList<int> m_slideSizes;
DownloadedPiecesBar *m_downloadedPieces; DownloadedPiecesBar *m_downloadedPieces = nullptr;
PieceAvailabilityBar *m_piecesAvailability; PieceAvailabilityBar *m_piecesAvailability = nullptr;
PropTabBar *m_tabBar; PropTabBar *m_tabBar = nullptr;
LineEdit *m_contentFilterLine; LineEdit *m_contentFilterLine = nullptr;
int m_handleWidth; int m_handleWidth = -1;
}; };

2
src/gui/properties/proplistdelegate.h

@ -69,6 +69,6 @@ signals:
void filteredFilesChanged() const; void filteredFilesChanged() const;
private: private:
PropertiesWidget *m_properties; PropertiesWidget *m_properties = nullptr;
ProgressBarPainter m_progressBarPainter; ProgressBarPainter m_progressBarPainter;
}; };

1
src/gui/properties/proptabbar.cpp

@ -38,7 +38,6 @@
PropTabBar::PropTabBar(QWidget *parent) PropTabBar::PropTabBar(QWidget *parent)
: QHBoxLayout(parent) : QHBoxLayout(parent)
, m_currentIndex(-1)
{ {
setAlignment(Qt::AlignLeft | Qt::AlignCenter); setAlignment(Qt::AlignLeft | Qt::AlignCenter);
setSpacing(3); setSpacing(3);

4
src/gui/properties/proptabbar.h

@ -60,6 +60,6 @@ public slots:
void setCurrentIndex(int index); void setCurrentIndex(int index);
private: private:
QButtonGroup *m_btnGroup; QButtonGroup *m_btnGroup = nullptr;
int m_currentIndex; int m_currentIndex = -1;
}; };

4
src/gui/properties/speedplotview.cpp

@ -267,7 +267,7 @@ quint64 SpeedPlotView::maxYValue() const
if (!m_properties[static_cast<GraphID>(id)].enable) if (!m_properties[static_cast<GraphID>(id)].enable)
continue; continue;
milliseconds duration {0ms}; milliseconds duration {0};
for (int i = static_cast<int>(queue.size()) - 1; i >= 0; --i) for (int i = static_cast<int>(queue.size()) - 1; i >= 0; --i)
{ {
maxYValue = std::max(maxYValue, queue[i].data[id]); maxYValue = std::max(maxYValue, queue[i].data[id]);
@ -360,7 +360,7 @@ void SpeedPlotView::paintEvent(QPaintEvent *)
continue; continue;
QVector<QPoint> points; QVector<QPoint> points;
milliseconds duration {0ms}; milliseconds duration {0};
for (int i = static_cast<int>(queue.size()) - 1; i >= 0; --i) for (int i = static_cast<int>(queue.size()) - 1; i >= 0; --i)
{ {

2
src/gui/properties/speedplotview.h

@ -111,7 +111,7 @@ private:
private: private:
const milliseconds m_resolution; const milliseconds m_resolution;
const milliseconds m_maxDuration; const milliseconds m_maxDuration;
milliseconds m_currentDuration {0ms}; milliseconds m_currentDuration {0};
int m_counter = 0; int m_counter = 0;
SampleData m_accumulator {}; SampleData m_accumulator {};
DataCircularBuffer m_sink {}; DataCircularBuffer m_sink {};

1
src/gui/properties/speedwidget.cpp

@ -32,7 +32,6 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QMenu> #include <QMenu>
#include <QTimer>
#include <QVBoxLayout> #include <QVBoxLayout>
#include "base/bittorrent/session.h" #include "base/bittorrent/session.h"

16
src/gui/properties/speedwidget.h

@ -49,7 +49,7 @@ public:
void showPopup() override; void showPopup() override;
private: private:
QMenu *m_menu; QMenu *m_menu = nullptr;
}; };
@ -71,13 +71,13 @@ private:
void loadSettings(); void loadSettings();
void saveSettings() const; void saveSettings() const;
QVBoxLayout *m_layout; QVBoxLayout *m_layout = nullptr;
QHBoxLayout *m_hlayout; QHBoxLayout *m_hlayout = nullptr;
QLabel *m_periodLabel; QLabel *m_periodLabel = nullptr;
QComboBox *m_periodCombobox; QComboBox *m_periodCombobox = nullptr;
SpeedPlotView *m_plot; SpeedPlotView *m_plot = nullptr;
ComboBoxMenuButton *m_graphsButton; ComboBoxMenuButton *m_graphsButton = nullptr;
QMenu *m_graphsMenu; QMenu *m_graphsMenu = nullptr;
QList<QAction *> m_graphsMenuActions; QList<QAction *> m_graphsMenuActions;
}; };

8
src/gui/properties/trackerlistwidget.h

@ -91,9 +91,9 @@ private:
static QStringList headerLabels(); static QStringList headerLabels();
PropertiesWidget *m_properties; PropertiesWidget *m_properties = nullptr;
QHash<QString, QTreeWidgetItem *> m_trackerItems; QHash<QString, QTreeWidgetItem *> m_trackerItems;
QTreeWidgetItem *m_DHTItem; QTreeWidgetItem *m_DHTItem = nullptr;
QTreeWidgetItem *m_PEXItem; QTreeWidgetItem *m_PEXItem = nullptr;
QTreeWidgetItem *m_LSDItem; QTreeWidgetItem *m_LSDItem = nullptr;
}; };

4
src/gui/properties/trackersadditiondialog.h

@ -65,6 +65,6 @@ public slots:
void torrentListDownloadFinished(const Net::DownloadResult &result); void torrentListDownloadFinished(const Net::DownloadResult &result);
private: private:
Ui::TrackersAdditionDialog *m_ui; Ui::TrackersAdditionDialog *m_ui = nullptr;
BitTorrent::Torrent *const m_torrent; BitTorrent::Torrent *const m_torrent = nullptr;
}; };

6
src/gui/rss/automatedrssdownloader.h

@ -101,12 +101,12 @@ private:
const QString m_formatFilterJSON; const QString m_formatFilterJSON;
const QString m_formatFilterLegacy; const QString m_formatFilterLegacy;
Ui::AutomatedRssDownloader *m_ui; Ui::AutomatedRssDownloader *m_ui = nullptr;
QListWidgetItem *m_currentRuleItem; QListWidgetItem *m_currentRuleItem = nullptr;
QSet<std::pair<QString, QString>> m_treeListEntries; QSet<std::pair<QString, QString>> m_treeListEntries;
RSS::AutoDownloadRule m_currentRule; RSS::AutoDownloadRule m_currentRule;
QHash<QString, QListWidgetItem *> m_itemsByRuleName; QHash<QString, QListWidgetItem *> m_itemsByRuleName;
QRegularExpression *m_episodeRegex; QRegularExpression *m_episodeRegex = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
SettingValue<QByteArray> m_storeHSplitterSize; SettingValue<QByteArray> m_storeHSplitterSize;

2
src/gui/rss/feedlistwidget.h

@ -71,5 +71,5 @@ private:
void fill(QTreeWidgetItem *parent, RSS::Folder *rssParent); void fill(QTreeWidgetItem *parent, RSS::Folder *rssParent);
QHash<RSS::Item *, QTreeWidgetItem *> m_rssToTreeItemMapping; QHash<RSS::Item *, QTreeWidgetItem *> m_rssToTreeItemMapping;
QTreeWidgetItem *m_unreadStickyItem; QTreeWidgetItem *m_unreadStickyItem = nullptr;
}; };

4
src/gui/rss/htmlbrowser.h

@ -47,8 +47,8 @@ public:
QVariant loadResource(int type, const QUrl &name) override; QVariant loadResource(int type, const QUrl &name) override;
protected: protected:
QNetworkAccessManager *m_netManager; QNetworkAccessManager *m_netManager = nullptr;
QNetworkDiskCache *m_diskCache; QNetworkDiskCache *m_diskCache = nullptr;
QHash<QUrl, bool> m_activeRequests; QHash<QUrl, bool> m_activeRequests;
protected slots: protected slots:

6
src/gui/rss/rsswidget.h

@ -82,7 +82,7 @@ private slots:
void handleUnreadCountChanged(); void handleUnreadCountChanged();
private: private:
Ui::RSSWidget *m_ui; Ui::RSSWidget *m_ui = nullptr;
ArticleListWidget *m_articleListWidget; ArticleListWidget *m_articleListWidget = nullptr;
FeedListWidget *m_feedListWidget; FeedListWidget *m_feedListWidget = nullptr;
}; };

4
src/gui/search/pluginselectdialog.h

@ -91,9 +91,9 @@ private:
void finishAsyncOp(); void finishAsyncOp();
void finishPluginUpdate(); void finishPluginUpdate();
Ui::PluginSelectDialog *m_ui; Ui::PluginSelectDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
SearchPluginManager *m_pluginManager; SearchPluginManager *m_pluginManager = nullptr;
QStringList m_updatedPlugins; QStringList m_updatedPlugins;
int m_asyncOps = 0; int m_asyncOps = 0;
int m_pendingUpdates = 0; int m_pendingUpdates = 0;

2
src/gui/search/pluginsourcedialog.h

@ -55,6 +55,6 @@ private slots:
void on_urlButton_clicked(); void on_urlButton_clicked();
private: private:
Ui::PluginSourceDialog *m_ui; Ui::PluginSourceDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
}; };

10
src/gui/search/searchjobwidget.h

@ -130,11 +130,11 @@ private:
static QString statusText(Status st); static QString statusText(Status st);
Ui::SearchJobWidget *m_ui; Ui::SearchJobWidget *m_ui = nullptr;
SearchHandler *m_searchHandler; SearchHandler *m_searchHandler = nullptr;
QStandardItemModel *m_searchListModel; QStandardItemModel *m_searchListModel = nullptr;
SearchSortModel *m_proxyModel; SearchSortModel *m_proxyModel = nullptr;
LineEdit *m_lineEditSearchResultsFilter; LineEdit *m_lineEditSearchResultsFilter = nullptr;
Status m_status = Status::Ongoing; Status m_status = Status::Ongoing;
bool m_noSearchResults = true; bool m_noSearchResults = true;

1
src/gui/search/searchwidget.cpp

@ -87,7 +87,6 @@ SearchWidget::SearchWidget(MainWindow *mainWindow)
: QWidget(mainWindow) : QWidget(mainWindow)
, m_ui(new Ui::SearchWidget()) , m_ui(new Ui::SearchWidget())
, m_mainWindow(mainWindow) , m_mainWindow(mainWindow)
, m_isNewQueryString(false)
{ {
m_ui->setupUi(this); m_ui->setupUi(this);
m_ui->tabWidget->tabBar()->installEventFilter(this); m_ui->tabWidget->tabBar()->installEventFilter(this);

6
src/gui/search/searchwidget.h

@ -78,10 +78,10 @@ private:
QString selectedCategory() const; QString selectedCategory() const;
QString selectedPlugin() const; QString selectedPlugin() const;
Ui::SearchWidget *m_ui; Ui::SearchWidget *m_ui = nullptr;
QPointer<SearchJobWidget> m_currentSearchTab; // Selected tab QPointer<SearchJobWidget> m_currentSearchTab; // Selected tab
QPointer<SearchJobWidget> m_activeSearchTab; // Tab with running search QPointer<SearchJobWidget> m_activeSearchTab; // Tab with running search
QList<SearchJobWidget *> m_allTabs; // To store all tabs QList<SearchJobWidget *> m_allTabs; // To store all tabs
MainWindow *m_mainWindow; MainWindow *m_mainWindow = nullptr;
bool m_isNewQueryString; bool m_isNewQueryString = false;
}; };

7
src/gui/shutdownconfirmdialog.cpp

@ -29,6 +29,8 @@
#include "shutdownconfirmdialog.h" #include "shutdownconfirmdialog.h"
#include <chrono>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QIcon> #include <QIcon>
#include <QPushButton> #include <QPushButton>
@ -38,10 +40,11 @@
#include "ui_shutdownconfirmdialog.h" #include "ui_shutdownconfirmdialog.h"
#include "utils.h" #include "utils.h"
using namespace std::chrono_literals;
ShutdownConfirmDialog::ShutdownConfirmDialog(QWidget *parent, const ShutdownDialogAction &action) ShutdownConfirmDialog::ShutdownConfirmDialog(QWidget *parent, const ShutdownDialogAction &action)
: QDialog(parent) : QDialog(parent)
, m_ui(new Ui::ShutdownConfirmDialog) , m_ui(new Ui::ShutdownConfirmDialog)
, m_timeout(15)
, m_action(action) , m_action(action)
{ {
m_ui->setupUi(this); m_ui->setupUi(this);
@ -64,7 +67,7 @@ ShutdownConfirmDialog::ShutdownConfirmDialog(QWidget *parent, const ShutdownDial
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
move(Utils::Gui::screenCenter(this)); move(Utils::Gui::screenCenter(this));
m_timer.setInterval(1000); // 1sec m_timer.setInterval(1s);
connect(&m_timer, &QTimer::timeout, this, &ShutdownConfirmDialog::updateSeconds); connect(&m_timer, &QTimer::timeout, this, &ShutdownConfirmDialog::updateSeconds);
} }

4
src/gui/shutdownconfirmdialog.h

@ -62,9 +62,9 @@ private:
void updateText(); void updateText();
// Vars // Vars
Ui::ShutdownConfirmDialog *m_ui; Ui::ShutdownConfirmDialog *m_ui = nullptr;
QTimer m_timer; QTimer m_timer;
int m_timeout; int m_timeout = 15;
ShutdownDialogAction m_action; ShutdownDialogAction m_action;
QString m_msg; QString m_msg;
}; };

2
src/gui/speedlimitdialog.h

@ -50,7 +50,7 @@ public slots:
void accept() override; void accept() override;
private: private:
Ui::SpeedLimitDialog *m_ui; Ui::SpeedLimitDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
struct struct
{ {

2
src/gui/stacktracedialog.h

@ -48,5 +48,5 @@ public:
void setText(const QString &signalName, const QString &stacktrace); void setText(const QString &signalName, const QString &stacktrace);
private: private:
Ui::StacktraceDialog *m_ui; Ui::StacktraceDialog *m_ui = nullptr;
}; };

2
src/gui/statsdialog.h

@ -50,6 +50,6 @@ private slots:
void update(); void update();
private: private:
Ui::StatsDialog *m_ui; Ui::StatsDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
}; };

10
src/gui/statusbar.h

@ -64,9 +64,9 @@ private:
void updateDHTNodesNumber(); void updateDHTNodesNumber();
void updateSpeedLabels(); void updateSpeedLabels();
QPushButton *m_dlSpeedLbl; QPushButton *m_dlSpeedLbl = nullptr;
QPushButton *m_upSpeedLbl; QPushButton *m_upSpeedLbl = nullptr;
QLabel *m_DHTLbl; QLabel *m_DHTLbl = nullptr;
QPushButton *m_connecStatusLblIcon; QPushButton *m_connecStatusLblIcon = nullptr;
QPushButton *m_altSpeedsBtn; QPushButton *m_altSpeedsBtn = nullptr;
}; };

2
src/gui/torrentcategorydialog.h

@ -65,6 +65,6 @@ private slots:
void useDownloadPathChanged(int index); void useDownloadPathChanged(int index);
private: private:
Ui::TorrentCategoryDialog *m_ui; Ui::TorrentCategoryDialog *m_ui = nullptr;
Path m_lastEnteredDownloadPath; Path m_lastEnteredDownloadPath;
}; };

2
src/gui/torrentcontentfiltermodel.h

@ -62,6 +62,6 @@ protected:
private: private:
bool hasFiltered(const QModelIndex &folder) const; bool hasFiltered(const QModelIndex &folder) const;
TorrentContentModel *m_model; TorrentContentModel *m_model = nullptr;
Utils::Compare::NaturalLessThan<Qt::CaseInsensitive> m_naturalLessThan; Utils::Compare::NaturalLessThan<Qt::CaseInsensitive> m_naturalLessThan;
}; };

4
src/gui/torrentcontentmodel.cpp

@ -438,7 +438,7 @@ QModelIndex TorrentContentModel::index(int row, int column, const QModelIndex &p
if (column >= TorrentContentModelItem::NB_COL) if (column >= TorrentContentModelItem::NB_COL)
return {}; return {};
TorrentContentModelFolder *parentItem; TorrentContentModelFolder *parentItem = nullptr;
if (!parent.isValid()) if (!parent.isValid())
parentItem = m_rootItem; parentItem = m_rootItem;
else else
@ -475,7 +475,7 @@ int TorrentContentModel::rowCount(const QModelIndex &parent) const
if (parent.column() > 0) if (parent.column() > 0)
return 0; return 0;
TorrentContentModelFolder *parentItem; TorrentContentModelFolder *parentItem = nullptr;
if (!parent.isValid()) if (!parent.isValid())
parentItem = m_rootItem; parentItem = m_rootItem;
else else

5
src/gui/torrentcontentmodelitem.cpp

@ -37,11 +37,6 @@
TorrentContentModelItem::TorrentContentModelItem(TorrentContentModelFolder *parent) TorrentContentModelItem::TorrentContentModelItem(TorrentContentModelFolder *parent)
: m_parentItem(parent) : m_parentItem(parent)
, m_size(0)
, m_remaining(0)
, m_priority(BitTorrent::DownloadPriority::Normal)
, m_progress(0)
, m_availability(-1.)
{ {
} }

12
src/gui/torrentcontentmodelitem.h

@ -84,14 +84,14 @@ public:
int row() const; int row() const;
protected: protected:
TorrentContentModelFolder *m_parentItem; TorrentContentModelFolder *m_parentItem = nullptr;
// Root item members // Root item members
QVector<QString> m_itemData; QVector<QString> m_itemData;
// Non-root item members // Non-root item members
QString m_name; QString m_name;
qulonglong m_size; qulonglong m_size = 0;
qulonglong m_remaining; qulonglong m_remaining = 0;
BitTorrent::DownloadPriority m_priority; BitTorrent::DownloadPriority m_priority = BitTorrent::DownloadPriority::Normal;
qreal m_progress; qreal m_progress = 0;
qreal m_availability; qreal m_availability = -1;
}; };

4
src/gui/torrentcreatordialog.h

@ -74,8 +74,8 @@ private:
int getPaddedFileSizeLimit() const; int getPaddedFileSizeLimit() const;
#endif #endif
Ui::TorrentCreatorDialog *m_ui; Ui::TorrentCreatorDialog *m_ui = nullptr;
BitTorrent::TorrentCreatorThread *m_creatorThread; BitTorrent::TorrentCreatorThread *m_creatorThread = nullptr;
// settings // settings
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;

2
src/gui/torrentoptionsdialog.h

@ -75,7 +75,7 @@ private:
int getSeedingTime() const; int getSeedingTime() const;
QVector<BitTorrent::TorrentID> m_torrentIDs; QVector<BitTorrent::TorrentID> m_torrentIDs;
Ui::TorrentOptionsDialog *m_ui; Ui::TorrentOptionsDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
QStringList m_categories; QStringList m_categories;
QString m_currentCategoriesString; QString m_currentCategoriesString;

2
src/gui/trackerentriesdialog.h

@ -59,6 +59,6 @@ private:
void saveSettings(); void saveSettings();
void loadSettings(); void loadSettings();
Ui::TrackerEntriesDialog *m_ui; Ui::TrackerEntriesDialog *m_ui = nullptr;
SettingValue<QSize> m_storeDialogSize; SettingValue<QSize> m_storeDialogSize;
}; };

10
src/gui/transferlistfilterswidget.h

@ -66,7 +66,7 @@ public slots:
void toggleFilter(bool checked); void toggleFilter(bool checked);
protected: protected:
TransferListWidget *transferList; TransferListWidget *transferList = nullptr;
private slots: private slots:
virtual void showMenu() = 0; virtual void showMenu() = 0;
@ -190,8 +190,8 @@ private:
void toggleCategoryFilter(bool enabled); void toggleCategoryFilter(bool enabled);
void toggleTagFilter(bool enabled); void toggleTagFilter(bool enabled);
TransferListWidget *m_transferList; TransferListWidget *m_transferList = nullptr;
TrackerFiltersList *m_trackerFilters; TrackerFiltersList *m_trackerFilters = nullptr;
CategoryFilterWidget *m_categoryFilterWidget; CategoryFilterWidget *m_categoryFilterWidget = nullptr;
TagFilterWidget *m_tagFilterWidget; TagFilterWidget *m_tagFilterWidget = nullptr;
}; };

9
src/gui/transferlistmodel.cpp

@ -216,7 +216,7 @@ int TransferListModel::columnCount(const QModelIndex &) const
return NB_COLUMNS; return NB_COLUMNS;
} }
QVariant TransferListModel::headerData(int section, Qt::Orientation orientation, int role) const QVariant TransferListModel::headerData(const int section, const Qt::Orientation orientation, const int role) const
{ {
if (orientation == Qt::Horizontal) if (orientation == Qt::Horizontal)
{ {
@ -289,7 +289,7 @@ QVariant TransferListModel::headerData(int section, Qt::Orientation orientation,
} }
} }
return {}; return QAbstractListModel::headerData(section, orientation, role);
} }
QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, const int column) const QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, const int column) const
@ -591,8 +591,11 @@ QVariant TransferListModel::data(const QModelIndex &index, const int role) const
case TR_QUEUE_POSITION: case TR_QUEUE_POSITION:
case TR_LAST_ACTIVITY: case TR_LAST_ACTIVITY:
case TR_AVAILABILITY: case TR_AVAILABILITY:
return QVariant {Qt::AlignRight | Qt::AlignVCenter}; return QVariant(Qt::AlignRight | Qt::AlignVCenter);
} }
break;
default:
break;
} }
return {}; return {};

6
src/gui/transferlistwidget.h

@ -131,7 +131,7 @@ private:
QVector<BitTorrent::Torrent *> getVisibleTorrents() const; QVector<BitTorrent::Torrent *> getVisibleTorrents() const;
int visibleColumnsCount() const; int visibleColumnsCount() const;
TransferListModel *m_listModel; TransferListModel *m_listModel = nullptr;
TransferListSortModel *m_sortFilterModel; TransferListSortModel *m_sortFilterModel = nullptr;
MainWindow *m_mainWindow; MainWindow *m_mainWindow = nullptr;
}; };

2
src/gui/tristateaction.h

@ -54,5 +54,5 @@ public:
void setCloseOnInteraction(bool enabled); void setCloseOnInteraction(bool enabled);
private: private:
TriStateWidget *m_triStateWidget; TriStateWidget *m_triStateWidget = nullptr;
}; };

2
src/gui/watchedfolderoptionsdialog.h

@ -57,7 +57,7 @@ private:
void onTMMChanged(int index); void onTMMChanged(int index);
void onCategoryChanged(int index); void onCategoryChanged(int index);
Ui::WatchedFolderOptionsDialog *m_ui; Ui::WatchedFolderOptionsDialog *m_ui = nullptr;
Path m_savePath; Path m_savePath;
Path m_downloadPath; Path m_downloadPath;
bool m_useDownloadPath = false; bool m_useDownloadPath = false;

2
src/gui/watchedfoldersmodel.h

@ -62,7 +62,7 @@ private:
void onFolderSet(const Path &path, const TorrentFilesWatcher::WatchedFolderOptions &options); void onFolderSet(const Path &path, const TorrentFilesWatcher::WatchedFolderOptions &options);
void onFolderRemoved(const Path &path); void onFolderRemoved(const Path &path);
TorrentFilesWatcher *m_fsWatcher; TorrentFilesWatcher *m_fsWatcher = nullptr;
PathList m_watchedFolders; PathList m_watchedFolders;
QHash<Path, TorrentFilesWatcher::WatchedFolderOptions> m_watchedFoldersOptions; QHash<Path, TorrentFilesWatcher::WatchedFolderOptions> m_watchedFoldersOptions;
QSet<Path> m_deletedFolders; QSet<Path> m_deletedFolders;

5
src/webui/api/appcontroller.cpp

@ -31,6 +31,7 @@
#include "appcontroller.h" #include "appcontroller.h"
#include <algorithm> #include <algorithm>
#include <chrono>
#include <QCoreApplication> #include <QCoreApplication>
#include <QDebug> #include <QDebug>
@ -62,6 +63,8 @@
#include "base/version.h" #include "base/version.h"
#include "../webapplication.h" #include "../webapplication.h"
using namespace std::chrono_literals;
void AppController::webapiVersionAction() void AppController::webapiVersionAction()
{ {
setResult(API_VERSION.toString()); setResult(API_VERSION.toString());
@ -93,7 +96,7 @@ void AppController::shutdownAction()
// Special case handling for shutdown, we // Special case handling for shutdown, we
// need to reply to the Web UI before // need to reply to the Web UI before
// actually shutting down. // actually shutting down.
QTimer::singleShot(100, qApp, &QCoreApplication::quit); QTimer::singleShot(100ms, qApp, &QCoreApplication::quit);
} }
void AppController::preferencesAction() void AppController::preferencesAction()

Loading…
Cancel
Save