Support pause/resume directories in CLI
This commit is contained in:
parent
5101872532
commit
189a985e23
|
@ -59,10 +59,12 @@ Application::Application() :
|
|||
m_args.restart.setCallback(bind(&Application::requestRestart, this, _1));
|
||||
m_args.rescan.setCallback(bind(&Application::requestRescan, this, _1));
|
||||
m_args.rescanAll.setCallback(bind(&Application::requestRescanAll, this, _1));
|
||||
m_args.pause.setCallback(bind(&Application::requestPause, this, _1));
|
||||
m_args.pauseAll.setCallback(bind(&Application::requestPauseAll, this, _1));
|
||||
m_args.resume.setCallback(bind(&Application::requestResume, this, _1));
|
||||
m_args.resumeAll.setCallback(bind(&Application::requestResumeAll, this, _1));
|
||||
m_args.pause.setCallback(bind(&Application::requestPauseResume, this, true));
|
||||
m_args.resume.setCallback(bind(&Application::requestPauseResume, this, false));
|
||||
m_args.pauseAllDevs.setCallback(bind(&Application::requestPauseAllDevs, this, _1));
|
||||
m_args.pauseAllDirs.setCallback(bind(&Application::requestPauseAllDirs, this, _1));
|
||||
m_args.resumeAllDevs.setCallback(bind(&Application::requestResumeAllDevs, this, _1));
|
||||
m_args.resumeAllDirs.setCallback(bind(&Application::requestResumeAllDirs, this, _1));
|
||||
m_args.waitForIdle.setCallback(bind(&Application::initWaitForIdle, this, _1));
|
||||
|
||||
// connect signals and slots
|
||||
|
@ -139,7 +141,9 @@ int Application::exec(int argc, const char * const *argv)
|
|||
}
|
||||
|
||||
// finally to request / establish connection
|
||||
if(m_args.status.isPresent() || m_args.rescanAll.isPresent() || m_args.pauseAll.isPresent() || m_args.resumeAll.isPresent() || m_args.waitForIdle.isPresent()) {
|
||||
if(m_args.status.isPresent() || m_args.rescanAll.isPresent() || m_args.pauseAllDirs.isPresent() || m_args.pauseAllDevs.isPresent()
|
||||
|| m_args.resumeAllDirs.isPresent() || m_args.resumeAllDevs.isPresent() || m_args.pause.isPresent()
|
||||
|| m_args.resume.isPresent() || m_args.waitForIdle.isPresent()) {
|
||||
// those arguments rquire establishing a connection first, the actual handler is called by handleStatusChanged() when
|
||||
// the connection has been established
|
||||
m_connection.reconnect(m_settings);
|
||||
|
@ -192,6 +196,11 @@ void Application::handleError(const QString &message)
|
|||
QCoreApplication::exit(-3);
|
||||
}
|
||||
|
||||
void Application::findRelevantDirsAndDevs()
|
||||
{
|
||||
findRelevantDirsAndDevs(OperationType::Status);
|
||||
}
|
||||
|
||||
void Application::requestLog(const ArgumentOccurrence &)
|
||||
{
|
||||
m_connection.requestLog(bind(&Application::printLog, this, _1));
|
||||
|
@ -234,79 +243,126 @@ void Application::requestRescanAll(const ArgumentOccurrence &)
|
|||
m_connection.rescanAllDirs();
|
||||
}
|
||||
|
||||
void Application::requestPause(const ArgumentOccurrence &occurrence)
|
||||
void Application::requestPauseResume(bool pause)
|
||||
{
|
||||
m_expectedResponse = occurrence.values.size();
|
||||
connect(&m_connection, &SyncthingConnection::pauseTriggered, this, &Application::handleResponse);
|
||||
for(const char *value : occurrence.values) {
|
||||
cerr << "Request pausing " << value << " ...\n";
|
||||
m_connection.pauseDevice(argToQString(value));
|
||||
findRelevantDirsAndDevs(OperationType::PauseResume);
|
||||
m_expectedResponse = m_relevantDevs.size();
|
||||
if(pause) {
|
||||
connect(&m_connection, &SyncthingConnection::devicePauseTriggered, this, &Application::handleResponse);
|
||||
connect(&m_connection, &SyncthingConnection::directoryPauseTriggered, this, &Application::handleResponse);
|
||||
} else {
|
||||
connect(&m_connection, &SyncthingConnection::deviceResumeTriggered, this, &Application::handleResponse);
|
||||
connect(&m_connection, &SyncthingConnection::directoryResumeTriggered, this, &Application::handleResponse);
|
||||
}
|
||||
if(!m_relevantDirs.empty()) {
|
||||
QStringList dirIds;
|
||||
dirIds.reserve(m_relevantDirs.size());
|
||||
for(const SyncthingDir *dir : m_relevantDirs) {
|
||||
dirIds << dir->id;
|
||||
}
|
||||
if(pause) {
|
||||
cerr << "Request pausing directories ";
|
||||
} else {
|
||||
cerr << "Request resuming directories ";
|
||||
}
|
||||
cerr << dirIds.join(QStringLiteral(", ")).toLocal8Bit().data() << " ...\n";
|
||||
if(pause ? m_connection.pauseDirectories(dirIds) : m_connection.resumeDirectories(dirIds)) {
|
||||
++m_expectedResponse;
|
||||
}
|
||||
}
|
||||
for(const SyncthingDev *dev : m_relevantDevs) {
|
||||
if(pause) {
|
||||
cerr << "Request pausing device ";
|
||||
}
|
||||
cerr << dev->id.toLocal8Bit().data() << " ...\n";
|
||||
pause ? m_connection.pauseDevice(dev->id) : m_connection.resumeDevice(dev->id);
|
||||
}
|
||||
cerr.flush();
|
||||
}
|
||||
|
||||
void Application::requestPauseAll(const ArgumentOccurrence &)
|
||||
void Application::requestPauseAllDevs(const ArgumentOccurrence &)
|
||||
{
|
||||
findRelevantDirsAndDevs(OperationType::PauseResume);
|
||||
m_expectedResponse = m_connection.devInfo().size();
|
||||
connect(&m_connection, &SyncthingConnection::pauseTriggered, this, &Application::handleResponse);
|
||||
connect(&m_connection, &SyncthingConnection::devicePauseTriggered, this, &Application::handleResponse);
|
||||
cerr << "Request pausing all devices ..." << endl;
|
||||
m_connection.pauseAllDevs();
|
||||
}
|
||||
|
||||
void Application::requestResume(const ArgumentOccurrence &occurrence)
|
||||
void Application::requestPauseAllDirs(const ArgumentOccurrence &)
|
||||
{
|
||||
m_expectedResponse = occurrence.values.size();
|
||||
connect(&m_connection, &SyncthingConnection::resumeTriggered, this, &Application::handleResponse);
|
||||
for(const char *value : occurrence.values) {
|
||||
cerr << "Request resuming " << value << " ...\n";
|
||||
m_connection.resumeDevice(argToQString(value));
|
||||
}
|
||||
cerr.flush();
|
||||
m_expectedResponse = m_connection.dirInfo().size();
|
||||
connect(&m_connection, &SyncthingConnection::directoryPauseTriggered, this, &Application::handleResponse);
|
||||
cerr << "Request pausing all directories ..." << endl;
|
||||
m_connection.pauseAllDirs();
|
||||
}
|
||||
|
||||
void Application::requestResumeAll(const ArgumentOccurrence &)
|
||||
void Application::requestResumeAllDevs(const ArgumentOccurrence &)
|
||||
{
|
||||
m_expectedResponse = m_connection.devInfo().size();
|
||||
connect(&m_connection, &SyncthingConnection::resumeTriggered, this, &Application::handleResponse);
|
||||
connect(&m_connection, &SyncthingConnection::deviceResumeTriggered, this, &Application::handleResponse);
|
||||
cerr << "Request resuming all devices ..." << endl;
|
||||
m_connection.resumeAllDevs();
|
||||
}
|
||||
|
||||
void Application::findRelevantDirsAndDevs()
|
||||
void Application::requestResumeAllDirs(const ArgumentOccurrence &)
|
||||
{
|
||||
m_expectedResponse = m_connection.dirInfo().size();
|
||||
connect(&m_connection, &SyncthingConnection::deviceResumeTriggered, this, &Application::handleResponse);
|
||||
cerr << "Request resuming all directories ..." << endl;
|
||||
m_connection.resumeAllDevs();
|
||||
}
|
||||
|
||||
void Application::findRelevantDirsAndDevs(OperationType operationType)
|
||||
{
|
||||
int dummy;
|
||||
if(m_args.dir.isPresent()) {
|
||||
m_relevantDirs.reserve(m_args.dir.occurrences());
|
||||
for(size_t i = 0; i != m_args.dir.occurrences(); ++i) {
|
||||
if(const SyncthingDir *dir = m_connection.findDirInfo(argToQString(m_args.dir.values(i).front()), dummy)) {
|
||||
|
||||
Argument *dirArg, *devArg;
|
||||
switch(operationType) {
|
||||
case OperationType::Status:
|
||||
dirArg = &m_args.statusDir;
|
||||
devArg = &m_args.statusDev;
|
||||
break;
|
||||
case OperationType::PauseResume:
|
||||
dirArg = &m_args.pauseDir;
|
||||
devArg = &m_args.pauseDev;
|
||||
}
|
||||
|
||||
if(dirArg->isPresent()) {
|
||||
m_relevantDirs.reserve(dirArg->occurrences());
|
||||
for(size_t i = 0; i != dirArg->occurrences(); ++i) {
|
||||
if(const SyncthingDir *dir = m_connection.findDirInfo(argToQString(dirArg->values(i).front()), dummy)) {
|
||||
m_relevantDirs.emplace_back(dir);
|
||||
} else {
|
||||
cerr << "Warning: Specified directory \"" << m_args.dir.values(i).front() << "\" does not exist and will be ignored" << endl;
|
||||
cerr << "Warning: Specified directory \"" << dirArg->values(i).front() << "\" does not exist and will be ignored" << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(m_args.dev.isPresent()) {
|
||||
m_relevantDevs.reserve(m_args.dev.occurrences());
|
||||
for(size_t i = 0; i != m_args.dev.occurrences(); ++i) {
|
||||
const SyncthingDev *dev = m_connection.findDevInfo(argToQString(m_args.dev.values(i).front()), dummy);
|
||||
if(devArg->isPresent()) {
|
||||
m_relevantDevs.reserve(devArg->occurrences());
|
||||
for(size_t i = 0; i != devArg->occurrences(); ++i) {
|
||||
const SyncthingDev *dev = m_connection.findDevInfo(argToQString(devArg->values(i).front()), dummy);
|
||||
if(!dev) {
|
||||
dev = m_connection.findDevInfoByName(argToQString(m_args.dev.values(i).front()), dummy);
|
||||
dev = m_connection.findDevInfoByName(argToQString(devArg->values(i).front()), dummy);
|
||||
}
|
||||
if(dev) {
|
||||
m_relevantDevs.emplace_back(dev);
|
||||
} else {
|
||||
cerr << "Warning: Specified device \"" << m_args.dev.values(i).front() << "\" does not exist and will be ignored" << endl;
|
||||
cerr << "Warning: Specified device \"" << devArg->values(i).front() << "\" does not exist and will be ignored" << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(m_relevantDirs.empty() && m_relevantDevs.empty()) {
|
||||
m_relevantDirs.reserve(m_connection.dirInfo().size());
|
||||
for(const SyncthingDir &dir : m_connection.dirInfo()) {
|
||||
m_relevantDirs.emplace_back(&dir);
|
||||
}
|
||||
m_relevantDevs.reserve(m_connection.devInfo().size());
|
||||
for(const SyncthingDev &dev : m_connection.devInfo()) {
|
||||
m_relevantDevs.emplace_back(&dev);
|
||||
if(operationType == OperationType::Status) {
|
||||
// when displaying status information and no dirs/devs have been specified, just print information for all
|
||||
if(m_relevantDirs.empty() && m_relevantDevs.empty()) {
|
||||
m_relevantDirs.reserve(m_connection.dirInfo().size());
|
||||
for(const SyncthingDir &dir : m_connection.dirInfo()) {
|
||||
m_relevantDirs.emplace_back(&dir);
|
||||
}
|
||||
m_relevantDevs.reserve(m_connection.devInfo().size());
|
||||
for(const SyncthingDev &dev : m_connection.devInfo()) {
|
||||
m_relevantDevs.emplace_back(&dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -403,8 +459,8 @@ void Application::initWaitForIdle(const ArgumentOccurrence &)
|
|||
|
||||
// currently not idling
|
||||
// -> relevant dirs/devs might be invalidated so findRelevantDirsAndDevs() must invoked again
|
||||
connect(&m_connection, &SyncthingConnection::newDirs, this, &Application::findRelevantDirsAndDevs);
|
||||
connect(&m_connection, &SyncthingConnection::newDevices, this, &Application::findRelevantDirsAndDevs);
|
||||
connect(&m_connection, &SyncthingConnection::newDirs, this, static_cast<void(Application::*)(void)>(&Application::findRelevantDirsAndDevs));
|
||||
connect(&m_connection, &SyncthingConnection::newDevices, this, static_cast<void(Application::*)(void)>(&Application::findRelevantDirsAndDevs));
|
||||
// -> check for idle again when dir/dev status changed
|
||||
connect(&m_connection, &SyncthingConnection::dirStatusChanged, this, &Application::waitForIdle);
|
||||
connect(&m_connection, &SyncthingConnection::devStatusChanged, this, &Application::waitForIdle);
|
||||
|
|
|
@ -12,6 +12,12 @@
|
|||
|
||||
namespace Cli {
|
||||
|
||||
enum class OperationType
|
||||
{
|
||||
Status,
|
||||
PauseResume
|
||||
};
|
||||
|
||||
class Application : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -27,6 +33,7 @@ private slots:
|
|||
void handleResponse();
|
||||
void handleError(const QString &message);
|
||||
void findRelevantDirsAndDevs();
|
||||
void findRelevantDirsAndDevs(OperationType operationType);
|
||||
|
||||
private:
|
||||
void requestLog(const ArgumentOccurrence &);
|
||||
|
@ -34,10 +41,11 @@ private:
|
|||
void requestRestart(const ArgumentOccurrence &);
|
||||
void requestRescan(const ArgumentOccurrence &occurrence);
|
||||
void requestRescanAll(const ArgumentOccurrence &);
|
||||
void requestPause(const ArgumentOccurrence &occurrence);
|
||||
void requestPauseAll(const ArgumentOccurrence &);
|
||||
void requestResume(const ArgumentOccurrence &);
|
||||
void requestResumeAll(const ArgumentOccurrence &);
|
||||
void requestPauseResume(bool pause);
|
||||
void requestPauseAllDevs(const ArgumentOccurrence &);
|
||||
void requestPauseAllDirs(const ArgumentOccurrence &);
|
||||
void requestResumeAllDevs(const ArgumentOccurrence &);
|
||||
void requestResumeAllDirs(const ArgumentOccurrence &);
|
||||
void printStatus(const ArgumentOccurrence &);
|
||||
void printLog(const std::vector<Data::SyncthingLogEntry> &logEntries);
|
||||
void initWaitForIdle(const ArgumentOccurrence &);
|
||||
|
|
28
cli/args.cpp
28
cli/args.cpp
|
@ -11,29 +11,35 @@ Args::Args() :
|
|||
rescan("rescan", 'r', "rescans the specified directories"),
|
||||
rescanAll("rescan-all", '\0', "rescans all directories"),
|
||||
pause("pause", '\0', "pauses the specified devices"),
|
||||
pauseAll("pause-all", '\0', "pauses all devices"),
|
||||
pauseAllDevs("pause-all-devs", '\0', "pauses all devices"),
|
||||
pauseAllDirs("pause-all-dirs", '\0', "pauses all directories"),
|
||||
resume("resume", '\0', "resumes the specified devices"),
|
||||
resumeAll("resume-all", '\0', "resumes all devices"),
|
||||
resumeAllDevs("resume-all-devs", '\0', "resumes all devices"),
|
||||
resumeAllDirs("resume-all-dirs", '\0', "resumes all directories"),
|
||||
waitForIdle("wait-for-idle", 'w', "waits until the specified dirs/devs are idling"),
|
||||
dir("dir", 'd', "specifies the directory to display status info for (default is all dirs)", {"ID"}),
|
||||
dev("dev", '\0', "specifies the device to display status info for (default is all devs)", {"ID"}),
|
||||
statusDir("dir", 'd', "specifies the directoies (default is all dirs)", {"ID"}),
|
||||
statusDev("dev", '\0', "specifies the devices (default is all devs)", {"ID"}),
|
||||
pauseDir("dir", 'd', "specifies the directories", {"ID"}),
|
||||
pauseDev("dev", '\0', "specifies the devices", {"ID"}),
|
||||
configFile("config-file", 'f', "specifies the Syncthing config file", {"path"}),
|
||||
apiKey("api-key", 'k', "specifies the API key", {"key"}),
|
||||
url("url", 'u', "specifies the Syncthing URL, default is http://localhost:8080", {"URL"}),
|
||||
credentials("credentials", 'c', "specifies user name and password", {"user name", "password"}),
|
||||
certificate("cert", '\0', "specifies the certificate used by the Syncthing instance", {"path"})
|
||||
{
|
||||
dir.setConstraints(0, -1), dev.setConstraints(0, -1);
|
||||
status.setSubArguments({&dir, &dev});
|
||||
waitForIdle.setSubArguments({&dir, &dev});
|
||||
for(Argument *arg : {&statusDir, &statusDev, &pauseDev, &pauseDir}) {
|
||||
arg->setConstraints(0, -1);
|
||||
}
|
||||
status.setSubArguments({&statusDir, &statusDev});
|
||||
waitForIdle.setSubArguments({&statusDir, &statusDev});
|
||||
|
||||
rescan.setValueNames({"dir ID"});
|
||||
rescan.setRequiredValueCount(-1);
|
||||
pause.setSubArguments({&dir, &dev});
|
||||
resume.setSubArguments({&dir, &dev});
|
||||
pause.setSubArguments({&pauseDir, &pauseDev});
|
||||
resume.setSubArguments({&pauseDir, &pauseDev});
|
||||
|
||||
parser.setMainArguments({&status, &log, &stop, &restart, &rescan, &rescanAll, &pause, &pauseAll, &resume, &resumeAll,
|
||||
&waitForIdle, &configFile, &apiKey, &url, &credentials, &certificate, &help});
|
||||
parser.setMainArguments({&status, &log, &stop, &restart, &rescan, &rescanAll, &pause, &pauseAllDevs, &pauseAllDirs, &resume, &resumeAllDevs,
|
||||
&resumeAllDirs, &waitForIdle, &configFile, &apiKey, &url, &credentials, &certificate, &help});
|
||||
|
||||
// allow setting default values via environment
|
||||
configFile.setEnvironmentVariable("SYNCTHING_CTL_CONFIG_FILE");
|
||||
|
|
|
@ -12,8 +12,8 @@ struct Args
|
|||
Args();
|
||||
ArgumentParser parser;
|
||||
HelpArgument help;
|
||||
OperationArgument status, log, stop, restart, rescan, rescanAll, pause, pauseAll, resume, resumeAll, waitForIdle;
|
||||
ConfigValueArgument dir, dev;
|
||||
OperationArgument status, log, stop, restart, rescan, rescanAll, pause, pauseAllDevs, pauseAllDirs, resume, resumeAllDevs, resumeAllDirs, waitForIdle;
|
||||
ConfigValueArgument statusDir, statusDev, pauseDir, pauseDev;
|
||||
ConfigValueArgument configFile, apiKey, url, credentials, certificate;
|
||||
};
|
||||
|
||||
|
|
|
@ -292,6 +292,10 @@ void SyncthingConnection::resumeAllDevs()
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Alters the specified \a config so that the specified \a dirs are paused or not.
|
||||
* \returns Returns whether the config has been altered (all dirs might have been already paused/unpaused).
|
||||
*/
|
||||
bool setPaused(QJsonObject &config, const QStringList &dirs, bool paused)
|
||||
{
|
||||
bool altered = false;
|
||||
|
@ -320,12 +324,12 @@ bool setPaused(QJsonObject &config, const QStringList &dirs, bool paused)
|
|||
* \brief Pauses the directories with the specified IDs.
|
||||
* \remarks Calling this method when not connected results in an error because the *current* Syncthing config must
|
||||
* be available for this call.
|
||||
*
|
||||
* \returns Returns whether a request has been made.
|
||||
* The signal error() is emitted when the request was not successful.
|
||||
*/
|
||||
void SyncthingConnection::pauseDirectories(const QStringList &dirIds)
|
||||
bool SyncthingConnection::pauseDirectories(const QStringList &dirIds)
|
||||
{
|
||||
pauseResumeDirectory(dirIds, true);
|
||||
return pauseResumeDirectory(dirIds, true);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -335,9 +339,9 @@ void SyncthingConnection::pauseDirectories(const QStringList &dirIds)
|
|||
*
|
||||
* The signal error() is emitted when the request was not successful.
|
||||
*/
|
||||
void SyncthingConnection::pauseAllDirs()
|
||||
bool SyncthingConnection::pauseAllDirs()
|
||||
{
|
||||
pauseResumeDirectory(directoryIds(), true);
|
||||
return pauseResumeDirectory(directoryIds(), true);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -347,9 +351,9 @@ void SyncthingConnection::pauseAllDirs()
|
|||
*
|
||||
* The signal error() is emitted when the request was not successful.
|
||||
*/
|
||||
void SyncthingConnection::resumeDirectories(const QStringList &dirIds)
|
||||
bool SyncthingConnection::resumeDirectories(const QStringList &dirIds)
|
||||
{
|
||||
pauseResumeDirectory(dirIds, false);
|
||||
return pauseResumeDirectory(dirIds, false);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -359,9 +363,9 @@ void SyncthingConnection::resumeDirectories(const QStringList &dirIds)
|
|||
*
|
||||
* The signal error() is emitted when the request was not successful.
|
||||
*/
|
||||
void SyncthingConnection::resumeAllDirs()
|
||||
bool SyncthingConnection::resumeAllDirs()
|
||||
{
|
||||
pauseResumeDirectory(directoryIds(), false);
|
||||
return pauseResumeDirectory(directoryIds(), false);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -449,11 +453,15 @@ QNetworkReply *SyncthingConnection::postData(const QString &path, const QUrlQuer
|
|||
return reply;
|
||||
}
|
||||
|
||||
void SyncthingConnection::pauseResumeDirectory(const QStringList &dirIds, bool paused)
|
||||
/*!
|
||||
* \brief Internally used to pause/resume directories.
|
||||
* \returns Returns whether a request has been made.
|
||||
*/
|
||||
bool SyncthingConnection::pauseResumeDirectory(const QStringList &dirIds, bool paused)
|
||||
{
|
||||
if(!isConnected()) {
|
||||
emit error(tr("Unable to pause/resume a directories when not connected"), SyncthingErrorCategory::SpecificRequest, QNetworkReply::NoError);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
QJsonObject config = m_rawConfig;
|
||||
|
@ -464,7 +472,9 @@ void SyncthingConnection::pauseResumeDirectory(const QStringList &dirIds, bool p
|
|||
reply->setProperty("dirIds", dirIds);
|
||||
reply->setProperty("resume", !paused);
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, &SyncthingConnection::readDirPauseResume);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
@ -129,10 +129,10 @@ public Q_SLOTS:
|
|||
void pauseAllDevs();
|
||||
void resumeDevice(const QString &devId);
|
||||
void resumeAllDevs();
|
||||
void pauseDirectories(const QStringList &dirIds);
|
||||
void pauseAllDirs();
|
||||
void resumeDirectories(const QStringList &dirIds);
|
||||
void resumeAllDirs();
|
||||
bool pauseDirectories(const QStringList &dirIds);
|
||||
bool pauseAllDirs();
|
||||
bool resumeDirectories(const QStringList &dirIds);
|
||||
bool resumeAllDirs();
|
||||
void rescan(const QString &dirId, const QString &relpath = QString());
|
||||
void rescanAllDirs();
|
||||
void restart();
|
||||
|
@ -205,7 +205,7 @@ private:
|
|||
QNetworkRequest prepareRequest(const QString &path, const QUrlQuery &query, bool rest = true);
|
||||
QNetworkReply *requestData(const QString &path, const QUrlQuery &query, bool rest = true);
|
||||
QNetworkReply *postData(const QString &path, const QUrlQuery &query, const QByteArray &data = QByteArray());
|
||||
void pauseResumeDirectory(const QStringList &dirIds, bool paused);
|
||||
bool pauseResumeDirectory(const QStringList &dirIds, bool paused);
|
||||
SyncthingDir *addDirInfo(std::vector<SyncthingDir> &dirs, const QString &dirId);
|
||||
SyncthingDev *addDevInfo(std::vector<SyncthingDev> &devs, const QString &devId);
|
||||
|
||||
|
|
|
@ -4,158 +4,172 @@
|
|||
<context>
|
||||
<name>Data::SyncthingConnection</name>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="104"/>
|
||||
<location filename="../syncthingconnection.cpp" line="103"/>
|
||||
<source>disconnected</source>
|
||||
<translation>Verbindung getrennt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="106"/>
|
||||
<location filename="../syncthingconnection.cpp" line="105"/>
|
||||
<source>reconnecting</source>
|
||||
<translation>Verbindung wird hergestellt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="108"/>
|
||||
<location filename="../syncthingconnection.cpp" line="107"/>
|
||||
<source>connected</source>
|
||||
<translation>verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="110"/>
|
||||
<location filename="../syncthingconnection.cpp" line="109"/>
|
||||
<source>connected, paused</source>
|
||||
<translation>verbunden, pausiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="112"/>
|
||||
<location filename="../syncthingconnection.cpp" line="111"/>
|
||||
<source>connected, synchronizing</source>
|
||||
<translation>verbunden, am Synchronisieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="114"/>
|
||||
<location filename="../syncthingconnection.cpp" line="113"/>
|
||||
<source>unknown</source>
|
||||
<translation>Verbindungsstatus unbekannt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="141"/>
|
||||
<location filename="../syncthingconnection.cpp" line="228"/>
|
||||
<location filename="../syncthingconnection.cpp" line="140"/>
|
||||
<location filename="../syncthingconnection.cpp" line="227"/>
|
||||
<source>Connection configuration is insufficient.</source>
|
||||
<translation>Verbindungskonfiguration is ungenügend</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="611"/>
|
||||
<location filename="../syncthingconnection.cpp" line="463"/>
|
||||
<source>Unable to pause/resume a directories when not connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="720"/>
|
||||
<source>Unable to request QR-Code: </source>
|
||||
<translation>Fehler beim Abfragen des QR-Codes: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="640"/>
|
||||
<location filename="../syncthingconnection.cpp" line="749"/>
|
||||
<source>Unable to parse Syncthing log: </source>
|
||||
<translation>Fehler beim Auslesen des Syncthing-Logs: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="644"/>
|
||||
<location filename="../syncthingconnection.cpp" line="753"/>
|
||||
<source>Unable to request Syncthing log: </source>
|
||||
<translation>Fehler beim Abfragen des Syncthing-Logs: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="678"/>
|
||||
<location filename="../syncthingconnection.cpp" line="787"/>
|
||||
<source>Unable to locate certificate used by Syncthing.</source>
|
||||
<translation>Das SSL-Zertifikat von Syncthing kann nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="684"/>
|
||||
<location filename="../syncthingconnection.cpp" line="793"/>
|
||||
<source>Unable to load certificate used by Syncthing.</source>
|
||||
<translation>Das SSL-Zertifikat von Syncthing kann nicht ausgelesen werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="769"/>
|
||||
<location filename="../syncthingconnection.cpp" line="878"/>
|
||||
<source>Unable to parse Syncthing config: </source>
|
||||
<translation>Fehler beim Auslesen der Syncthing-Konfiguration: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="775"/>
|
||||
<location filename="../syncthingconnection.cpp" line="884"/>
|
||||
<source>Unable to request Syncthing config: </source>
|
||||
<translation>Fehler beim Abfragen der Syncthing-Konfiguration: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="875"/>
|
||||
<location filename="../syncthingconnection.cpp" line="984"/>
|
||||
<source>Unable to parse Syncthing status: </source>
|
||||
<translation>Fehler beim Auslesen des Syncthing-Status: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="881"/>
|
||||
<location filename="../syncthingconnection.cpp" line="990"/>
|
||||
<source>Unable to request Syncthing status: </source>
|
||||
<translation>Fehler beim Abfragen des Syncthing-Status: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="960"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1069"/>
|
||||
<source>Unable to parse connections: </source>
|
||||
<translation>Fehler beim Auslesen der Verbindungen: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="966"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1075"/>
|
||||
<source>Unable to request connections: </source>
|
||||
<translation>Fehler beim Abfragen der Verbindungen: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1020"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1129"/>
|
||||
<source>Unable to parse directory statistics: </source>
|
||||
<translation>Fehler beim Auslesen der Verzeichnisstatistiken: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1026"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1135"/>
|
||||
<source>Unable to request directory statistics: </source>
|
||||
<translation>Fehler beim Abfragen der Verzeichnisstatistiken: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1062"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1171"/>
|
||||
<source>Unable to parse device statistics: </source>
|
||||
<translation>Fehler beim Auslesen der Gerätestatistiken: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1068"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1177"/>
|
||||
<source>Unable to request device statistics: </source>
|
||||
<translation>Fehler beim Abfragen der Gerätestatistiken: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1106"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1215"/>
|
||||
<source>Unable to parse errors: </source>
|
||||
<translation>Fehler beim Auslesen der Syncthing-Fehlermeldungen: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1117"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1226"/>
|
||||
<source>Unable to request errors: </source>
|
||||
<translation>Fehler beim Abfragen der Syncthing-Fehlermeldungen: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1133"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1242"/>
|
||||
<source>Unable to request clearing errors: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1186"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1295"/>
|
||||
<source>Unable to parse Syncthing events: </source>
|
||||
<translation>Fehler beim Auslesen der Syncthing-Ereignisse: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1208"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1317"/>
|
||||
<source>Unable to request Syncthing events: </source>
|
||||
<translation>Fehler beim Abfragen der Syncthing-Ereignisse: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1484"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1593"/>
|
||||
<source>Unable to request rescan: </source>
|
||||
<translation>Fehler beim Anfordern eines Verzeichnis-Rescans: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1504"/>
|
||||
<source>Unable to request pause/resume: </source>
|
||||
<translation>Fehler beim Anfordern Gerät zu Pausieren/Fortzusetzen: </translation>
|
||||
<location filename="../syncthingconnection.cpp" line="1613"/>
|
||||
<source>Unable to request device pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1520"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1630"/>
|
||||
<source>Unable to request directory pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to request pause/resume: </source>
|
||||
<translation type="vanished">Fehler beim Anfordern Gerät zu Pausieren/Fortzusetzen: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1646"/>
|
||||
<source>Unable to request restart: </source>
|
||||
<translation>Fehler beim Anfordern eines Neustarts: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1536"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1662"/>
|
||||
<source>Unable to request shutdown: </source>
|
||||
<translation>Fehler beim Anfordern Syncthing zu beenden: </translation>
|
||||
</message>
|
||||
|
|
|
@ -4,158 +4,168 @@
|
|||
<context>
|
||||
<name>Data::SyncthingConnection</name>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="104"/>
|
||||
<location filename="../syncthingconnection.cpp" line="103"/>
|
||||
<source>disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="106"/>
|
||||
<location filename="../syncthingconnection.cpp" line="105"/>
|
||||
<source>reconnecting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="108"/>
|
||||
<location filename="../syncthingconnection.cpp" line="107"/>
|
||||
<source>connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="110"/>
|
||||
<location filename="../syncthingconnection.cpp" line="109"/>
|
||||
<source>connected, paused</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="112"/>
|
||||
<location filename="../syncthingconnection.cpp" line="111"/>
|
||||
<source>connected, synchronizing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="114"/>
|
||||
<location filename="../syncthingconnection.cpp" line="113"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="141"/>
|
||||
<location filename="../syncthingconnection.cpp" line="228"/>
|
||||
<location filename="../syncthingconnection.cpp" line="140"/>
|
||||
<location filename="../syncthingconnection.cpp" line="227"/>
|
||||
<source>Connection configuration is insufficient.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="611"/>
|
||||
<location filename="../syncthingconnection.cpp" line="463"/>
|
||||
<source>Unable to pause/resume a directories when not connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="720"/>
|
||||
<source>Unable to request QR-Code: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="640"/>
|
||||
<location filename="../syncthingconnection.cpp" line="749"/>
|
||||
<source>Unable to parse Syncthing log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="644"/>
|
||||
<location filename="../syncthingconnection.cpp" line="753"/>
|
||||
<source>Unable to request Syncthing log: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="678"/>
|
||||
<location filename="../syncthingconnection.cpp" line="787"/>
|
||||
<source>Unable to locate certificate used by Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="684"/>
|
||||
<location filename="../syncthingconnection.cpp" line="793"/>
|
||||
<source>Unable to load certificate used by Syncthing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="769"/>
|
||||
<location filename="../syncthingconnection.cpp" line="878"/>
|
||||
<source>Unable to parse Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="775"/>
|
||||
<location filename="../syncthingconnection.cpp" line="884"/>
|
||||
<source>Unable to request Syncthing config: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="875"/>
|
||||
<location filename="../syncthingconnection.cpp" line="984"/>
|
||||
<source>Unable to parse Syncthing status: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="881"/>
|
||||
<location filename="../syncthingconnection.cpp" line="990"/>
|
||||
<source>Unable to request Syncthing status: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="960"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1069"/>
|
||||
<source>Unable to parse connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="966"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1075"/>
|
||||
<source>Unable to request connections: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1020"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1129"/>
|
||||
<source>Unable to parse directory statistics: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1026"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1135"/>
|
||||
<source>Unable to request directory statistics: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1062"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1171"/>
|
||||
<source>Unable to parse device statistics: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1068"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1177"/>
|
||||
<source>Unable to request device statistics: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1106"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1215"/>
|
||||
<source>Unable to parse errors: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1117"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1226"/>
|
||||
<source>Unable to request errors: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1133"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1242"/>
|
||||
<source>Unable to request clearing errors: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1186"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1295"/>
|
||||
<source>Unable to parse Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1208"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1317"/>
|
||||
<source>Unable to request Syncthing events: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1484"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1593"/>
|
||||
<source>Unable to request rescan: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1504"/>
|
||||
<source>Unable to request pause/resume: </source>
|
||||
<location filename="../syncthingconnection.cpp" line="1613"/>
|
||||
<source>Unable to request device pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1520"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1630"/>
|
||||
<source>Unable to request directory pause/resume: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1646"/>
|
||||
<source>Unable to request restart: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../syncthingconnection.cpp" line="1536"/>
|
||||
<location filename="../syncthingconnection.cpp" line="1662"/>
|
||||
<source>Unable to request shutdown: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -309,22 +309,22 @@
|
|||
<context>
|
||||
<name>QtGui::DirView</name>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="51"/>
|
||||
<location filename="../gui/dirview.cpp" line="53"/>
|
||||
<source>Errors of %1</source>
|
||||
<translation>Fehler von %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="68"/>
|
||||
<location filename="../gui/dirview.cpp" line="70"/>
|
||||
<source>Copy value</source>
|
||||
<translation>Wert kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="70"/>
|
||||
<location filename="../gui/dirview.cpp" line="72"/>
|
||||
<source>Copy label/ID</source>
|
||||
<translation>Namen/ID kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="71"/>
|
||||
<location filename="../gui/dirview.cpp" line="73"/>
|
||||
<source>Copy path</source>
|
||||
<translation>Pfad kopieren</translation>
|
||||
</message>
|
||||
|
@ -729,19 +729,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="182"/>
|
||||
<location filename="../gui/traywidget.cpp" line="183"/>
|
||||
<source>About</source>
|
||||
<translation>Über Syncthing Tray</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="320"/>
|
||||
<location filename="../gui/traywidget.cpp" line="321"/>
|
||||
<source>Connect</source>
|
||||
<translation>Verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="113"/>
|
||||
<location filename="../gui/traywidget.cpp" line="523"/>
|
||||
<location filename="../gui/traywidget.cpp" line="533"/>
|
||||
<source>Start</source>
|
||||
<translation>Starten</translation>
|
||||
</message>
|
||||
|
@ -773,7 +773,7 @@
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="250"/>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<location filename="../gui/traywidget.cpp" line="491"/>
|
||||
<source>unknown</source>
|
||||
<translation>unbekannt</translation>
|
||||
</message>
|
||||
|
@ -797,7 +797,7 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="311"/>
|
||||
<location filename="../gui/traywidget.cpp" line="112"/>
|
||||
<location filename="../gui/traywidget.cpp" line="266"/>
|
||||
<location filename="../gui/traywidget.cpp" line="267"/>
|
||||
<source>New notifications</source>
|
||||
<translation>Neue Benachrichtigungen</translation>
|
||||
</message>
|
||||
|
@ -852,67 +852,67 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation>Verbindung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="212"/>
|
||||
<location filename="../gui/traywidget.cpp" line="213"/>
|
||||
<source>Own device ID</source>
|
||||
<translation>Eigene Geräte-ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="222"/>
|
||||
<location filename="../gui/traywidget.cpp" line="223"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation>die Geräte-ID ist unbekannt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="230"/>
|
||||
<location filename="../gui/traywidget.cpp" line="231"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation>in Zwischenablage kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="247"/>
|
||||
<location filename="../gui/traywidget.cpp" line="248"/>
|
||||
<source>Log</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="296"/>
|
||||
<location filename="../gui/traywidget.cpp" line="297"/>
|
||||
<source>Do you really want to restart Syncthing?</source>
|
||||
<translation>Soll Syncthing wirklich neu gestartet werden?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="321"/>
|
||||
<location filename="../gui/traywidget.cpp" line="322"/>
|
||||
<source>Not connected to Syncthing, click to connect</source>
|
||||
<translation>Verbindung zu Syncthing getrennt, klicke um zu verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="332"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<source>Pause</source>
|
||||
<translation>Pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<location filename="../gui/traywidget.cpp" line="334"/>
|
||||
<source>Syncthing is running, click to pause all devices</source>
|
||||
<translation>Syncthing läuft, klicke um alle Geräte zu pausieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="338"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<source>Continue</source>
|
||||
<translation>Fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="340"/>
|
||||
<source>At least one device is paused, click to resume</source>
|
||||
<translation>Mind. ein Gerät ist pausiert, klicke um fortzusetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="428"/>
|
||||
<location filename="../gui/traywidget.cpp" line="429"/>
|
||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation>Das Verzeichnis <i>%i</i> existiert nicht (lokal).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="437"/>
|
||||
<location filename="../gui/traywidget.cpp" line="438"/>
|
||||
<source>The file <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation>Die Datei <i>%1</i> existiert nicht (lokal).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="519"/>
|
||||
<location filename="../gui/traywidget.cpp" line="529"/>
|
||||
<source>Stop</source>
|
||||
<translation>Stoppen</translation>
|
||||
</message>
|
||||
|
|
|
@ -309,22 +309,22 @@
|
|||
<context>
|
||||
<name>QtGui::DirView</name>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="51"/>
|
||||
<location filename="../gui/dirview.cpp" line="53"/>
|
||||
<source>Errors of %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="68"/>
|
||||
<location filename="../gui/dirview.cpp" line="70"/>
|
||||
<source>Copy value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="70"/>
|
||||
<location filename="../gui/dirview.cpp" line="72"/>
|
||||
<source>Copy label/ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/dirview.cpp" line="71"/>
|
||||
<location filename="../gui/dirview.cpp" line="73"/>
|
||||
<source>Copy path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -726,19 +726,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="72"/>
|
||||
<location filename="../gui/traywidget.cpp" line="182"/>
|
||||
<location filename="../gui/traywidget.cpp" line="183"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="99"/>
|
||||
<location filename="../gui/traywidget.cpp" line="320"/>
|
||||
<location filename="../gui/traywidget.cpp" line="321"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="113"/>
|
||||
<location filename="../gui/traywidget.cpp" line="523"/>
|
||||
<location filename="../gui/traywidget.cpp" line="533"/>
|
||||
<source>Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -770,7 +770,7 @@
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="250"/>
|
||||
<location filename="../gui/traywidget.ui" line="270"/>
|
||||
<location filename="../gui/traywidget.cpp" line="481"/>
|
||||
<location filename="../gui/traywidget.cpp" line="491"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -793,7 +793,7 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<message>
|
||||
<location filename="../gui/traywidget.ui" line="311"/>
|
||||
<location filename="../gui/traywidget.cpp" line="112"/>
|
||||
<location filename="../gui/traywidget.cpp" line="266"/>
|
||||
<location filename="../gui/traywidget.cpp" line="267"/>
|
||||
<source>New notifications</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -848,67 +848,67 @@ For <i>all</i> notifications, checkout the log</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="212"/>
|
||||
<location filename="../gui/traywidget.cpp" line="213"/>
|
||||
<source>Own device ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="222"/>
|
||||
<location filename="../gui/traywidget.cpp" line="223"/>
|
||||
<source>device ID is unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="230"/>
|
||||
<location filename="../gui/traywidget.cpp" line="231"/>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="247"/>
|
||||
<location filename="../gui/traywidget.cpp" line="248"/>
|
||||
<source>Log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="296"/>
|
||||
<location filename="../gui/traywidget.cpp" line="297"/>
|
||||
<source>Do you really want to restart Syncthing?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="321"/>
|
||||
<location filename="../gui/traywidget.cpp" line="322"/>
|
||||
<source>Not connected to Syncthing, click to connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="332"/>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="333"/>
|
||||
<location filename="../gui/traywidget.cpp" line="334"/>
|
||||
<source>Syncthing is running, click to pause all devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="338"/>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="339"/>
|
||||
<location filename="../gui/traywidget.cpp" line="340"/>
|
||||
<source>At least one device is paused, click to resume</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="428"/>
|
||||
<location filename="../gui/traywidget.cpp" line="429"/>
|
||||
<source>The directory <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="437"/>
|
||||
<location filename="../gui/traywidget.cpp" line="438"/>
|
||||
<source>The file <i>%1</i> does not exist on the local machine.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/traywidget.cpp" line="519"/>
|
||||
<location filename="../gui/traywidget.cpp" line="529"/>
|
||||
<source>Stop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in New Issue