diff --git a/connector/syncthingconnection.cpp b/connector/syncthingconnection.cpp index 1af462d..dd3b066 100644 --- a/connector/syncthingconnection.cpp +++ b/connector/syncthingconnection.cpp @@ -19,6 +19,7 @@ #include #include +#include using namespace std; using namespace ChronoUtilities; @@ -794,9 +795,9 @@ void SyncthingConnection::readConnections() const QJsonObject replyObj(replyDoc.object()); const QJsonObject totalObj(replyObj.value(QStringLiteral("total")).toObject()); - // read traffic - const int totalIncomingTraffic = totalObj.value(QStringLiteral("inBytesTotal")).toInt(0); - const int totalOutgoingTraffic = totalObj.value(QStringLiteral("outBytesTotal")).toInt(0); + // read traffic, the conversion to double is neccassary because toInt() doesn't work for high values + const uint64 totalIncomingTraffic = static_cast(totalObj.value(QStringLiteral("inBytesTotal")).toDouble(0.0)); + const uint64 totalOutgoingTraffic = static_cast(totalObj.value(QStringLiteral("outBytesTotal")).toDouble(0.0)); double transferTime; if(!m_lastConnectionsUpdate.isNull() && ((transferTime = (DateTime::gmtNow() - m_lastConnectionsUpdate).totalSeconds()) != 0.0)) { m_totalIncomingRate = (totalIncomingTraffic - m_totalIncomingTraffic) * 0.008 / transferTime, @@ -829,8 +830,8 @@ void SyncthingConnection::readConnections() } } dev.paused = connectionObj.value(QStringLiteral("paused")).toBool(false); - dev.totalIncomingTraffic = connectionObj.value(QStringLiteral("inBytesTotal")).toInt(0); - dev.totalOutgoingTraffic = connectionObj.value(QStringLiteral("outBytesTotal")).toInt(0); + dev.totalIncomingTraffic = static_cast(connectionObj.value(QStringLiteral("inBytesTotal")).toDouble(0)); + dev.totalOutgoingTraffic = static_cast(connectionObj.value(QStringLiteral("outBytesTotal")).toDouble(0)); dev.connectionAddress = connectionObj.value(QStringLiteral("address")).toString(); dev.connectionType = connectionObj.value(QStringLiteral("type")).toString(); dev.clientVersion = connectionObj.value(QStringLiteral("clientVersion")).toString(); @@ -943,9 +944,9 @@ void SyncthingConnection::readDeviceStatistics() } ++index; } - // since there seems no event for this data, just request every minute, FIXME: make interval configurable + // since there seems no event for this data, just request every minute if(m_keepPolling) { - QTimer::singleShot(m_devStatsPollInterval, Qt::VeryCoarseTimer, this, SLOT(requestConnections())); + QTimer::singleShot(m_devStatsPollInterval, Qt::VeryCoarseTimer, this, &SyncthingConnection::requestDeviceStatistics); } } else { emit error(tr("Unable to parse device statistics: ") + jsonError.errorString()); diff --git a/connector/syncthingconnection.h b/connector/syncthingconnection.h index a53ce37..f7108cb 100644 --- a/connector/syncthingconnection.h +++ b/connector/syncthingconnection.h @@ -88,8 +88,8 @@ public: void setReconnectInterval(int reconnectInterval); const QString &configDir() const; const QString &myId() const; - int totalIncomingTraffic() const; - int totalOutgoingTraffic() const; + uint64 totalIncomingTraffic() const; + uint64 totalOutgoingTraffic() const; double totalIncomingRate() const; double totalOutgoingRate() const; const std::vector &dirInfo() const; @@ -131,7 +131,7 @@ Q_SIGNALS: void statusChanged(SyncthingStatus newStatus); void configDirChanged(const QString &newConfigDir); void myIdChanged(const QString &myNewId); - void trafficChanged(int totalIncomingTraffic, int totalOutgoingTraffic); + void trafficChanged(uint64 totalIncomingTraffic, uint64 totalOutgoingTraffic); void rescanTriggered(const QString &dirId); void pauseTriggered(const QString &devId); void resumeTriggered(const QString &devId); @@ -192,8 +192,8 @@ private: QTimer m_reconnectTimer; QString m_configDir; QString m_myId; - int m_totalIncomingTraffic; - int m_totalOutgoingTraffic; + uint64 m_totalIncomingTraffic; + uint64 m_totalOutgoingTraffic; double m_totalIncomingRate; double m_totalOutgoingRate; QNetworkReply *m_configReply; @@ -371,7 +371,7 @@ inline const QString &SyncthingConnection::myId() const /*! * \brief Returns the total incoming traffic in byte. */ -inline int SyncthingConnection::totalIncomingTraffic() const +inline uint64 SyncthingConnection::totalIncomingTraffic() const { return m_totalIncomingTraffic; } @@ -379,7 +379,7 @@ inline int SyncthingConnection::totalIncomingTraffic() const /*! * \brief Returns the total outgoing traffic in byte. */ -inline int SyncthingConnection::totalOutgoingTraffic() const +inline uint64 SyncthingConnection::totalOutgoingTraffic() const { return m_totalOutgoingTraffic; } diff --git a/connector/syncthingdev.h b/connector/syncthingdev.h index 8d2297d..ba16ab7 100644 --- a/connector/syncthingdev.h +++ b/connector/syncthingdev.h @@ -33,8 +33,8 @@ struct LIB_SYNCTHING_CONNECTOR_EXPORT SyncthingDev int progressRate = 0; bool introducer = false; bool paused = false; - int totalIncomingTraffic = 0; - int totalOutgoingTraffic = 0; + uint64 totalIncomingTraffic = 0; + uint64 totalOutgoingTraffic = 0; QString connectionAddress; QString connectionType; QString clientVersion; diff --git a/connector/translations/syncthingconnector_de_DE.ts b/connector/translations/syncthingconnector_de_DE.ts index 2fd3e2f..d3d66a1 100644 --- a/connector/translations/syncthingconnector_de_DE.ts +++ b/connector/translations/syncthingconnector_de_DE.ts @@ -4,153 +4,153 @@ Data::SyncthingConnection - + disconnected - + reconnecting - + connected - + connected, paused - + connected, synchronizing - + unknown - - + + Connection configuration is insufficient. - + Unable to request QR-Code: - + Unable to parse Syncthing log: - + Unable to request system log: - + Unable to locate certificate used by Syncthing GUI. - + Unable to load certificate used by Syncthing GUI. - + Unable to parse Syncthing config: - + Unable to request Syncthing config: - + Unable to parse Syncthing status: - + Unable to request Syncthing status: - + Unable to parse connections: - + Unable to request connections: - + Unable to parse directory statistics: - + Unable to request directory statistics: - + Unable to parse device statistics: - + Unable to request device statistics: - + Unable to parse errors: - + Unable to request errors: - + Unable to parse Syncthing events: - + Unable to request Syncthing events: - + Unable to request rescan: - + Unable to request pause/resume: - + Unable to request restart: - + Unable to request shutdown: diff --git a/connector/translations/syncthingconnector_en_US.ts b/connector/translations/syncthingconnector_en_US.ts index 8b2ec5d..1cab8d5 100644 --- a/connector/translations/syncthingconnector_en_US.ts +++ b/connector/translations/syncthingconnector_en_US.ts @@ -4,153 +4,153 @@ Data::SyncthingConnection - + disconnected - + reconnecting - + connected - + connected, paused - + connected, synchronizing - + unknown - - + + Connection configuration is insufficient. - + Unable to request QR-Code: - + Unable to parse Syncthing log: - + Unable to request system log: - + Unable to locate certificate used by Syncthing GUI. - + Unable to load certificate used by Syncthing GUI. - + Unable to parse Syncthing config: - + Unable to request Syncthing config: - + Unable to parse Syncthing status: - + Unable to request Syncthing status: - + Unable to parse connections: - + Unable to request connections: - + Unable to parse directory statistics: - + Unable to request directory statistics: - + Unable to parse device statistics: - + Unable to request device statistics: - + Unable to parse errors: - + Unable to request errors: - + Unable to parse Syncthing events: - + Unable to request Syncthing events: - + Unable to request rescan: - + Unable to request pause/resume: - + Unable to request restart: - + Unable to request shutdown: diff --git a/tray/CMakeLists.txt b/tray/CMakeLists.txt index adc807e..306d7cd 100644 --- a/tray/CMakeLists.txt +++ b/tray/CMakeLists.txt @@ -105,11 +105,11 @@ set(REQUIRED_ICONS ) # find c++utilities -find_package(c++utilities 4.0.0 REQUIRED) +find_package(c++utilities 4.2.0 REQUIRED) use_cpp_utilities() # find qtutilities -find_package(qtutilities 5.0.0 REQUIRED) +find_package(qtutilities 5.1.0 REQUIRED) use_qt_utilities() # find backend libraries diff --git a/tray/gui/traywidget.cpp b/tray/gui/traywidget.cpp index cfa9e22..0876a85 100644 --- a/tray/gui/traywidget.cpp +++ b/tray/gui/traywidget.cpp @@ -419,18 +419,18 @@ void TrayWidget::updateTraffic() static const QString unknownStr(tr("unknown")); if(m_connection.isConnected()) { if(m_connection.totalIncomingRate() != 0.0) { - m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 + m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0 ? QStringLiteral("%1 (%2)").arg(QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data()), QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data())) : QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data())); } else { - m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : unknownStr); + m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : unknownStr); } if(m_connection.totalOutgoingRate() != 0.0) { - m_ui->outTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 + m_ui->outTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0 ? QStringLiteral("%1 (%2)").arg(QString::fromUtf8(bitrateToString(m_connection.totalOutgoingRate(), true).data()), QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data())) : QString::fromUtf8(bitrateToString(m_connection.totalOutgoingRate(), true).data())); } else { - m_ui->outTrafficLabel->setText(m_connection.totalOutgoingTraffic() >= 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data()) : unknownStr); + m_ui->outTrafficLabel->setText(m_connection.totalOutgoingTraffic() != 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data()) : unknownStr); } } else { m_ui->inTrafficLabel->setText(unknownStr);