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

View File

@ -28,6 +28,7 @@ QNetworkAccessManager &networkAccessManager();
enum class SyncthingStatus
{
Disconnected,
Reconnecting,
Idle,
Scanning,
NotificationsAvailable,
@ -378,7 +379,7 @@ inline SyncthingStatus SyncthingConnection::status() 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
{
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
@ -35,12 +35,12 @@ QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &
if(!parent.isValid()) {
// top-level: all dev IDs
if(row < rowCount(parent)) {
return createIndex(row, column, -1);
return createIndex(row, column, static_cast<quintptr>(-1));
}
} else if(!parent.parent().isValid()) {
// dev-level: dev attributes
if(row < rowCount(parent)) {
return createIndex(row, column, parent.row());
return createIndex(row, column, static_cast<quintptr>(parent.row()));
}
}
return QModelIndex();
@ -48,7 +48,7 @@ QModelIndex SyncthingDeviceModel::index(int row, int column, const QModelIndex &
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
@ -77,7 +77,7 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
if(index.isValid()) {
if(index.parent().isValid()) {
// dir attributes
if(index.parent().row() < m_devs.size()) {
if(static_cast<size_t>(index.parent().row()) < m_devs.size()) {
switch(role) {
case Qt::DisplayRole:
case Qt::EditRole:
@ -93,7 +93,7 @@ QVariant SyncthingDeviceModel::data(const QModelIndex &index, int role) const
}
break;
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()) {
case 0: return dev.id;
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
const SyncthingDev &dev = m_devs[index.row()];
const SyncthingDev &dev = m_devs[static_cast<size_t>(index.row())];
switch(role) {
case Qt::DisplayRole:
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)
{
Q_UNUSED(index) Q_UNUSED(value) Q_UNUSED(role)
return false;
}
int SyncthingDeviceModel::rowCount(const QModelIndex &parent) const
{
if(!parent.isValid()) {
return m_devs.size();
return static_cast<int>(m_devs.size());
} else if(!parent.parent().isValid()) {
return 6;
} else {

View File

@ -27,7 +27,7 @@ SyncthingDirectoryModel::SyncthingDirectoryModel(SyncthingConnection &connection
*/
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
@ -77,7 +77,7 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
if(index.isValid()) {
if(index.parent().isValid()) {
// dir attributes
if(index.parent().row() < m_dirs.size()) {
if(static_cast<size_t>(index.parent().row()) < m_dirs.size()) {
switch(role) {
case Qt::DisplayRole:
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
const SyncthingDir &dir = m_dirs[index.row()];
const SyncthingDir &dir = m_dirs[static_cast<size_t>(index.row())];
switch(role) {
case Qt::DisplayRole:
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)
{
Q_UNUSED(index) Q_UNUSED(value) Q_UNUSED(role)
return false;
}
int SyncthingDirectoryModel::rowCount(const QModelIndex &parent) const
{
if(!parent.isValid()) {
return m_dirs.size();
return static_cast<int>(m_dirs.size());
} else if(!parent.parent().isValid()) {
return 7;
} else {

View File

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

View File

@ -104,7 +104,7 @@ TrayWidget::TrayWidget(TrayMenu *parent) :
connect(m_ui->aboutPushButton, &QPushButton::clicked, this, &TrayWidget::showAboutDialog);
connect(m_ui->webUiPushButton, &QPushButton::clicked, this, &TrayWidget::showWebUi);
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::newNotification, this, &TrayWidget::handleNewNotification);
connect(m_ui->dirsTreeView, &DirView::openDir, this, &TrayWidget::openDir);
@ -238,13 +238,18 @@ void TrayWidget::showLog()
dlg->activateWindow();
}
void TrayWidget::updateStatusButton(SyncthingStatus status)
void TrayWidget::handleStatusChanged(SyncthingStatus status)
{
switch(status) {
case SyncthingStatus::Disconnected:
m_ui->statusPushButton->setText(tr("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->setHidden(false);
updateTraffic(); // ensure previous traffic statistics are no longer shown
break;
case SyncthingStatus::Reconnecting:
m_ui->statusPushButton->setHidden(true);
break;
case SyncthingStatus::Idle:
case SyncthingStatus::Scanning:
@ -253,11 +258,13 @@ void TrayWidget::updateStatusButton(SyncthingStatus status)
m_ui->statusPushButton->setText(tr("Pause"));
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->setHidden(false);
break;
case SyncthingStatus::Paused:
m_ui->statusPushButton->setText(tr("Continue"));
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->setHidden(false);
break;
}
}
@ -349,6 +356,8 @@ void TrayWidget::changeStatus()
case SyncthingStatus::Disconnected:
m_connection.connect();
break;
case SyncthingStatus::Reconnecting:
break;
case SyncthingStatus::Idle:
case SyncthingStatus::Scanning:
case SyncthingStatus::NotificationsAvailable:
@ -366,19 +375,25 @@ void TrayWidget::updateTraffic()
if(m_ui->trafficFrame->isHidden()) {
return;
}
if(m_connection.totalIncomingRate() != 0.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()));
static const QString unknownStr(tr("unknown"));
if(m_connection.isConnected()) {
if(m_connection.totalIncomingRate() != 0.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);
}
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 {
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() >= 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : tr("unknown"));
}
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"));
m_ui->inTrafficLabel->setText(unknownStr);
m_ui->outTrafficLabel->setText(unknownStr);
}
}

View File

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

View File

@ -10,124 +10,129 @@
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="149"/>
<source>connected</source>
<source>reconnecting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="151"/>
<source>connected, notifications available</source>
<source>connected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="153"/>
<source>connected, paused</source>
<source>connected, notifications available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="155"/>
<source>connected, synchronizing</source>
<source>connected, paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="169"/>
<location filename="../data/syncthingconnection.cpp" line="248"/>
<location filename="../data/syncthingconnection.cpp" line="171"/>
<location filename="../data/syncthingconnection.cpp" line="250"/>
<source>Connection configuration is insufficient.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="517"/>
<location filename="../data/syncthingconnection.cpp" line="519"/>
<source>Unable to parse Syncthing log: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="521"/>
<location filename="../data/syncthingconnection.cpp" line="523"/>
<source>Unable to request system log: </source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="582"/>
<location filename="../data/syncthingconnection.cpp" line="682"/>
<location filename="../data/syncthingconnection.cpp" line="584"/>
<location filename="../data/syncthingconnection.cpp" line="686"/>
<source>Unable to parse Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="587"/>
<location filename="../data/syncthingconnection.cpp" line="687"/>
<location filename="../data/syncthingconnection.cpp" line="590"/>
<location filename="../data/syncthingconnection.cpp" line="692"/>
<source>Unable to request Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="762"/>
<location filename="../data/syncthingconnection.cpp" line="767"/>
<source>Unable to parse connections: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="767"/>
<location filename="../data/syncthingconnection.cpp" line="773"/>
<source>Unable to request connections: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="822"/>
<location filename="../data/syncthingconnection.cpp" line="828"/>
<source>Unable to parse directory statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="827"/>
<location filename="../data/syncthingconnection.cpp" line="834"/>
<source>Unable to request directory statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="864"/>
<location filename="../data/syncthingconnection.cpp" line="871"/>
<source>Unable to parse device statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="869"/>
<location filename="../data/syncthingconnection.cpp" line="877"/>
<source>Unable to request device statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="920"/>
<location filename="../data/syncthingconnection.cpp" line="928"/>
<source>Unable to parse Syncthing events: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="938"/>
<location filename="../data/syncthingconnection.cpp" line="947"/>
<source>Unable to request Syncthing events: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1150"/>
<location filename="../data/syncthingconnection.cpp" line="1159"/>
<source>Unable to request rescan: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1165"/>
<location filename="../data/syncthingconnection.cpp" line="1174"/>
<source>Unable to request pause/resume: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1180"/>
<location filename="../data/syncthingconnection.cpp" line="1189"/>
<source>Unable to request restart: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="485"/>
<location filename="../data/syncthingconnection.cpp" line="487"/>
<source>Unable to request QR-Code: </source>
<translation type="unfinished"></translation>
</message>
@ -769,31 +774,36 @@
</message>
<message>
<location filename="../gui/trayicon.cpp" line="101"/>
<source>Syncthing is idling</source>
<source>Reconnecting ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="105"/>
<source>Syncthing is scanning</source>
<source>Syncthing is idling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="109"/>
<source>Notifications available</source>
<source>Syncthing is scanning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="113"/>
<source>At least one device is paused</source>
<source>Notifications available</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="126"/>
<location filename="../gui/trayicon.cpp" line="131"/>
<source>Synchronization complete</source>
<translation type="unfinished"></translation>
</message>
@ -834,8 +844,7 @@
<message>
<location filename="../gui/traywidget.ui" line="230"/>
<location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.cpp" line="374"/>
<location filename="../gui/traywidget.cpp" line="381"/>
<location filename="../gui/traywidget.cpp" line="378"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
@ -916,27 +925,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/traywidget.cpp" line="253"/>
<location filename="../gui/traywidget.cpp" line="258"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/traywidget.cpp" line="258"/>
<location filename="../gui/traywidget.cpp" line="264"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>

View File

@ -10,124 +10,129 @@
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="149"/>
<source>connected</source>
<source>reconnecting</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="151"/>
<source>connected, notifications available</source>
<source>connected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="153"/>
<source>connected, paused</source>
<source>connected, notifications available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="155"/>
<source>connected, synchronizing</source>
<source>connected, paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="169"/>
<location filename="../data/syncthingconnection.cpp" line="248"/>
<location filename="../data/syncthingconnection.cpp" line="171"/>
<location filename="../data/syncthingconnection.cpp" line="250"/>
<source>Connection configuration is insufficient.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="517"/>
<location filename="../data/syncthingconnection.cpp" line="519"/>
<source>Unable to parse Syncthing log: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="521"/>
<location filename="../data/syncthingconnection.cpp" line="523"/>
<source>Unable to request system log: </source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="582"/>
<location filename="../data/syncthingconnection.cpp" line="682"/>
<location filename="../data/syncthingconnection.cpp" line="584"/>
<location filename="../data/syncthingconnection.cpp" line="686"/>
<source>Unable to parse Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="587"/>
<location filename="../data/syncthingconnection.cpp" line="687"/>
<location filename="../data/syncthingconnection.cpp" line="590"/>
<location filename="../data/syncthingconnection.cpp" line="692"/>
<source>Unable to request Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="762"/>
<location filename="../data/syncthingconnection.cpp" line="767"/>
<source>Unable to parse connections: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="767"/>
<location filename="../data/syncthingconnection.cpp" line="773"/>
<source>Unable to request connections: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="822"/>
<location filename="../data/syncthingconnection.cpp" line="828"/>
<source>Unable to parse directory statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="827"/>
<location filename="../data/syncthingconnection.cpp" line="834"/>
<source>Unable to request directory statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="864"/>
<location filename="../data/syncthingconnection.cpp" line="871"/>
<source>Unable to parse device statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="869"/>
<location filename="../data/syncthingconnection.cpp" line="877"/>
<source>Unable to request device statistics: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="920"/>
<location filename="../data/syncthingconnection.cpp" line="928"/>
<source>Unable to parse Syncthing events: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="938"/>
<location filename="../data/syncthingconnection.cpp" line="947"/>
<source>Unable to request Syncthing events: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1150"/>
<location filename="../data/syncthingconnection.cpp" line="1159"/>
<source>Unable to request rescan: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1165"/>
<location filename="../data/syncthingconnection.cpp" line="1174"/>
<source>Unable to request pause/resume: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="1180"/>
<location filename="../data/syncthingconnection.cpp" line="1189"/>
<source>Unable to request restart: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../data/syncthingconnection.cpp" line="485"/>
<location filename="../data/syncthingconnection.cpp" line="487"/>
<source>Unable to request QR-Code: </source>
<translation type="unfinished"></translation>
</message>
@ -769,31 +774,36 @@
</message>
<message>
<location filename="../gui/trayicon.cpp" line="101"/>
<source>Syncthing is idling</source>
<source>Reconnecting ...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="105"/>
<source>Syncthing is scanning</source>
<source>Syncthing is idling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="109"/>
<source>Notifications available</source>
<source>Syncthing is scanning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="113"/>
<source>At least one device is paused</source>
<source>Notifications available</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/trayicon.cpp" line="126"/>
<location filename="../gui/trayicon.cpp" line="131"/>
<source>Synchronization complete</source>
<translation type="unfinished"></translation>
</message>
@ -834,8 +844,7 @@
<message>
<location filename="../gui/traywidget.ui" line="230"/>
<location filename="../gui/traywidget.ui" line="250"/>
<location filename="../gui/traywidget.cpp" line="374"/>
<location filename="../gui/traywidget.cpp" line="381"/>
<location filename="../gui/traywidget.cpp" line="378"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
@ -916,27 +925,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/traywidget.cpp" line="253"/>
<location filename="../gui/traywidget.cpp" line="258"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/traywidget.cpp" line="258"/>
<location filename="../gui/traywidget.cpp" line="264"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>