Add SyncthingStatus::Reconnecting, prevent some warnings

This commit is contained in:
Martchus 2016-09-06 22:55:49 +02:00
parent 688bf43216
commit 3d44174992
10 changed files with 159 additions and 108 deletions

View File

@ -51,7 +51,7 @@ I will provide packages for Arch Linux and Windows when releasing. For more info
## Build instructions ## Build instructions
The application depends on [c++utilities](https://github.com/Martchus/cpp-utilities) and [qtutilities](https://github.com/Martchus/qtutilities) and is built the same way as these libaries. For basic instructions checkout the README file of [c++utilities](https://github.com/Martchus/cpp-utilities). The application depends on [c++utilities](https://github.com/Martchus/cpp-utilities) and [qtutilities](https://github.com/Martchus/qtutilities) and is built the same way as these libaries. For basic instructions checkout the README file of [c++utilities](https://github.com/Martchus/cpp-utilities).
The following Qt 5 modules are requried: core network gui widgets webenginewidgets/webkitwidgets The following Qt 5 modules are requried: core network gui widgets svg webenginewidgets/webkitwidgets
#### Select Qt modules for WebView #### Select Qt modules for WebView
* If Qt WebKitWidgets is installed on the system, the tray will link against it. Otherwise it will link against Qt WebEngineWidgets. * If Qt WebKitWidgets is installed on the system, the tray will link against it. Otherwise it will link against Qt WebEngineWidgets.

View File

@ -145,6 +145,8 @@ QString SyncthingConnection::statusText() const
switch(m_status) { switch(m_status) {
case SyncthingStatus::Disconnected: case SyncthingStatus::Disconnected:
return tr("disconnected"); return tr("disconnected");
case SyncthingStatus::Reconnecting:
return tr("reconnecting");
case SyncthingStatus::Idle: case SyncthingStatus::Idle:
return tr("connected"); return tr("connected");
case SyncthingStatus::NotificationsAvailable: case SyncthingStatus::NotificationsAvailable:
@ -225,7 +227,7 @@ void SyncthingConnection::reconnect(Settings::ConnectionSettings &connectionSett
void SyncthingConnection::continueReconnect() void SyncthingConnection::continueReconnect()
{ {
emit newConfig(QJsonObject()); // configuration will be invalidated emit newConfig(QJsonObject()); // configuration will be invalidated
m_status = SyncthingStatus::Disconnected; setStatus(SyncthingStatus::Reconnecting);
m_keepPolling = true; m_keepPolling = true;
m_reconnecting = false; m_reconnecting = false;
m_lastEventId = 0; m_lastEventId = 0;
@ -581,10 +583,12 @@ void SyncthingConnection::readConfig()
} else { } else {
emit error(tr("Unable to parse Syncthing config: ") + jsonError.errorString()); emit error(tr("Unable to parse Syncthing config: ") + jsonError.errorString());
} }
break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
emit error(tr("Unable to request Syncthing config: ") + reply->errorString()); emit error(tr("Unable to request Syncthing config: ") + reply->errorString());
setStatus(SyncthingStatus::Disconnected);
} }
} }
@ -681,6 +685,7 @@ void SyncthingConnection::readStatus()
} else { } else {
emit error(tr("Unable to parse Syncthing config: ") + jsonError.errorString()); emit error(tr("Unable to parse Syncthing config: ") + jsonError.errorString());
} }
break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
@ -761,6 +766,7 @@ void SyncthingConnection::readConnections()
} else { } else {
emit error(tr("Unable to parse connections: ") + jsonError.errorString()); emit error(tr("Unable to parse connections: ") + jsonError.errorString());
} }
break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
@ -821,6 +827,7 @@ void SyncthingConnection::readDirStatistics()
} else { } else {
emit error(tr("Unable to parse directory statistics: ") + jsonError.errorString()); emit error(tr("Unable to parse directory statistics: ") + jsonError.errorString());
} }
break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
@ -863,6 +870,7 @@ void SyncthingConnection::readDeviceStatistics()
} else { } else {
emit error(tr("Unable to parse device statistics: ") + jsonError.errorString()); emit error(tr("Unable to parse device statistics: ") + jsonError.errorString());
} }
break;
} case QNetworkReply::OperationCanceledError: } case QNetworkReply::OperationCanceledError:
return; // intended, not an error return; // intended, not an error
default: default:
@ -921,6 +929,7 @@ void SyncthingConnection::readEvents()
setStatus(SyncthingStatus::Disconnected); setStatus(SyncthingStatus::Disconnected);
return; return;
} }
break;
} case QNetworkReply::TimeoutError: } case QNetworkReply::TimeoutError:
// no new events available, keep polling // no new events available, keep polling
break; break;
@ -1190,6 +1199,7 @@ void SyncthingConnection::setStatus(SyncthingStatus status)
{ {
switch(status) { switch(status) {
case SyncthingStatus::Disconnected: case SyncthingStatus::Disconnected:
case SyncthingStatus::Reconnecting:
break; break;
default: default:
if(m_unreadNotifications) { if(m_unreadNotifications) {

View File

@ -28,6 +28,7 @@ QNetworkAccessManager &networkAccessManager();
enum class SyncthingStatus enum class SyncthingStatus
{ {
Disconnected, Disconnected,
Reconnecting,
Idle, Idle,
Scanning, Scanning,
NotificationsAvailable, NotificationsAvailable,
@ -378,7 +379,7 @@ inline SyncthingStatus SyncthingConnection::status() const
*/ */
inline bool SyncthingConnection::isConnected() const inline bool SyncthingConnection::isConnected() const
{ {
return m_status != SyncthingStatus::Disconnected; return m_status != SyncthingStatus::Disconnected && m_status != SyncthingStatus::Reconnecting;
} }
/*! /*!

View File

@ -27,7 +27,7 @@ SyncthingDeviceModel::SyncthingDeviceModel(SyncthingConnection &connection, QObj
*/ */
const SyncthingDev *SyncthingDeviceModel::devInfo(const QModelIndex &index) const const SyncthingDev *SyncthingDeviceModel::devInfo(const QModelIndex &index) const
{ {
return (index.parent().isValid() ? devInfo(index.parent()) : (index.row() < m_devs.size() ? &m_devs[index.row()] : nullptr)); return (index.parent().isValid() ? devInfo(index.parent()) : (static_cast<size_t>(index.row()) < m_devs.size() ? &m_devs[static_cast<size_t>(index.row())] : nullptr));
} }
QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &parent) const QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &parent) const
@ -35,12 +35,12 @@ QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &
if(!parent.isValid()) { if(!parent.isValid()) {
// top-level: all dev IDs // top-level: all dev IDs
if(row < rowCount(parent)) { if(row < rowCount(parent)) {
return createIndex(row, column, -1); return createIndex(row, column, static_cast<quintptr>(-1));
} }
} else if(!parent.parent().isValid()) { } else if(!parent.parent().isValid()) {
// dev-level: dev attributes // dev-level: dev attributes
if(row < rowCount(parent)) { if(row < rowCount(parent)) {
return createIndex(row, column, parent.row()); return createIndex(row, column, static_cast<quintptr>(parent.row()));
} }
} }
return QModelIndex(); return QModelIndex();
@ -48,7 +48,7 @@ QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &
QModelIndex SyncthingDeviceModel::parent(const QModelIndex &child) const QModelIndex SyncthingDeviceModel::parent(const QModelIndex &child) const
{ {
return child.internalId() != static_cast<quintptr>(-1) ? index(child.internalId(), 0, QModelIndex()) : QModelIndex(); return child.internalId() != static_cast<quintptr>(-1) ? index(static_cast<int>(child.internalId()), 0, QModelIndex()) : QModelIndex();
} }
QVariant SyncthingDeviceModel::headerData(int section, Qt::Orientation orientation, int role) const QVariant SyncthingDeviceModel::headerData(int section, Qt::Orientation orientation, int role) const
@ -77,7 +77,7 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
if(index.isValid()) { if(index.isValid()) {
if(index.parent().isValid()) { if(index.parent().isValid()) {
// dir attributes // dir attributes
if(index.parent().row() < m_devs.size()) { if(static_cast<size_t>(index.parent().row()) < m_devs.size()) {
switch(role) { switch(role) {
case Qt::DisplayRole: case Qt::DisplayRole:
case Qt::EditRole: case Qt::EditRole:
@ -93,7 +93,7 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
} }
break; break;
case 1: // attribute values case 1: // attribute values
const SyncthingDev &dev = m_devs[index.parent().row()]; const SyncthingDev &dev = m_devs[static_cast<size_t>(index.parent().row())];
switch(index.row()) { switch(index.row()) {
case 0: return dev.id; case 0: return dev.id;
case 1: return dev.addresses.join(QStringLiteral(", ")); case 1: return dev.addresses.join(QStringLiteral(", "));
@ -139,9 +139,9 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
; ;
} }
} }
} else if(index.row() < m_devs.size()) { } else if(static_cast<size_t>(index.row()) < m_devs.size()) {
// dir IDs and status // dir IDs and status
const SyncthingDev &dev = m_devs[index.row()]; const SyncthingDev &dev = m_devs[static_cast<size_t>(index.row())];
switch(role) { switch(role) {
case Qt::DisplayRole: case Qt::DisplayRole:
case Qt::EditRole: case Qt::EditRole:
@ -223,13 +223,14 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
bool SyncthingDeviceModel::setData(const QModelIndex &index, const QVariant &value, int role) bool SyncthingDeviceModel::setData(const QModelIndex &index, const QVariant &value, int role)
{ {
Q_UNUSED(index) Q_UNUSED(value) Q_UNUSED(role)
return false; return false;
} }
int SyncthingDeviceModel::rowCount(const QModelIndex &parent) const int SyncthingDeviceModel::rowCount(const QModelIndex &parent) const
{ {
if(!parent.isValid()) { if(!parent.isValid()) {
return m_devs.size(); return static_cast<int>(m_devs.size());
} else if(!parent.parent().isValid()) { } else if(!parent.parent().isValid()) {
return 6; return 6;
} else { } else {

View File

@ -27,7 +27,7 @@ SyncthingDirectoryModel::SyncthingDirectoryModel(SyncthingConnection &connection
*/ */
const SyncthingDir *SyncthingDirectoryModel::dirInfo(const QModelIndex &index) const const SyncthingDir *SyncthingDirectoryModel::dirInfo(const QModelIndex &index) const
{ {
return (index.parent().isValid() ? dirInfo(index.parent()) : (index.row() < m_dirs.size() ? &m_dirs[index.row()] : nullptr)); return (index.parent().isValid() ? dirInfo(index.parent()) : (static_cast<size_t>(index.row()) < m_dirs.size() ? &m_dirs[static_cast<size_t>(index.row())] : nullptr));
} }
QModelIndex SyncthingDirectoryModel::index(int row, int column, const QModelIndex &parent) const QModelIndex SyncthingDirectoryModel::index(int row, int column, const QModelIndex &parent) const
@ -77,7 +77,7 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
if(index.isValid()) { if(index.isValid()) {
if(index.parent().isValid()) { if(index.parent().isValid()) {
// dir attributes // dir attributes
if(index.parent().row() < m_dirs.size()) { if(static_cast<size_t>(index.parent().row()) < m_dirs.size()) {
switch(role) { switch(role) {
case Qt::DisplayRole: case Qt::DisplayRole:
case Qt::EditRole: case Qt::EditRole:
@ -152,9 +152,9 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
; ;
} }
} }
} else if(index.row() < m_dirs.size()) { } else if(static_cast<size_t>(index.row()) < m_dirs.size()) {
// dir IDs and status // dir IDs and status
const SyncthingDir &dir = m_dirs[index.row()]; const SyncthingDir &dir = m_dirs[static_cast<size_t>(index.row())];
switch(role) { switch(role) {
case Qt::DisplayRole: case Qt::DisplayRole:
case Qt::EditRole: case Qt::EditRole:
@ -217,13 +217,14 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
bool SyncthingDirectoryModel::setData(const QModelIndex &index, const QVariant &value, int role) bool SyncthingDirectoryModel::setData(const QModelIndex &index, const QVariant &value, int role)
{ {
Q_UNUSED(index) Q_UNUSED(value) Q_UNUSED(role)
return false; return false;
} }
int SyncthingDirectoryModel::rowCount(const QModelIndex &parent) const int SyncthingDirectoryModel::rowCount(const QModelIndex &parent) const
{ {
if(!parent.isValid()) { if(!parent.isValid()) {
return m_dirs.size(); return static_cast<int>(m_dirs.size());
} else if(!parent.parent().isValid()) { } else if(!parent.parent().isValid()) {
return 7; return 7;
} else { } else {

View File

@ -96,6 +96,10 @@ void TrayIcon::updateStatusIconAndText(SyncthingStatus status)
showMessage(QCoreApplication::applicationName(), tr("Disconnected from Syncthing"), QSystemTrayIcon::Warning); showMessage(QCoreApplication::applicationName(), tr("Disconnected from Syncthing"), QSystemTrayIcon::Warning);
} }
break; break;
case SyncthingStatus::Reconnecting:
setIcon(m_statusIconDisconnected);
setToolTip(tr("Reconnecting ..."));
break;
case SyncthingStatus::Idle: case SyncthingStatus::Idle:
setIcon(m_statusIconIdling); setIcon(m_statusIconIdling);
setToolTip(tr("Syncthing is idling")); setToolTip(tr("Syncthing is idling"));
@ -119,6 +123,7 @@ void TrayIcon::updateStatusIconAndText(SyncthingStatus status)
} }
switch(status) { switch(status) {
case SyncthingStatus::Disconnected: case SyncthingStatus::Disconnected:
case SyncthingStatus::Reconnecting:
case SyncthingStatus::Synchronizing: case SyncthingStatus::Synchronizing:
break; break;
default: default:

View File

@ -104,7 +104,7 @@ TrayWidget::TrayWidget(TrayMenu *parent) :
connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog); connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog);
connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUi); connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUi);
connect(m_ui->settingsPushButton, &QPushButton::clicked, this, &TrayWidget::showSettingsDialog); connect(m_ui->settingsPushButton, &QPushButton::clicked, this, &TrayWidget::showSettingsDialog);
connect(&m_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::updateStatusButton); connect(&m_connection, &SyncthingConnection::statusChanged, this, &TrayWidget::handleStatusChanged);
connect(&m_connection, &SyncthingConnection::trafficChanged, this, &TrayWidget::updateTraffic); connect(&m_connection, &SyncthingConnection::trafficChanged, this, &TrayWidget::updateTraffic);
connect(&m_connection, &SyncthingConnection::newNotification, this, &TrayWidget::handleNewNotification); connect(&m_connection, &SyncthingConnection::newNotification, this, &TrayWidget::handleNewNotification);
connect(m_ui->dirsTreeView, &DirView::openDir, this, &TrayWidget::openDir); connect(m_ui->dirsTreeView, &DirView::openDir, this, &TrayWidget::openDir);
@ -238,13 +238,18 @@ void TrayWidget::showLog()
dlg->activateWindow(); dlg->activateWindow();
} }
void TrayWidget::updateStatusButton(SyncthingStatus status) void TrayWidget::handleStatusChanged(SyncthingStatus status)
{ {
switch(status) { switch(status) {
case SyncthingStatus::Disconnected: case SyncthingStatus::Disconnected:
m_ui->statusPushButton->setText(tr("Connect")); m_ui->statusPushButton->setText(tr("Connect"));
m_ui->statusPushButton->setToolTip(tr("Not connected to Syncthing, click to connect")); m_ui->statusPushButton->setToolTip(tr("Not connected to Syncthing, click to connect"));
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/view-refresh.svg")))); m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/view-refresh.svg"))));
m_ui->statusPushButton->setHidden(false);
updateTraffic(); // ensure previous traffic statistics are no longer shown
break;
case SyncthingStatus::Reconnecting:
m_ui->statusPushButton->setHidden(true);
break; break;
case SyncthingStatus::Idle: case SyncthingStatus::Idle:
case SyncthingStatus::Scanning: case SyncthingStatus::Scanning:
@ -253,11 +258,13 @@ void TrayWidget::updateStatusButton(SyncthingStatus status)
m_ui->statusPushButton->setText(tr("Pause")); m_ui->statusPushButton->setText(tr("Pause"));
m_ui->statusPushButton->setToolTip(tr("Syncthing is running, click to pause all devices")); m_ui->statusPushButton->setToolTip(tr("Syncthing is running, click to pause all devices"));
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-pause.svg")))); m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-pause"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-pause.svg"))));
m_ui->statusPushButton->setHidden(false);
break; break;
case SyncthingStatus::Paused: case SyncthingStatus::Paused:
m_ui->statusPushButton->setText(tr("Continue")); m_ui->statusPushButton->setText(tr("Continue"));
m_ui->statusPushButton->setToolTip(tr("At least one device is paused, click to resume")); m_ui->statusPushButton->setToolTip(tr("At least one device is paused, click to resume"));
m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-resume.svg")))); m_ui->statusPushButton->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/media-playback-resume.svg"))));
m_ui->statusPushButton->setHidden(false);
break; break;
} }
} }
@ -349,6 +356,8 @@ void TrayWidget::changeStatus()
case SyncthingStatus::Disconnected: case SyncthingStatus::Disconnected:
m_connection.connect(); m_connection.connect();
break; break;
case SyncthingStatus::Reconnecting:
break;
case SyncthingStatus::Idle: case SyncthingStatus::Idle:
case SyncthingStatus::Scanning: case SyncthingStatus::Scanning:
case SyncthingStatus::NotificationsAvailable: case SyncthingStatus::NotificationsAvailable:
@ -366,19 +375,25 @@ void TrayWidget::updateTraffic()
if(m_ui->trafficFrame->isHidden()) { if(m_ui->trafficFrame->isHidden()) {
return; return;
} }
if(m_connection.totalIncomingRate() != 0.0) { static const QString unknownStr(tr("unknown"));
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 if(m_connection.isConnected()) {
? QStringLiteral("%1 (%2)").arg(QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data()), QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data())) if(m_connection.totalIncomingRate() != 0.0) {
: QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data())); 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);
}
if(m_connection.totalOutgoingRate() != 0.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);
}
} else { } else {
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : tr("unknown")); m_ui->inTrafficLabel->setText(unknownStr);
} m_ui->outTrafficLabel->setText(unknownStr);
if(m_connection.totalOutgoingRate() != 0.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()) : tr("unknown"));
} }
} }

