Don't show own dev in shared devs of dir

This commit is contained in:
Martchus 2017-08-22 20:44:49 +02:00
parent 9b45c49b97
commit be6d0cbf5d
10 changed files with 146 additions and 100 deletions

View File

@ -878,12 +878,8 @@ void SyncthingConnection::readConfig()
if (jsonError.error == QJsonParseError::NoError) {
m_rawConfig = replyDoc.object();
emit newConfig(m_rawConfig);
readDevs(m_rawConfig.value(QStringLiteral("devices")).toArray());
readDirs(m_rawConfig.value(QStringLiteral("folders")).toArray());
m_hasConfig = true;
if (!isConnected()) {
continueConnecting();
}
concludeReadingConfigAndStatus();
} else {
emitError(tr("Unable to parse Syncthing config: "), jsonError, reply, response);
}
@ -919,7 +915,7 @@ void SyncthingConnection::readDirs(const QJsonArray &dirs)
dirItem->deviceNames.clear();
for (const QJsonValue &dev : dirObj.value(QStringLiteral("devices")).toArray()) {
const QString devId = dev.toObject().value(QStringLiteral("deviceID")).toString();
if (!devId.isEmpty()) {
if (!devId.isEmpty() && devId != m_myId) {
dirItem->deviceIds << devId;
if (const SyncthingDev *const dev = findDevInfo(devId, dummy)) {
dirItem->deviceNames << dev->name;
@ -982,25 +978,10 @@ void SyncthingConnection::readStatus()
QJsonParseError jsonError;
const QJsonDocument replyDoc = QJsonDocument::fromJson(response, &jsonError);
if (jsonError.error == QJsonParseError::NoError) {
const QJsonObject replyObj(replyDoc.object());
const QString myId(replyObj.value(QStringLiteral("myID")).toString());
if (myId != m_myId) {
emit myIdChanged(m_myId = myId);
int index = 0;
for (SyncthingDev &dev : m_devs) {
if (dev.id == m_myId) {
dev.status = SyncthingDevStatus::OwnDevice;
emit devStatusChanged(dev, index);
break;
}
++index;
}
}
emitMyIdChanged(replyDoc.object().value(QStringLiteral("myID")).toString());
// other values are currently not interesting
m_hasStatus = true;
if (!isConnected()) {
continueConnecting();
}
concludeReadingConfigAndStatus();
} else {
emitError(tr("Unable to parse Syncthing status: "), jsonError, reply, response);
}
@ -1013,6 +994,25 @@ void SyncthingConnection::readStatus()
}
}
/*!
* \brief Reads results of requestConfig() and requestStatus().
* \remarks Called in readConfig() or readStatus() to conclude reading parts requiring config *and* status
* being available. Does nothing if this is not the case (yet).
*/
void SyncthingConnection::concludeReadingConfigAndStatus()
{
if (!m_hasConfig || !m_hasStatus) {
return;
}
readDevs(m_rawConfig.value(QStringLiteral("devices")).toArray());
readDirs(m_rawConfig.value(QStringLiteral("folders")).toArray());
if (!isConnected()) {
continueConnecting();
}
}
/*!
* \brief Reads results of requestConnections().
*/
@ -1369,14 +1369,11 @@ void SyncthingConnection::readEvents()
*/
void SyncthingConnection::readStartingEvent(const QJsonObject &eventData)
{
QString strValue = eventData.value(QStringLiteral("home")).toString();
if (strValue != m_configDir) {
emit configDirChanged(m_configDir = strValue);
}
strValue = eventData.value(QStringLiteral("myID")).toString();
if (strValue != m_myId) {
emit configDirChanged(m_myId = strValue);
const QString configDir(eventData.value(QStringLiteral("home")).toString());
if (configDir != m_configDir) {
emit configDirChanged(m_configDir = configDir);
}
emitMyIdChanged(eventData.value(QStringLiteral("myID")).toString());
}
/*!
@ -1810,6 +1807,33 @@ void SyncthingConnection::emitError(const QString &message, SyncthingErrorCatego
emit error(message + reply->errorString(), category, reply->error(), reply->request(), reply->readAll());
}
/*!
* \brief Internally called to emit myIdChanged() signal.
*/
void SyncthingConnection::emitMyIdChanged(const QString &newId)
{
if (newId.isEmpty() || m_myId == newId) {
return;
}
// adjust device status
int row = 0;
for (SyncthingDev &dev : m_devs) {
if (dev.id == newId) {
if (dev.status != SyncthingDevStatus::OwnDevice) {
dev.status = SyncthingDevStatus::OwnDevice;
emit devStatusChanged(dev, row);
}
} else if (dev.status == SyncthingDevStatus::OwnDevice) {
dev.status = SyncthingDevStatus::Unknown;
emit devStatusChanged(dev, row);
}
++row;
}
emit myIdChanged(m_myId = newId);
}
/*!
* \fn SyncthingConnection::newConfig()
* \brief Indicates new configuration (dirs, devs, ...) is available.

View File

@ -182,6 +182,7 @@ private Q_SLOTS:
void readDirs(const QJsonArray &dirs);
void readDevs(const QJsonArray &devs);
void readStatus();
void concludeReadingConfigAndStatus();
void readConnections();
void readDirStatistics();
void readDeviceStatistics();
@ -208,6 +209,7 @@ private Q_SLOTS:
void emitNotification(ChronoUtilities::DateTime when, const QString &message);
void emitError(const QString &message, const QJsonParseError &jsonError, QNetworkReply *reply, const QByteArray &response = QByteArray());
void emitError(const QString &message, SyncthingErrorCategory category, QNetworkReply *reply);
void emitMyIdChanged(const QString &newId);
private:
QNetworkRequest prepareRequest(const QString &path, const QUrlQuery &query, bool rest = true);

View File

@ -50,8 +50,7 @@ bool SyncthingDir::finalizeStatusUpdate(SyncthingDirStatus newStatus)
case SyncthingDirStatus::Unshared:
if (!itemErrors.empty()) {
newStatus = SyncthingDirStatus::OutOfSync;
} else if (deviceIds.size() < 2) {
// FIXME: we can assume only own device is assigned, correct?
} else if (deviceIds.empty()) {
newStatus = SyncthingDirStatus::Unshared;
}
break;

View File

@ -391,9 +391,9 @@ void ConnectionTests::checkDirectories() const
CPPUNIT_ASSERT(!dir1.readOnly);
CPPUNIT_ASSERT(!dir1.paused);
CPPUNIT_ASSERT_EQUAL(QSet<QString>({ QStringLiteral("MMGUI6U-WUEZQCP-XZZ6VYB-LCT4TVC-ER2HAVX-QYT6X7D-S6ZSG2B-323KLQ7"),
QStringLiteral("6EIS2PN-J2IHWGS-AXS3YUL-HC5FT3K-77ZXTLL-AKQLJ4C-7SWVPUS-AZW4RQ4"), m_ownDevId }),
QStringLiteral("6EIS2PN-J2IHWGS-AXS3YUL-HC5FT3K-77ZXTLL-AKQLJ4C-7SWVPUS-AZW4RQ4") }),
dir1.deviceIds.toSet());
CPPUNIT_ASSERT_EQUAL(QSet<QString>({ QStringLiteral("Test dev 2"), QStringLiteral("Test dev 1"), m_ownDevName }), dir1.deviceNames.toSet());
CPPUNIT_ASSERT_EQUAL(QSet<QString>({ QStringLiteral("Test dev 2"), QStringLiteral("Test dev 1") }), dir1.deviceNames.toSet());
const SyncthingDir &dir2 = dirInfo.back();
CPPUNIT_ASSERT_EQUAL(QStringLiteral("test2"), dir2.id);
CPPUNIT_ASSERT_EQUAL(QStringLiteral("Test dir 2"), dir2.label);
@ -404,8 +404,8 @@ void ConnectionTests::checkDirectories() const
CPPUNIT_ASSERT(!dir2.readOnly);
CPPUNIT_ASSERT(dir2.paused);
CPPUNIT_ASSERT_EQUAL(
QSet<QString>({ QStringLiteral("MMGUI6U-WUEZQCP-XZZ6VYB-LCT4TVC-ER2HAVX-QYT6X7D-S6ZSG2B-323KLQ7"), m_ownDevId }), dir2.deviceIds.toSet());
CPPUNIT_ASSERT_EQUAL(QSet<QString>({ QStringLiteral("Test dev 2"), m_ownDevName }), dir2.deviceNames.toSet());
QSet<QString>({ QStringLiteral("MMGUI6U-WUEZQCP-XZZ6VYB-LCT4TVC-ER2HAVX-QYT6X7D-S6ZSG2B-323KLQ7") }), dir2.deviceIds.toSet());
CPPUNIT_ASSERT_EQUAL(QSet<QString>({ QStringLiteral("Test dev 2") }), dir2.deviceNames.toSet());
}
void ConnectionTests::testReconnecting()

View File

@ -195,11 +195,11 @@ void MiscTests::testSyncthingDir()
CPPUNIT_ASSERT_EQUAL(QStringLiteral("out of sync"), dir.statusString());
dir.itemErrors.clear();
dir.deviceIds.removeLast();
dir.deviceIds.clear();
CPPUNIT_ASSERT(dir.assignStatus(QStringLiteral("idle"), updateTime += TimeSpan::fromMinutes(1.5)));
CPPUNIT_ASSERT_EQUAL_MESSAGE("dir considered unshared when only one dev present", QStringLiteral("unshared"), dir.statusString());
CPPUNIT_ASSERT_EQUAL_MESSAGE("dir considered unshared when no devs present", QStringLiteral("unshared"), dir.statusString());
CPPUNIT_ASSERT(!dir.assignStatus(SyncthingDirStatus::Idle, updateTime += TimeSpan::fromMinutes(1.5)));
CPPUNIT_ASSERT_EQUAL_MESSAGE("dir considered unshared when only one dev present", QStringLiteral("unshared"), dir.statusString());
CPPUNIT_ASSERT_EQUAL_MESSAGE("dir considered unshared when no devs present", QStringLiteral("unshared"), dir.statusString());
updateTime += TimeSpan::fromMinutes(1.5);
CPPUNIT_ASSERT_MESSAGE("same status again not considered an update", !dir.assignStatus(QStringLiteral("idle"), updateTime));

View File

@ -85,22 +85,22 @@
<translation>Das SSL-Zertifikat von Syncthing kann nicht ausgelesen werden.</translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="888"/>
<location filename="../syncthingconnection.cpp" line="884"/>
<source>Unable to parse Syncthing config: </source>
<translation>Fehler beim Auslesen der Syncthing-Konfiguration: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="895"/>
<location filename="../syncthingconnection.cpp" line="891"/>
<source>Unable to request Syncthing config: </source>
<translation>Fehler beim Abfragen der Syncthing-Konfiguration: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1005"/>
<location filename="../syncthingconnection.cpp" line="986"/>
<source>Unable to parse Syncthing status: </source>
<translation>Fehler beim Auslesen des Syncthing-Status: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1012"/>
<location filename="../syncthingconnection.cpp" line="993"/>
<source>Unable to request Syncthing status: </source>
<translation>Fehler beim Abfragen des Syncthing-Status: </translation>
</message>
@ -160,27 +160,27 @@
<translation>Fehler beim Abfragen der Syncthing-Ereignisse: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1636"/>
<location filename="../syncthingconnection.cpp" line="1633"/>
<source>Unable to request rescan: </source>
<translation>Fehler beim Anfordern eines Verzeichnis-Rescans: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1660"/>
<location filename="../syncthingconnection.cpp" line="1657"/>
<source>Unable to request device pause/resume: </source>
<translation>Fehler beim Anfordern Gerät zu Pausieren/Fortzusetzen: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1681"/>
<location filename="../syncthingconnection.cpp" line="1678"/>
<source>Unable to request directory pause/resume: </source>
<translation>Fehler beim Anfordern Verzeichnis zu Pausieren/Fortzusetzen: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1697"/>
<location filename="../syncthingconnection.cpp" line="1694"/>
<source>Unable to request restart: </source>
<translation>Fehler beim Anfordern eines Neustarts: </translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1713"/>
<location filename="../syncthingconnection.cpp" line="1710"/>
<source>Unable to request shutdown: </source>
<translation>Fehler beim Anfordern Syncthing zu beenden: </translation>
</message>
@ -270,7 +270,7 @@
<context>
<name>SyncthingDir</name>
<message>
<location filename="../syncthingdir.cpp" line="117"/>
<location filename="../syncthingdir.cpp" line="116"/>
<source>paused</source>
<translation>pausiert</translation>
</message>

View File

@ -85,22 +85,22 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="888"/>
<location filename="../syncthingconnection.cpp" line="884"/>
<source>Unable to parse Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="895"/>
<location filename="../syncthingconnection.cpp" line="891"/>
<source>Unable to request Syncthing config: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1005"/>
<location filename="../syncthingconnection.cpp" line="986"/>
<source>Unable to parse Syncthing status: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1012"/>
<location filename="../syncthingconnection.cpp" line="993"/>
<source>Unable to request Syncthing status: </source>
<translation type="unfinished"></translation>
</message>
@ -160,27 +160,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1636"/>
<location filename="../syncthingconnection.cpp" line="1633"/>
<source>Unable to request rescan: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1660"/>
<location filename="../syncthingconnection.cpp" line="1657"/>
<source>Unable to request device pause/resume: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1681"/>
<location filename="../syncthingconnection.cpp" line="1678"/>
<source>Unable to request directory pause/resume: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1697"/>
<location filename="../syncthingconnection.cpp" line="1694"/>
<source>Unable to request restart: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingconnection.cpp" line="1713"/>
<location filename="../syncthingconnection.cpp" line="1710"/>
<source>Unable to request shutdown: </source>
<translation type="unfinished"></translation>
</message>
@ -270,7 +270,7 @@
<context>
<name>SyncthingDir</name>
<message>
<location filename="../syncthingdir.cpp" line="117"/>
<location filename="../syncthingdir.cpp" line="116"/>
<source>paused</source>
<translation type="unfinished"></translation>
</message>

View File

@ -109,7 +109,13 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
case 1:
return dir.path;
case 2:
return (dir.deviceNames.isEmpty() ? dir.deviceIds : dir.deviceNames).join(QStringLiteral(", "));
if (!dir.deviceNames.isEmpty()) {
return dir.deviceNames.join(QStringLiteral(", "));
} else if (!dir.deviceIds.isEmpty()) {
return dir.deviceIds.join(QStringLiteral(", "));
} else {
return tr("not shared");
}
case 3:
return dir.readOnly ? tr("yes") : tr("no");
case 4:
@ -144,6 +150,11 @@ QVariant SyncthingDirectoryModel::data(const QModelIndex &index, int role) const
case 1:
const SyncthingDir &dir = m_dirs[static_cast<size_t>(index.parent().row())];
switch (index.row()) {
case 2:
if (dir.deviceIds.isEmpty()) {
return Colors::gray(m_brightColors);
}
break;
case 5:
if (dir.lastScanTime.isNull()) {
return Colors::gray(m_brightColors);

View File

@ -153,23 +153,28 @@
<translation>Fehler</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="114"/>
<location filename="../syncthingdirectorymodel.cpp" line="117"/>
<source>not shared</source>
<translation>nicht geteilt</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<source>yes</source>
<translation>ja</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="114"/>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<source>no</source>
<translation>nein</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<location filename="../syncthingdirectorymodel.cpp" line="123"/>
<location filename="../syncthingdirectorymodel.cpp" line="126"/>
<location filename="../syncthingdirectorymodel.cpp" line="129"/>
<source>unknown</source>
<translation>unbekannt</translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="132"/>
<location filename="../syncthingdirectorymodel.cpp" line="138"/>
<source>%1 and %2 item(s) out of sync</source>
<translation>
<numerusform>&quot;%1&quot; und %2 Element nicht synchronisiert</numerusform>
@ -177,12 +182,12 @@
</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="136"/>
<location filename="../syncthingdirectorymodel.cpp" line="142"/>
<source>none</source>
<translation>keine</translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="130"/>
<location filename="../syncthingdirectorymodel.cpp" line="136"/>
<source>%1 item(s) out of sync</source>
<translation>
<numerusform>%1 Element nicht synchronisiert</numerusform>
@ -190,37 +195,37 @@
</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="180"/>
<location filename="../syncthingdirectorymodel.cpp" line="191"/>
<source>Deleted at %1</source>
<translation>Gelöscht am %1</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="183"/>
<location filename="../syncthingdirectorymodel.cpp" line="194"/>
<source>Updated at %1</source>
<translation>Aktualisiert am %1</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="196"/>
<location filename="../syncthingdirectorymodel.cpp" line="207"/>
<source>Click for details</source>
<translation>Für details klicken</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="195"/>
<location filename="../syncthingdirectorymodel.cpp" line="206"/>
<source>Failed items</source>
<translation>Fehlgeschlagene Elemente</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="218"/>
<location filename="../syncthingdirectorymodel.cpp" line="229"/>
<source>Unknown status</source>
<translation>Unbekannter Status</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="222"/>
<location filename="../syncthingdirectorymodel.cpp" line="233"/>
<source>Idle</source>
<translation>Leerlauf</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="220"/>
<location filename="../syncthingdirectorymodel.cpp" line="231"/>
<source>Unshared</source>
<translation>Nicht geteilt</translation>
</message>
@ -230,32 +235,32 @@
<translation>Geteilt mit</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="224"/>
<location filename="../syncthingdirectorymodel.cpp" line="235"/>
<source>Scanning (%1 %)</source>
<translation>Scannen (%1 %)</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="224"/>
<location filename="../syncthingdirectorymodel.cpp" line="235"/>
<source>Scanning</source>
<translation>Scannen</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="226"/>
<location filename="../syncthingdirectorymodel.cpp" line="237"/>
<source>Synchronizing (%1 %)</source>
<translation>Synchronisieren (%1 %)</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="226"/>
<location filename="../syncthingdirectorymodel.cpp" line="237"/>
<source>Synchronizing</source>
<translation>Synchronisieren</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="214"/>
<location filename="../syncthingdirectorymodel.cpp" line="225"/>
<source>Paused</source>
<translation>Pausiert</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="228"/>
<location filename="../syncthingdirectorymodel.cpp" line="239"/>
<source>Out of sync</source>
<translation>Nicht synchronisiert</translation>
</message>

View File

@ -149,28 +149,28 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="114"/>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="114"/>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="120"/>
<location filename="../syncthingdirectorymodel.cpp" line="123"/>
<location filename="../syncthingdirectorymodel.cpp" line="126"/>
<location filename="../syncthingdirectorymodel.cpp" line="129"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="136"/>
<location filename="../syncthingdirectorymodel.cpp" line="142"/>
<source>none</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="130"/>
<location filename="../syncthingdirectorymodel.cpp" line="136"/>
<source>%1 item(s) out of sync</source>
<translation>
<numerusform>%1 item out of sync</numerusform>
@ -182,8 +182,13 @@
<source>Shared with</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="117"/>
<source>not shared</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../syncthingdirectorymodel.cpp" line="132"/>
<location filename="../syncthingdirectorymodel.cpp" line="138"/>
<source>%1 and %2 item(s) out of sync</source>
<translation>
<numerusform>%1 and %2 item out of sync</numerusform>
@ -191,67 +196,67 @@
</translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="180"/>
<location filename="../syncthingdirectorymodel.cpp" line="191"/>
<source>Deleted at %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="183"/>
<location filename="../syncthingdirectorymodel.cpp" line="194"/>
<source>Updated at %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="195"/>
<location filename="../syncthingdirectorymodel.cpp" line="206"/>
<source>Failed items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="196"/>
<location filename="../syncthingdirectorymodel.cpp" line="207"/>
<source>Click for details</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="214"/>
<location filename="../syncthingdirectorymodel.cpp" line="225"/>
<source>Paused</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="218"/>
<location filename="../syncthingdirectorymodel.cpp" line="229"/>
<source>Unknown status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="220"/>
<location filename="../syncthingdirectorymodel.cpp" line="231"/>
<source>Unshared</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="222"/>
<location filename="../syncthingdirectorymodel.cpp" line="233"/>
<source>Idle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="224"/>
<location filename="../syncthingdirectorymodel.cpp" line="235"/>
<source>Scanning (%1 %)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="224"/>
<location filename="../syncthingdirectorymodel.cpp" line="235"/>
<source>Scanning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="226"/>
<location filename="../syncthingdirectorymodel.cpp" line="237"/>
<source>Synchronizing (%1 %)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="226"/>
<location filename="../syncthingdirectorymodel.cpp" line="237"/>
<source>Synchronizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../syncthingdirectorymodel.cpp" line="228"/>
<location filename="../syncthingdirectorymodel.cpp" line="239"/>
<source>Out of sync</source>
<translation type="unfinished"></translation>
</message>