View File

@ -54,7 +54,7 @@ public slots:
void showLog(); void showLog();
private slots: private slots:
void updateStatusButton(Data::SyncthingStatus status); void handleStatusChanged(Data::SyncthingStatus status);
void applySettings(); void applySettings();
void openDir(const QModelIndex &dirIndex); void openDir(const QModelIndex &dirIndex);
void scanDir(const QModelIndex &dirIndex); void scanDir(const QModelIndex &dirIndex);

View File

@ -10,124 +10,129 @@
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="149"/> <location filename="../data/syncthingconnection.cpp" line="149"/>
<source>connected</source> <source>reconnecting</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="151"/> <location filename="../data/syncthingconnection.cpp" line="151"/>
<source>connected, notifications available</source> <source>connected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="153"/> <location filename="../data/syncthingconnection.cpp" line="153"/>
<source>connected, paused</source> <source>connected, notifications available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="155"/> <location filename="../data/syncthingconnection.cpp" line="155"/>
<source>connected, synchronizing</source> <source>connected, paused</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="157"/> <location filename="../data/syncthingconnection.cpp" line="157"/>
<source>connected, synchronizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="159"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="169"/> <location filename="../data/syncthingconnection.cpp" line="171"/>
<location filename="../data/syncthingconnection.cpp" line="248"/> <location filename="../data/syncthingconnection.cpp" line="250"/>
<source>Connection configuration is insufficient.</source> <source>Connection configuration is insufficient.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="517"/> <location filename="../data/syncthingconnection.cpp" line="519"/>
<source>Unable to parse Syncthing log: </source> <source>Unable to parse Syncthing log: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="521"/> <location filename="../data/syncthingconnection.cpp" line="523"/>
<source>Unable to request system log: </source> <source>Unable to request system log: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="543"/> <location filename="../data/syncthingconnection.cpp" line="545"/>
<source>Unable to locate certificate used by Syncthing GUI.</source> <source>Unable to locate certificate used by Syncthing GUI.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="549"/> <location filename="../data/syncthingconnection.cpp" line="551"/>
<source>Unable to load certificate used by Syncthing GUI.</source> <source>Unable to load certificate used by Syncthing GUI.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="582"/> <location filename="../data/syncthingconnection.cpp" line="584"/>
<location filename="../data/syncthingconnection.cpp" line="682"/> <location filename="../data/syncthingconnection.cpp" line="686"/>
<source>Unable to parse Syncthing config: </source> <source>Unable to parse Syncthing config: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="587"/> <location filename="../data/syncthingconnection.cpp" line="590"/>
<location filename="../data/syncthingconnection.cpp" line="687"/> <location filename="../data/syncthingconnection.cpp" line="692"/>
<source>Unable to request Syncthing config: </source> <source>Unable to request Syncthing config: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="762"/> <location filename="../data/syncthingconnection.cpp" line="767"/>
<source>Unable to parse connections: </source> <source>Unable to parse connections: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="767"/> <location filename="../data/syncthingconnection.cpp" line="773"/>
<source>Unable to request connections: </source> <source>Unable to request connections: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="822"/> <location filename="../data/syncthingconnection.cpp" line="828"/>
<source>Unable to parse directory statistics: </source> <source>Unable to parse directory statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="827"/> <location filename="../data/syncthingconnection.cpp" line="834"/>
<source>Unable to request directory statistics: </source> <source>Unable to request directory statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="864"/> <location filename="../data/syncthingconnection.cpp" line="871"/>
<source>Unable to parse device statistics: </source> <source>Unable to parse device statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="869"/> <location filename="../data/syncthingconnection.cpp" line="877"/>
<source>Unable to request device statistics: </source> <source>Unable to request device statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="920"/> <location filename="../data/syncthingconnection.cpp" line="928"/>
<source>Unable to parse Syncthing events: </source> <source>Unable to parse Syncthing events: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="938"/> <location filename="../data/syncthingconnection.cpp" line="947"/>
<source>Unable to request Syncthing events: </source> <source>Unable to request Syncthing events: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1150"/> <location filename="../data/syncthingconnection.cpp" line="1159"/>
<source>Unable to request rescan: </source> <source>Unable to request rescan: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1165"/> <location filename="../data/syncthingconnection.cpp" line="1174"/>
<source>Unable to request pause/resume: </source> <source>Unable to request pause/resume: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1180"/> <location filename="../data/syncthingconnection.cpp" line="1189"/>
<source>Unable to request restart: </source> <source>Unable to request restart: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="485"/> <location filename="../data/syncthingconnection.cpp" line="487"/>
<source>Unable to request QR-Code: </source> <source>Unable to request QR-Code: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -769,31 +774,36 @@
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="101"/> <location filename="../gui/trayicon.cpp" line="101"/>
<source>Syncthing is idling</source> <source>Reconnecting ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="105"/> <location filename="../gui/trayicon.cpp" line="105"/>
<source>Syncthing is scanning</source> <source>Syncthing is idling</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="109"/> <location filename="../gui/trayicon.cpp" line="109"/>
<source>Notifications available</source> <source>Syncthing is scanning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="113"/> <location filename="../gui/trayicon.cpp" line="113"/>
<source>At least one device is paused</source> <source>Notifications available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="117"/> <location filename="../gui/trayicon.cpp" line="117"/>
<source>At least one device is paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="121"/>
<source>Synchronization is ongoing</source> <source>Synchronization is ongoing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="126"/> <location filename="../gui/trayicon.cpp" line="131"/>
<source>Synchronization complete</source> <source>Synchronization complete</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -834,8 +844,7 @@
<message> <message>
<location filename="../gui/traywidget.ui" line="230"/> <location filename="../gui/traywidget.ui" line="230"/>
<location filename="../gui/traywidget.ui" line="250"/> <location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.cpp" line="374"/> <location filename="../gui/traywidget.cpp" line="378"/>
<location filename="../gui/traywidget.cpp" line="381"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -916,27 +925,27 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="253"/> <location filename="../gui/traywidget.cpp" line="258"/>
<source>Pause</source> <source>Pause</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="254"/> <location filename="../gui/traywidget.cpp" line="259"/>
<source>Syncthing is running, click to pause all devices</source> <source>Syncthing is running, click to pause all devices</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="259"/> <location filename="../gui/traywidget.cpp" line="265"/>
<source>At least one device is paused, click to resume</source> <source>At least one device is paused, click to resume</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="323"/> <location filename="../gui/traywidget.cpp" line="330"/>
<source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="258"/> <location filename="../gui/traywidget.cpp" line="264"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -10,124 +10,129 @@
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="149"/> <location filename="../data/syncthingconnection.cpp" line="149"/>
<source>connected</source> <source>reconnecting</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="151"/> <location filename="../data/syncthingconnection.cpp" line="151"/>
<source>connected, notifications available</source> <source>connected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="153"/> <location filename="../data/syncthingconnection.cpp" line="153"/>
<source>connected, paused</source> <source>connected, notifications available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="155"/> <location filename="../data/syncthingconnection.cpp" line="155"/>
<source>connected, synchronizing</source> <source>connected, paused</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="157"/> <location filename="../data/syncthingconnection.cpp" line="157"/>
<source>connected, synchronizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="159"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="169"/> <location filename="../data/syncthingconnection.cpp" line="171"/>
<location filename="../data/syncthingconnection.cpp" line="248"/> <location filename="../data/syncthingconnection.cpp" line="250"/>
<source>Connection configuration is insufficient.</source> <source>Connection configuration is insufficient.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="517"/> <location filename="../data/syncthingconnection.cpp" line="519"/>
<source>Unable to parse Syncthing log: </source> <source>Unable to parse Syncthing log: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="521"/> <location filename="../data/syncthingconnection.cpp" line="523"/>
<source>Unable to request system log: </source> <source>Unable to request system log: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="543"/> <location filename="../data/syncthingconnection.cpp" line="545"/>
<source>Unable to locate certificate used by Syncthing GUI.</source> <source>Unable to locate certificate used by Syncthing GUI.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="549"/> <location filename="../data/syncthingconnection.cpp" line="551"/>
<source>Unable to load certificate used by Syncthing GUI.</source> <source>Unable to load certificate used by Syncthing GUI.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="582"/> <location filename="../data/syncthingconnection.cpp" line="584"/>
<location filename="../data/syncthingconnection.cpp" line="682"/> <location filename="../data/syncthingconnection.cpp" line="686"/>
<source>Unable to parse Syncthing config: </source> <source>Unable to parse Syncthing config: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="587"/> <location filename="../data/syncthingconnection.cpp" line="590"/>
<location filename="../data/syncthingconnection.cpp" line="687"/> <location filename="../data/syncthingconnection.cpp" line="692"/>
<source>Unable to request Syncthing config: </source> <source>Unable to request Syncthing config: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="762"/> <location filename="../data/syncthingconnection.cpp" line="767"/>
<source>Unable to parse connections: </source> <source>Unable to parse connections: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="767"/> <location filename="../data/syncthingconnection.cpp" line="773"/>
<source>Unable to request connections: </source> <source>Unable to request connections: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="822"/> <location filename="../data/syncthingconnection.cpp" line="828"/>
<source>Unable to parse directory statistics: </source> <source>Unable to parse directory statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="827"/> <location filename="../data/syncthingconnection.cpp" line="834"/>
<source>Unable to request directory statistics: </source> <source>Unable to request directory statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="864"/> <location filename="../data/syncthingconnection.cpp" line="871"/>
<source>Unable to parse device statistics: </source> <source>Unable to parse device statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="869"/> <location filename="../data/syncthingconnection.cpp" line="877"/>
<source>Unable to request device statistics: </source> <source>Unable to request device statistics: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="920"/> <location filename="../data/syncthingconnection.cpp" line="928"/>
<source>Unable to parse Syncthing events: </source> <source>Unable to parse Syncthing events: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="938"/> <location filename="../data/syncthingconnection.cpp" line="947"/>
<source>Unable to request Syncthing events: </source> <source>Unable to request Syncthing events: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1150"/> <location filename="../data/syncthingconnection.cpp" line="1159"/>
<source>Unable to request rescan: </source> <source>Unable to request rescan: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1165"/> <location filename="../data/syncthingconnection.cpp" line="1174"/>
<source>Unable to request pause/resume: </source> <source>Unable to request pause/resume: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="1180"/> <location filename="../data/syncthingconnection.cpp" line="1189"/>
<source>Unable to request restart: </source> <source>Unable to request restart: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../data/syncthingconnection.cpp" line="485"/> <location filename="../data/syncthingconnection.cpp" line="487"/>
<source>Unable to request QR-Code: </source> <source>Unable to request QR-Code: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -769,31 +774,36 @@
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="101"/> <location filename="../gui/trayicon.cpp" line="101"/>
<source>Syncthing is idling</source> <source>Reconnecting ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="105"/> <location filename="../gui/trayicon.cpp" line="105"/>
<source>Syncthing is scanning</source> <source>Syncthing is idling</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="109"/> <location filename="../gui/trayicon.cpp" line="109"/>
<source>Notifications available</source> <source>Syncthing is scanning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="113"/> <location filename="../gui/trayicon.cpp" line="113"/>
<source>At least one device is paused</source> <source>Notifications available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="117"/> <location filename="../gui/trayicon.cpp" line="117"/>
<source>At least one device is paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="121"/>
<source>Synchronization is ongoing</source> <source>Synchronization is ongoing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/trayicon.cpp" line="126"/> <location filename="../gui/trayicon.cpp" line="131"/>
<source>Synchronization complete</source> <source>Synchronization complete</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -834,8 +844,7 @@
<message> <message>
<location filename="../gui/traywidget.ui" line="230"/> <location filename="../gui/traywidget.ui" line="230"/>
<location filename="../gui/traywidget.ui" line="250"/> <location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.cpp" line="374"/> <location filename="../gui/traywidget.cpp" line="378"/>
<location filename="../gui/traywidget.cpp" line="381"/>
<source>unknown</source> <source>unknown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -916,27 +925,27 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="253"/> <location filename="../gui/traywidget.cpp" line="258"/>
<source>Pause</source> <source>Pause</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="254"/> <location filename="../gui/traywidget.cpp" line="259"/>
<source>Syncthing is running, click to pause all devices</source> <source>Syncthing is running, click to pause all devices</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="259"/> <location filename="../gui/traywidget.cpp" line="265"/>
<source>At least one device is paused, click to resume</source> <source>At least one device is paused, click to resume</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="323"/> <location filename="../gui/traywidget.cpp" line="330"/>
<source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source> <source>The directory &lt;i&gt;%1&lt;/i&gt; does not exist on the local machine.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../gui/traywidget.cpp" line="258"/> <location filename="../gui/traywidget.cpp" line="264"/>
<source>Continue</source> <source>Continue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>