By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, "
"Olivier Goffart, Markus Götz and others.
"
- "
Copyright ownCloud, Inc.
"
+ "
Copyright ownCloud GmbH
"
"
Licensed under the GNU General Public License (GPL) Version 2.0 "
"ownCloud and the ownCloud Logo are registered trademarks of ownCloud, "
"Inc. in the United States, other countries, or both.
Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0. "
"%2 and the %2 logo are registered trademarks of %1 in the "
"United States, other countries, or both.
")
From cb19ebc9e3926be632bafc52119d7eea1c3863bb Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Wed, 17 Aug 2016 15:48:25 +0200
Subject: [PATCH 23/93] ShareLink: Ensure the password line edit is enabled
#5117
(cherry picked from commit b541fea793a1249d6833474765e2b7a6574e492c)
---
src/gui/sharelinkwidget.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp
index 86a4b1d27..d8a84f8ad 100644
--- a/src/gui/sharelinkwidget.cpp
+++ b/src/gui/sharelinkwidget.cpp
@@ -366,6 +366,7 @@ void ShareLinkWidget::slotCheckBoxShareLinkClicked()
_ui->checkBox_password->setText(tr("Public shå requires a password"));
_ui->checkBox_expire->setEnabled(false);
_ui->checkBox_editing->setEnabled(false);
+ _ui->lineEdit_password->setEnabled(true);
_ui->lineEdit_password->setFocus();
_ui->pushButton_copy->hide();
_ui->widget_shareLink->show();
@@ -432,6 +433,7 @@ void ShareLinkWidget::slotCheckBoxPasswordClicked()
_ui->lineEdit_password->show();
_ui->pushButton_setPassword->show();
_ui->lineEdit_password->setPlaceholderText(tr("Please Set Password"));
+ _ui->lineEdit_password->setEnabled(true);
_ui->lineEdit_password->setFocus();
} else {
setPassword(QString());
From 3cdcd8dea0cc5eaf62f474b51529a9ec5cf7a136 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Tue, 6 Sep 2016 11:11:03 +0200
Subject: [PATCH 24/93] Selective Sync: Fix request loop and show error in view
(#5154)
I got into a situation where the model would endlessly request the directory
contents from the server because we did not notice yet that the server
is actually in maintenance mode while we were expanding the tree view when
changing the tab to the account or when just expanding it by clicking.
(cherry picked from commit 524220d0907713408298a36df18bd04635ce5563)
---
src/gui/folderstatusmodel.cpp | 11 ++++++++++-
src/gui/folderstatusmodel.h | 1 +
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp
index 746708b15..6fab1095e 100644
--- a/src/gui/folderstatusmodel.cpp
+++ b/src/gui/folderstatusmodel.cpp
@@ -164,7 +164,8 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
switch(role) {
case Qt::DisplayRole:
if (x->_hasError) {
- return tr("Error while loading the list of folders from the server.");
+ return QVariant(tr("Error while loading the list of folders from the server.")
+ + QString("\n") + x->_lastErrorString);
} else {
return tr("Fetching folder list from server...");
}
@@ -498,6 +499,10 @@ bool FolderStatusModel::canFetchMore(const QModelIndex& parent) const
auto info = infoForIndex(parent);
if (!info || info->_fetched || info->_fetching)
return false;
+ if (info->_hasError) {
+ // Keep showing the error to the user, it will be hidden when the account reconnects
+ return false;
+ }
return true;
}
@@ -548,6 +553,7 @@ void FolderStatusModel::slotUpdateDirectories(const QStringList &list)
if (parentInfo->hasLabel()) {
beginRemoveRows(idx, 0 ,0);
+ parentInfo->_lastErrorString.clear();
parentInfo->_hasError = false;
parentInfo->_fetchingLabel = false;
endRemoveRows();
@@ -675,6 +681,9 @@ void FolderStatusModel::slotLscolFinishedWithError(QNetworkReply* r)
}
auto parentInfo = infoForIndex(idx);
if (parentInfo) {
+ qDebug() << r->errorString();
+ parentInfo->_lastErrorString = r->errorString();
+
if (r->error() == QNetworkReply::ContentNotFoundError) {
parentInfo->_fetched = true;
} else {
diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h
index f12de0227..312e978ae 100644
--- a/src/gui/folderstatusmodel.h
+++ b/src/gui/folderstatusmodel.h
@@ -63,6 +63,7 @@ public:
bool _fetched; // If we did the LSCOL for this folder already
bool _fetching; // Whether a LSCOL job is currently running
bool _hasError; // If the last fetching job ended in an error
+ QString _lastErrorString;
bool _fetchingLabel; // Whether a 'fetching in progress' label is shown.
bool _isUndecided; // undecided folders are the big folders that the user has not accepted yet
From 4abaee7736bb2ecdbe2d5c357120910130dcf4a3 Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Tue, 6 Sep 2016 10:42:59 +0200
Subject: [PATCH 25/93] Recall: Copy instead of move recalled file #5150
That was an unintentional change in
2662203fb7277d5d1a57cef556279f8cd3b974f5
Also expand the test case to cover this.
(cherry picked from commit af9c4d0e2fe1a42e1faf14779ca5ef1088bd1314)
---
csync/tests/ownCloud/t_recall.pl | 4 ++++
src/libsync/propagatedownload.cpp | 5 +++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/csync/tests/ownCloud/t_recall.pl b/csync/tests/ownCloud/t_recall.pl
index 008cad8fd..244618cf8 100755
--- a/csync/tests/ownCloud/t_recall.pl
+++ b/csync/tests/ownCloud/t_recall.pl
@@ -64,6 +64,10 @@ csync();
assert( -e glob(localDir().'dir/file2_.sys.admin#recall#-*.dat' ) );
assert( -e glob(localDir().'dir/file3_.sys.admin#recall#-*.dat' ) );
+# verify that the original files still exist
+assert( -e glob(localDir().'dir/file2.dat' ) );
+assert( -e glob(localDir().'dir/file3.dat' ) );
+
#Remove the recall file
unlink(localDir() . ".sys.admin#recall#");
diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp
index 306788388..27a214d75 100644
--- a/src/libsync/propagatedownload.cpp
+++ b/src/libsync/propagatedownload.cpp
@@ -638,8 +638,9 @@ static void handleRecallFile(const QString &fn)
QString rpath = makeRecallFileName(fpath);
qDebug() << "Copy recall file: " << fpath << " -> " << rpath;
- QString error;
- FileSystem::uncheckedRenameReplace(fpath, rpath, &error);
+ // Remove the target first, QFile::copy will not overwrite it.
+ FileSystem::remove(rpath);
+ QFile::copy(fpath, rpath);
}
}
From 65c49e1de6b5810136753cf359eefe7ccd49dc0e Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 14 Jul 2016 09:21:28 +0200
Subject: [PATCH 26/93] CleanupPollsJob: Fix possible leak
Missing deleteLater when the CleanupPollsJob aborts.
This is only a problem if the SyncEngine is kept alive a long time. Which is
usually not the case in the configuration where poll jobs are used.
(cherry picked from commit 34650248985914523f0684c597f0c366b703f8d7)
---
src/libsync/owncloudpropagator.cpp | 2 ++
src/libsync/owncloudpropagator.h | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp
index dce440391..72046fccf 100644
--- a/src/libsync/owncloudpropagator.cpp
+++ b/src/libsync/owncloudpropagator.cpp
@@ -762,6 +762,7 @@ void CleanupPollsJob::slotPollFinished()
Q_ASSERT(job);
if (job->_item->_status == SyncFileItem::FatalError) {
emit aborted(job->_item->_errorString);
+ deleteLater();
return;
} else if (job->_item->_status != SyncFileItem::Success) {
qDebug() << "There was an error with file " << job->_item->_file << job->_item->_errorString;
@@ -771,6 +772,7 @@ void CleanupPollsJob::slotPollFinished()
job->_item->_status = SyncFileItem::FatalError;
job->_item->_errorString = tr("Error writing metadata to the database");
emit aborted(job->_item->_errorString);
+ deleteLater();
return;
}
}
diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h
index 7c0a03a2b..8e2ce89c3 100644
--- a/src/libsync/owncloudpropagator.h
+++ b/src/libsync/owncloudpropagator.h
@@ -410,6 +410,10 @@ public:
~CleanupPollsJob();
+ /**
+ * Start the job. After the job is completed, it will emit either finished or aborted, and it
+ * will destroy itself.
+ */
void start();
signals:
void finished();
From 1040e7b57b2355b75882d48e2179fa612653857b Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Sat, 10 Sep 2016 17:08:52 +0200
Subject: [PATCH 27/93] ExcludeFiles: Fix when the folder casing is not the
same in the settings and in the FS
If the folder has different case in the settings and in the FS, we should
not ignore all the files. This is important for the files system watcher.
(cherry picked from commit 98268d102fb343c103cbb4fb28dedd390f3c9ecf)
---
src/libsync/excludedfiles.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/libsync/excludedfiles.cpp b/src/libsync/excludedfiles.cpp
index b2839d05d..6af6d8a00 100644
--- a/src/libsync/excludedfiles.cpp
+++ b/src/libsync/excludedfiles.cpp
@@ -12,6 +12,7 @@
*/
#include "excludedfiles.h"
+#include "utility.h"
#include
@@ -63,7 +64,7 @@ bool ExcludedFiles::isExcluded(
const QString& basePath,
bool excludeHidden) const
{
- if (!filePath.startsWith(basePath)) {
+ if (!filePath.startsWith(basePath, Utility::fsCasePreserving() ? Qt::CaseInsensitive : Qt::CaseSensitive)) {
// Mark paths we're not responsible for as excluded...
return true;
}
From 5ffaf3a90f85e0295e1c3b9269e54c37695d3bbf Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Tue, 5 Jul 2016 13:53:57 +0200
Subject: [PATCH 28/93] Set discovery thread priority to low #5017
(cherry picked from commit bd7ec196443202501d76f12db5f243e1efb7cf57)
---
src/libsync/syncengine.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp
index 85d7e9b92..a9f9701de 100644
--- a/src/libsync/syncengine.cpp
+++ b/src/libsync/syncengine.cpp
@@ -765,7 +765,11 @@ void SyncEngine::startSync()
qDebug() << "#### Discovery start #################################################### >>";
- _thread.start();
+ // Usually the discovery runs in the background: We want to avoid
+ // stealing too much time from other processes that the user might
+ // be interacting with at the time.
+ _thread.start(QThread::LowPriority);
+
_discoveryMainThread = new DiscoveryMainThread(account());
_discoveryMainThread->setParent(this);
connect(this, SIGNAL(finished(bool)), _discoveryMainThread, SLOT(deleteLater()));
From 907918dca35b2e4153963d9ab8690511c7a80710 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Mon, 12 Sep 2016 14:03:11 +0200
Subject: [PATCH 29/93] FolderWatcher: Act on relative paths #5116 (#5153)
(cherry picked from commit d5a481f13240b50ff3993184152d3d4145ebfde0)
---
src/gui/folder.cpp | 5 -----
src/gui/folder.h | 5 -----
src/gui/folderwatcher.cpp | 17 +++++++++++++----
src/gui/folderwatcher.h | 1 +
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index a4f2e25fa..738fe7f11 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -628,11 +628,6 @@ void Folder::removeFromSettings() const
settings->remove(FolderMan::escapeAlias(_definition.alias));
}
-bool Folder::isFileExcludedAbsolute(const QString& fullPath) const
-{
- return _engine->excludedFiles().isExcluded(fullPath, path(), _definition.ignoreHiddenFiles);
-}
-
bool Folder::isFileExcludedRelative(const QString& relativePath) const
{
return _engine->excludedFiles().isExcluded(path() + relativePath, path(), _definition.ignoreHiddenFiles);
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 79a27ad62..bfd4de4d7 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -183,11 +183,6 @@ public:
/// Removes the folder from the account's settings.
void removeFromSettings() const;
- /**
- * Returns whether a file inside this folder should be excluded.
- */
- bool isFileExcludedAbsolute(const QString& fullPath) const;
-
/**
* Returns whether a file inside this folder should be excluded.
*/
diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp
index 30809c82f..c115611bb 100644
--- a/src/gui/folderwatcher.cpp
+++ b/src/gui/folderwatcher.cpp
@@ -41,7 +41,9 @@ FolderWatcher::FolderWatcher(const QString &root, Folder* folder)
: QObject(folder),
_folder(folder)
{
- _d.reset(new FolderWatcherPrivate(this, root));
+ _canonicalFolderPath = QFileInfo(root).canonicalFilePath();
+
+ _d.reset(new FolderWatcherPrivate(this, _canonicalFolderPath));
_timer.start();
}
@@ -55,10 +57,17 @@ bool FolderWatcher::pathIsIgnored( const QString& path )
if( !_folder ) return false;
#ifndef OWNCLOUD_TEST
- if (_folder->isFileExcludedAbsolute(path)) {
- qDebug() << "* Ignoring file" << path;
- return true;
+ QString relPath = path;
+ if (relPath.startsWith(_canonicalFolderPath)) {
+ relPath = relPath.remove(0, _canonicalFolderPath.length()+1);
+ if (_folder->isFileExcludedRelative(relPath)) {
+ qDebug() << "* Ignoring file" << relPath << "in" << _canonicalFolderPath;
+ return true;
+ }
}
+ // there could be an odd watch event not being inside the _canonicalFolderPath
+ // We will just not ignore it then, who knows.
+
#endif
return false;
}
diff --git a/src/gui/folderwatcher.h b/src/gui/folderwatcher.h
index 15fe223a4..9b0d17471 100644
--- a/src/gui/folderwatcher.h
+++ b/src/gui/folderwatcher.h
@@ -89,6 +89,7 @@ private:
QTime _timer;
QSet _lastPaths;
Folder* _folder;
+ QString _canonicalFolderPath;
friend class FolderWatcherPrivate;
};
From 2d110540ee5a67d2c014fcf4258840d3aaf538ac Mon Sep 17 00:00:00 2001
From: Klaas Freitag
Date: Mon, 12 Sep 2016 14:12:33 +0200
Subject: [PATCH 30/93] Dolphin Plugin: Use the Application name for the socket
path (#5172)
do not hardcode.
This should fix #5165
---
shell_integration/dolphin/ownclouddolphinpluginhelper.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
index 027e0e68e..68c2a9c29 100644
--- a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
+++ b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
@@ -21,6 +21,7 @@
#include
#include
#include "ownclouddolphinpluginhelper.h"
+#include "config.h"
OwncloudDolphinPluginHelper* OwncloudDolphinPluginHelper::instance()
{
@@ -67,7 +68,10 @@ void OwncloudDolphinPluginHelper::tryConnect()
return;
}
QString runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
- QString socketPath = runtimeDir + QLatin1String("/ownCloud/socket");
+ runtimeDir.append( QChar('/'));
+ runtimeDir.append( QLatin1String(APPLICATION_SHORTNAME) );
+
+ const QString socketPath = runtimeDir + QLatin1String("/socket");
_socket.connectToServer(socketPath);
}
From 7fd00b2cd529ff0cdbf69acda7f0566e78c762cf Mon Sep 17 00:00:00 2001
From: Piotr M
Date: Mon, 12 Sep 2016 13:20:19 +0200
Subject: [PATCH 31/93] add server capabilities to owncloudcmd
---
src/cmd/cmd.cpp | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp
index fcfea2c7e..715f293bb 100644
--- a/src/cmd/cmd.cpp
+++ b/src/cmd/cmd.cpp
@@ -29,6 +29,7 @@
#include "syncengine.h"
#include "syncjournaldb.h"
#include "config.h"
+#include "connectionvalidator.h"
#include "cmd.h"
@@ -68,6 +69,8 @@ struct CmdOptions {
// So we have to use a global variable
CmdOptions *opts = 0;
+const qint64 timeoutToUseMsec = qMax(1000, ConnectionValidator::DefaultCallingIntervalMsec - 5*1000);
+
class EchoDisabler
{
public:
@@ -388,6 +391,23 @@ int main(int argc, char **argv) {
account->setCredentials(cred);
account->setSslErrorHandler(sslErrorHandler);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+ //obtain capabilities using event loop
+ QEventLoop loop;
+
+ JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
+ job->setTimeout(timeoutToUseMsec);
+ QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QVariantMap &json) {
+ auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities");
+ qDebug() << "Server capabilities" << caps;
+ account->setCapabilities(caps.toMap());
+ loop.quit();
+ });
+ job->start();
+
+ loop.exec();
+#endif
+
// much lower age than the default since this utility is usually made to be run right after a change in the tests
SyncEngine::minimumFileAgeForUpload = 0;
From 904cd46f757bf329b719bd815394ff986be99aaf Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Mon, 12 Sep 2016 15:02:54 +0200
Subject: [PATCH 32/93] Revert "FolderWatcher: Act on relative paths #5116
(#5153)"
This is not sufficient as it is not working for the Socket API.
Next commit will fix it in another layer.
Also, not ignoring paths that are not inside the folder is wrong
as it might still happen if the name has a different casing
This reverts commit d5a481f13240b50ff3993184152d3d4145ebfde0.
---
src/gui/folder.cpp | 5 +++++
src/gui/folder.h | 5 +++++
src/gui/folderwatcher.cpp | 17 ++++-------------
src/gui/folderwatcher.h | 1 -
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 532c38de5..f94ba71b4 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -621,6 +621,11 @@ void Folder::removeFromSettings() const
settings->remove(FolderMan::escapeAlias(_definition.alias));
}
+bool Folder::isFileExcludedAbsolute(const QString& fullPath) const
+{
+ return _engine->excludedFiles().isExcluded(fullPath, path(), _definition.ignoreHiddenFiles);
+}
+
bool Folder::isFileExcludedRelative(const QString& relativePath) const
{
return _engine->excludedFiles().isExcluded(path() + relativePath, path(), _definition.ignoreHiddenFiles);
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 762ea52b1..40ff6deb1 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -184,6 +184,11 @@ public:
/// Removes the folder from the account's settings.
void removeFromSettings() const;
+ /**
+ * Returns whether a file inside this folder should be excluded.
+ */
+ bool isFileExcludedAbsolute(const QString& fullPath) const;
+
/**
* Returns whether a file inside this folder should be excluded.
*/
diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp
index c115611bb..30809c82f 100644
--- a/src/gui/folderwatcher.cpp
+++ b/src/gui/folderwatcher.cpp
@@ -41,9 +41,7 @@ FolderWatcher::FolderWatcher(const QString &root, Folder* folder)
: QObject(folder),
_folder(folder)
{
- _canonicalFolderPath = QFileInfo(root).canonicalFilePath();
-
- _d.reset(new FolderWatcherPrivate(this, _canonicalFolderPath));
+ _d.reset(new FolderWatcherPrivate(this, root));
_timer.start();
}
@@ -57,17 +55,10 @@ bool FolderWatcher::pathIsIgnored( const QString& path )
if( !_folder ) return false;
#ifndef OWNCLOUD_TEST
- QString relPath = path;
- if (relPath.startsWith(_canonicalFolderPath)) {
- relPath = relPath.remove(0, _canonicalFolderPath.length()+1);
- if (_folder->isFileExcludedRelative(relPath)) {
- qDebug() << "* Ignoring file" << relPath << "in" << _canonicalFolderPath;
- return true;
- }
+ if (_folder->isFileExcludedAbsolute(path)) {
+ qDebug() << "* Ignoring file" << path;
+ return true;
}
- // there could be an odd watch event not being inside the _canonicalFolderPath
- // We will just not ignore it then, who knows.
-
#endif
return false;
}
diff --git a/src/gui/folderwatcher.h b/src/gui/folderwatcher.h
index 9b0d17471..15fe223a4 100644
--- a/src/gui/folderwatcher.h
+++ b/src/gui/folderwatcher.h
@@ -89,7 +89,6 @@ private:
QTime _timer;
QSet _lastPaths;
Folder* _folder;
- QString _canonicalFolderPath;
friend class FolderWatcherPrivate;
};
From c2cb729fee51d9d45888c6fdb781e4a1a7b28edf Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Mon, 12 Sep 2016 15:17:21 +0200
Subject: [PATCH 33/93] Folder: Cannonicalize the path
This is important because we compare the paths from the file system watcher if it
starts with this path.
Same in the SocketAPI where we need to use cannonical paths in the REGISTER_PATH command,
as the plugin themself will do this comparison.
Issue #5116
---
src/gui/folder.cpp | 13 +++++++------
src/gui/folder.h | 1 +
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index f94ba71b4..b1112e13a 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -124,6 +124,11 @@ void Folder::checkLocalPath()
{
const QFileInfo fi(_definition.localPath);
+ _canonicalLocalPath = fi.canonicalFilePath();
+ if( !_canonicalLocalPath.endsWith('/') ) {
+ _canonicalLocalPath.append('/');
+ }
+
if( fi.isDir() && fi.isReadable() ) {
qDebug() << "Checked local path ok";
} else {
@@ -161,11 +166,7 @@ QString Folder::alias() const
QString Folder::path() const
{
- QString p(_definition.localPath);
- if( ! p.endsWith('/') ) {
- p.append('/');
- }
- return p;
+ return _canonicalLocalPath;
}
QString Folder::shortGuiLocalPath() const
@@ -198,7 +199,7 @@ void Folder::setIgnoreHiddenFiles(bool ignore)
QString Folder::cleanPath()
{
- QString cleanedPath = QDir::cleanPath(_definition.localPath);
+ QString cleanedPath = QDir::cleanPath(_canonicalLocalPath);
if(cleanedPath.length() == 3 && cleanedPath.endsWith(":/"))
cleanedPath.remove(2,1);
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 40ff6deb1..f5967c9b6 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -288,6 +288,7 @@ private:
AccountStatePtr _accountState;
FolderDefinition _definition;
+ QString _canonicalLocalPath; // As returned with QFileInfo:canonicalFilePath. Always ends with "/"
SyncResult _syncResult;
QScopedPointer _engine;
From dfb121236cd198fb0b1ef2c4ed7ef78fed70f123 Mon Sep 17 00:00:00 2001
From: ckamm
Date: Tue, 13 Sep 2016 14:14:27 +0200
Subject: [PATCH 34/93] Excludes: Consider files in hidden folders excluded
#5163 (#5173)
Previously, we only checked the hiddenness of the target file and
ignored the hiddenness of the containing folders. This lead to
undesired behavior when people synced their home folders and there
was a folder watcher notification for a non-hidden file in one of
the hidden folders.
I'm not fully sure why, but sometimes notifications for .foo/bar were
already ignored, but notifications for .foo/bar/car were not. This may
be because of how we set up the FolderWatchers on Linux.
The new behavior is to check all path components for hiddenness, up
until the base path (but excluding the base path, so using a hidden
folder as a sync folder will work).
---
src/libsync/excludedfiles.cpp | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/libsync/excludedfiles.cpp b/src/libsync/excludedfiles.cpp
index e3afd1ed4..023e6da63 100644
--- a/src/libsync/excludedfiles.cpp
+++ b/src/libsync/excludedfiles.cpp
@@ -76,13 +76,22 @@ bool ExcludedFiles::isExcluded(
return true;
}
- QFileInfo fi(filePath);
if( excludeHidden ) {
- if( fi.isHidden() || fi.fileName().startsWith(QLatin1Char('.')) ) {
- return true;
+ QString path = filePath;
+ // Check all path subcomponents, but to *not* check the base path:
+ // We do want to be able to sync with a hidden folder as the target.
+ while (path.size() > basePath.size()) {
+ QFileInfo fi(path);
+ if( fi.isHidden() || fi.fileName().startsWith(QLatin1Char('.')) ) {
+ return true;
+ }
+
+ // Get the parent path
+ path = fi.absolutePath();
}
}
+ QFileInfo fi(filePath);
csync_ftw_type_e type = CSYNC_FTW_TYPE_FILE;
if (fi.isDir()) {
type = CSYNC_FTW_TYPE_DIR;
From b7809ded23fdba6aa50b6d834b5bd5fc16865eea Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Tue, 13 Sep 2016 14:34:22 +0200
Subject: [PATCH 35/93] OS X: Try to fix tray menu not updating correctly #5158
(#5177)
I even had this issue long before 2.3 that submenus suddenly disappeared.
Now we refrain from updating while visible.
---
src/gui/owncloudgui.cpp | 38 ++++++++++++++++++++++++++++++++++++--
src/gui/owncloudgui.h | 4 ++++
2 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp
index e98ae1cc6..60be57f24 100644
--- a/src/gui/owncloudgui.cpp
+++ b/src/gui/owncloudgui.cpp
@@ -56,6 +56,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_settingsDialog(new SettingsDialog(this)),
#endif
_logBrowser(0),
+ _contextMenuVisible(false),
_recentActionsMenu(0),
_qdbusmenuWorkaround(false),
_folderOpenActionMapper(new QSignalMapper(this)),
@@ -405,6 +406,21 @@ static bool minimalTrayMenu()
return !var.isEmpty();
}
+
+void ownCloudGui::slotContextMenuAboutToShow()
+{
+ // For some reason on OS X _contextMenu->isVisible returns always false
+ qDebug() << "";
+ _contextMenuVisible = true;
+}
+
+void ownCloudGui::slotContextMenuAboutToHide()
+{
+ // For some reason on OS X _contextMenu->isVisible returns always false
+ qDebug() << "";
+ _contextMenuVisible = false;
+}
+
void ownCloudGui::setupContextMenu()
{
// The tray menu is surprisingly problematic. Being able to switch to
@@ -455,7 +471,14 @@ void ownCloudGui::setupContextMenu()
// Update the context menu whenever we're about to show it
// to the user.
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54633
+#else
connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(setupContextMenu()));
+#endif
+ connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
+ connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
+
_recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
// this must be called only once after creating the context menu, or
@@ -560,8 +583,15 @@ void ownCloudGui::setupContextMenu()
void ownCloudGui::setupContextMenuIfVisible()
{
- if (_contextMenu && _contextMenu->isVisible())
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54845
+ if (!_contextMenuVisible) {
setupContextMenu();
+ }
+#else
+ if (_contextMenuVisible)
+ setupContextMenu();
+#endif
}
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)
@@ -724,9 +754,13 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const ProgressInfo&
// Update the "Recent" menu if the context menu is being shown,
// otherwise it'll be updated later, when the context menu is opened.
- if (_contextMenu && _contextMenu->isVisible()) {
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54845
+#else
+ if (_contextMenuVisible) {
slotRebuildRecentMenus();
}
+#endif
}
if (progress.isUpdatingEstimates()
diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h
index 982b4825b..682944cb5 100644
--- a/src/gui/owncloudgui.h
+++ b/src/gui/owncloudgui.h
@@ -58,6 +58,8 @@ signals:
public slots:
void setupContextMenu();
void setupContextMenuIfVisible();
+ void slotContextMenuAboutToShow();
+ void slotContextMenuAboutToHide();
void slotComputeOverallSyncStatus();
void slotShowTrayMessage(const QString &title, const QString &msg);
void slotShowOptionalTrayMessage(const QString &title, const QString &msg);
@@ -102,6 +104,8 @@ private:
QPointer_logBrowser;
// tray's menu
QScopedPointer _contextMenu;
+ bool _contextMenuVisible;
+
QMenu *_recentActionsMenu;
QVector _accountMenus;
bool _qdbusmenuWorkaround;
From b228488eb7a4631da34086b2fd211fe13a6b9be2 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Mon, 12 Sep 2016 15:02:54 +0200
Subject: [PATCH 36/93] Revert "FolderWatcher: Act on relative paths #5116
(#5153)"
This is not sufficient as it is not working for the Socket API.
Next commit will fix it in another layer.
Also, not ignoring paths that are not inside the folder is wrong
as it might still happen if the name has a different casing
This reverts commit d5a481f13240b50ff3993184152d3d4145ebfde0.
(cherry picked from commit 904cd46f757bf329b719bd815394ff986be99aaf)
---
src/gui/folder.cpp | 5 +++++
src/gui/folder.h | 5 +++++
src/gui/folderwatcher.cpp | 17 ++++-------------
src/gui/folderwatcher.h | 1 -
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 738fe7f11..a4f2e25fa 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -628,6 +628,11 @@ void Folder::removeFromSettings() const
settings->remove(FolderMan::escapeAlias(_definition.alias));
}
+bool Folder::isFileExcludedAbsolute(const QString& fullPath) const
+{
+ return _engine->excludedFiles().isExcluded(fullPath, path(), _definition.ignoreHiddenFiles);
+}
+
bool Folder::isFileExcludedRelative(const QString& relativePath) const
{
return _engine->excludedFiles().isExcluded(path() + relativePath, path(), _definition.ignoreHiddenFiles);
diff --git a/src/gui/folder.h b/src/gui/folder.h
index bfd4de4d7..79a27ad62 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -183,6 +183,11 @@ public:
/// Removes the folder from the account's settings.
void removeFromSettings() const;
+ /**
+ * Returns whether a file inside this folder should be excluded.
+ */
+ bool isFileExcludedAbsolute(const QString& fullPath) const;
+
/**
* Returns whether a file inside this folder should be excluded.
*/
diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp
index c115611bb..30809c82f 100644
--- a/src/gui/folderwatcher.cpp
+++ b/src/gui/folderwatcher.cpp
@@ -41,9 +41,7 @@ FolderWatcher::FolderWatcher(const QString &root, Folder* folder)
: QObject(folder),
_folder(folder)
{
- _canonicalFolderPath = QFileInfo(root).canonicalFilePath();
-
- _d.reset(new FolderWatcherPrivate(this, _canonicalFolderPath));
+ _d.reset(new FolderWatcherPrivate(this, root));
_timer.start();
}
@@ -57,17 +55,10 @@ bool FolderWatcher::pathIsIgnored( const QString& path )
if( !_folder ) return false;
#ifndef OWNCLOUD_TEST
- QString relPath = path;
- if (relPath.startsWith(_canonicalFolderPath)) {
- relPath = relPath.remove(0, _canonicalFolderPath.length()+1);
- if (_folder->isFileExcludedRelative(relPath)) {
- qDebug() << "* Ignoring file" << relPath << "in" << _canonicalFolderPath;
- return true;
- }
+ if (_folder->isFileExcludedAbsolute(path)) {
+ qDebug() << "* Ignoring file" << path;
+ return true;
}
- // there could be an odd watch event not being inside the _canonicalFolderPath
- // We will just not ignore it then, who knows.
-
#endif
return false;
}
diff --git a/src/gui/folderwatcher.h b/src/gui/folderwatcher.h
index 9b0d17471..15fe223a4 100644
--- a/src/gui/folderwatcher.h
+++ b/src/gui/folderwatcher.h
@@ -89,7 +89,6 @@ private:
QTime _timer;
QSet _lastPaths;
Folder* _folder;
- QString _canonicalFolderPath;
friend class FolderWatcherPrivate;
};
From 3d06f4b7c92b32f4e4a430ae5395ba224230cdbb Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Tue, 20 Sep 2016 09:12:39 +0200
Subject: [PATCH 37/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +
translations/client_ca.ts | 92 ++++++++++----------
translations/client_cs.ts | 94 ++++++++++----------
translations/client_de.ts | 94 ++++++++++----------
translations/client_el.ts | 160 +++++++++++++++++------------------
translations/client_en.ts | 90 ++++++++++----------
translations/client_es.ts | 94 ++++++++++----------
translations/client_es_AR.ts | 90 ++++++++++----------
translations/client_et.ts | 90 ++++++++++----------
translations/client_eu.ts | 92 ++++++++++----------
translations/client_fa.ts | 90 ++++++++++----------
translations/client_fi.ts | 94 ++++++++++----------
translations/client_fr.ts | 94 ++++++++++----------
translations/client_gl.ts | 94 ++++++++++----------
translations/client_hu.ts | 94 ++++++++++----------
translations/client_it.ts | 94 ++++++++++----------
translations/client_ja.ts | 96 ++++++++++-----------
translations/client_nb_NO.ts | 94 ++++++++++----------
translations/client_nl.ts | 94 ++++++++++----------
translations/client_pl.ts | 94 ++++++++++----------
translations/client_pt.ts | 94 ++++++++++----------
translations/client_pt_BR.ts | 94 ++++++++++----------
translations/client_ru.ts | 94 ++++++++++----------
translations/client_sk.ts | 94 ++++++++++----------
translations/client_sl.ts | 94 ++++++++++----------
translations/client_sr.ts | 94 ++++++++++----------
translations/client_sv.ts | 96 ++++++++++-----------
translations/client_th.ts | 94 ++++++++++----------
translations/client_tr.ts | 94 ++++++++++----------
translations/client_uk.ts | 94 ++++++++++----------
translations/client_zh_CN.ts | 94 ++++++++++----------
translations/client_zh_TW.ts | 92 ++++++++++----------
32 files changed, 1484 insertions(+), 1481 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index ac5b149d3..12cdd29d8 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -331,6 +331,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_ca.ts b/translations/client_ca.ts
index 94c7e8b93..ee87c1502 100644
--- a/translations/client_ca.ts
+++ b/translations/client_ca.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Error en escriure les metadades a la base de dades
@@ -892,7 +892,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Error en carregar la llista de carpetes del servidor.
-
+ S'ha desconnectat
@@ -902,96 +902,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+ S'està comprovant els canvis a '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"S'està sincronitzant %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))descarrega %1/s
-
+
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))pujada %1/s
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 pendent, %1 de %2, fitxer %3 de %4
-
+ fitxer %1 de %2
-
+ S'està esperant...
-
+ S'està esperant %n altra carpeta...S'està esperant %n altres carpetes
-
+ S'està preparant per sincronitzar...
@@ -1954,17 +1954,17 @@ No és aconsellada usar-la.
-
+
-
+ El fitxer ha canviat des de que es va descobrir
-
+ Error en escriure les metadades a la base de dades
@@ -2450,18 +2450,18 @@ No és aconsellada usar-la.
-
+ La comp&artició pública requereix una contrasenya
-
+ Establiu la contrasenya
-
-
+
+ Com&parteix l'enllaç
@@ -2871,12 +2871,12 @@ No és aconsellada usar-la.
-
+
-
+
@@ -2981,64 +2981,64 @@ No és aconsellada usar-la.
-
+
-
+ No es pot obrir el diari de sincronització
-
+ El nom del fitxer conté al menys un caràcter invàlid
-
-
+
+ S'ignora degut al filtre a «Trieu què sincronitzar»
-
+
-
+ No es permet pujar aquest fitxer perquè només és de lectura en el servidor, es restaura
-
-
+
+ No es permet l'eliminació, es restaura
-
+ Fitxers locals i carpeta compartida esborrats.
-
+ No es permet moure'l, l'element es restaura
-
+ No es permet moure perquè %1 només és de lectura
-
+ el destí
-
+ l'origen
@@ -3068,7 +3068,7 @@ No és aconsellada usar-la.
-
+
@@ -3293,8 +3293,8 @@ No és aconsellada usar-la.
OCC::ownCloudTheme
-
- <p>Versió %2. Per més informació visiteu <a href="%3">%4</a></p><p><small>Per Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz i altres.</small></p><p>Copyright ownCloud, Inc.</p><p>amb llicència GNU General Public License (GPL) versió 2.0<br/>ownCloud i el logo d'ownCloud són marques registrades d'ownCloud, Inc. als Estats Units, altres països, o ambdós.</p>
+
+
diff --git a/translations/client_cs.ts b/translations/client_cs.ts
index b7a79f0c1..7f7d54c2e 100644
--- a/translations/client_cs.ts
+++ b/translations/client_cs.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Chyba zápisu metadat do databáze
@@ -894,7 +894,7 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
Chyba při načítání seznamu adresářů ze serveru.
-
+ Odhlášeno
@@ -904,96 +904,96 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
Přidání adresáře je vypnuto, protože již synchronizujete všechny své soubory. Pokud chcete synchronizovat pouze některé adresáře, odstraňte aktuálně nastavený kořenový adresář.
-
+ Načítání seznamu adresářů ze serveru...
-
+ Kontrola změn v '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchronizuji %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))stahování %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))nahrávání %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 ze %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 zbývá, %1 ze %2, soubor %3 z %4
-
+ soubor %1 z %2
-
+ Chvíli strpení...
-
+ Čeká se na %n další adresář...Čeká se na %n další adresáře...Čeká se na %n dalších adresářů...
-
+ Synchronizace se připravuje...
@@ -1956,17 +1956,17 @@ Nedoporučuje se jí používat.
Stažený soubor je prázdný, přestože server oznámil, že měl být %1.
-
+ Soubor %1 nemohl být uložen z důvodu kolize názvu se souborem v místním systému!
-
+ Soubor se mezitím změnil
-
+ Chyba zápisu metadat do databáze
@@ -2452,18 +2452,18 @@ Nedoporučuje se jí používat.
-
+ Veřejné s&dílení vyžaduje heslo
-
+ Nastavte prosím heslo
-
-
+
+ &Sdílet odkaz
@@ -2873,12 +2873,12 @@ Nedoporučuje se jí používat.
Je dostupných pouze %1, pro spuštění je potřeba alespoň %2
-
+ Není povoleno, protože nemáte oprávnění vytvořit nadřazený adresář
-
+ Není povoleno, protože nemáte oprávnění přidávat soubory do tohoto adresáře
@@ -2983,64 +2983,64 @@ Nedoporučuje se jí používat.
Nelze načíst blacklist z místní databáze
-
+ Nelze číst ze žurnálu synchronizace.
-
+ Nelze otevřít synchronizační žurnál
-
+ Jméno souboru obsahuje aelspoň jeden neplatný znak
-
-
+
+ Ignorováno podle nastavení "vybrat co synchronizovat"
-
+ Není povoleno, protože nemáte oprávnění přidávat podadresáře do tohoto adresáře
-
+ Není povoleno nahrát tento soubor, protože je na serveru uložen pouze pro čtení, obnovuji
-
-
+
+ Odstranění není povoleno, obnovuji
-
+ Místní soubory a sdílený adresář byly odstraněny.
-
+ Přesun není povolen, položka obnovena
-
+ Přesun není povolen, protože %1 je pouze pro čtení
-
+ cílové umístění
-
+ zdroj
@@ -3070,8 +3070,8 @@ Nedoporučuje se jí používat.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3295,8 +3295,8 @@ Nedoporučuje se jí používat.
OCC::ownCloudTheme
-
- <p>Verze %2. Pro další informace navštivte <a href="%3">%4</a></p><p><small>Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz a další.</small></p><p>Copyright ownCloud, Inc.</p><p>Licencováno pod GNU General Public License (GPL) Version 2.0<br/>ownCloud a ownCloud logo jsou registrované obchodní známky ownCloud, Inc. ve Spojených státech, ostatních zemích nebo obojí</p>
+
+
diff --git a/translations/client_de.ts b/translations/client_de.ts
index be64da107..fd9c38f36 100644
--- a/translations/client_de.ts
+++ b/translations/client_de.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fehler beim Schreiben der Metadaten in die Datenbank
@@ -893,7 +893,7 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
Fehler beim Empfang der Ordnerliste vom Server.
-
+ Abgemeldet
@@ -903,96 +903,96 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
Sie können keinen weiteren Ordner hinzufügen, da Sie bereits alle Dateien synchronisieren. Falls sie mehrere Ordner synchronisieren wollen, entferen Sie zunächst den konfigurierten Wurzel-Ordner.
-
+ Empfange Orderliste vom Server...
-
+ Nach Änderungen suchen in '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchronisiere %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))Download %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))Upload %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 von %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 übrig, %1 von %2, Datei %3 von %4
-
+ Datei %1 von %2
-
+ Warte...
-
+ Warte auf einen anderen OrdnerWarte auf %n andere Ordner
-
+ Bereite Synchronisation vor...
@@ -1954,17 +1954,17 @@ Es ist nicht ratsam, diese zu benutzen.
Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat.
-
+ Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gespeichert geladen werden!
-
+ Datei ist seit der Entdeckung geändert worden
-
+ Fehler beim Schreiben der Metadaten in die Datenbank
@@ -2450,18 +2450,18 @@ Es ist nicht ratsam, diese zu benutzen.
-
+ Öffentliches Teilen erfordert ein P&asswort
-
+ Bitte wählen Sie ein Passwort:
-
-
+
+ &Link teilen
@@ -2871,12 +2871,12 @@ Es ist nicht ratsam, diese zu benutzen.
Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt.
-
+ Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben
-
+ Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben
@@ -2981,64 +2981,64 @@ Es ist nicht ratsam, diese zu benutzen.
Fehler beim Einlesen der Blacklist aus der lokalen Datenbank
-
+ Fehler beim Einlesen des Synchronisierungsprotokolls.
-
+ Synchronisationsbericht kann nicht geöffnet werden
-
+ Der Dateiname enthält mindestens ein ungültiges Zeichen
-
-
+
+ Aufgrund der »Zu synchronisierende Elemente auswählen«-Sperrliste ignoriert
-
+ Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben
-
+ Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist, Wiederherstellung
-
-
+
+ Löschen nicht erlaubt, Wiederherstellung
-
+ Lokale Dateien und Freigabeordner wurden entfernt.
-
+ Verschieben nicht erlaubt, Element wiederhergestellt
-
+ Verschieben nicht erlaubt, da %1 schreibgeschützt ist
-
+ Das Ziel
-
+ Die Quelle
@@ -3068,8 +3068,8 @@ Es ist nicht ratsam, diese zu benutzen.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3293,8 +3293,8 @@ Es ist nicht ratsam, diese zu benutzen.
OCC::ownCloudTheme
-
- <p>Version %2. Weitere Informationen unter <a href="%3">%4</a></p><p><small>Von Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz und anderen.</small></p><p>Copyright ownCloud, Inc.</p><p>Lizensiert unter den Bedingungen der GNU General Public License (GPL) Version 2.0<br/>ownCloud und das ownCloud Logo sind eingetragene Warenzeichen der ownCloud Inc. in den USA, anderen Ländern, oder beidem.</p>
+
+
diff --git a/translations/client_el.ts b/translations/client_el.ts
index 738b87ed5..ddb849201 100644
--- a/translations/client_el.ts
+++ b/translations/client_el.ts
@@ -522,9 +522,9 @@
OCC::CleanupPollsJob
-
+
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -724,7 +724,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Ανιχνεύθηκε αντίγραφο ασφαλείας
@@ -860,7 +860,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Συγχρονισμός με τοπικό φάκελο
@@ -892,7 +892,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Σφάλμα κατά τη φόρτωση της λίστας φακέλων από το διακομιστή.
-
+ Αποσύνδεση
@@ -902,96 +902,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Η επιλογή προσθήκης φακέλου δεν είναι διαθέσιμη καθώς συγχρονίζονται ήδη όλα τα αρχεία. Για να επιλέξετε συγχρονισμό φακέλων, αφαιρέστε τον αρχικό φάκελο που έχει ρυθμιστεί.
-
+ Λήψη λίστας φακέλων από το διακομιστή...
-
+ Έλεγχος αλλαγών στο '%1'.
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Συγχρονισμός %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))λήψη %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))μεταφόρτωση %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 από %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ αρχείο %1 από %2
-
+ Αναμονή...
-
+ Αναμονή για %n άλλο φάκελο...Αναμονή για %n άλλους φακέλους...
-
+ Προετοιμασία για συγχρονισμό...
@@ -1526,7 +1526,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
-
+ Κλείσιμο σε λίγα δευτερόλεπτα...
@@ -1918,7 +1918,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -1954,19 +1954,19 @@ It is not advisable to use it.
-
+ Το αρχείο %1 δεν είναι δυνατό να αποθηκευτεί λόγω διένεξης με το όνομα ενός τοπικού ονόματος αρχείου!
-
+ Το αρχείο έχει αλλάξει από όταν ανακαλύφθηκε
-
+
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -1992,7 +1992,7 @@ It is not advisable to use it.
-
+ αδυναμία διαγραφής αρχείου %1, σφάλμα: %2
@@ -2007,7 +2007,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2038,7 +2038,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2064,7 +2064,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2092,7 +2092,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2141,7 +2141,7 @@ It is not advisable to use it.
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2184,7 +2184,7 @@ It is not advisable to use it.
-
+ Πρωτόκολλο τοπικού συγχρονισμού
@@ -2279,7 +2279,7 @@ It is not advisable to use it.
-
+ Παρουσιάστηκε σφάλμα κατά την φόρτωση της λίστας των υπο-φακέλων
@@ -2378,7 +2378,7 @@ It is not advisable to use it.
-
+ Ο διακομιστής δεν επιτρέπει τον διαμοιρασμό
@@ -2450,18 +2450,18 @@ It is not advisable to use it.
-
+ Ο δημόσιος &διαμοιρασμός απαιτεί κωδικό πρόσβασης
-
+ Παρακαλούμε ορίστε Κωδικό
-
-
+
+ Δ&ιαμοιρασμός συνδέσμου
@@ -2481,7 +2481,7 @@ It is not advisable to use it.
-
+ Κανένα αποτέλεσμα για '%1'
@@ -2862,7 +2862,7 @@ It is not advisable to use it.
-
+ Το Αρχείο/ο Φάκελος αγνοήθηκε επειδή είναι κρυφό.
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
Μόνο %1 είναι διαθέσιμα, απαιτούνται τουλάχιστον %2 για την εκκίνηση
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε γονικό κατάλογο
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε αρχεία σε αυτόν τον φάκελο
@@ -2928,7 +2928,7 @@ It is not advisable to use it.
-
+ Δεν επιτρέπεται η πρόσβαση
@@ -2978,67 +2978,67 @@ It is not advisable to use it.
-
+ Αδυναμία ανάγνωσης της μαύρης λίστας από την τοπική βάση δεδομένων
-
+
-
+ Αδυναμία ανοίγματος του αρχείου συγχρονισμού
-
+ Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα
-
-
+
+ Αγνοήθηκε εξαιτίας της μαύρης λίστας "διάλεξε τι να συγχρονιστεί"
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υποφακέλους σε αυτό τον φάκελο
-
+ Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη
-
-
+
+ Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη
-
+ Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν.
-
+ Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε
-
+ Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση
-
+ ο προορισμός
-
+ η προέλευση
@@ -3048,7 +3048,7 @@ It is not advisable to use it.
-
+ Ιστορικό συγχρονισμού
@@ -3068,8 +3068,8 @@ It is not advisable to use it.
-
- <p>Πνευματικά δικαιώματα ownCloud, Ανώνυμη Εταιρία</p>
+
+
@@ -3195,7 +3195,7 @@ It is not advisable to use it.
-
+ Μη υποστηριζόμενη έκδοση διακομιστή
@@ -3215,37 +3215,37 @@ It is not advisable to use it.
-
+ Ο λογαριασμός συγχρονισμού έχει απενεργοποιηθεί
-
+ Αναίρεση παύσης όλων των φακέλων
-
+ Παύση όλων των φακέλων
-
+ Αναίρεση παύσης όλων των συγχρονισμών
-
+ Αναίρεση παύσης συγχρονσμού
-
+ Παύση όλων των συγχρονισμών
-
+ Παύση συγχρονισμού
@@ -3293,8 +3293,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Έκδοση %2. Για περισσότερες πληροφορίες επισκεφθείτε <a href="%3">%4</a></p><p><small>Των Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz και άλλων.</small></p><p>Πνευματικά δικαιώματα ownCloud, Inc.</p><p>Αδειοδότηση υπό την GNU General Public License (GPL) Έκδοση 2.0<br/>το ownCloud και το λογότυπο ownCloud είναι σήματα κατατεθέντα της ownCloud, Inc. στις Η.Π.Α., σε άλλες χώρες ή και στα δύο</p>
+
+
@@ -3507,7 +3507,7 @@ It is not advisable to use it.
-
+ QT_LAYOUT_DIRECTION
@@ -3515,7 +3515,7 @@ It is not advisable to use it.
-
+ στο μέλλον
@@ -3530,12 +3530,12 @@ It is not advisable to use it.
-
+ τώρα
-
+ Λιγότερο από ένα λεπτό πριν
@@ -3573,7 +3573,7 @@ It is not advisable to use it.
-
+ %n χρόνος%n χρόνια
diff --git a/translations/client_en.ts b/translations/client_en.ts
index 18f8e8d6b..29c98315c 100644
--- a/translations/client_en.ts
+++ b/translations/client_en.ts
@@ -530,7 +530,7 @@
OCC::CleanupPollsJob
-
+
@@ -918,7 +918,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
@@ -928,91 +928,91 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"
-
-
+
+
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"
-
+ Example text: "uploading foobar.png"
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+
-
+
-
+
@@ -1020,7 +1020,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
@@ -1975,17 +1975,17 @@ It is not advisable to use it.
-
+
-
+
-
+
@@ -2471,18 +2471,18 @@ It is not advisable to use it.
-
+
-
+
-
-
+
+
@@ -2890,12 +2890,12 @@ It is not advisable to use it.
-
+
-
+
@@ -3000,64 +3000,64 @@ It is not advisable to use it.
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
@@ -3087,7 +3087,7 @@ It is not advisable to use it.
-
+
@@ -3312,7 +3312,7 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
+
diff --git a/translations/client_es.ts b/translations/client_es.ts
index 9becfaca6..5ac942f17 100644
--- a/translations/client_es.ts
+++ b/translations/client_es.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Error al escribir los metadatos en la base de datos
@@ -894,7 +894,7 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
Error mientras se cargaba la lista de carpetas desde el servidor.
-
+ Cerrar sesión
@@ -904,96 +904,96 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
Añadir carpetas está deshabilitado debido a que ya están sincronizándose todos sus archivos. Si desea sincronizar múltiples carpeta, elimine la carpeta raíz actualmente configurada.
-
+ Obtención de lista de carpetas del servidor...
-
+ Buscando cambios en '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sincronizando %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))descargando: %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))cargar %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 restantes, %1 de %2, archivo %3 de %4
-
+ archivo %1 de %2
-
+ Esperando...
-
+ Esperando por %n carpeta...Esperando por %n otras carpetas...
-
+ Preparando para sincronizar...
@@ -1955,17 +1955,17 @@ No se recomienda usarla.
El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.
-
+ ¡El fichero %1 no puede guardarse debido a un conflicto con el nombre de otro fichero local!
-
+ El archivo ha cambiado desde que fue descubierto
-
+ Error al escribir los metadatos en la base de datos
@@ -2451,18 +2451,18 @@ No se recomienda usarla.
-
+ Compartir public&amente requiere contraseña
-
+ Por favor establece una contraseña
-
-
+
+ &Compartir enlace
@@ -2872,12 +2872,12 @@ No se recomienda usarla.
Solo %1 disponible, se necesita por lo menos %2 para comenzar
-
+ No permitido porque no tienes permiso para añadir un directorio padre
-
+ No permitido porque no tienes permiso para añadir archivos a ese directorio
@@ -2982,64 +2982,64 @@ No se recomienda usarla.
No se pudo leer la lista de bloqueo de la base de datos local
-
+ No se ha podido leer desde el registro de sincronización
-
+ No es posible abrir el diario de sincronización
-
+ Nombre de archivo contiene al menos un caracter no válido
-
-
+
+ Ignorado porque se encuentra en la lista negra de "elija qué va a sincronizar"
-
+ No permitido porque no tienes permiso para añadir subdirectorios a ese directorio
-
+ No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando.
-
-
+
+ No está permitido borrar, restaurando.
-
+ Se han eliminado los archivos locales y la carpeta compartida.
-
+ No está permitido mover, elemento restaurado.
-
+ No está permitido mover, porque %1 es de sólo lectura.
-
+ destino
-
+ origen
@@ -3069,8 +3069,8 @@ No se recomienda usarla.
-
- <p>Copyright ownCloud, incorporado</p>
+
+
@@ -3294,8 +3294,8 @@ No se recomienda usarla.
OCC::ownCloudTheme
-
- <p>Versión %2. Para más información, visite <a href="%3">%4</a></p><p><small>Creado por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz y otros.</small></p><p>Copyright ownCloud, Inc.</p><p>Está bajo la Licencia General Pública (GPL, en inglés) GNU Versión 2.0<br/>ownCloud y el logo de ownCloud son marcas registradas de ownCloud, Inc. en los Estados Unidos, otros países, o ambos.</p>
+
+
diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts
index e1425e32c..6b99ecb63 100644
--- a/translations/client_es_AR.ts
+++ b/translations/client_es_AR.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Desautentificado
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sincronizando %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))Cargado %1/s
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ Archivo %1 de %2
-
+ Esperando...
-
+
-
+ Preparando para sincronizar...
@@ -1943,17 +1943,17 @@ It is not advisable to use it.
-
+
-
+
-
+
@@ -2439,18 +2439,18 @@ It is not advisable to use it.
-
+
-
+
-
-
+
+
@@ -2858,12 +2858,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2968,64 +2968,64 @@ It is not advisable to use it.
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
@@ -3055,7 +3055,7 @@ It is not advisable to use it.
-
+
@@ -3280,7 +3280,7 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
+
diff --git a/translations/client_et.ts b/translations/client_et.ts
index c8cc26380..0af9990dc 100644
--- a/translations/client_et.ts
+++ b/translations/client_et.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Välja logitud
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+ Kontrollitakse muudatusi kaustas '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sünkroniseerimine %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))allalaadimine %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))üleslaadimine %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 / %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ fail %1 / %2-st
-
+ Ootamine...
-
+
-
+ Sünkroniseerimiseks valmistumine...
@@ -1944,17 +1944,17 @@ Selle kasutamine pole soovitatav.
-
+ Faili %1 ei saa salvestada kuna on nime konflikt kohaliku failiga!
-
+ Faili on pärast avastamist muudetud
-
+
@@ -2440,18 +2440,18 @@ Selle kasutamine pole soovitatav.
-
+ Avalik j&agamine nõuab parooli
-
+ Palun määra parool
-
-
+
+ &Jaga linki
@@ -2861,12 +2861,12 @@ Selle kasutamine pole soovitatav.
-
+
-
+
@@ -2971,64 +2971,64 @@ Selle kasutamine pole soovitatav.
-
+
-
+ Ei suuda avada sünkroniseeringu zurnaali
-
+ Faili nimesonvähemalt üks keelatud märk
-
-
+
+ "Vali, mida sünkroniseerida" musta nimekirja tõttu vahele jäetud
-
+
-
+ Pole lubatud üles laadida, kuna tegemist on ainult-loetava serveriga, taastan
-
-
+
+ Eemaldamine pole lubatud, taastan
-
+ Kohalikud failid ja jagatud kaustad eemaldatud.
-
+ Liigutamine pole lubatud, üksus taastatud
-
+ Liigutamien pole võimalik kuna %1 on ainult lugemiseks
-
+ sihtkoht
-
+ allikas
@@ -3058,7 +3058,7 @@ Selle kasutamine pole soovitatav.
-
+
@@ -3283,7 +3283,7 @@ Selle kasutamine pole soovitatav.
OCC::ownCloudTheme
-
+
diff --git a/translations/client_eu.ts b/translations/client_eu.ts
index e7602ec46..335f2a98b 100644
--- a/translations/client_eu.ts
+++ b/translations/client_eu.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Errorea zerbitzaritik karpeten zerrenda eskuratzean.
-
+ Saioa bukatuta
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Zerbitzaritik karpeta zerrenda eskuratzen...
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"%1 Sinkronizatzen
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))Deskargatu %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))igo %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%4 - %3tik)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ %1. fitxategia %2tik
-
+ Itxoiten...
-
+ Itxoiten beste karpeta %n...Itxoiten beste %n karpeta...
-
+ Sinkronizatzeko prestatzen...
@@ -1950,17 +1950,17 @@ Ez da gomendagarria erabltzea.
-
+
-
+
-
+
@@ -2446,18 +2446,18 @@ Ez da gomendagarria erabltzea.
-
+
-
+ Mesedez Ezarri Pasahitza
-
-
+
+
@@ -2865,12 +2865,12 @@ Ez da gomendagarria erabltzea.
-
+
-
+
@@ -2975,64 +2975,64 @@ Ez da gomendagarria erabltzea.
-
+
-
+ Ezin da sinkronizazio egunerokoa ireki
-
+ Fitxategi izenak behintzat baliogabeko karaktere bat du
-
-
+
+
-
+
-
+
-
-
+
+ Ezabatzeko baimenik gabe, berrezartzen
-
+
-
+ Mugitzea ez dago baimenduta, elementua berrezarri da
-
+ Mugitzea ez dago baimenduta %1 irakurtzeko bakarrik delako
-
+ helburua
-
+ jatorria
@@ -3062,7 +3062,7 @@ Ez da gomendagarria erabltzea.
-
+
@@ -3287,8 +3287,8 @@ Ez da gomendagarria erabltzea.
OCC::ownCloudTheme
-
- <p>%2 Bertsioa. Informazio gehiago eskuratzeko ikusi <a href="%3">%4</a></p><p><small>Egileak: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz eta bestea batzuk.</small></p><p>Copyright ownCloud, Inc.</p><p>GNU General Public License (GPL) 2.0 bertsioaren lizentziapean banatuta.<br/>ownCloud eta ownCloud-en Logoa ownCloud, Inc. enpresaren marka erregistratuak dira Estatu Batuetan, beste herrialdeetan edo bietan.</p>
+
+
diff --git a/translations/client_fa.ts b/translations/client_fa.ts
index 07afa3d01..395d864e1 100644
--- a/translations/client_fa.ts
+++ b/translations/client_fa.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ خارج شد
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"همگامسازی %1
-
-
+
+ رشته های ترجمه نشده
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))دانلود %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))آپلود %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 از %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ فایل %1 از %2
-
+ درحال انتظار...
-
+ در انتظار برای %n پوشهی دیگر ...
-
+ آمادهسازی همگامسازی ...
@@ -1943,17 +1943,17 @@ It is not advisable to use it.
-
+
-
+
-
+
@@ -2439,18 +2439,18 @@ It is not advisable to use it.
-
+
-
+ لطفا رمزعبور را تعیین کنید
-
-
+
+ &اشتراکگذاری لینک
@@ -2858,12 +2858,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2968,64 +2968,64 @@ It is not advisable to use it.
-
+
-
+
-
+ نام فایل دارای حداقل یک کاراکتر نامعتبر است
-
-
+
+
-
+ با توجه به عدم اجازهی شما به ایجاد زیرپوشه به پوشه مجاز نیست
-
+ آپلود این فایل با توجه به فقط-خواندنی بودن آن در سرور مجاز نیست، در حال بازگرداندن
-
-
+
+ حذف مجاز نیست، در حال بازگردادن
-
+ فایلهای محلی و پوشهی اشتراک حذف شد.
-
+ انتقال مجاز نیست، مورد بازگردانده شد
-
+
-
+ مقصد
-
+ مبدا
@@ -3055,7 +3055,7 @@ It is not advisable to use it.
-
+
@@ -3280,7 +3280,7 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
+
diff --git a/translations/client_fi.ts b/translations/client_fi.ts
index 535e535a9..98711254c 100644
--- a/translations/client_fi.ts
+++ b/translations/client_fi.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Virhe kirjoittaessa metadataa tietokantaan
@@ -890,7 +890,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Virhe ladatessa kansiolistausta palvelimelta.
-
+ Kirjauduttu ulos
@@ -900,96 +900,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Kansion lisääminen on poistettu käytöstä, koska synkronoit jo kaikki tiedostot. Jos haluat synkronoida useita kansioita, poista nykyisen juurikansion synkronointiyhteys.
-
+ Haetaan kansioluetteloa palvelimelta...
-
+
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synkronoidaan %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3/%4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ tiedosto %1/%2
-
+ Odotetaan...
-
+ Odotetaan %n muuta kansiota...Odotetaan %n muuta kansiota...
-
+ Valmistaudutaan synkronointiin...
@@ -1951,17 +1951,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
+
-
+ Tiedosto on muuttunut löytymisen jälkeen
-
+ Virhe kirjoittaessa metadataa tietokantaan
@@ -2447,18 +2447,18 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
+ &Julkinen jakaminen vaatii salasanan
-
+ Aseta salasana
-
-
+
+ &Jaa linkki
@@ -2868,12 +2868,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.
Vain %1 on käytettävissä, käynnistymiseen tarvitaan %2
-
+ Ei sallittu, koska käyttöoikeutesi eivät riitä ylätason kansion lisäämiseen
-
+ Ei sallittu, koska käyttöoikeutesi eivät riitä tiedostojen lisäämiseen kyseiseen kansioon
@@ -2978,64 +2978,64 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
+
-
+
-
+ Tiedoston nimi sisältää ainakin yhden virheellisen merkin
-
-
+
+
-
+ Ei sallittu, koska oikeutesi eivät riitä alikansioiden lisäämiseen kyseiseen kansioon
-
+
-
-
+
+ Poistaminen ei ole sallittua, palautetaan
-
+ Paikalliset tiedostot ja jakokansio poistettu.
-
+ Siirtäminen ei ole sallittua, kohde palautettu
-
+ Siirto ei ole sallittu, koska %1 on "vain luku"-tilassa
-
+ kohde
-
+ lähde
@@ -3065,8 +3065,8 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
- <p>Tekijänoikeus ownCloud, Incorporated</p>
+
+
@@ -3290,8 +3290,8 @@ Osoitteen käyttäminen ei ole suositeltavaa.
OCC::ownCloudTheme
-
- <p>Versio %2. Lisätietoja osoitteessa <a href="%3">%4</a></p><p><small>Tehnyt Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz ja muut.</small></p><p>Tekijänoikeus ownCloud, Inc.</p><p>Lisensoitu GNU General Public License (GPL), versio 2.0 -lisenssillä<br/>ownCloud ja ownCloudin logo ovat ownCloud, Incin rekisteröimiä tavaramerkkejä Yhdysvalloissa ja muissa maissa.</p>
+
+
diff --git a/translations/client_fr.ts b/translations/client_fr.ts
index 5044ef287..ff699b9e6 100644
--- a/translations/client_fr.ts
+++ b/translations/client_fr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Erreur à l'écriture des métadonnées dans la base de données
@@ -894,7 +894,7 @@ Continuer la synchronisation comme d'habitude fera en sorte que tous les fi
Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur.
-
+ Session fermée
@@ -904,96 +904,96 @@ Continuer la synchronisation comme d'habitude fera en sorte que tous les fi
L'ajout de dossier est désactivé car vous synchronisez déjà tous vos fichiers. Si vous voulez synchroniser plusieurs dossiers, supprimez d'abord le dossier racine configuré actuellement.
-
+ Récupération de la liste des dossiers depuis le serveur...
-
+ Recherche de modifications dans '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchronisation de %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))réception %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))envoi %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 restant, %1 sur %2, fichier %3 sur %4
-
+ fichier %1 de %2
-
+ En attente ...
-
+ En attente de %n autre(s) dossier(s)En attente de %n autre(s) dossier(s)
-
+ Préparation à la synchronisation
@@ -1956,17 +1956,17 @@ Il est déconseillé de l'utiliser.
Le fichier téléchargé est vide malgré que le serveur a annoncé qu'il aurait dû être %1.
-
+ Le fichier %1 n'a pas pu être sauvegardé en raison d'un conflit sur le nom du fichier local !
-
+ Le fichier a changé depuis sa découverte
-
+ Erreur à l'écriture des métadonnées dans la base de données
@@ -2452,18 +2452,18 @@ Il est déconseillé de l'utiliser.
-
+ Le p&artage public nécessite un mot de passe
-
+ Veuillez choisir un mot de passe
-
-
+
+ Partager par &lien public
@@ -2873,12 +2873,12 @@ Il est déconseillé de l'utiliser.
Seulement %1 disponibles, il faut au moins %2 pour démarrer
-
+ Non autorisé car vous n'avez pas la permission d'ajouter un dossier parent
-
+ Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier
@@ -2983,64 +2983,64 @@ Il est déconseillé de l'utiliser.
Impossible de lire la liste noire de la base de données locale
-
+ Impossible de lire le journal de synchronisation.
-
+ Impossible d'ouvrir le journal de synchronisation
-
+ Le nom de fichier contient au moins un caractère non valable
-
-
+
+ Ignoré à cause de la liste noire "Choisir le contenu à synchroniser".
-
+ Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier
-
+ Non autorisé à envoyer ce fichier car il est en lecture seule sur le serveur. Restauration
-
-
+
+ Non autorisé à supprimer. Restauration
-
+ Fichiers locaux et répertoire de partage supprimés.
-
+ Déplacement non autorisé, élément restauré
-
+ Déplacement non autorisé car %1 est en mode lecture seule
-
+ la destination
-
+ la source
@@ -3070,8 +3070,8 @@ Il est déconseillé de l'utiliser.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3295,8 +3295,8 @@ Il est déconseillé de l'utiliser.
OCC::ownCloudTheme
-
- <p>Version %2. Pour plus d'informations, consultez <a href="%3">%4</a></p><p><small>By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.</small></p><p>Copyright ownCloud, Inc.</p><p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>ownCloud and the ownCloud Logo are registered trademarks of ownCloud, Inc. in the United States, other countries, or both.</p>
+
+
diff --git a/translations/client_gl.ts b/translations/client_gl.ts
index 9baecf892..9051b172d 100644
--- a/translations/client_gl.ts
+++ b/translations/client_gl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -890,7 +890,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Desconectado
@@ -900,96 +900,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sincronizando %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))descargar %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))enviar %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ ficheiro %1 de %2
-
+
-
+
-
+
@@ -1950,17 +1950,17 @@ Recomendámoslle que non o use.
-
+ Non foi posíbel gardar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local!
-
+ O ficheiro cambiou após seren atopado
-
+
@@ -2446,18 +2446,18 @@ Recomendámoslle que non o use.
-
+ A comp&artición pública precisa de contrasinal
-
+ Estabeleza o contrasinal
-
-
+
+ &Ligazón para compartir
@@ -2867,12 +2867,12 @@ Recomendámoslle que non o use.
-
+
-
+
@@ -2977,64 +2977,64 @@ Recomendámoslle que non o use.
-
+
-
+ Non foi posíbel abrir o rexistro de sincronización
-
+ O nome de ficheiro contén algún carácter incorrecto
-
-
+
+ Ignorado por mor da lista negra de «escolla que sincronizar»
-
+
-
+ Non está permitido o envío xa que o ficheiro é só de lectura no servidor, restaurando
-
-
+
+ Non está permitido retiralo, restaurando
-
+ Retirados os ficheiros locais e o cartafol compartido.
-
+ Nos está permitido movelo, elemento restaurado
-
+ Bon está permitido movelo xa que %1 é só de lectura
-
+ o destino
-
+ a orixe
@@ -3064,8 +3064,8 @@ Recomendámoslle que non o use.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3289,8 +3289,8 @@ Recomendámoslle que non o use.
OCC::ownCloudTheme
-
- <p>Versión %2. Para obter máis información visite <a href="%3">%4</a></p><p><small>Por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e outros.</small></p><p>Copyright ownCloud, Inc.</p><p>Licenciado baixo a Licenza Publica Xeral (GPL) GNU Version 2.0<br/>ownCloud e o logotipo ownCloud son marcas rexistradas da ownCloud, Inc. nos EE.UU de Norte América, noutros países ou en ambos.</p>
+
+
diff --git a/translations/client_hu.ts b/translations/client_hu.ts
index c28b0b463..6dfa24945 100644
--- a/translations/client_hu.ts
+++ b/translations/client_hu.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Kijelentkezve
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"%1 szinkronizálása
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))letöltés: %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))feltöltés: %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 / %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 maradt, %1 / %2, %3 / %4 fájl
-
+ %1 / %2 fájl
-
+ Várakozás...
-
+ Várakozás %n további könyvtárra...Várakozás %n további könyvtárra...
-
+ Felkészülés szinkronizálásra...
@@ -1947,17 +1947,17 @@ It is not advisable to use it.
-
+
-
+
-
+
@@ -2443,18 +2443,18 @@ It is not advisable to use it.
-
+ Nyilvános me&gosztáshoz szükség van jelszóra
-
+ Kérjük, állíts be egy jelszót
-
-
+
+ Hivatkozás &megosztása
@@ -2863,12 +2863,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2973,64 +2973,64 @@ It is not advisable to use it.
-
+
-
+
-
+ A fájlnév legalább egy érvénytelen karaktert tartalmaz!
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+ a cél
-
+ a forrás
@@ -3060,8 +3060,8 @@ It is not advisable to use it.
-
- <p>Szerzői jog: ownCloud, Incorporated</p>
+
+
@@ -3285,8 +3285,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Verzió: %2. Bővebb információért látogass el ide: <a href="%3">%4</a></p><p><small>Készítők: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz és még mások.</small></p><p>Minden jog fenntartva. ownCloud, Inc.</p><p>A GNU General Public License (GPL) 2.0-ás verziója alatt licencelve<br/>A ownCloud és a ownCloud logó a ownCloud, Inc. bejegyzett védjegye az Egyesült Államokban és más országokban.</p>
+
+
diff --git a/translations/client_it.ts b/translations/client_it.ts
index 82233a353..49f839939 100644
--- a/translations/client_it.ts
+++ b/translations/client_it.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Errore durante la scrittura dei metadati nel database
@@ -894,7 +894,7 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
Errore durante il caricamento dell'elenco delle cartelle dal server.
-
+ Disconnesso
@@ -904,96 +904,96 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
L'aggiunta di una cartella è disabilitata perché stai già sincronizzando tutti i tuoi file. Se desideri sincronizzare più cartelle, rimuovi la cartella radice attualmente configurata.
-
+ Recupero dell'elenco delle cartelle dal server...
-
+ Controllo delle modifiche in '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sincronizzazione di %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))ricezione %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))invio %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 di %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 rimanenti, %1 di %2, file %3 di %4
-
+ file %1 di %2
-
+ Attendere...
-
+ In attesa di %n altra cartella...In attesa di %n altre cartelle...
-
+ Preparazione della sincronizzazione...
@@ -1955,17 +1955,17 @@ Non è consigliabile utilizzarlo.
Il file scaricato è vuoto nonostante il server indicasse una dimensione di %1.
-
+ Il file %1 non può essere salvato a causa di un conflitto con un file locale.
-
+ Il file è stato modificato dal suo rilevamento
-
+ Errore durante la scrittura dei metadati nel database
@@ -2451,18 +2451,18 @@ Non è consigliabile utilizzarlo.
-
+ La condivisione pubblic&a richiede una password
-
+ imposta la password
-
-
+
+ Condividi colle&gamento
@@ -2872,12 +2872,12 @@ Non è consigliabile utilizzarlo.
Sono disponibili solo %1, servono almeno %2 per iniziare
-
+ Non consentito poiché non disponi dei permessi per aggiungere la cartella superiore
-
+ Non consentito poiché non disponi dei permessi per aggiungere file in quella cartella
@@ -2982,64 +2982,64 @@ Non è consigliabile utilizzarlo.
Impossibile leggere la lista nera dal database locale
-
+ Impossibile leggere dal registro di sincronizzazione.
-
+ Impossibile aprire il registro di sincronizzazione
-
+ Il nome del file contiene almeno un carattere non valido
-
-
+
+ Ignorato in base alla lista nera per la scelta di cosa sincronizzare
-
+ Non consentito poiché non disponi dei permessi per aggiungere sottocartelle in quella cartella
-
+ Il caricamento di questo file non è consentito poiché è in sola lettura sul server, ripristino
-
-
+
+ Rimozione non consentita, ripristino
-
+ I file locali e la cartella condivisa sono stati rimossi.
-
+ Spostamento non consentito, elemento ripristinato
-
+ Spostamento non consentito poiché %1 è in sola lettura
-
+ la destinazione
-
+ l'origine
@@ -3069,8 +3069,8 @@ Non è consigliabile utilizzarlo.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3294,8 +3294,8 @@ Non è consigliabile utilizzarlo.
OCC::ownCloudTheme
-
- <p>Versione %2. Per ulteriori informazioni, visita <a href="%3">%4</a></p><p><small>Di Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e altri.</small></p><p>Copyright ownCloud, Inc.</p><p>Sotto licenza GNU General Public License (GPL) versione 2.0<br/>ownCloud e il logo di ownCloud sono marchi registrati di ownCloud, Inc. negli Stati Uniti, in altri paesi o entrambi</p>
+
+
diff --git a/translations/client_ja.ts b/translations/client_ja.ts
index aff1a25e3..1cba3eb25 100644
--- a/translations/client_ja.ts
+++ b/translations/client_ja.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ メタデータのデータベースへの書き込みに失敗
@@ -894,7 +894,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
サーバーからフォルダーのリスト取得時にエラー
-
+ サインアウト
@@ -904,96 +904,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
すでに同期対象のフォルダーのため、追加したフォルダーを無効にしました。複数のフォルダーを同期したい場合は、現在設定されているルートフォルダーの同期設定を削除してください。
-
+ サーバーからフォルダーリストを取得中...
-
+ '%1' の更新を確認しています
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"同期中 %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))ダウンロード %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))アップロード %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%4 中 %3 完了)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
- 残り %5分、%2中 %1完了 、%4中 %3 ファイル完了
+ 残り %5、%2中 %1完了 、%4中 %3 ファイル完了
-
+ %1 / %2 ファイル
-
+ 待機中...
-
+ %n 他のフォルダーの完了待ち...
-
+ 同期の準備中...
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
サーバーが通知しているファイルは %1 であるべきですが、ダウンロードファイルは空でした。
-
+ %1 はローカルファイル名が衝突しているため保存できません!
-
+ ファイルは発見以降に変更されました
-
+ メタデータのデータベースへの書き込みに失敗
@@ -2450,18 +2450,18 @@ It is not advisable to use it.
-
+ 共有するにはパスワードが必要(&A)
-
+ パスワードを入力してください
-
-
+
+ リンク共有(&S)
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
%1 しか空き容量がありません、開始するためには少なくとも %2 は必要です。
-
+ 親フォルダーを追加する権限がありません
-
+ そのフォルダーにファイルを追加する権限がありません
@@ -2981,64 +2981,64 @@ It is not advisable to use it.
ローカルデータベースからブラックリストを読み込みできません
-
+ 同期ジャーナルから読み込みできません
-
+ 同期ジャーナルを開くことができません
-
+ ファイル名に1文字以上の無効な文字が含まれています
-
-
+
+ "同期対象先" ブラックリストにより無視されました。
-
+ そのフォルダーにサブフォルダーを追加する権限がありません
-
+ サーバーでは読み取り専用となっているため、このファイルをアップロードすることはできません、復元しています
-
-
+
+ 削除できないので復元しています
-
+ ローカルファイルと共有フォルダーを削除しました。
-
+ 移動できないので項目を復元しました
-
+ %1 は読み取り専用のため移動できません
-
+ 移動先
-
+ 移動元
@@ -3068,8 +3068,8 @@ It is not advisable to use it.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3293,8 +3293,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>バージョン %2 詳細については、<a href="%3">%4</a>をご覧ください。By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.<br/>Based on Mirall by Duncan Mac-Vicar P.</small></p><p>著作権 ownCloud, Inc.<p><p>%4 が配布し、 GNU General Public License (GPL) バージョン2.0 の下でライセンスされています。<br>ownCloud 及び ownCloud のロゴはアメリカ合衆国またはその他の国、あるいはその両方における<br> ownCloud, Inc.の登録商標です。</p>
+
+
diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts
index 59dd9f43f..c2963fea1 100644
--- a/translations/client_nb_NO.ts
+++ b/translations/client_nb_NO.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Feil ved skriving av metadata til databasen
@@ -894,7 +894,7 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
Feil ved innlasting av listen av mapper fra serveren.
-
+ Logget ut
@@ -904,96 +904,96 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
Du kan ikke legge til en mappe fordi du allerede synkroniserer alle filene dine. Hvis du ønsker å synkronisere individuelle mapper, må du fjerne synkroniseringen av rotmappen som er konfigurert.
-
+ Henter mappeliste fra server..
-
+ Ser etter endringer i '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synkroniserer %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))nedlasting %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))opplasting %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 av %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 igjen, %1 av %2, fil %3 of %4
-
+ fil %1 av %2
-
+ Venter..
-
+ Venter på %n annen mappe...Venter på %n andre mappe(r)...
-
+ Forbereder synkronisering...
@@ -1956,17 +1956,17 @@ Det er ikke tilrådelig å bruke den.
Nedlastet fil er tom, selv om serveren annonserte at den skulle være %1.
-
+ Fil %1 kan ikke lagres på grunn av lokal konflikt med filnavn.
-
+ Filen er endret siden den ble oppdaget
-
+ Feil ved skriving av metadata til databasen
@@ -2452,18 +2452,18 @@ Det er ikke tilrådelig å bruke den.
-
+ Offentlig d&eling krever et passord
-
+ Sett passord
-
-
+
+ &Del lenke
@@ -2873,12 +2873,12 @@ Det er ikke tilrådelig å bruke den.
Bare %1 er tilgjengelig, trenger minst %2 for å begynne
-
+ Ikke tillatt fordi du ikke har lov til å legge til foreldremappe
-
+ Ikke tillatt fordi du ikke har lov til å opprette filer i den mappen
@@ -2983,64 +2983,64 @@ Det er ikke tilrådelig å bruke den.
Kan ikke lese svartelisten fra den lokale databasen
-
+ Kan ikke lese fra synkroniseringsjournalen
-
+ Kan ikke åpne synkroniseringsjournalen
-
+ Filnavnet inneholder minst ett ulovlig tegn
-
-
+
+ Ignorert på grunn av svartelisten "velg hva som skal synkroniseres"
-
+ Ikke tillatt fordi du ikke har lov til å lage undermapper i den mappen
-
+ Ikke tillatt å laste opp denne filenfordi den er skrivebeskyttet på serveren, gjenoppretter
-
-
+
+ Ikke tillatt å fjerne, gjenoppretter
-
+ Lokale filer og delingsmappe fjernet.
-
+ Flytting ikke tillatt, element gjenopprettet
-
+ Flytting ikke tillatt fordi %1 er skrivebeskyttet
-
+ målet
-
+ kilden
@@ -3070,8 +3070,8 @@ Det er ikke tilrådelig å bruke den.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3295,8 +3295,8 @@ Det er ikke tilrådelig å bruke den.
OCC::ownCloudTheme
-
- <p>Versjon %2. For mer informasjon gå til <a href="%3">%4</a></p><p><small>Av Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz med flere.</small></p><p>Copyright ownCloud, Inc.</p><p>Lisensiert under GNU General Public License (GPL) Version 2.0<br/>ownCloud og ownCloud-logo er registrerte varemerker for ownCloud, Inc. i USA, andre land, eller begge deler.</p>
+
+
diff --git a/translations/client_nl.ts b/translations/client_nl.ts
index 52175d823..005f576af 100644
--- a/translations/client_nl.ts
+++ b/translations/client_nl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fout bij schrijven van Metadata naar de database
@@ -895,7 +895,7 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
Fout bij ophalen mappenlijst van de server.
-
+ Afgemeld
@@ -905,96 +905,96 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
Het toevoegen van een map is uitgeschakeld, omdat u reeds al uw bestanden synchroniseert. Als u meerdere mappen wilt synchroniseren moet u de nu geconfigureerde hoofdmap verwijderen.
-
+ Mappenlijst ophalen van de server...
-
+ Controleren op wijzigingen in '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchroniseren %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))download %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))upload %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 van %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 over, %1 van %2, bestand %3 van %4
-
+ bestand %1 van %2
-
+ Aan het wachten...
-
+ Wacht op %n andere map...Wacht op %n andere mappen...
-
+ Voorbereiden op sync...
@@ -1957,17 +1957,17 @@ We adviseren deze site niet te gebruiken.
Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.
-
+ Bestand %1 kan niet worden opgeslagen wegens een lokaal bestandsnaam conflict!
-
+ Het bestand is gewijzigd sinds het is gevonden
-
+ Fout bij schrijven van Metadata naar de database
@@ -2453,18 +2453,18 @@ We adviseren deze site niet te gebruiken.
-
+ Openbaar de&len vereist een wachtwoord
-
+ Stel uw wachtwoord in
-
-
+
+ &Deel link
@@ -2874,12 +2874,12 @@ We adviseren deze site niet te gebruiken.
Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten
-
+ Niet toegestaan omdat u geen rechten hebt om een bovenliggende map toe te voegen
-
+ Niet toegestaan omdat u geen rechten hebt om bestanden in die map toe te voegen
@@ -2984,64 +2984,64 @@ We adviseren deze site niet te gebruiken.
Kan de blacklist niet lezen uit de lokale database
-
+ Niet mogelijk om te lezen uit het synchronisatie verslag.
-
+ Kan het sync transactielog niet openen
-
+ De bestandsnaam bevat ten minste één ongeldig teken
-
-
+
+ Genegeerd vanwege de "wat synchroniseren" zwarte lijst
-
+ Niet toegestaan, omdat je geen permissies hebt om submappen aan die map toe te voegen
-
+ Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen
-
-
+
+ Niet toegestaan om te verwijderen, herstellen
-
+ Lokale bestanden en share-map verwijderd.
-
+ Verplaatsen niet toegestaan, object hersteld
-
+ Verplaatsen niet toegestaan, omdat %1 alleen-lezen is
-
+ bestemming
-
+ bron
@@ -3071,8 +3071,8 @@ We adviseren deze site niet te gebruiken.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3296,8 +3296,8 @@ We adviseren deze site niet te gebruiken.
OCC::ownCloudTheme
-
- <p>Versie %2. Bezoek voor meer informatie bezoek <a href="%3">%4</a>.</p><p><small>Door Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz en anderen.</small></p><p>Copyright ownCloud, Inc.</p><p>Gelicenseerd onder de GNU Genertal Public License (GPL) Versie 2.0<br>ownCloud en het ownCloud logo zijn geregistreerde handelsmerken van ownCloud, Inc. in de Verenigde Staten, andere landen, of beide.</p>
+
+
diff --git a/translations/client_pl.ts b/translations/client_pl.ts
index f653b6dca..969658bc0 100644
--- a/translations/client_pl.ts
+++ b/translations/client_pl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Błąd podczas zapisu metadanych do bazy
@@ -894,7 +894,7 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
Wystąpił błąd podczas pobierania listy folderów z serwera.
-
+ Odłączony
@@ -904,96 +904,96 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
Dodawanie folderu jest zablokowane, ponieważ już synchronizujesz wszystkie swoje pliki. Jeśli chcesz zsynchronizować wiele folderów, usuń folder aktualnie skonfigurowany.
-
+ Pobieranie listy folderów z serwera.
-
+ Sprawdzanie zmian na '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchronizowanie %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))pobieranie %1/s
-
+
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))wysyłanie %1/s
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 z %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"Plik %3 z %4, pozostało czasu %5 (%1 z %2)
-
+ plik %1 z %2
-
+ Czekaj...
-
+
-
+ Przygotowanie do synchronizacji ...
@@ -1956,17 +1956,17 @@ Niezalecane jest jego użycie.
-
+
-
+
-
+ Błąd podczas zapisu metadanych do bazy
@@ -2452,18 +2452,18 @@ Niezalecane jest jego użycie.
-
+
-
+ Proszę podać hasło
-
-
+
+
@@ -2873,12 +2873,12 @@ Niezalecane jest jego użycie.
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania katalogu nadrzędnego
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania plików w tym katalogu
@@ -2983,64 +2983,64 @@ Niezalecane jest jego użycie.
-
+ Nie można czytać z dziennika synchronizacji.
-
+ Nie można otworzyć dziennika synchronizacji
-
+ Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak
-
-
+
+
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania podkatalogów w tym katalogu
-
+ Wgrywanie niedozwolone, ponieważ plik jest tylko do odczytu na serwerze, przywracanie
-
-
+
+ Brak uprawnień by usunąć, przywracanie
-
+ Lokalne pliki i udostępniane foldery zostały usunięte.
-
+ Przenoszenie niedozwolone, obiekt przywrócony
-
+ Przenoszenie niedozwolone, ponieważ %1 jest tylko do odczytu
-
+ docelowy
-
+ źródło
@@ -3070,8 +3070,8 @@ Niezalecane jest jego użycie.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3295,8 +3295,8 @@ Niezalecane jest jego użycie.
OCC::ownCloudTheme
-
- <p>Wersja%2. Aby uzyskać więcej informacji prosimy odwiedzić <a href="%3">%4</a></p><p><small>By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.</small></p><p>Copyright ownCloud, Inc.</p><p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>ownCloud and the ownCloud Logo are registered trademarks of ownCloud, Inc. in the United States, other countries, or both.</p>
+
+
diff --git a/translations/client_pt.ts b/translations/client_pt.ts
index 8b0a36cdb..6668b9fbb 100644
--- a/translations/client_pt.ts
+++ b/translations/client_pt.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Erro ao gravar os metadados para a base de dados
@@ -894,7 +894,7 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
Erro durante o carregamento da lista de pastas a partir do servidor.
-
+ Sessão terminada
@@ -904,96 +904,96 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
Adicionar pasta está desativada porque já está a sincronizar todos os seus ficheiros. Se deseja sincronizar múltiplas pastas, por favor, remova a pasta raiz atualmente configurada.
-
+ A obter a lista de pastas do servidor...
-
+ A procurar por alterações em '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"A sincronizar %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))transferir %s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))enviar %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 restante, %1 de %2, ficheiro %3 de %4
-
+ ficheiro %1 de %2
-
+ A aguardar...
-
+ A aguardar por %n outra pasta...A aguardar por %n outra(s) pasta(s)...
-
+ A preparar para sincronizar...
@@ -1956,17 +1956,17 @@ Não é aconselhada a sua utilização.
O ficheiro transferido está vazio, apesar do servidor indicar que este deveria ter %1.
-
+ Ficheiro %1 não pode ser guardado devido à existência de um ficheiro local com o mesmo nome.
-
+ O ficheiro alterou-se desde a sua descoberta
-
+ Erro ao escrever a meta-informação par a base de dados
@@ -2452,18 +2452,18 @@ Não é aconselhada a sua utilização.
-
+ A pa&rtilha pública requer uma palavra-passe:
-
+ Por favor, Definir Senha
-
-
+
+ &Compartilhe a hiperligação
@@ -2873,12 +2873,12 @@ Não é aconselhada a sua utilização.
Apenas %1 estão disponíveis, é preciso um mínimo de %2 para começar
-
+ Não permitido, porque não tem permissão para adicionar a pasta fonte
-
+ Não permitido, porque não tem permissão para adicionar os ficheiros nessa pasta
@@ -2983,64 +2983,64 @@ Não é aconselhada a sua utilização.
Não foi possível ler a lista negra a partir da base de dados local
-
+ Não foi possível ler a partir do jornal de sincronização.
-
+ Impossível abrir o jornal de sincronismo
-
+ O nome de ficheiro contém pelo menos um caráter inválido
-
-
+
+ Ignorado devido à blacklist de escolha para sincronização
-
+ Não permitido, porque não tem permissão para adicionar as subpastas nessa pasta
-
+ Não é permitido enviar este ficheiro porque este é só de leitura no servidor, a restaurar
-
-
+
+ Não autorizado para remoção, restaurando
-
+ Ficheiros locais e pasta partilhada removidos.
-
+ Mover não foi permitido, item restaurado
-
+ Mover não foi autorizado porque %1 é só de leitura
-
+ o destino
-
+ a origem
@@ -3070,8 +3070,8 @@ Não é aconselhada a sua utilização.
-
- <p>Copyright ownCloud, Incorporado</p>
+
+
@@ -3295,8 +3295,8 @@ Não é aconselhada a sua utilização.
OCC::ownCloudTheme
-
- <p>Versão %2. Para mais informação visite <a href="%3">%4</a></p><p><small>Por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e outros.</small></p><p>Copyright ownCloud, Inc.</p><p>Licenciado sob a GNU General Public License (GPL) Versão 2.0<br/>ownCloud e o logótipo ownCloud são marcas registadas de ownCloud, Inc. nos Estados Unidos da América, outros países, ou ambos.</p>
+
+
diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts
index aa8e76255..d7e1b8691 100644
--- a/translations/client_pt_BR.ts
+++ b/translations/client_pt_BR.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Ocorreu um erro ao escrever metadados ao banco de dados
@@ -894,7 +894,7 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
Erro enquanto carregava a lista de pastas do servidor.
-
+ Desconectado
@@ -904,96 +904,96 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
Adição de pasta está desativado porque você já está sincronizando todos os seus arquivos. Se você deseja sincronizar várias pastas, por favor, remova a pasta raiz configurada atualmente.
-
+ Obtendo lista de pastas do servidor...
-
+ Verificando alterações em '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Sincronizando %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))baixar %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))enviar %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 de %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 restando, %1 de %2, arquivo %3 de %4
-
+ arquivo %1 de %2
-
+ Esperando...
-
+ Esperando por %n outra pasta...Esperando por %n outras pastas...
-
+ Preparando para sincronizar...
@@ -1955,17 +1955,17 @@ It is not advisable to use it.
O arquivo baixado está vazio apesar do servidor anunciou que deveria ter %1.
-
+ O arquivo %1 não pode ser salvo por causa de um confronto com um nome de arquivo local!
-
+ Arquivo foi alterado desde a descoberta
-
+ Ocorreu um erro ao escrever metadados ao banco de dados
@@ -2451,18 +2451,18 @@ It is not advisable to use it.
-
+ Comp&artilhamento público requer uma senha
-
+ Por favor, Definir senha
-
-
+
+ Link de &Compartilhamento
@@ -2872,12 +2872,12 @@ It is not advisable to use it.
Apenas %1 estão disponíveis, precisamos de pelo menos %2 para começar
-
+ Não permitido porque você não tem permissão para adicionar pasta mãe
-
+ Não permitido porque você não tem permissão para adicionar arquivos na pasta
@@ -2982,64 +2982,64 @@ It is not advisable to use it.
Não é possível ler a lista negra a partir do banco de dados local
-
+ Não é possível ler a partir do relatório de sincronização.
-
+ Não é possível abrir o arquivo de sincronização
-
+ O nome do arquivo contem pelo menos um caractere inválido
-
-
+
+ Ignorado por causa da lista negra "escolher o que sincronizar"
-
+ Não permitido porque você não tem permissão para adicionar subpastas para essa pasta
-
+ Não é permitido fazer o upload deste arquivo porque ele é somente leitura no servidor, restaurando
-
-
+
+ Não é permitido remover, restaurando
-
+ Arquivos locais e pasta compartilhada removida.
-
+ Não é permitido mover, item restaurado
-
+ Não é permitido mover porque %1 é somente para leitura
-
+ o destino
-
+ a fonte
@@ -3069,8 +3069,8 @@ It is not advisable to use it.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3294,8 +3294,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Versão %2. Para mais informações visite<a href="%3">%4</a></p><p><small>Por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e outros.</small></p><p>Copyright ownCloud, Inc.</p><p>Licenciado sob a GNU General Public License (GPL) Versão 2.0<br/>ownCloud e o logotipo ownCloud são marcas registradas da ownCloud, Inc. nos Estados Unidos, outros países, ou ambos.</p>
+
+
diff --git a/translations/client_ru.ts b/translations/client_ru.ts
index 119d0d572..574825ee9 100644
--- a/translations/client_ru.ts
+++ b/translations/client_ru.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Ошибка записи метаданных в базу данных
@@ -894,7 +894,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Ошибка загрузки списка папок с сервера.
-
+ Вышли из аккаунта
@@ -904,96 +904,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
Добавление папки отключена, потому что вы уже синхронизированы все файлы. Если вы хотите синхронизировать несколько папок, пожалуйста, удалите текущую корневую папку.
-
+ Извлечение списка папок с сервера...
-
+ Проверка изменений в '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Синхронизация %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))скачать %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))выгрузка %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 из %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"Осталось %5, %1 из %2, файл %3 из %4
-
+ файл %1 из %2
-
+ Ожидание...
-
+ Ожидание %n папки...Ожидание %s папок...Ожидание %s папок...Ожидание %s папок...
-
+ Подготовка к синхронизации...
@@ -1955,17 +1955,17 @@ It is not advisable to use it.
Скачанный файл пуст, хотя сервер заявил, что он должен быть %1.
-
+ Файл %1 не может быть сохранён из-за локального конфликта имен!
-
+ После обнаружения файл был изменен
-
+ Ошибка записи метаданных в базу данных
@@ -2451,18 +2451,18 @@ It is not advisable to use it.
-
+ Публичные ссылки требуют пароля
-
+ Пожалуйста, установите пароль
-
-
+
+ Поделиться ссылкой
@@ -2872,12 +2872,12 @@ It is not advisable to use it.
Только %1 доступно, нужно как минимум %2 чтобы начать
-
+ Не разрешается, так как у вас нет полномочий на добавление родительской папки
-
+ Не разрешается, так как у вас нет полномочий на добавление файлов в эту папку
@@ -2982,64 +2982,64 @@ It is not advisable to use it.
Не удалось прочитать файл чёрного списка из локальной базы данных.
-
+ Не удалось прочитать из журнала синхронизации.
-
+ Не удаётся открыть журнал синхронизации
-
+ Имя файла содержит по крайней мере один некорректный символ
-
-
+
+ Игнорируется из-за черного списка в "что синхронизировать"
-
+ Не разрешается, так как у вас нет полномочий на добавление подпапок в папку.
-
+ Не допускается загрузка этого файла, так как на сервере он помечен только для чтения, восстанавливаем
-
-
+
+ Не допускается удаление, восстанавливаем
-
+ Локальные файлы и общий каталог удалены.
-
+ Перемещение не допускается, элемент восстановлен
-
+ Перемещение не допускается, поскольку %1 помечен только для чтения
-
+ назначение
-
+ источник
@@ -3069,8 +3069,8 @@ It is not advisable to use it.
-
- <p>Все права принадлежат ownCloud, Incorporated</p>
+
+
@@ -3294,8 +3294,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Версия %2. Для более подробной информации посетите <a href="%3">%4</a></p><p><small>Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz и другие.</small></p><p>Права принадлежат ownCloud, Inc.</p><p>Под лицензией GNU General Public License (GPL) Version 2.0<br/>ownCloud и логотип ownCloud являются зарегистрированными товарными знаками ownCloud, Inc. в США и других странах.</p>
+
+
diff --git a/translations/client_sk.ts b/translations/client_sk.ts
index cb1360acd..2a8193677 100644
--- a/translations/client_sk.ts
+++ b/translations/client_sk.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Chyba pri zápise metadát do databázy
@@ -894,7 +894,7 @@ Ak by ste normálne pokračovali v synchronizácii, skôzobilo by to prepísanie
-
+ Odhlásený
@@ -904,96 +904,96 @@ Ak by ste normálne pokračovali v synchronizácii, skôzobilo by to prepísanie
-
+ Načítavam zoznam priečinkov zo servera...
-
+ Kontrolujú sa zmeny v „%1“
-
+ Build a list of file names
-
+ Argument is a file name
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synchronizuje sa %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))stiahnuť %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))nahrať %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 of %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ súbor %1 z %2
-
+ Čakajte...
-
+
-
+ Príprava na synchronizáciu...
@@ -1950,17 +1950,17 @@ Nie je vhodné ju používať.
-
+ Súbor %1 nie je možné uložiť, pretože jeho názov koliduje s názvom lokálneho súboru!
-
+ Súbor sa medzitým zmenil
-
+ Chyba pri zápise metadát do databázy
@@ -2446,18 +2446,18 @@ Nie je vhodné ju používať.
-
+ Verejné z&dieľanie vyžaduje heslo
-
+ Prosím nastavte si heslo
-
-
+
+ &Zdieľať odkaz
@@ -2867,12 +2867,12 @@ Nie je vhodné ju používať.
-
+
-
+
@@ -2977,64 +2977,64 @@ Nie je vhodné ju používať.
-
+ Nemožno čítať zo synchronizačného žurnálu
-
+ Nemožno otvoriť sync žurnál
-
+ Názov súboru obsahuje nevhodný znak
-
-
+
+ Ignorované podľa nastavenia "vybrať čo synchronizovať"
-
+ Nie je dovolené, lebo nemáte oprávnenie pridávať podpriečinky do tohto priečinka
-
+ Nie je dovolené tento súbor nahrať, pretože je na serveri iba na čítanie. Obnovuje sa.
-
-
+
+ Nie je dovolené odstrániť. Obnovuje sa.
-
+ Lokálne súbory a zdieľaný priečinok boli odstránené.
-
+ Presunutie nie je dovolené. Položka obnovená.
-
+ Presunutie nie je dovolené, pretože %1 je na serveri iba na čítanie
-
+ cieľ
-
+ zdroj
@@ -3064,8 +3064,8 @@ Nie je vhodné ju používať.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3289,8 +3289,8 @@ Nie je vhodné ju používať.
OCC::ownCloudTheme
-
- <p>Verzia %2. Ďalšie informácie získate na adrese <a href="%3">%4</a></p><p><small>Autori Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz a ďalší.</small></p><p>Copyright ownCloud, Inc.</p><p>Licencované za podmienok GNU General Public License (GPL) Version 2.0<br/>ownCloud a ownCloud Logo sú registrované obchodné známky ownCloud, Inc. v USA, ďalších krajinách, alebo oboje.</p>
+
+
diff --git a/translations/client_sl.ts b/translations/client_sl.ts
index 7dd5e8e75..af30cecf6 100644
--- a/translations/client_sl.ts
+++ b/translations/client_sl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Napaka zapisovanja metapodatkov v podatkovno zbirko
@@ -894,7 +894,7 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
Prišlo je do napake med nalaganjem datotek s strežnika.
-
+ Odjavljeno
@@ -904,96 +904,96 @@ Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi
Dodajanje mape je onemogočeno, ker se usklajojejo vse vaše datoteke. Če želite usklajevati več map, odstranite trenutno nastavljeno korensko mapo.
-
+ Poteka pridobivanje seznama map s strežnika ...
-
+ Preverjanje za spremembe v '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Usklajevanje %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))prejemanje %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))pošiljanje %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 od %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"Preostalo še %5, %1 od %2, datoteka %3 od %4
-
+ datoteka %1 od %2
-
+ Čakanje na povezavo ...
-
+ V pripravi je %n druga map ...V pripravi sta %n drugi mapi ...V pripravi so %n druge mape ...V pripravi je %n drugih map ...
-
+ Priprava na usklajevanje ...
@@ -1955,17 +1955,17 @@ Uporaba ni priporočljiva.
Prejeta datoteka je prazna, čeprav je na strežniku objavljena z %1.
-
+ Datoteke %1 ni mogoče shraniti zaradi neskladja z imenom obstoječe datoteke!
-
+ Datoteka je bila po spremenjena po usklajevanju seznama datotek.
-
+ Napaka zapisovanja metapodatkov v podatkovno zbirko
@@ -2451,18 +2451,18 @@ Uporaba ni priporočljiva.
-
+ Javna omogočanje &souporabe zahteva geslo
-
+ Določite geslo
-
-
+
+ Povezava za &souporabo
@@ -2872,12 +2872,12 @@ Uporaba ni priporočljiva.
Le %1 je na voljo, zahtevanih pa je vaj %2 za zagon
-
+ Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje starševske mape
-
+ Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje datotek v to mapo
@@ -2982,64 +2982,64 @@ Uporaba ni priporočljiva.
Ni mogoče prebrati črnega seznama iz krajevne mape
-
+ Ni mogoče brati iz dnevnika usklajevanja
-
+ Ni mogoče odpreti dnevnika usklajevanja
-
+ Ime datoteke vsebuje vsaj en neveljaven znak.
-
-
+
+ Prezrto, ker je predmet označen na črni listi za usklajevanje
-
+ Dejanje ni dovoljeno! Ni ustreznih dovoljenj za dodajanje podmap v to mapo.
-
+ Ni dovoljeno pošiljati te datoteke, ker ima določena dovoljenja le za branje. Datoteka bo obnovljena na izvorno različico.
-
-
+
+ Odstranitev ni dovoljena, datoteka bo obnovljena.
-
+ Krajevne datoteke in mape v souporabi so odstranjene.
-
+ Premikanje ni dovoljeno, datoteka bo obnovljena.
-
+ Premikanje ni dovoljeno, ker je nastavljeno določilo %1 le za branje.
-
+ cilj
-
+ vir
@@ -3069,8 +3069,8 @@ Uporaba ni priporočljiva.
-
- <p>Avtorske pravice ownCloud, Incorporated</p>
+
+
@@ -3294,8 +3294,8 @@ Uporaba ni priporočljiva.
OCC::ownCloudTheme
-
- <p>Različica %2. Več podrobnosti je zabeleženih na <a href='%3'>%4</a>.</p><p><small>Avtorstvo: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz in drugi.</small></p><p>Avtorske pravice ownCloud, Inc.</p><p>Programski paket je objavljen z dovoljenjem GNU General Public License (GPL) Version 2.0.<br/>ownCloud in logotip ownCloud sta blagovni znamki ownCloud v Združenih državah, drugih državah ali oboje.</p>
+
+
diff --git a/translations/client_sr.ts b/translations/client_sr.ts
index 23fbd28f6..9b2084053 100644
--- a/translations/client_sr.ts
+++ b/translations/client_sr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Одјављен
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Добављам списак фасцикли са сервера...
-
+ Проверавам измене у „%1“
-
+ Build a list of file names, '%1'
-
+ Argument is a file name„%1“
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Синхронизујем %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))преузми %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))отпреми %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 од %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ фајл %1 од %2
-
+ Чекам...
-
+
-
+ Припремам синхронизацију...
@@ -1949,17 +1949,17 @@ It is not advisable to use it.
-
+ Фајл %1 се не може сачувати јер се судара са називом локалног фајла!
-
+ Фајл је измењен у међувремену
-
+
@@ -2445,18 +2445,18 @@ It is not advisable to use it.
-
+ Јавно дељење з&хтева лозинку
-
+ Поставите лозинку
-
-
+
+ &Веза дељења
@@ -2866,12 +2866,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2976,64 +2976,64 @@ It is not advisable to use it.
-
+
-
+ Не могу да отворим дневник синхронизације
-
+ Назив садржи бар један недозвољен карактер
-
-
+
+ Игнорисано јер се не налази на листи за синхронизацију
-
+
-
+ Није могуће отпремити овај фајл јер је на серверу само за читање. Враћам
-
-
+
+ Није могуће уклањање. Враћам
-
+ Локални фајлови и дељена фасцикла су уклоњени.
-
+ Премештање није дозвољено. Ставка је враћена
-
+ Премештање није дозвољено јер %1 је само за читање
-
+ одредиште
-
+ извор
@@ -3063,8 +3063,8 @@ It is not advisable to use it.
-
- <p>Ауторска права оунКлауд (ownCloud), корпорација</p>
+
+
@@ -3288,8 +3288,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Верзија %2. За више информација посетите <a href="%3">%4</a></p><p><small>Клас Фрајтаг (Klaas Freitag), Данијел Мелкентин (Daniel Molkentin), Жан-Кристоф Боршар (Jan-Christoph Borchardt), Оливије Гофар (Olivier Goffart), Маркус Гец (Markus Götz) и остали.</small></p><p>Ауторска права ownCloud, Inc.</p><p>Лиценцирано под ГНУ Општом јавном лиценцом ОЈЛ (GPL) верзије 2.0<br/>оунКлауд и оунКлауд логотип су регистроване робне марке ownCloud, Inc. у САД, другим земљама, или обоје.</p>
+
+
diff --git a/translations/client_sv.ts b/translations/client_sv.ts
index 62493627e..36ea91206 100644
--- a/translations/client_sv.ts
+++ b/translations/client_sv.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fel vid skrivning av metadata till databasen
@@ -894,7 +894,7 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
Ett fel uppstod när mapplistan försökte laddas från servern.
-
+ Utloggad
@@ -904,96 +904,96 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
Tillägg av mappar är avstängt eftersom du redan synkar alla dina filer. Om du vill synka fler mappar, var god ta bort den nuvarande rotmappen.
-
+ Hämtar mapplistan från servern...
-
+ Kollar efter ändringar i '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"Synkroniserar %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))ladda ner %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))ladda upp %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 av %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"%5 kvar, %1 av %2, fil %3 av %4
-
+ fil %1 av %2
-
+ Väntar...
-
+ Väntat på %n annan mapp...Väntat på %n andra mappar...
-
+ Förbereder för att synkronisera...
@@ -1956,17 +1956,17 @@ Det är inte lämpligt använda den.
Den nedladdade filen är tom men servern sa att den skulle vara %1.
-
+ Fil %1 kan inte sparas eftersom namnet krockar med en lokal fil!
-
+ Filen har ändrats sedan upptäckten
-
+ Fel vid skrivning av metadata till databasen
@@ -2452,18 +2452,18 @@ Det är inte lämpligt använda den.
-
+ Publik d&elning kräver lösenord
-
+ Var vänlig sätt lösenord
-
-
+
+ &Dela länk
@@ -2552,7 +2552,7 @@ Det är inte lämpligt använda den.
-
+ Debugvy SSL-kryptering
@@ -2873,12 +2873,12 @@ Det är inte lämpligt använda den.
Endast %1 tillgängligt, behöver minst %2 för att starta
-
+ Otillåtet eftersom du inte har rättigheter att lägga till övermappar
-
+ Otillåtet eftersom du inte har rättigheter att lägga till filer i den mappen.
@@ -2983,64 +2983,64 @@ Det är inte lämpligt använda den.
Kunde inte läsa svartlistan från den lokala databasen
-
+ Kunde inte läsa från synk-journalen.
-
+ Kunde inte öppna synk journalen
-
+ Filnamnet innehåller minst ett ogiltigt tecken
-
-
+
+ Ignorerad eftersom den är svartlistad i "välj vad som ska synkas"
-
+ Otillåtet eftersom du inte har rättigheter att lägga till undermappar i den mappen.
-
+ Inte behörig att ladda upp denna fil då den är skrivskyddad på servern, återställer
-
-
+
+ Inte behörig att radera, återställer
-
+ Lokala filer och mappar som är delade är borttagna.
-
+ Det gick inte att genomföra flytten, objektet återställs
-
+ Det gick inte att genomföra flytten då %1 är skrivskyddad
-
+ destinationen
-
+ källan
@@ -3070,8 +3070,8 @@ Det är inte lämpligt använda den.
-
- <p>Copyright ownCloud, Incorporated</p>
+
+
@@ -3295,8 +3295,8 @@ Det är inte lämpligt använda den.
OCC::ownCloudTheme
-
- <p>Version %2. För mer information, gå till <a href="%3">%4</a></p><p><small>Av Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz med flera.</small></p><p>Copyright ownCloud, Inc.</p><p>Licensierad under GNU General Public License (GPL) Version 2.0<br/>ownCloud och ownClouds logo är registrerade varumärken av ownCloud, Inc. i USA, andra länder eller både och.</p>
+
+
diff --git a/translations/client_th.ts b/translations/client_th.ts
index 2aae6b7e2..161fc752a 100644
--- a/translations/client_th.ts
+++ b/translations/client_th.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล
@@ -895,7 +895,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
ข้อผิดพลาดในขณะที่โหลดรายชื่อโฟลเดอร์จากเซิร์ฟเวอร์
-
+ ออกจากระบบ
@@ -905,96 +905,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
การเพิ่มโฟลเดอร์ถูกยกเลิกเพราะคุณได้ประสานไฟล์ทั้งหมดของคุณอยู่แล้ว หากคุณต้องการประสานข้อมูลหลายโฟลเดอร์โปรดลบโฟลเดอร์รากกำหนดค่าในปัจจุบัน
-
+ กำลังดึงรายการโฟลเดอร์จากเซิร์ฟเวอร์ ...
-
+ กำลังตรวจสอบการเปลี่ยนแปลงใน '%1'
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"กำลังประสานข้อมูล %1
-
-
+
+ หรือ
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))ดาวน์โหลด %1/วินาที
-
+ u2193 %1/วินาที
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))อัปโหลด
-
+ u2191 %1/วินาที
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 ของ %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"เหลืออีก %5 ไฟล์, %1 ไฟล์จาก %2, %3 ไฟล์จาก %4
-
+ ไฟล์ %1 จาก %2
-
+ กรุณารอซักครู่...
-
+ กำลังรออีก (%n) โฟลเดอร์...
-
+ กำลังเตรียมพร้อมในการประสานข้อมูล
@@ -1956,17 +1956,17 @@ It is not advisable to use it.
ไฟล์ที่ดาวน์โหลดว่างเปล่าแม้ว่าเซิร์ฟเวอร์ประกาศว่าควรจะเป็น %1
-
+ ไฟล์ %1 ไม่สามารถบันทึกได้เพราะชื่อไฟล์ต้นทางเหมือนกัน!
-
+ ไฟล์มีการเปลี่ยนแปลงตั้งแต่ถูกพบ
-
+ ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล
@@ -2452,18 +2452,18 @@ It is not advisable to use it.
-
+ การแชร์สาธารณะจำเป็นต้องมีรหัสผ่าน
-
+ กรุณาตั้งรหัสผ่าน
-
-
+
+ &แชร์ลิงค์
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
มีเพียง %1 ที่พร้อมใช้งาน คุณจำเป็นต้องมีไม่น้อยกว่า %2 เพื่อเริ่มใช้งาน
-
+ ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์หลัก
-
+ ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มไฟล์ในโฟลเดอร์นั้น
@@ -2981,64 +2981,64 @@ It is not advisable to use it.
ไม่สามารถอ่านบัญชีดำจากฐานข้อมูลต้นทาง
-
+ ไม่สามารถอ่านจากบันทึกการประสานข้อมูล
-
+ ไม่สามารถเปิดการผสานข้อมูลเจอร์นัล
-
+ มีชื่อแฟ้มอย่างน้อยหนึ่งตัวอักษรที่ไม่ถูกต้อง
-
-
+
+ ถูกละเว้นเพราะ "ข้อมูลที่เลือกประสาน" ติดบัญชีดำ
-
+ ไม่อนุญาติเพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์ย่อยของโฟลเดอร์นั้น
-
+ ไม่อนุญาตให้อัพโหลดไฟล์นี้เพราะมันจะอ่านได้เพียงอย่างเดียวบนเซิร์ฟเวอร์ กำลังฟื้นฟู
-
-
+
+ ไม่อนุญาตให้ลบเพราะกำลังฟื้นฟู
-
+ ไฟล์ต้นทางและโฟลเดอร์ที่แชร์ถูกลบออก
-
+ ไม่ได้รับอนุญาตให้ย้าย เพราะกำลังกู้คืนรายการ
-
+ ไม่อนุญาตให้ย้ายเพราะ %1 จะอ่านได้เพียงอย่างเดียว
-
+ ปลายทาง
-
+ แหล่งที่มา
@@ -3068,8 +3068,8 @@ It is not advisable to use it.
-
- <p>จดทะเบียนภายใต้ลิขสิทธิ์ของ ownCloud</p>
+
+
@@ -3293,8 +3293,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>รุ่น %2 สำหรับข้อมูลเพิ่มเติมดูได้ที่<a href="%3">%4</a></p><p><small> โดย Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz และอีกหลายคนที่ไม่ได้เอ่ยนาม </small></p><p> สงวนลิขสิทธิ์ ownCloud, Inc.</p><p>ได้รับใบอนุญาตภายใต้ GNU General Public License (GPL) รุ่น 2.0<br/> ownCloud และโลโก้ ownCloud เป็นเครื่องหมายจดทะเบียนการค้าของ ownCloud ในประเทศสหรัฐอเมริกา ประเทศอื่นๆ หรือทั้งสองอย่าง</p>
+
+
diff --git a/translations/client_tr.ts b/translations/client_tr.ts
index 9af684eb9..a83c43918 100644
--- a/translations/client_tr.ts
+++ b/translations/client_tr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Veritabanına üstveri yazma hatası
@@ -893,7 +893,7 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
Sunucudan klasörlerin listesi yüklenirken hata oluştu.
-
+ Oturum sonlandırıldı
@@ -903,96 +903,96 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
Klasör ekleme devre dışı, çünkü şu anda bütün dosyalarınızı eşitliyorsunuz. Çoklu klasör eşitlemesi yapmak istiyorsanız, lütfen geçerli yapılandırılmış kök klasörünü silin.
-
+ Sunucudan klasör listesi alınıyor...
-
+ %1 üzerindeki değişiklikler denetleniyor
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"%1 eşitleniyor
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))indirme %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))gönderme %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3/%4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"Kalan %5, %1/%2, dosya %3/%4
-
+ dosya %1/%2
-
+ Bekleniyor...
-
+ Diğer %n klasör bekleniyor...Diğer %n klasör bekleniyor...
-
+ Eşitleme için hazırlanıyor...
@@ -1954,17 +1954,17 @@ Kullanmanız önerilmez.
Sunucu boyutunu %1 olarak duyurmasına rağmen indirilen dosya boş.
-
+ Yerel bir dosya ismi ile çakıştığından, %1 dosyası kaydedilemedi!
-
+ Dosya, bulunduğundan itibaren değişmiş
-
+ Veritabanına üstveri yazma hatası
@@ -2450,18 +2450,18 @@ Kullanmanız önerilmez.
-
+ Herkese &açık paylaşım için parola gerekir
-
+ Lütfen Parola Atayın
-
-
+
+ &Paylaşma bağlantısı
@@ -2871,12 +2871,12 @@ Kullanmanız önerilmez.
Sadece %1 mevcut, Çalıştırmak için en az %2 gerekmektedir
-
+ Üst dizin ekleme yetkiniz olmadığından izin verilmedi
-
+ Bu klasöre dosya ekleme yetkiniz olmadığından izin verilmedi
@@ -2981,64 +2981,64 @@ Kullanmanız önerilmez.
Yerel veritabanından kara liste okunamadı
-
+ Eşitleme günlüğünden okunamadı.
-
+ Eşitleme günlüğü açılamıyor
-
+ Dosya adı en az bir geçersiz karakter içeriyor
-
-
+
+ "Eşitlenecekleri seçin" kara listesinde olduğundan yoksayıldı.
-
+ Bu dizine alt dizin ekleme yetkiniz olmadığından izin verilmedi
-
+ Sunucuda salt okunur olduğundan, bu dosya yüklenemedi, geri alınıyor
-
-
+
+ Kaldırmaya izin verilmedi, geri alınıyor
-
+ Yerel dosyalar ve paylaşım klasörü kaldırıldı.
-
+ Taşımaya izin verilmedi, öge geri alındı
-
+ %1 salt okunur olduğundan taşımaya izin verilmedi
-
+ hedef
-
+ kaynak
@@ -3068,8 +3068,8 @@ Kullanmanız önerilmez.
-
- <p>Telif Hakkı ownCloud Anonim Şirketi</p>
+
+
@@ -3293,8 +3293,8 @@ Kullanmanız önerilmez.
OCC::ownCloudTheme
-
- <p>Sürüm %2. Daha fazla bilgi için lütfen <a href="%3">%4</a> adresini ziyaret edin.</p><p><small>Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz ve diğerleri tarafından yazıldı.</small></p><p>Telif hakkı ownCloud, Anonim Şirketi.</p><p>GNU Genel Kamu Lisansı (GPL) Sürüm 2.0 ile lisanslanmıştır.<br>ownCloud ve ownCloud logoları <br>ABD ve/veya diğer ülkelerde ownCloud, Anonim Şirketi'nin tescili markalarıdır.</p>
+
+
diff --git a/translations/client_uk.ts b/translations/client_uk.ts
index b86c3e4cc..794d17164 100644
--- a/translations/client_uk.ts
+++ b/translations/client_uk.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -889,7 +889,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+ Вийшов
@@ -899,96 +899,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
-
+
-
+
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))
-
+
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 of %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ файл %1 з %2
-
+ Очікування...
-
+
-
+
@@ -1944,17 +1944,17 @@ It is not advisable to use it.
-
+ Файл %1 не збережено через локальний конфлікт назви файлу!
-
+ Файл змінився з моменту знаходження
-
+
@@ -2440,18 +2440,18 @@ It is not advisable to use it.
-
+ Публічне по&ширення вимагає пароль
-
+
-
-
+
+ По&ділитись посиланням
@@ -2861,12 +2861,12 @@ It is not advisable to use it.
Доступно лише %1, для початку необхідно хоча б %2
-
+
-
+
@@ -2971,64 +2971,64 @@ It is not advisable to use it.
-
+
-
+ Не вдається відкрити протокол синхронізації
-
+ Ім’я файлу містить принаймні один некоректний символ
-
-
+
+ Ігнорується через чорний список в "обрати що синхронізувати"
-
+ Заборонено через відсутність прав додавання підкаталогів в цю теку.
-
+ Не дозволено завантажувати цей файл, оскільки він має дозвіл лише на перегляд, відновлюємо
-
-
+
+ Не дозволено видаляти, відновлюємо
-
+ Локальні файли та теки в загальному доступі було видалено.
-
+ Переміщення не дозволено, елемент відновлено
-
+ Переміщення не дозволено, оскільки %1 помічений тільки для перегляду
-
+ призначення
-
+ джерело
@@ -3058,8 +3058,8 @@ It is not advisable to use it.
-
- <p> Права належать ownCloud, Incorporated </p>
+
+
@@ -3283,8 +3283,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>Версія %2. Для більш детальної інформації відвідайте <a href="%3">%4</a></p> <p><small> Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz та інші.</ small></p> <p> Права належать ownCloud, Inc. </p> <p> Під ліцензією GNU General Public License (GPL) Version 2.0 <br/> ownCloud і логотип ownCloud є зареєстрованими товарними знаками ownCloud, Inc. в США та інших країнах. </p>
+
+
diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts
index 65a781761..be9bedff9 100644
--- a/translations/client_zh_CN.ts
+++ b/translations/client_zh_CN.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ 向数据库写入元数据错误
@@ -894,7 +894,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
载入文件夹列表时发生错误。
-
+ 已登出
@@ -904,96 +904,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
你已经设置同步了你的所有文件,无法同步另一文件夹。要同步多个文件夹,请取消当前设置的根文件夹同步。
-
+ 获取文件夹列表...
-
+ 在 %1 检查更改
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"正在同步 %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))下载 %1/s
-
+ u2193 %1/秒
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))上传 %1/s
-
+ u2191 %1/秒
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 / %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"剩余: %5,%1 / %2, 文件数量 %3 / %4
-
+ 第 %1 个文件,共 %2 个
-
+ 请稍等...
-
+ 等待 %n 个其他文件(文件夹)
-
+ 准备同步...
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
虽然服务器宣称已完成 %1,但实际下载文件为空。
-
+ 由于本地文件名冲突,文件 %1 无法保存。
-
+ 自从发现文件以来,它已经被改变了
-
+ 向数据库写入元数据错误
@@ -2450,18 +2450,18 @@ It is not advisable to use it.
-
+ 公开分享需要密码
-
+ 请设置密码
-
-
+
+ 分享链接(&s)
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
仅有 %1 有效,至少需要 %2 才能开始
-
+ 你没有权限增加父目录
-
+ 你没有权限增加文件
@@ -2981,64 +2981,64 @@ It is not advisable to use it.
无法从本地数据库读取黑名单
-
+ 无法读取同步日志。
-
+ 无法打开同步日志
-
+ 文件名中存在至少一个非法字符
-
-
+
+ 已忽略(“选择同步内容”黑名单)
-
+ 你没有权限增加子目录
-
+ 无法上传文件,因为服务器端此文件为只读,正在回退
-
-
+
+ 无法删除,正在回退
-
+ 本地文件和共享文件夹已被删除。
-
+ 无法移动,正在回退
-
+ 无法移动,%1为是只读的
-
+ 目标
-
+ 源
@@ -3068,8 +3068,8 @@ It is not advisable to use it.
-
- <p>版权所有 ownCloud, Incorporated</p>
+
+
@@ -3293,8 +3293,8 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
- <p>版本 %2,更多信息请访问<a href="%3">%4</a></p><p><small>By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.</small></p><p>版权所有 ownCloud, Inc.</p><p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>ownCloud and the ownCloud Logo are registered trademarks of ownCloud, Inc. in the United States, other countries, or both.</p>
+
+
diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts
index c98aaad49..e09bc854b 100644
--- a/translations/client_zh_TW.ts
+++ b/translations/client_zh_TW.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -892,7 +892,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
從伺服器端同步資料夾清單時發生錯誤。
-
+ 已登出
@@ -902,96 +902,96 @@ Continuing the sync as normal will cause all your files to be overwritten by an
新增資料夾失敗,您已經同步您擁有的所有檔案,如果您想要同步多個資料夾,請移除當前設定的根目錄資料夾。
-
+ 從伺服器抓取資料夾清單中...
-
+ 檢查 '%1' 的變動
-
+ Build a list of file names, '%1'
-
+ Argument is a file name'%1'
-
+ Example text: "Syncing 'foo.txt', 'bar.txt'"同步 %1
-
-
+
+ ,
-
+ Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated))下載 %1/s
-
+ u2193 %1/s
-
+ Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated))上傳 %1/s
-
+ u2191 %1/s
-
+ Example text: "uploading foobar.png (2MB of 2MB)"%1 %2 (%3 的 %4)
-
+ Example text: "uploading foobar.png"%1 %2
-
+ Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
-
+ 檔案 %1 的 %2
-
+ 等待中...
-
+ 正在等候 %n 的資料夾(可能不只一個)
-
+ 正在準備同步...
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
-
+ 檔案 %1 無法存檔,因為本地端的檔案名稱已毀損!
-
+ 尋找的過程中檔案已經被更改
-
+
@@ -2450,18 +2450,18 @@ It is not advisable to use it.
-
+ 公開&共享需要密碼
-
+ 請設定密碼
-
-
+
+ &分享連結
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
目前僅有 %1 可以使用,至少需要 %2 才能開始
-
+ 拒絕此操作,您沒有新增母資料夾的權限。
-
+ 拒絕此操作,您沒有新增檔案在此資料夾的權限。
@@ -2981,64 +2981,64 @@ It is not advisable to use it.
-
+
-
+ 同步處理日誌無法開啟
-
+ 檔案名稱含有不合法的字元
-
-
+
+ 已忽略。根據 "選擇要同步的項目"的黑名單
-
+ 拒絕此操作,您沒有在此新增子資料夾的權限。
-
+ 拒絕上傳此檔案,此檔案在伺服器是唯讀檔,復原中
-
-
+
+ 不允許刪除,復原中
-
+ 本地端檔案和共享資料夾已被刪除。
-
+ 不允許移動,物件復原中
-
+ 不允許移動,因為 %1 是唯讀的
-
+ 目標
-
+ 來源
@@ -3068,8 +3068,8 @@ It is not advisable to use it.
-
- <p>著作權 ownCloud, 組織</p>
+
+
@@ -3293,7 +3293,7 @@ It is not advisable to use it.
OCC::ownCloudTheme
-
+
From 8496817db261c9776fd14452985b0d1fb4b89eaf Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Wed, 21 Sep 2016 02:18:30 +0200
Subject: [PATCH 38/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
translations/client_de.ts | 4 ++--
translations/client_nl.ts | 4 ++--
translations/client_pt_BR.ts | 4 ++--
translations/client_sl.ts | 2 +-
5 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 12cdd29d8..93778831d 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -334,6 +334,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_de.ts b/translations/client_de.ts
index fd9c38f36..255308c5a 100644
--- a/translations/client_de.ts
+++ b/translations/client_de.ts
@@ -3069,7 +3069,7 @@ Es ist nicht ratsam, diese zu benutzen.
-
+ <p>Copyright ownCloud GmbH</p>
@@ -3294,7 +3294,7 @@ Es ist nicht ratsam, diese zu benutzen.
-
+ <p>Version %2. Weitere Informationen unter <a href="%3">%4</a></p><p><small>Von Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz und anderen.</small></p><p>Copyright ownCloud GmbH</p><p>Lizensiert unter den Bedingungen der GNU General Public License (GPL) Version 2.0<br/>ownCloud und das ownCloud Logo sind eingetragene Warenzeichen der ownCloud Inc. in den USA, anderen Ländern, oder beidem.</p>
diff --git a/translations/client_nl.ts b/translations/client_nl.ts
index 005f576af..78320f933 100644
--- a/translations/client_nl.ts
+++ b/translations/client_nl.ts
@@ -3072,7 +3072,7 @@ We adviseren deze site niet te gebruiken.
-
+ <p>Copyright ownCloud GmbH</p>
@@ -3297,7 +3297,7 @@ We adviseren deze site niet te gebruiken.
-
+ <p>Versie %2. Bezoek voor meer informatie bezoek <a href="%3">%4</a>.</p><p><small>Door Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz en anderen.</small></p><p>Copyright ownCloud, GmbH</p><p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0<br>ownCloud en het ownCloud logo zijn geregistreerde handelsmerken van ownCloud, Inc. in de Verenigde Staten, andere landen, of beide.</p>
diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts
index d7e1b8691..1fc891716 100644
--- a/translations/client_pt_BR.ts
+++ b/translations/client_pt_BR.ts
@@ -3070,7 +3070,7 @@ It is not advisable to use it.
-
+ <p>Direitos autorais ownCloud GmbH</p>
@@ -3295,7 +3295,7 @@ It is not advisable to use it.
-
+ <p>Versão %2. Para mais informações visite <a href="%3">%4</a></p><p><small>Por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e outros.</small></p><p>Direitos autorais ownCloud GmbH</p><p>Licenciado sob a GNU General Public License (GPL) Versão 2.0<br/>ownCloud e o logo ownCloud são marcas registradas da ownCloud, Inc. nos Estados Unidos e, em outros países, ou ambos.</p>
diff --git a/translations/client_sl.ts b/translations/client_sl.ts
index af30cecf6..69c36e3f7 100644
--- a/translations/client_sl.ts
+++ b/translations/client_sl.ts
@@ -3070,7 +3070,7 @@ Uporaba ni priporočljiva.
-
+ <p>Avtorske pravice ownCloud, GmbH</p>
From a810d69daa1174d13ab7594f9d6989a9596d2efe Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 20 Sep 2016 11:55:43 +0200
Subject: [PATCH 39/93] ConnectionValidator: properly handle error in
status.php (#5188)
We wwer enot connecting to the right signal from the check server
job, and therefore we were not catching the condition in which the
json was invalid. We would then never terminate the ConnectionValidator job.
Note that instanceNotFound is also emited if there is a network error.
The log looked like this:
10:25:51.247 OCC::CheckServerJob::finished: status.php from server is not valid JSON!
10:25:51.248 OCC::CheckServerJob::finished: status.php returns: QMap() QNetworkReply::NetworkError(NoError) Reply: QNetworkReplyHttpImpl(0x2b6a790)
10:25:51.248 OCC::CheckServerJob::finished: No proper answer on QUrl("http://localhost/~owncloud/status.php")
10:26:23.235 OCC::AccountState::checkConnectivity: ConnectionValidator already running, ignoring "owncloud@localhost"
10:26:55.235 OCC::AccountState::checkConnectivity: ConnectionValidator already running, ignoring "owncloud@localhost"
[...]
(cherry picked from commit ff701bd473242b417e8ef9b987d4593e1495020c)
---
src/libsync/connectionvalidator.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libsync/connectionvalidator.cpp b/src/libsync/connectionvalidator.cpp
index 2a955a521..a1eead282 100644
--- a/src/libsync/connectionvalidator.cpp
+++ b/src/libsync/connectionvalidator.cpp
@@ -106,7 +106,7 @@ void ConnectionValidator::slotCheckServerAndAuth()
checkJob->setTimeout(timeoutToUseMsec);
checkJob->setIgnoreCredentialFailure(true);
connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap)));
- connect(checkJob, SIGNAL(networkError(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
+ connect(checkJob, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
connect(checkJob, SIGNAL(timeout(QUrl)), SLOT(slotJobTimeout(QUrl)));
checkJob->start();
}
From 3bd3ffb8e2a3a1a966ae88d1c4ce45fed14451d5 Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Thu, 22 Sep 2016 02:18:32 +0200
Subject: [PATCH 40/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
translations/client_it.ts | 4 ++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 93778831d..2e0f7f681 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -337,6 +337,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_it.ts b/translations/client_it.ts
index 49f839939..415a5bdde 100644
--- a/translations/client_it.ts
+++ b/translations/client_it.ts
@@ -3070,7 +3070,7 @@ Non è consigliabile utilizzarlo.
-
+ <p>Copyright ownCloud GmbH</p>
@@ -3295,7 +3295,7 @@ Non è consigliabile utilizzarlo.
-
+ <p>Versione %2. Per ulteriori informazioni, visita <a href="%3">%4</a></p><p><small>Di Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e altri.</small></p><p>Copyright ownCloud GmbH</p><p>Sotto licenza GNU General Public License (GPL) versione 2.0<br/>ownCloud e il logo di ownCloud sono marchi registrati di ownCloud, Inc. negli Stati Uniti, in altri paesi o entrambi.</p>
From 6f1b03c5603784556fd439f5c6d8c614265226d8 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 22 Sep 2016 09:02:47 +0200
Subject: [PATCH 41/93] SyncEngine: Fix renaming of folder when file are
changed (#5195)
Two bugs:
- The change filed are not considered as move, they are re-downloaded
but the old file was not removed from the database. The change in
owncloudpropagator.cpp takes care of removing the old entries.
- Next sync would then remove the file in the server in the old folder
This was not a problem until we start reusing the sync engine, and
that the _renamedFolders map is not cleared. We were before deleting
a non-existing file. But now we delete the actual file.
Also improve the tests to be able to do move on the server.
This include support for file id.
Issue #5192
(cherry picked from commit 85b8ab178e21cf4dcaf792f68c15e55f6e0ee3c2)
---
src/libsync/owncloudpropagator.cpp | 6 ++++++
src/libsync/syncengine.cpp | 1 +
2 files changed, 7 insertions(+)
diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp
index 72046fccf..998160c1c 100644
--- a/src/libsync/owncloudpropagator.cpp
+++ b/src/libsync/owncloudpropagator.cpp
@@ -695,6 +695,12 @@ void PropagateDirectory::finalize()
bool ok = true;
if (!_item->isEmpty() && _hasError == SyncFileItem::NoStatus) {
if( !_item->_renameTarget.isEmpty() ) {
+ if(_item->_instruction == CSYNC_INSTRUCTION_RENAME
+ && _item->_originalFile != _item->_renameTarget) {
+ // Remove the stale entries from the database.
+ _propagator->_journal->deleteFileRecord(_item->_originalFile, true);
+ }
+
_item->_file = _item->_renameTarget;
}
diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp
index a9f9701de..636ffb1c8 100644
--- a/src/libsync/syncengine.cpp
+++ b/src/libsync/syncengine.cpp
@@ -856,6 +856,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
bool walkOk = true;
_seenFiles.clear();
_temporarilyUnavailablePaths.clear();
+ _renamedFolders.clear();
if( csync_walk_local_tree(_csync_ctx, &treewalkLocal, 0) < 0 ) {
qDebug() << "Error in local treewalk.";
From 8b9ca63eeb82812c7d6138d277b2602edbc6a0ef Mon Sep 17 00:00:00 2001
From: Klaas Freitag
Date: Mon, 12 Sep 2016 14:12:33 +0200
Subject: [PATCH 42/93] Dolphin Plugin: Use the Application name for the socket
path (#5172)
do not hardcode.
This should fix #5165
(cherry picked from commit 2d110540ee5a67d2c014fcf4258840d3aaf538ac)
---
shell_integration/dolphin/ownclouddolphinpluginhelper.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
index 027e0e68e..68c2a9c29 100644
--- a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
+++ b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
@@ -21,6 +21,7 @@
#include
#include
#include "ownclouddolphinpluginhelper.h"
+#include "config.h"
OwncloudDolphinPluginHelper* OwncloudDolphinPluginHelper::instance()
{
@@ -67,7 +68,10 @@ void OwncloudDolphinPluginHelper::tryConnect()
return;
}
QString runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
- QString socketPath = runtimeDir + QLatin1String("/ownCloud/socket");
+ runtimeDir.append( QChar('/'));
+ runtimeDir.append( QLatin1String(APPLICATION_SHORTNAME) );
+
+ const QString socketPath = runtimeDir + QLatin1String("/socket");
_socket.connectToServer(socketPath);
}
From 29bd8658bb0d1f5e50f5911cf641324aa41e69ac Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Thu, 22 Sep 2016 15:41:30 +0200
Subject: [PATCH 43/93] ChangeLog: 2.2.4
---
ChangeLog | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 202099593..ee4f0d43e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
ChangeLog
=========
+version 2.2.4 (release 2016-09-xx)
+* Dolphin Plugin: Use the Application name for the socket path (#5172)
+* SyncEngine: Fix renaming of folder when file are changed (#5195)
+* Selective Sync: Fix HTTP request loop and show error in view (#5154)
+* ConnectionValidator: properly handle error in status.php request (#5188)
+* Discovery: Set thread priority to low (#5017)
+* ExcludeFiles: Fix when the folder casing is not the same in the settings and in the FS
+* ShareLink: Ensure the password line edit is enabled (#5117)
+
version 2.2.3 (release 2016-08-08)
* SyncEngine: Fix detection of backup (#5104)
* Fix bug with overriding URL in config (#5016)
From f2721aff1d005b985d4d274747b446c393c0e765 Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Sat, 24 Sep 2016 02:18:33 +0200
Subject: [PATCH 44/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
translations/client_ca.ts | 32 ++++++++++++++++----------------
translations/client_cs.ts | 32 ++++++++++++++++----------------
translations/client_de.ts | 32 ++++++++++++++++----------------
translations/client_el.ts | 32 ++++++++++++++++----------------
translations/client_en.ts | 32 ++++++++++++++++----------------
translations/client_es.ts | 36 ++++++++++++++++++------------------
translations/client_es_AR.ts | 32 ++++++++++++++++----------------
translations/client_et.ts | 32 ++++++++++++++++----------------
translations/client_eu.ts | 32 ++++++++++++++++----------------
translations/client_fa.ts | 32 ++++++++++++++++----------------
translations/client_fi.ts | 32 ++++++++++++++++----------------
translations/client_fr.ts | 32 ++++++++++++++++----------------
translations/client_gl.ts | 32 ++++++++++++++++----------------
translations/client_hu.ts | 32 ++++++++++++++++----------------
translations/client_it.ts | 32 ++++++++++++++++----------------
translations/client_ja.ts | 32 ++++++++++++++++----------------
translations/client_nb_NO.ts | 32 ++++++++++++++++----------------
translations/client_nl.ts | 32 ++++++++++++++++----------------
translations/client_pl.ts | 32 ++++++++++++++++----------------
translations/client_pt.ts | 32 ++++++++++++++++----------------
translations/client_pt_BR.ts | 32 ++++++++++++++++----------------
translations/client_ru.ts | 32 ++++++++++++++++----------------
translations/client_sk.ts | 32 ++++++++++++++++----------------
translations/client_sl.ts | 32 ++++++++++++++++----------------
translations/client_sr.ts | 32 ++++++++++++++++----------------
translations/client_sv.ts | 32 ++++++++++++++++----------------
translations/client_th.ts | 32 ++++++++++++++++----------------
translations/client_tr.ts | 32 ++++++++++++++++----------------
translations/client_uk.ts | 32 ++++++++++++++++----------------
translations/client_zh_CN.ts | 32 ++++++++++++++++----------------
translations/client_zh_TW.ts | 32 ++++++++++++++++----------------
32 files changed, 501 insertions(+), 498 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 2e0f7f681..b0afba626 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -340,6 +340,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_ca.ts b/translations/client_ca.ts
index ee87c1502..7fc17f7bd 100644
--- a/translations/client_ca.ts
+++ b/translations/client_ca.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Error en escriure les metadades a la base de dades
@@ -1916,7 +1916,7 @@ No és aconsellada usar-la.
OCC::PropagateDirectory
-
+ Error en escriure les metadades a la base de dades
@@ -2871,12 +2871,12 @@ No és aconsellada usar-la.
-
+
-
+
@@ -2991,54 +2991,54 @@ No és aconsellada usar-la.
No es pot obrir el diari de sincronització
-
+ El nom del fitxer conté al menys un caràcter invàlid
-
-
+
+ S'ignora degut al filtre a «Trieu què sincronitzar»
-
+
-
+ No es permet pujar aquest fitxer perquè només és de lectura en el servidor, es restaura
-
-
+
+ No es permet l'eliminació, es restaura
-
+ Fitxers locals i carpeta compartida esborrats.
-
+ No es permet moure'l, l'element es restaura
-
+ No es permet moure perquè %1 només és de lectura
-
+ el destí
-
+ l'origen
diff --git a/translations/client_cs.ts b/translations/client_cs.ts
index 7f7d54c2e..930ea1857 100644
--- a/translations/client_cs.ts
+++ b/translations/client_cs.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Chyba zápisu metadat do databáze
@@ -1918,7 +1918,7 @@ Nedoporučuje se jí používat.
OCC::PropagateDirectory
-
+ Chyba zápisu metadat do databáze
@@ -2873,12 +2873,12 @@ Nedoporučuje se jí používat.
Je dostupných pouze %1, pro spuštění je potřeba alespoň %2
-
+ Není povoleno, protože nemáte oprávnění vytvořit nadřazený adresář
-
+ Není povoleno, protože nemáte oprávnění přidávat soubory do tohoto adresáře
@@ -2993,54 +2993,54 @@ Nedoporučuje se jí používat.
Nelze otevřít synchronizační žurnál
-
+ Jméno souboru obsahuje aelspoň jeden neplatný znak
-
-
+
+ Ignorováno podle nastavení "vybrat co synchronizovat"
-
+ Není povoleno, protože nemáte oprávnění přidávat podadresáře do tohoto adresáře
-
+ Není povoleno nahrát tento soubor, protože je na serveru uložen pouze pro čtení, obnovuji
-
-
+
+ Odstranění není povoleno, obnovuji
-
+ Místní soubory a sdílený adresář byly odstraněny.
-
+ Přesun není povolen, položka obnovena
-
+ Přesun není povolen, protože %1 je pouze pro čtení
-
+ cílové umístění
-
+ zdroj
diff --git a/translations/client_de.ts b/translations/client_de.ts
index 255308c5a..18edf083c 100644
--- a/translations/client_de.ts
+++ b/translations/client_de.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fehler beim Schreiben der Metadaten in die Datenbank
@@ -1916,7 +1916,7 @@ Es ist nicht ratsam, diese zu benutzen.
OCC::PropagateDirectory
-
+ Fehler beim Schreiben der Metadaten in die Datenbank
@@ -2871,12 +2871,12 @@ Es ist nicht ratsam, diese zu benutzen.
Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt.
-
+ Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben
-
+ Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben
@@ -2991,54 +2991,54 @@ Es ist nicht ratsam, diese zu benutzen.
Synchronisationsbericht kann nicht geöffnet werden
-
+ Der Dateiname enthält mindestens ein ungültiges Zeichen
-
-
+
+ Aufgrund der »Zu synchronisierende Elemente auswählen«-Sperrliste ignoriert
-
+ Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben
-
+ Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist, Wiederherstellung
-
-
+
+ Löschen nicht erlaubt, Wiederherstellung
-
+ Lokale Dateien und Freigabeordner wurden entfernt.
-
+ Verschieben nicht erlaubt, Element wiederhergestellt
-
+ Verschieben nicht erlaubt, da %1 schreibgeschützt ist
-
+ Das Ziel
-
+ Die Quelle
diff --git a/translations/client_el.ts b/translations/client_el.ts
index ddb849201..138796167 100644
--- a/translations/client_el.ts
+++ b/translations/client_el.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -1916,7 +1916,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
Μόνο %1 είναι διαθέσιμα, απαιτούνται τουλάχιστον %2 για την εκκίνηση
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε γονικό κατάλογο
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε αρχεία σε αυτόν τον φάκελο
@@ -2991,54 +2991,54 @@ It is not advisable to use it.
Αδυναμία ανοίγματος του αρχείου συγχρονισμού
-
+ Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα
-
-
+
+ Αγνοήθηκε εξαιτίας της μαύρης λίστας "διάλεξε τι να συγχρονιστεί"
-
+ Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υποφακέλους σε αυτό τον φάκελο
-
+ Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη
-
-
+
+ Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη
-
+ Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν.
-
+ Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε
-
+ Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση
-
+ ο προορισμός
-
+ η προέλευση
diff --git a/translations/client_en.ts b/translations/client_en.ts
index 29c98315c..fd183c26e 100644
--- a/translations/client_en.ts
+++ b/translations/client_en.ts
@@ -530,7 +530,7 @@
OCC::CleanupPollsJob
-
+
@@ -1937,7 +1937,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2890,12 +2890,12 @@ It is not advisable to use it.
-
+
-
+
@@ -3010,54 +3010,54 @@ It is not advisable to use it.
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
diff --git a/translations/client_es.ts b/translations/client_es.ts
index 5ac942f17..c576301bf 100644
--- a/translations/client_es.ts
+++ b/translations/client_es.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Error al escribir los metadatos en la base de datos
@@ -1917,7 +1917,7 @@ No se recomienda usarla.
OCC::PropagateDirectory
-
+ Error al escribir los metadatos en la base de datos
@@ -2872,12 +2872,12 @@ No se recomienda usarla.
Solo %1 disponible, se necesita por lo menos %2 para comenzar
-
+ No permitido porque no tienes permiso para añadir un directorio padre
-
+ No permitido porque no tienes permiso para añadir archivos a ese directorio
@@ -2992,54 +2992,54 @@ No se recomienda usarla.
No es posible abrir el diario de sincronización
-
+ Nombre de archivo contiene al menos un caracter no válido
-
-
+
+ Ignorado porque se encuentra en la lista negra de "elija qué va a sincronizar"
-
+ No permitido porque no tienes permiso para añadir subdirectorios a ese directorio
-
+ No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando.
-
-
+
+ No está permitido borrar, restaurando.
-
+ Se han eliminado los archivos locales y la carpeta compartida.
-
+ No está permitido mover, elemento restaurado.
-
+ No está permitido mover, porque %1 es de sólo lectura.
-
+ destino
-
+ origen
@@ -3070,7 +3070,7 @@ No se recomienda usarla.
-
+ <p>Copyright ownCloud GmbH</p>
@@ -3295,7 +3295,7 @@ No se recomienda usarla.
-
+ <p>Version %2. Para más información visita <a href="%3">%4</a></p><p><small>By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.</small></p><p>Copyright ownCloud GmbH</p><p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>ownCloud and the ownCloud Logo are registered trademarks of ownCloud, Inc. in the United States, other countries, or both.</p>
diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts
index 6b99ecb63..ef9829d38 100644
--- a/translations/client_es_AR.ts
+++ b/translations/client_es_AR.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1905,7 +1905,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2858,12 +2858,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2978,54 +2978,54 @@ It is not advisable to use it.
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
diff --git a/translations/client_et.ts b/translations/client_et.ts
index 0af9990dc..8d0e7a385 100644
--- a/translations/client_et.ts
+++ b/translations/client_et.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1906,7 +1906,7 @@ Selle kasutamine pole soovitatav.
OCC::PropagateDirectory
-
+
@@ -2861,12 +2861,12 @@ Selle kasutamine pole soovitatav.
-
+
-
+
@@ -2981,54 +2981,54 @@ Selle kasutamine pole soovitatav.
Ei suuda avada sünkroniseeringu zurnaali
-
+ Faili nimesonvähemalt üks keelatud märk
-
-
+
+ "Vali, mida sünkroniseerida" musta nimekirja tõttu vahele jäetud
-
+
-
+ Pole lubatud üles laadida, kuna tegemist on ainult-loetava serveriga, taastan
-
-
+
+ Eemaldamine pole lubatud, taastan
-
+ Kohalikud failid ja jagatud kaustad eemaldatud.
-
+ Liigutamine pole lubatud, üksus taastatud
-
+ Liigutamien pole võimalik kuna %1 on ainult lugemiseks
-
+ sihtkoht
-
+ allikas
diff --git a/translations/client_eu.ts b/translations/client_eu.ts
index 335f2a98b..ec5f55c15 100644
--- a/translations/client_eu.ts
+++ b/translations/client_eu.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1912,7 +1912,7 @@ Ez da gomendagarria erabltzea.
OCC::PropagateDirectory
-
+
@@ -2865,12 +2865,12 @@ Ez da gomendagarria erabltzea.
-
+
-
+
@@ -2985,54 +2985,54 @@ Ez da gomendagarria erabltzea.
Ezin da sinkronizazio egunerokoa ireki
-
+ Fitxategi izenak behintzat baliogabeko karaktere bat du
-
-
+
+
-
+
-
+
-
-
+
+ Ezabatzeko baimenik gabe, berrezartzen
-
+
-
+ Mugitzea ez dago baimenduta, elementua berrezarri da
-
+ Mugitzea ez dago baimenduta %1 irakurtzeko bakarrik delako
-
+ helburua
-
+ jatorria
diff --git a/translations/client_fa.ts b/translations/client_fa.ts
index 395d864e1..f3d1ac134 100644
--- a/translations/client_fa.ts
+++ b/translations/client_fa.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1905,7 +1905,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2858,12 +2858,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2978,54 +2978,54 @@ It is not advisable to use it.
-
+ نام فایل دارای حداقل یک کاراکتر نامعتبر است
-
-
+
+
-
+ با توجه به عدم اجازهی شما به ایجاد زیرپوشه به پوشه مجاز نیست
-
+ آپلود این فایل با توجه به فقط-خواندنی بودن آن در سرور مجاز نیست، در حال بازگرداندن
-
-
+
+ حذف مجاز نیست، در حال بازگردادن
-
+ فایلهای محلی و پوشهی اشتراک حذف شد.
-
+ انتقال مجاز نیست، مورد بازگردانده شد
-
+
-
+ مقصد
-
+ مبدا
diff --git a/translations/client_fi.ts b/translations/client_fi.ts
index 98711254c..3c006df3b 100644
--- a/translations/client_fi.ts
+++ b/translations/client_fi.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Virhe kirjoittaessa metadataa tietokantaan
@@ -1913,7 +1913,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.
OCC::PropagateDirectory
-
+ Virhe kirjoittaessa metadataa tietokantaan
@@ -2868,12 +2868,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.
Vain %1 on käytettävissä, käynnistymiseen tarvitaan %2
-
+ Ei sallittu, koska käyttöoikeutesi eivät riitä ylätason kansion lisäämiseen
-
+ Ei sallittu, koska käyttöoikeutesi eivät riitä tiedostojen lisäämiseen kyseiseen kansioon
@@ -2988,54 +2988,54 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
+ Tiedoston nimi sisältää ainakin yhden virheellisen merkin
-
-
+
+
-
+ Ei sallittu, koska oikeutesi eivät riitä alikansioiden lisäämiseen kyseiseen kansioon
-
+
-
-
+
+ Poistaminen ei ole sallittua, palautetaan
-
+ Paikalliset tiedostot ja jakokansio poistettu.
-
+ Siirtäminen ei ole sallittua, kohde palautettu
-
+ Siirto ei ole sallittu, koska %1 on "vain luku"-tilassa
-
+ kohde
-
+ lähde
diff --git a/translations/client_fr.ts b/translations/client_fr.ts
index ff699b9e6..cf6cf9656 100644
--- a/translations/client_fr.ts
+++ b/translations/client_fr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Erreur à l'écriture des métadonnées dans la base de données
@@ -1918,7 +1918,7 @@ Il est déconseillé de l'utiliser.
OCC::PropagateDirectory
-
+ Erreur à l'écriture des métadonnées dans la base de données
@@ -2873,12 +2873,12 @@ Il est déconseillé de l'utiliser.
Seulement %1 disponibles, il faut au moins %2 pour démarrer
-
+ Non autorisé car vous n'avez pas la permission d'ajouter un dossier parent
-
+ Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier
@@ -2993,54 +2993,54 @@ Il est déconseillé de l'utiliser.
Impossible d'ouvrir le journal de synchronisation
-
+ Le nom de fichier contient au moins un caractère non valable
-
-
+
+ Ignoré à cause de la liste noire "Choisir le contenu à synchroniser".
-
+ Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier
-
+ Non autorisé à envoyer ce fichier car il est en lecture seule sur le serveur. Restauration
-
-
+
+ Non autorisé à supprimer. Restauration
-
+ Fichiers locaux et répertoire de partage supprimés.
-
+ Déplacement non autorisé, élément restauré
-
+ Déplacement non autorisé car %1 est en mode lecture seule
-
+ la destination
-
+ la source
diff --git a/translations/client_gl.ts b/translations/client_gl.ts
index 9051b172d..f298eff8f 100644
--- a/translations/client_gl.ts
+++ b/translations/client_gl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1912,7 +1912,7 @@ Recomendámoslle que non o use.
OCC::PropagateDirectory
-
+
@@ -2867,12 +2867,12 @@ Recomendámoslle que non o use.
-
+
-
+
@@ -2987,54 +2987,54 @@ Recomendámoslle que non o use.
Non foi posíbel abrir o rexistro de sincronización
-
+ O nome de ficheiro contén algún carácter incorrecto
-
-
+
+ Ignorado por mor da lista negra de «escolla que sincronizar»
-
+
-
+ Non está permitido o envío xa que o ficheiro é só de lectura no servidor, restaurando
-
-
+
+ Non está permitido retiralo, restaurando
-
+ Retirados os ficheiros locais e o cartafol compartido.
-
+ Nos está permitido movelo, elemento restaurado
-
+ Bon está permitido movelo xa que %1 é só de lectura
-
+ o destino
-
+ a orixe
diff --git a/translations/client_hu.ts b/translations/client_hu.ts
index 6dfa24945..1e1a3111e 100644
--- a/translations/client_hu.ts
+++ b/translations/client_hu.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1909,7 +1909,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2863,12 +2863,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2983,54 +2983,54 @@ It is not advisable to use it.
-
+ A fájlnév legalább egy érvénytelen karaktert tartalmaz!
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+ a cél
-
+ a forrás
diff --git a/translations/client_it.ts b/translations/client_it.ts
index 415a5bdde..0b704ecee 100644
--- a/translations/client_it.ts
+++ b/translations/client_it.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Errore durante la scrittura dei metadati nel database
@@ -1917,7 +1917,7 @@ Non è consigliabile utilizzarlo.
OCC::PropagateDirectory
-
+ Errore durante la scrittura dei metadati nel database
@@ -2872,12 +2872,12 @@ Non è consigliabile utilizzarlo.
Sono disponibili solo %1, servono almeno %2 per iniziare
-
+ Non consentito poiché non disponi dei permessi per aggiungere la cartella superiore
-
+ Non consentito poiché non disponi dei permessi per aggiungere file in quella cartella
@@ -2992,54 +2992,54 @@ Non è consigliabile utilizzarlo.
Impossibile aprire il registro di sincronizzazione
-
+ Il nome del file contiene almeno un carattere non valido
-
-
+
+ Ignorato in base alla lista nera per la scelta di cosa sincronizzare
-
+ Non consentito poiché non disponi dei permessi per aggiungere sottocartelle in quella cartella
-
+ Il caricamento di questo file non è consentito poiché è in sola lettura sul server, ripristino
-
-
+
+ Rimozione non consentita, ripristino
-
+ I file locali e la cartella condivisa sono stati rimossi.
-
+ Spostamento non consentito, elemento ripristinato
-
+ Spostamento non consentito poiché %1 è in sola lettura
-
+ la destinazione
-
+ l'origine
diff --git a/translations/client_ja.ts b/translations/client_ja.ts
index 1cba3eb25..b53803b21 100644
--- a/translations/client_ja.ts
+++ b/translations/client_ja.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ メタデータのデータベースへの書き込みに失敗
@@ -1916,7 +1916,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ メタデータのデータベースへの書き込みに失敗
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
%1 しか空き容量がありません、開始するためには少なくとも %2 は必要です。
-
+ 親フォルダーを追加する権限がありません
-
+ そのフォルダーにファイルを追加する権限がありません
@@ -2991,54 +2991,54 @@ It is not advisable to use it.
同期ジャーナルを開くことができません
-
+ ファイル名に1文字以上の無効な文字が含まれています
-
-
+
+ "同期対象先" ブラックリストにより無視されました。
-
+ そのフォルダーにサブフォルダーを追加する権限がありません
-
+ サーバーでは読み取り専用となっているため、このファイルをアップロードすることはできません、復元しています
-
-
+
+ 削除できないので復元しています
-
+ ローカルファイルと共有フォルダーを削除しました。
-
+ 移動できないので項目を復元しました
-
+ %1 は読み取り専用のため移動できません
-
+ 移動先
-
+ 移動元
diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts
index c2963fea1..bdfa025bd 100644
--- a/translations/client_nb_NO.ts
+++ b/translations/client_nb_NO.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Feil ved skriving av metadata til databasen
@@ -1918,7 +1918,7 @@ Det er ikke tilrådelig å bruke den.
OCC::PropagateDirectory
-
+ Feil ved skriving av metadata til databasen
@@ -2873,12 +2873,12 @@ Det er ikke tilrådelig å bruke den.
Bare %1 er tilgjengelig, trenger minst %2 for å begynne
-
+ Ikke tillatt fordi du ikke har lov til å legge til foreldremappe
-
+ Ikke tillatt fordi du ikke har lov til å opprette filer i den mappen
@@ -2993,54 +2993,54 @@ Det er ikke tilrådelig å bruke den.
Kan ikke åpne synkroniseringsjournalen
-
+ Filnavnet inneholder minst ett ulovlig tegn
-
-
+
+ Ignorert på grunn av svartelisten "velg hva som skal synkroniseres"
-
+ Ikke tillatt fordi du ikke har lov til å lage undermapper i den mappen
-
+ Ikke tillatt å laste opp denne filenfordi den er skrivebeskyttet på serveren, gjenoppretter
-
-
+
+ Ikke tillatt å fjerne, gjenoppretter
-
+ Lokale filer og delingsmappe fjernet.
-
+ Flytting ikke tillatt, element gjenopprettet
-
+ Flytting ikke tillatt fordi %1 er skrivebeskyttet
-
+ målet
-
+ kilden
diff --git a/translations/client_nl.ts b/translations/client_nl.ts
index 78320f933..6757347ed 100644
--- a/translations/client_nl.ts
+++ b/translations/client_nl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fout bij schrijven van Metadata naar de database
@@ -1919,7 +1919,7 @@ We adviseren deze site niet te gebruiken.
OCC::PropagateDirectory
-
+ Fout bij schrijven van Metadata naar de database
@@ -2874,12 +2874,12 @@ We adviseren deze site niet te gebruiken.
Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten
-
+ Niet toegestaan omdat u geen rechten hebt om een bovenliggende map toe te voegen
-
+ Niet toegestaan omdat u geen rechten hebt om bestanden in die map toe te voegen
@@ -2994,54 +2994,54 @@ We adviseren deze site niet te gebruiken.
Kan het sync transactielog niet openen
-
+ De bestandsnaam bevat ten minste één ongeldig teken
-
-
+
+ Genegeerd vanwege de "wat synchroniseren" zwarte lijst
-
+ Niet toegestaan, omdat je geen permissies hebt om submappen aan die map toe te voegen
-
+ Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen
-
-
+
+ Niet toegestaan om te verwijderen, herstellen
-
+ Lokale bestanden en share-map verwijderd.
-
+ Verplaatsen niet toegestaan, object hersteld
-
+ Verplaatsen niet toegestaan, omdat %1 alleen-lezen is
-
+ bestemming
-
+ bron
diff --git a/translations/client_pl.ts b/translations/client_pl.ts
index 969658bc0..015cf1d77 100644
--- a/translations/client_pl.ts
+++ b/translations/client_pl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Błąd podczas zapisu metadanych do bazy
@@ -1918,7 +1918,7 @@ Niezalecane jest jego użycie.
OCC::PropagateDirectory
-
+ Błąd podczas zapisu metadanych do bazy
@@ -2873,12 +2873,12 @@ Niezalecane jest jego użycie.
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania katalogu nadrzędnego
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania plików w tym katalogu
@@ -2993,54 +2993,54 @@ Niezalecane jest jego użycie.
Nie można otworzyć dziennika synchronizacji
-
+ Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak
-
-
+
+
-
+ Niedozwolone, ponieważ nie masz uprawnień do dodawania podkatalogów w tym katalogu
-
+ Wgrywanie niedozwolone, ponieważ plik jest tylko do odczytu na serwerze, przywracanie
-
-
+
+ Brak uprawnień by usunąć, przywracanie
-
+ Lokalne pliki i udostępniane foldery zostały usunięte.
-
+ Przenoszenie niedozwolone, obiekt przywrócony
-
+ Przenoszenie niedozwolone, ponieważ %1 jest tylko do odczytu
-
+ docelowy
-
+ źródło
diff --git a/translations/client_pt.ts b/translations/client_pt.ts
index 6668b9fbb..622708599 100644
--- a/translations/client_pt.ts
+++ b/translations/client_pt.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Erro ao gravar os metadados para a base de dados
@@ -1918,7 +1918,7 @@ Não é aconselhada a sua utilização.
OCC::PropagateDirectory
-
+ Erro ao escrever a meta-informação par a base de dados
@@ -2873,12 +2873,12 @@ Não é aconselhada a sua utilização.
Apenas %1 estão disponíveis, é preciso um mínimo de %2 para começar
-
+ Não permitido, porque não tem permissão para adicionar a pasta fonte
-
+ Não permitido, porque não tem permissão para adicionar os ficheiros nessa pasta
@@ -2993,54 +2993,54 @@ Não é aconselhada a sua utilização.
Impossível abrir o jornal de sincronismo
-
+ O nome de ficheiro contém pelo menos um caráter inválido
-
-
+
+ Ignorado devido à blacklist de escolha para sincronização
-
+ Não permitido, porque não tem permissão para adicionar as subpastas nessa pasta
-
+ Não é permitido enviar este ficheiro porque este é só de leitura no servidor, a restaurar
-
-
+
+ Não autorizado para remoção, restaurando
-
+ Ficheiros locais e pasta partilhada removidos.
-
+ Mover não foi permitido, item restaurado
-
+ Mover não foi autorizado porque %1 é só de leitura
-
+ o destino
-
+ a origem
diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts
index 1fc891716..ffeaf8ee4 100644
--- a/translations/client_pt_BR.ts
+++ b/translations/client_pt_BR.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Ocorreu um erro ao escrever metadados ao banco de dados
@@ -1917,7 +1917,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ Ocorreu um erro ao escrever metadados ao banco de dados
@@ -2872,12 +2872,12 @@ It is not advisable to use it.
Apenas %1 estão disponíveis, precisamos de pelo menos %2 para começar
-
+ Não permitido porque você não tem permissão para adicionar pasta mãe
-
+ Não permitido porque você não tem permissão para adicionar arquivos na pasta
@@ -2992,54 +2992,54 @@ It is not advisable to use it.
Não é possível abrir o arquivo de sincronização
-
+ O nome do arquivo contem pelo menos um caractere inválido
-
-
+
+ Ignorado por causa da lista negra "escolher o que sincronizar"
-
+ Não permitido porque você não tem permissão para adicionar subpastas para essa pasta
-
+ Não é permitido fazer o upload deste arquivo porque ele é somente leitura no servidor, restaurando
-
-
+
+ Não é permitido remover, restaurando
-
+ Arquivos locais e pasta compartilhada removida.
-
+ Não é permitido mover, item restaurado
-
+ Não é permitido mover porque %1 é somente para leitura
-
+ o destino
-
+ a fonte
diff --git a/translations/client_ru.ts b/translations/client_ru.ts
index 574825ee9..428955195 100644
--- a/translations/client_ru.ts
+++ b/translations/client_ru.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Ошибка записи метаданных в базу данных
@@ -1917,7 +1917,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ Ошибка записи метаданных в базу данных
@@ -2872,12 +2872,12 @@ It is not advisable to use it.
Только %1 доступно, нужно как минимум %2 чтобы начать
-
+ Не разрешается, так как у вас нет полномочий на добавление родительской папки
-
+ Не разрешается, так как у вас нет полномочий на добавление файлов в эту папку
@@ -2992,54 +2992,54 @@ It is not advisable to use it.
Не удаётся открыть журнал синхронизации
-
+ Имя файла содержит по крайней мере один некорректный символ
-
-
+
+ Игнорируется из-за черного списка в "что синхронизировать"
-
+ Не разрешается, так как у вас нет полномочий на добавление подпапок в папку.
-
+ Не допускается загрузка этого файла, так как на сервере он помечен только для чтения, восстанавливаем
-
-
+
+ Не допускается удаление, восстанавливаем
-
+ Локальные файлы и общий каталог удалены.
-
+ Перемещение не допускается, элемент восстановлен
-
+ Перемещение не допускается, поскольку %1 помечен только для чтения
-
+ назначение
-
+ источник
diff --git a/translations/client_sk.ts b/translations/client_sk.ts
index 2a8193677..018293758 100644
--- a/translations/client_sk.ts
+++ b/translations/client_sk.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Chyba pri zápise metadát do databázy
@@ -1912,7 +1912,7 @@ Nie je vhodné ju používať.
OCC::PropagateDirectory
-
+ Chyba pri zápise metadát do databázy
@@ -2867,12 +2867,12 @@ Nie je vhodné ju používať.
-
+
-
+
@@ -2987,54 +2987,54 @@ Nie je vhodné ju používať.
Nemožno otvoriť sync žurnál
-
+ Názov súboru obsahuje nevhodný znak
-
-
+
+ Ignorované podľa nastavenia "vybrať čo synchronizovať"
-
+ Nie je dovolené, lebo nemáte oprávnenie pridávať podpriečinky do tohto priečinka
-
+ Nie je dovolené tento súbor nahrať, pretože je na serveri iba na čítanie. Obnovuje sa.
-
-
+
+ Nie je dovolené odstrániť. Obnovuje sa.
-
+ Lokálne súbory a zdieľaný priečinok boli odstránené.
-
+ Presunutie nie je dovolené. Položka obnovená.
-
+ Presunutie nie je dovolené, pretože %1 je na serveri iba na čítanie
-
+ cieľ
-
+ zdroj
diff --git a/translations/client_sl.ts b/translations/client_sl.ts
index 69c36e3f7..c4043a332 100644
--- a/translations/client_sl.ts
+++ b/translations/client_sl.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Napaka zapisovanja metapodatkov v podatkovno zbirko
@@ -1917,7 +1917,7 @@ Uporaba ni priporočljiva.
OCC::PropagateDirectory
-
+ Napaka zapisovanja metapodatkov v podatkovno zbirko
@@ -2872,12 +2872,12 @@ Uporaba ni priporočljiva.
Le %1 je na voljo, zahtevanih pa je vaj %2 za zagon
-
+ Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje starševske mape
-
+ Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje datotek v to mapo
@@ -2992,54 +2992,54 @@ Uporaba ni priporočljiva.
Ni mogoče odpreti dnevnika usklajevanja
-
+ Ime datoteke vsebuje vsaj en neveljaven znak.
-
-
+
+ Prezrto, ker je predmet označen na črni listi za usklajevanje
-
+ Dejanje ni dovoljeno! Ni ustreznih dovoljenj za dodajanje podmap v to mapo.
-
+ Ni dovoljeno pošiljati te datoteke, ker ima določena dovoljenja le za branje. Datoteka bo obnovljena na izvorno različico.
-
-
+
+ Odstranitev ni dovoljena, datoteka bo obnovljena.
-
+ Krajevne datoteke in mape v souporabi so odstranjene.
-
+ Premikanje ni dovoljeno, datoteka bo obnovljena.
-
+ Premikanje ni dovoljeno, ker je nastavljeno določilo %1 le za branje.
-
+ cilj
-
+ vir
diff --git a/translations/client_sr.ts b/translations/client_sr.ts
index 9b2084053..8b68bff78 100644
--- a/translations/client_sr.ts
+++ b/translations/client_sr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1911,7 +1911,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2866,12 +2866,12 @@ It is not advisable to use it.
-
+
-
+
@@ -2986,54 +2986,54 @@ It is not advisable to use it.
Не могу да отворим дневник синхронизације
-
+ Назив садржи бар један недозвољен карактер
-
-
+
+ Игнорисано јер се не налази на листи за синхронизацију
-
+
-
+ Није могуће отпремити овај фајл јер је на серверу само за читање. Враћам
-
-
+
+ Није могуће уклањање. Враћам
-
+ Локални фајлови и дељена фасцикла су уклоњени.
-
+ Премештање није дозвољено. Ставка је враћена
-
+ Премештање није дозвољено јер %1 је само за читање
-
+ одредиште
-
+ извор
diff --git a/translations/client_sv.ts b/translations/client_sv.ts
index 36ea91206..b5508c2d8 100644
--- a/translations/client_sv.ts
+++ b/translations/client_sv.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Fel vid skrivning av metadata till databasen
@@ -1918,7 +1918,7 @@ Det är inte lämpligt använda den.
OCC::PropagateDirectory
-
+ Fel vid skrivning av metadata till databasen
@@ -2873,12 +2873,12 @@ Det är inte lämpligt använda den.
Endast %1 tillgängligt, behöver minst %2 för att starta
-
+ Otillåtet eftersom du inte har rättigheter att lägga till övermappar
-
+ Otillåtet eftersom du inte har rättigheter att lägga till filer i den mappen.
@@ -2993,54 +2993,54 @@ Det är inte lämpligt använda den.
Kunde inte öppna synk journalen
-
+ Filnamnet innehåller minst ett ogiltigt tecken
-
-
+
+ Ignorerad eftersom den är svartlistad i "välj vad som ska synkas"
-
+ Otillåtet eftersom du inte har rättigheter att lägga till undermappar i den mappen.
-
+ Inte behörig att ladda upp denna fil då den är skrivskyddad på servern, återställer
-
-
+
+ Inte behörig att radera, återställer
-
+ Lokala filer och mappar som är delade är borttagna.
-
+ Det gick inte att genomföra flytten, objektet återställs
-
+ Det gick inte att genomföra flytten då %1 är skrivskyddad
-
+ destinationen
-
+ källan
diff --git a/translations/client_th.ts b/translations/client_th.ts
index 161fc752a..96e797cff 100644
--- a/translations/client_th.ts
+++ b/translations/client_th.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล
@@ -1918,7 +1918,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
มีเพียง %1 ที่พร้อมใช้งาน คุณจำเป็นต้องมีไม่น้อยกว่า %2 เพื่อเริ่มใช้งาน
-
+ ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์หลัก
-
+ ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มไฟล์ในโฟลเดอร์นั้น
@@ -2991,54 +2991,54 @@ It is not advisable to use it.
ไม่สามารถเปิดการผสานข้อมูลเจอร์นัล
-
+ มีชื่อแฟ้มอย่างน้อยหนึ่งตัวอักษรที่ไม่ถูกต้อง
-
-
+
+ ถูกละเว้นเพราะ "ข้อมูลที่เลือกประสาน" ติดบัญชีดำ
-
+ ไม่อนุญาติเพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์ย่อยของโฟลเดอร์นั้น
-
+ ไม่อนุญาตให้อัพโหลดไฟล์นี้เพราะมันจะอ่านได้เพียงอย่างเดียวบนเซิร์ฟเวอร์ กำลังฟื้นฟู
-
-
+
+ ไม่อนุญาตให้ลบเพราะกำลังฟื้นฟู
-
+ ไฟล์ต้นทางและโฟลเดอร์ที่แชร์ถูกลบออก
-
+ ไม่ได้รับอนุญาตให้ย้าย เพราะกำลังกู้คืนรายการ
-
+ ไม่อนุญาตให้ย้ายเพราะ %1 จะอ่านได้เพียงอย่างเดียว
-
+ ปลายทาง
-
+ แหล่งที่มา
diff --git a/translations/client_tr.ts b/translations/client_tr.ts
index a83c43918..c3758557b 100644
--- a/translations/client_tr.ts
+++ b/translations/client_tr.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ Veritabanına üstveri yazma hatası
@@ -1916,7 +1916,7 @@ Kullanmanız önerilmez.
OCC::PropagateDirectory
-
+ Veritabanına üstveri yazma hatası
@@ -2871,12 +2871,12 @@ Kullanmanız önerilmez.
Sadece %1 mevcut, Çalıştırmak için en az %2 gerekmektedir
-
+ Üst dizin ekleme yetkiniz olmadığından izin verilmedi
-
+ Bu klasöre dosya ekleme yetkiniz olmadığından izin verilmedi
@@ -2991,54 +2991,54 @@ Kullanmanız önerilmez.
Eşitleme günlüğü açılamıyor
-
+ Dosya adı en az bir geçersiz karakter içeriyor
-
-
+
+ "Eşitlenecekleri seçin" kara listesinde olduğundan yoksayıldı.
-
+ Bu dizine alt dizin ekleme yetkiniz olmadığından izin verilmedi
-
+ Sunucuda salt okunur olduğundan, bu dosya yüklenemedi, geri alınıyor
-
-
+
+ Kaldırmaya izin verilmedi, geri alınıyor
-
+ Yerel dosyalar ve paylaşım klasörü kaldırıldı.
-
+ Taşımaya izin verilmedi, öge geri alındı
-
+ %1 salt okunur olduğundan taşımaya izin verilmedi
-
+ hedef
-
+ kaynak
diff --git a/translations/client_uk.ts b/translations/client_uk.ts
index 794d17164..b7408f8f1 100644
--- a/translations/client_uk.ts
+++ b/translations/client_uk.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1906,7 +1906,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2861,12 +2861,12 @@ It is not advisable to use it.
Доступно лише %1, для початку необхідно хоча б %2
-
+
-
+
@@ -2981,54 +2981,54 @@ It is not advisable to use it.
Не вдається відкрити протокол синхронізації
-
+ Ім’я файлу містить принаймні один некоректний символ
-
-
+
+ Ігнорується через чорний список в "обрати що синхронізувати"
-
+ Заборонено через відсутність прав додавання підкаталогів в цю теку.
-
+ Не дозволено завантажувати цей файл, оскільки він має дозвіл лише на перегляд, відновлюємо
-
-
+
+ Не дозволено видаляти, відновлюємо
-
+ Локальні файли та теки в загальному доступі було видалено.
-
+ Переміщення не дозволено, елемент відновлено
-
+ Переміщення не дозволено, оскільки %1 помічений тільки для перегляду
-
+ призначення
-
+ джерело
diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts
index be9bedff9..070a82800 100644
--- a/translations/client_zh_CN.ts
+++ b/translations/client_zh_CN.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+ 向数据库写入元数据错误
@@ -1916,7 +1916,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+ 向数据库写入元数据错误
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
仅有 %1 有效,至少需要 %2 才能开始
-
+ 你没有权限增加父目录
-
+ 你没有权限增加文件
@@ -2991,54 +2991,54 @@ It is not advisable to use it.
无法打开同步日志
-
+ 文件名中存在至少一个非法字符
-
-
+
+ 已忽略(“选择同步内容”黑名单)
-
+ 你没有权限增加子目录
-
+ 无法上传文件,因为服务器端此文件为只读,正在回退
-
-
+
+ 无法删除,正在回退
-
+ 本地文件和共享文件夹已被删除。
-
+ 无法移动,正在回退
-
+ 无法移动,%1为是只读的
-
+ 目标
-
+ 源
diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts
index e09bc854b..2772e0944 100644
--- a/translations/client_zh_TW.ts
+++ b/translations/client_zh_TW.ts
@@ -522,7 +522,7 @@
OCC::CleanupPollsJob
-
+
@@ -1916,7 +1916,7 @@ It is not advisable to use it.
OCC::PropagateDirectory
-
+
@@ -2871,12 +2871,12 @@ It is not advisable to use it.
目前僅有 %1 可以使用,至少需要 %2 才能開始
-
+ 拒絕此操作,您沒有新增母資料夾的權限。
-
+ 拒絕此操作,您沒有新增檔案在此資料夾的權限。
@@ -2991,54 +2991,54 @@ It is not advisable to use it.
同步處理日誌無法開啟
-
+ 檔案名稱含有不合法的字元
-
-
+
+ 已忽略。根據 "選擇要同步的項目"的黑名單
-
+ 拒絕此操作,您沒有在此新增子資料夾的權限。
-
+ 拒絕上傳此檔案,此檔案在伺服器是唯讀檔,復原中
-
-
+
+ 不允許刪除,復原中
-
+ 本地端檔案和共享資料夾已被刪除。
-
+ 不允許移動,物件復原中
-
+ 不允許移動,因為 %1 是唯讀的
-
+ 目標
-
+ 來源
From e4bf3ec19aa9dffd4300c4d2c11109507ed2e7d8 Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Sun, 25 Sep 2016 02:18:36 +0200
Subject: [PATCH 45/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index b0afba626..8418adbe0 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -343,6 +343,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
From 323ebf9bf2a2a0900e383484999eea73172fceeb Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Mon, 26 Sep 2016 02:18:30 +0200
Subject: [PATCH 46/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
translations/client_cs.ts | 4 ++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 8418adbe0..194665479 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -346,6 +346,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_cs.ts b/translations/client_cs.ts
index 930ea1857..d2166b7bc 100644
--- a/translations/client_cs.ts
+++ b/translations/client_cs.ts
@@ -3071,7 +3071,7 @@ Nedoporučuje se jí používat.
-
+ <p>Copyright ownCloud GmbH</p>
@@ -3296,7 +3296,7 @@ Nedoporučuje se jí používat.
-
+ <p>Verze %2. Pro další informace navštivte <a href="%3">%4</a></p><p><small>Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz a další.</small></p><p>Copyright ownCloud GmbH</p><p>Licencováno pod GNU General Public License (GPL) Version 2.0<br/>ownCloud a ownCloud logo jsou registrované obchodní známky ownCloud, Inc. ve Spojených státech, ostatních zemích nebo obojí</p>
From 826a675f32c8bb733854d7c78e9fe5ade3aae5ae Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Tue, 27 Sep 2016 02:18:32 +0200
Subject: [PATCH 47/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 194665479..dfbc8bb78 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -349,6 +349,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
From 3e1690ff7abbcfe00d8d565860511110bc61cc7b Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Wed, 14 Sep 2016 15:42:19 +0200
Subject: [PATCH 48/93] Improvements to file recall
---
csync/tests/ownCloud/t_recall.pl | 6 +++++
src/libsync/propagatedownload.cpp | 45 ++++++++++++++++++++++---------
2 files changed, 38 insertions(+), 13 deletions(-)
diff --git a/csync/tests/ownCloud/t_recall.pl b/csync/tests/ownCloud/t_recall.pl
index 244618cf8..de0e17069 100755
--- a/csync/tests/ownCloud/t_recall.pl
+++ b/csync/tests/ownCloud/t_recall.pl
@@ -56,6 +56,8 @@ assertLocalAndRemoteDir( '', 0);
printInfo( "Testing with a .sys.admin#recall#" );
system("echo 'dir/file2.dat' > ". $tmpdir . ".sys.admin\#recall\#");
system("echo 'dir/file3.dat' >> ". $tmpdir . ".sys.admin\#recall\#");
+system("echo 'nonexistant' >> ". $tmpdir . ".sys.admin\#recall\#");
+system("echo '/tmp/t_recall/file4.dat' >> ". $tmpdir . ".sys.admin\#recall\#");
glob_put( "$tmpdir/.sys.admin\#recall\#", "" );
csync();
@@ -68,6 +70,10 @@ assert( -e glob(localDir().'dir/file3_.sys.admin#recall#-*.dat' ) );
assert( -e glob(localDir().'dir/file2.dat' ) );
assert( -e glob(localDir().'dir/file3.dat' ) );
+assert( !-e glob(localDir().'nonexistant*' ) );
+assert( !-e glob('/tmp/t_recall/file4_.sys.admin#recall#-*.dat' ) );
+assert( -e glob('/tmp/t_recall/file4.dat' ) );
+
#Remove the recall file
unlink(localDir() . ".sys.admin#recall#");
diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp
index 27a214d75..92618e7b7 100644
--- a/src/libsync/propagatedownload.cpp
+++ b/src/libsync/propagatedownload.cpp
@@ -617,30 +617,47 @@ static QString makeRecallFileName(const QString &fn)
return recallFileName;
}
-static void handleRecallFile(const QString &fn)
+void handleRecallFile(const QString& filePath, const QString& folderPath, SyncJournalDb& journal)
{
- qDebug() << "handleRecallFile: " << fn;
+ qDebug() << "handleRecallFile: " << filePath;
- FileSystem::setFileHidden(fn, true);
+ FileSystem::setFileHidden(filePath, true);
- QFile file(fn);
+ QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "Could not open recall file" << file.errorString();
return;
}
- QFileInfo existingFile(fn);
- QDir thisDir = existingFile.dir();
+ QFileInfo existingFile(filePath);
+ QDir baseDir = existingFile.dir();
while (!file.atEnd()) {
QByteArray line = file.readLine();
line.chop(1); // remove trailing \n
- QString fpath = thisDir.filePath(line);
- QString rpath = makeRecallFileName(fpath);
- qDebug() << "Copy recall file: " << fpath << " -> " << rpath;
+ QString recalledFile = QDir::cleanPath(baseDir.filePath(line));
+ if (!recalledFile.startsWith(folderPath) || !recalledFile.startsWith(baseDir.path())) {
+ qDebug() << "Ignoring recall of " << recalledFile;
+ continue;
+ }
+
+ // Path of the recalled file in the local folder
+ QString localRecalledFile = recalledFile.mid(folderPath.size());
+
+ SyncJournalFileRecord record = journal.getFileRecord(localRecalledFile);
+ if (!record.isValid()) {
+ qDebug() << "No db entry for recall of" << localRecalledFile;
+ continue;
+ }
+
+ qDebug() << "Recalling" << localRecalledFile << "Checksum:" << record._contentChecksumType << record._contentChecksum;
+
+ QString targetPath = makeRecallFileName(recalledFile);
+
+ qDebug() << "Copy recall file: " << recalledFile << " -> " << targetPath;
// Remove the target first, QFile::copy will not overwrite it.
- FileSystem::remove(rpath);
- QFile::copy(fpath, rpath);
+ FileSystem::remove(targetPath);
+ QFile::copy(recalledFile, targetPath);
}
}
@@ -797,8 +814,10 @@ void PropagateDownloadFileQNAM::downloadFinished()
done(isConflict ? SyncFileItem::Conflict : SyncFileItem::Success);
// handle the special recall file
- if(_item->_file == QLatin1String(".sys.admin#recall#") || _item->_file.endsWith("/.sys.admin#recall#")) {
- handleRecallFile(fn);
+ if(!_item->_remotePerm.contains("S")
+ && (_item->_file == QLatin1String(".sys.admin#recall#")
+ || _item->_file.endsWith("/.sys.admin#recall#"))) {
+ handleRecallFile(fn, _propagator->_localDir, *_propagator->_journal);
}
qint64 duration = _stopwatch.elapsed();
From aa5d3055be1c339fdd5c8acdfbbe795f529d0fa3 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Thu, 15 Sep 2016 14:56:37 +0200
Subject: [PATCH 49/93] Folder/Watcher: Fix up #5174 #5153 (#5186)
It was surprising to have a broken symlink return empty for
canonical path.
---
src/gui/folder.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index b1112e13a..87f600bc1 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -123,9 +123,11 @@ Folder::~Folder()
void Folder::checkLocalPath()
{
const QFileInfo fi(_definition.localPath);
-
_canonicalLocalPath = fi.canonicalFilePath();
- if( !_canonicalLocalPath.endsWith('/') ) {
+ if (_canonicalLocalPath.isEmpty()) {
+ qDebug() << "Broken symlink:" << _definition.localPath;
+ _canonicalLocalPath = _definition.localPath;
+ } else if( !_canonicalLocalPath.endsWith('/') ) {
_canonicalLocalPath.append('/');
}
From 2b274e9460b6236e0f2e54d3b4cef57eca64e980 Mon Sep 17 00:00:00 2001
From: Jocelyn Turcotte
Date: Wed, 14 Sep 2016 15:31:05 +0200
Subject: [PATCH 50/93] Fix the MSVC build
- Replace functions that are provided by MinGW with a Win32-based
implementation
- Explicitly export needed symbols from ocsync.dll
- Rename share.h to sharemanager.h since the name clashes with one
of the Windows headers and get included from there
- Remove the timestamp from the fallback csync stderr logging, it's
not used since we always provide a log callback
---
CMakeLists.txt | 9 +-
cmake/modules/Warnings.cmake | 32 +++----
csync/src/CMakeLists.txt | 13 +++
csync/src/csync.c | 1 -
csync/src/csync.h | 64 ++++++-------
csync/src/csync_exclude.c | 7 +-
csync/src/csync_exclude.h | 6 +-
csync/src/csync_log.c | 43 +--------
csync/src/csync_misc.c | 1 -
csync/src/csync_misc.h | 2 +-
csync/src/csync_private.h | 3 -
csync/src/csync_reconcile.h | 2 +-
csync/src/csync_rename.h | 8 +-
csync/src/csync_statedb.c | 11 +--
csync/src/csync_time.c | 22 ++++-
csync/src/csync_time.h | 1 +
csync/src/csync_util.h | 6 +-
csync/src/std/CMakeLists.txt | 6 ++
csync/src/std/asprintf.c | 90 +++++++++++++++++++
csync/src/std/asprintf.h | 60 +++++++++++++
csync/src/std/c_private.h | 13 ++-
csync/src/std/c_time.c | 4 +
csync/src/std/c_time.h | 1 -
csync/src/vio/csync_vio_local.h | 10 +--
csync/src/vio/csync_vio_local_win.c | 1 -
csync/tests/csync_tests/check_csync_exclude.c | 1 +
csync/tests/csync_tests/check_csync_log.c | 1 -
.../csync_tests/check_csync_statedb_load.c | 1 -
csync/tests/std_tests/check_std_c_time.c | 1 -
csync/tests/vio_tests/check_vio.c | 1 -
csync/tests/vio_tests/check_vio_ext.c | 1 -
src/cmd/cmd.cpp | 1 +
src/gui/CMakeLists.txt | 2 +-
src/gui/ocssharejob.h | 2 +-
src/gui/sharelinkwidget.cpp | 2 +-
src/gui/{share.cpp => sharemanager.cpp} | 16 ++--
src/gui/{share.h => sharemanager.h} | 11 ++-
src/gui/shareusergroupwidget.cpp | 2 +-
src/libsync/CMakeLists.txt | 1 -
src/libsync/filesystem.cpp | 3 +-
src/libsync/propagatedownload.cpp | 4 +
41 files changed, 315 insertions(+), 151 deletions(-)
create mode 100644 csync/src/std/asprintf.c
create mode 100644 csync/src/std/asprintf.h
rename src/gui/{share.cpp => sharemanager.cpp} (98%)
rename src/gui/{share.h => sharemanager.h} (99%)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7429278f..a5eb52bab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 2.6)
cmake_policy(VERSION 2.8.0)
+if(POLICY CMP0020)
+ cmake_policy(SET CMP0020 NEW)
+endif()
project(client)
@@ -57,7 +60,7 @@ endif()
include(GNUInstallDirs)
include(DefineInstallationPaths)
-
+include(GenerateExportHeader)
include(GetGitRevisionDescription)
@@ -166,6 +169,9 @@ find_package(SQLite3 3.8.0 REQUIRED)
# On some OS, we want to use our own, not the system sqlite
if (USE_OUR_OWN_SQLITE3)
include_directories(BEFORE ${SQLITE3_INCLUDE_DIR})
+ if (WIN32)
+ add_definitions(-DSQLITE_API=__declspec\(dllimport\))
+ endif()
endif()
find_package(ZLIB)
@@ -180,6 +186,7 @@ add_definitions(-DUNICODE)
add_definitions(-D_UNICODE)
if( WIN32 )
add_definitions( -D__USE_MINGW_ANSI_STDIO=1 )
+add_definitions( -DNOMINMAX )
endif( WIN32 )
# Handle Translations, pick all client_* files from trans directory.
diff --git a/cmake/modules/Warnings.cmake b/cmake/modules/Warnings.cmake
index 4ba425983..1ee7a9ea7 100644
--- a/cmake/modules/Warnings.cmake
+++ b/cmake/modules/Warnings.cmake
@@ -2,21 +2,23 @@
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-if(CMAKE_COMPILER_IS_GNUCXX)
- execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
- OUTPUT_VARIABLE GCC_VERSION)
- if(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
- else(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
+ OUTPUT_VARIABLE GCC_VERSION)
+ if(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
+ else(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
+ endif(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
- endif(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
-else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
-endif(CMAKE_COMPILER_IS_GNUCXX)
+ endif()
-if(DEFINED MIRALL_FATAL_WARNINGS)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
-endif(DEFINED MIRALL_FATAL_WARNINGS)
+ if(DEFINED MIRALL_FATAL_WARNINGS)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+ endif(DEFINED MIRALL_FATAL_WARNINGS)
+endif()
diff --git a/csync/src/CMakeLists.txt b/csync/src/CMakeLists.txt
index 6f5fc6095..cb07377e9 100644
--- a/csync/src/CMakeLists.txt
+++ b/csync/src/CMakeLists.txt
@@ -81,6 +81,13 @@ set(csync_HDRS
# Statically include sqlite
if (USE_OUR_OWN_SQLITE3)
list(APPEND csync_SRCS ${SQLITE3_SOURCE})
+ if (WIN32)
+ # We want to export sqlite symbols from the ocsync DLL without
+ # having to patch both sqlite3.h and the amalgation sqlite3.c,
+ # so do the import/export magic manually through the build system.
+ remove_definitions(-DSQLITE_API=__declspec\(dllimport\))
+ add_definitions(-DSQLITE_API=__declspec\(dllexport\))
+ endif()
endif()
include_directories(
@@ -91,6 +98,12 @@ include_directories(
add_library(${CSYNC_LIBRARY} SHARED ${csync_SRCS})
#add_library(${CSYNC_LIBRARY}_static STATIC ${csync_SRCS})
+generate_export_header( ${CSYNC_LIBRARY}
+ BASE_NAME ${CSYNC_LIBRARY}
+ EXPORT_MACRO_NAME OCSYNC_EXPORT
+ EXPORT_FILE_NAME ocsynclib.h
+)
+
target_link_libraries(${CSYNC_LIBRARY} ${CSYNC_LINK_LIBRARIES})
#target_link_libraries(${CSYNC_LIBRARY}_static ${CSYNC_LINK_LIBRARIES})
diff --git a/csync/src/csync.c b/csync/src/csync.c
index 281a00ee9..78660955c 100644
--- a/csync/src/csync.c
+++ b/csync/src/csync.c
@@ -30,7 +30,6 @@
#include
#include
#include
-#include
#include
#include
diff --git a/csync/src/csync.h b/csync/src/csync.h
index 678985d32..d731bb5d7 100644
--- a/csync/src/csync.h
+++ b/csync/src/csync.h
@@ -33,10 +33,10 @@
#define _CSYNC_H
#include "std/c_private.h"
+#include "ocsynclib.h"
#include
#include
#include
-#include
#include
#include
@@ -229,14 +229,14 @@ struct csync_vio_file_stat_s {
char *original_name; // only set if locale conversion fails
};
-csync_vio_file_stat_t *csync_vio_file_stat_new(void);
-csync_vio_file_stat_t *csync_vio_file_stat_copy(csync_vio_file_stat_t *file_stat);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_file_stat_new(void);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_file_stat_copy(csync_vio_file_stat_t *file_stat);
-void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
+void OCSYNC_EXPORT csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
-void csync_vio_file_stat_set_file_id( csync_vio_file_stat_t* dst, const char* src );
+void OCSYNC_EXPORT csync_vio_file_stat_set_file_id( csync_vio_file_stat_t* dst, const char* src );
-void csync_vio_set_file_id(char* dst, const char *src );
+void OCSYNC_EXPORT csync_vio_set_file_id(char* dst, const char *src );
/**
@@ -317,7 +317,7 @@ typedef const char* (*csync_checksum_hook) (
*
* @param csync The context variable to allocate.
*/
-void csync_create(CSYNC **csync, const char *local, const char *remote);
+void OCSYNC_EXPORT csync_create(CSYNC **csync, const char *local, const char *remote);
/**
* @brief Initialize the file synchronizer.
@@ -326,7 +326,7 @@ void csync_create(CSYNC **csync, const char *local, const char *remote);
*
* @param ctx The context to initialize.
*/
-void csync_init(CSYNC *ctx);
+void OCSYNC_EXPORT csync_init(CSYNC *ctx);
/**
* @brief Update detection
@@ -335,7 +335,7 @@ void csync_init(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_update(CSYNC *ctx);
+int OCSYNC_EXPORT csync_update(CSYNC *ctx);
/**
* @brief Reconciliation
@@ -344,7 +344,7 @@ int csync_update(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_reconcile(CSYNC *ctx);
+int OCSYNC_EXPORT csync_reconcile(CSYNC *ctx);
/**
* @brief Re-initializes the csync context
@@ -353,7 +353,7 @@ int csync_reconcile(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_commit(CSYNC *ctx);
+int OCSYNC_EXPORT csync_commit(CSYNC *ctx);
/**
* @brief Destroy the csync context
@@ -364,7 +364,7 @@ int csync_commit(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_destroy(CSYNC *ctx);
+int OCSYNC_EXPORT csync_destroy(CSYNC *ctx);
/**
* @brief Get the userdata saved in the context.
@@ -386,7 +386,7 @@ void *csync_get_userdata(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_userdata(CSYNC *ctx, void *userdata);
+int OCSYNC_EXPORT csync_set_userdata(CSYNC *ctx, void *userdata);
/**
* @brief Get the authentication callback set.
@@ -396,7 +396,7 @@ int csync_set_userdata(CSYNC *ctx, void *userdata);
* @return The authentication callback set or NULL if an error
* occurred.
*/
-csync_auth_callback csync_get_auth_callback(CSYNC *ctx);
+csync_auth_callback OCSYNC_EXPORT csync_get_auth_callback(CSYNC *ctx);
/**
* @brief Set the authentication callback.
@@ -407,7 +407,7 @@ csync_auth_callback csync_get_auth_callback(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
+int OCSYNC_EXPORT csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
/**
* @brief Set the log level.
@@ -416,14 +416,14 @@ int csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
*
* @return 0 on success, < 0 if an error occurred.
*/
-int csync_set_log_level(int level);
+int OCSYNC_EXPORT csync_set_log_level(int level);
/**
* @brief Get the log verbosity
*
* @return The log verbosity, -1 on error.
*/
-int csync_get_log_level(void);
+int OCSYNC_EXPORT csync_get_log_level(void);
/**
* @brief Get the logging callback set.
@@ -431,7 +431,7 @@ int csync_get_log_level(void);
* @return The logging callback set or NULL if an error
* occurred.
*/
-csync_log_callback csync_get_log_callback(void);
+csync_log_callback OCSYNC_EXPORT csync_get_log_callback(void);
/**
* @brief Set the logging callback.
@@ -440,14 +440,14 @@ csync_log_callback csync_get_log_callback(void);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_log_callback(csync_log_callback cb);
+int OCSYNC_EXPORT csync_set_log_callback(csync_log_callback cb);
/**
* @brief get the userdata set for the logging callback.
*
* @return The userdata or NULL.
*/
-void *csync_get_log_userdata(void);
+void OCSYNC_EXPORT *csync_get_log_userdata(void);
/**
* @brief Set the userdata passed to the logging callback.
@@ -456,13 +456,13 @@ void *csync_get_log_userdata(void);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_log_userdata(void *data);
+int OCSYNC_EXPORT csync_set_log_userdata(void *data);
/* Used for special modes or debugging */
-CSYNC_STATUS csync_get_status(CSYNC *ctx);
+CSYNC_STATUS OCSYNC_EXPORT csync_get_status(CSYNC *ctx);
/* Used for special modes or debugging */
-int csync_set_status(CSYNC *ctx, int status);
+int OCSYNC_EXPORT csync_set_status(CSYNC *ctx, int status);
typedef int csync_treewalk_visit_func(TREE_WALK_FILE* ,void*);
@@ -475,7 +475,7 @@ typedef int csync_treewalk_visit_func(TREE_WALK_FILE* ,void*);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
+int OCSYNC_EXPORT csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
/**
* @brief Walk the remote file tree and call a visitor function for each file.
@@ -486,7 +486,7 @@ int csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int fi
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
+int OCSYNC_EXPORT csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
/**
* @brief Get the csync status string.
@@ -495,7 +495,7 @@ int csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int f
*
* @return A const pointer to a string with more precise status info.
*/
-const char *csync_get_status_string(CSYNC *ctx);
+const char OCSYNC_EXPORT *csync_get_status_string(CSYNC *ctx);
#ifdef WITH_ICONV
/**
@@ -505,7 +505,7 @@ const char *csync_get_status_string(CSYNC *ctx);
*
* @return 0 on success, or an iconv error number.
*/
-int csync_set_iconv_codec(const char *from);
+int OCSYNC_EXPORT csync_set_iconv_codec(const char *from);
#endif
/**
@@ -513,24 +513,24 @@ int csync_set_iconv_codec(const char *from);
*
* @param ctx The csync context.
*/
-void csync_request_abort(CSYNC *ctx);
+void OCSYNC_EXPORT csync_request_abort(CSYNC *ctx);
/**
* @brief Clears the abort flag. Can be called from another thread.
*
* @param ctx The csync context.
*/
-void csync_resume(CSYNC *ctx);
+void OCSYNC_EXPORT csync_resume(CSYNC *ctx);
/**
* @brief Checks for the abort flag, to be used from the modules.
*
* @param ctx The csync context.
*/
-int csync_abort_requested(CSYNC *ctx);
+int OCSYNC_EXPORT csync_abort_requested(CSYNC *ctx);
-char *csync_normalize_etag(const char *);
-time_t oc_httpdate_parse( const char *date );
+char OCSYNC_EXPORT *csync_normalize_etag(const char *);
+time_t OCSYNC_EXPORT oc_httpdate_parse( const char *date );
#ifdef __cplusplus
}
diff --git a/csync/src/csync_exclude.c b/csync/src/csync_exclude.c
index 4f106b66f..4a3a097d6 100644
--- a/csync/src/csync_exclude.c
+++ b/csync/src/csync_exclude.c
@@ -28,7 +28,6 @@
#include
#include
#include
-#include
#include "c_lib.h"
#include "c_private.h"
@@ -37,6 +36,12 @@
#include "csync_exclude.h"
#include "csync_misc.h"
+#ifdef _WIN32
+#include
+#else
+#include
+#endif
+
#define CSYNC_LOG_CATEGORY_NAME "csync.exclude"
#include "csync_log.h"
diff --git a/csync/src/csync_exclude.h b/csync/src/csync_exclude.h
index 1fe970cdd..3e49a9291 100644
--- a/csync/src/csync_exclude.h
+++ b/csync/src/csync_exclude.h
@@ -21,6 +21,8 @@
#ifndef _CSYNC_EXCLUDE_H
#define _CSYNC_EXCLUDE_H
+#include "ocsynclib.h"
+
enum csync_exclude_type_e {
CSYNC_NOT_EXCLUDED = 0,
CSYNC_FILE_SILENTLY_EXCLUDED,
@@ -46,7 +48,7 @@ int _csync_exclude_add(c_strlist_t **inList, const char *string);
*
* @return 0 on success, -1 if an error occurred with errno set.
*/
-int csync_exclude_load(const char *fname, c_strlist_t **list);
+int OCSYNC_EXPORT csync_exclude_load(const char *fname, c_strlist_t **list);
/**
* @brief Check if the given path should be excluded in a traversal situation.
@@ -72,7 +74,7 @@ CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *p
* @param filetype
* @return
*/
-CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype);
+CSYNC_EXCLUDE_TYPE OCSYNC_EXPORT csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype);
#endif /* _CSYNC_EXCLUDE_H */
/**
diff --git a/csync/src/csync_log.c b/csync/src/csync_log.c
index d5f34aa12..159ce2a83 100644
--- a/csync/src/csync_log.c
+++ b/csync/src/csync_log.c
@@ -23,12 +23,6 @@
#include
#include
#include
-#ifndef _WIN32
-#include
-#else
-#include
-#endif
-#include
#include "csync_private.h"
#include "csync_log.h"
@@ -37,46 +31,11 @@ CSYNC_THREAD int csync_log_level;
CSYNC_THREAD csync_log_callback csync_log_cb;
CSYNC_THREAD void *csync_log_userdata;
-static int current_timestring(int hires, char *buf, size_t len)
-{
- char tbuf[64];
- struct timeval tv;
- struct tm *tm;
- time_t t;
-
- gettimeofday(&tv, NULL);
- t = (time_t) tv.tv_sec;
-
- tm = localtime(&t);
- if (tm == NULL) {
- return -1;
- }
-
- if (hires) {
- strftime(tbuf, sizeof(tbuf) - 1, "%Y/%m/%d %H:%M:%S", tm);
- snprintf(buf, len, "%s.%06ld", tbuf, (long) tv.tv_usec);
- } else {
- strftime(tbuf, sizeof(tbuf) - 1, "%Y/%m/%d %H:%M:%S", tm);
- snprintf(buf, len, "%s", tbuf);
- }
-
- return 0;
-}
-
static void csync_log_stderr(int verbosity,
const char *function,
const char *buffer)
{
- char date[64] = {0};
- int rc;
-
- rc = current_timestring(1, date, sizeof(date));
- if (rc == 0) {
- fprintf(stderr, "[%s, %d] %s:", date+5, verbosity, function);
- } else {
- fprintf(stderr, "[%d] %s", verbosity, function);
- }
-
+ fprintf(stderr, "[%d] %s", verbosity, function);
fprintf(stderr, " %s\n", buffer);
}
static void csync_log_function(int verbosity,
diff --git a/csync/src/csync_misc.c b/csync/src/csync_misc.c
index a93d42213..d23236113 100644
--- a/csync/src/csync_misc.c
+++ b/csync/src/csync_misc.c
@@ -39,7 +39,6 @@
# include
#else /* _WIN32 */
# include
-# include
#endif /* _WIN32 */
#include "c_lib.h"
diff --git a/csync/src/csync_misc.h b/csync/src/csync_misc.h
index 783ef4dd5..6b9f98418 100644
--- a/csync/src/csync_misc.h
+++ b/csync/src/csync_misc.h
@@ -36,7 +36,7 @@
#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
#endif
-int csync_fnmatch(__const char *__pattern, __const char *__name, int __flags);
+int csync_fnmatch(const char *pattern, const char *name, int flags);
/**
* @brief csync_errno_to_status - errno to csync status code
diff --git a/csync/src/csync_private.h b/csync/src/csync_private.h
index 1ceede56d..0a5072466 100644
--- a/csync/src/csync_private.h
+++ b/csync/src/csync_private.h
@@ -224,9 +224,6 @@ struct _csync_treewalk_context_s
};
typedef struct _csync_treewalk_context_s _csync_treewalk_context;
-
-time_t oc_httpdate_parse( const char *date );
-
void set_errno_from_http_errcode( int err );
/**
diff --git a/csync/src/csync_reconcile.h b/csync/src/csync_reconcile.h
index 207727f45..f333adba6 100644
--- a/csync/src/csync_reconcile.h
+++ b/csync/src/csync_reconcile.h
@@ -50,7 +50,7 @@
*
* @todo Add an argument to set the algorithm to use.
*/
-int csync_reconcile_updates(CSYNC *ctx);
+int OCSYNC_EXPORT csync_reconcile_updates(CSYNC *ctx);
/**
* }@
diff --git a/csync/src/csync_rename.h b/csync/src/csync_rename.h
index a4f50a0ac..8aa2e60c7 100644
--- a/csync/src/csync_rename.h
+++ b/csync/src/csync_rename.h
@@ -27,11 +27,11 @@ extern "C" {
#endif
/* Return the final destination path of a given patch in case of renames */
-char *csync_rename_adjust_path(CSYNC *ctx, const char *path);
+char OCSYNC_EXPORT *csync_rename_adjust_path(CSYNC *ctx, const char *path);
/* Return the source of a given path in case of renames */
-char *csync_rename_adjust_path_source(CSYNC *ctx, const char *path);
-void csync_rename_destroy(CSYNC *ctx);
-void csync_rename_record(CSYNC *ctx, const char *from, const char *to);
+char OCSYNC_EXPORT *csync_rename_adjust_path_source(CSYNC *ctx, const char *path);
+void OCSYNC_EXPORT csync_rename_destroy(CSYNC *ctx);
+void OCSYNC_EXPORT csync_rename_record(CSYNC *ctx, const char *from, const char *to);
#ifdef __cplusplus
}
diff --git a/csync/src/csync_statedb.c b/csync/src/csync_statedb.c
index 519a45748..95b8e78e6 100644
--- a/csync/src/csync_statedb.c
+++ b/csync/src/csync_statedb.c
@@ -27,7 +27,6 @@
#include
#include
-#include
#include
#include
#include
@@ -53,7 +52,7 @@
#define sqlite_open(A, B) sqlite3_open_v2(A,B, SQLITE_OPEN_READONLY+SQLITE_OPEN_NOMUTEX, NULL)
-#define SQLTM_TIME 150000
+#define SQLTM_TIME 150
#define SQLTM_COUNT 10
#define SQLITE_BUSY_HANDLED(F) if(1) { \
@@ -61,7 +60,7 @@
do { rc = F ; \
if( (rc == SQLITE_BUSY) || (rc == SQLITE_LOCKED) ) { \
n++; \
- usleep(SQLTM_TIME); \
+ csync_sleep(SQLTM_TIME); \
} \
}while( (n < SQLTM_COUNT) && ((rc == SQLITE_BUSY) || (rc == SQLITE_LOCKED))); \
}
@@ -519,8 +518,7 @@ c_strlist_t *csync_statedb_query(sqlite3 *db,
/* compile SQL program into a virtual machine, reattempteing if busy */
do {
if (busy_count) {
- /* sleep 100 msec */
- usleep(100000);
+ csync_sleep(100);
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "sqlite3_prepare: BUSY counter: %zu", busy_count);
}
err = sqlite3_prepare(db, statement, -1, &stmt, &tail);
@@ -547,8 +545,7 @@ c_strlist_t *csync_statedb_query(sqlite3 *db,
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "Busy counter has reached its maximum. Aborting this sql statement");
break;
}
- /* sleep 100 msec */
- usleep(100000);
+ csync_sleep(100);
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "sqlite3_step: BUSY counter: %zu", busy_count);
continue;
}
diff --git a/csync/src/csync_time.c b/csync/src/csync_time.c
index 48e33c190..85bdd5ff4 100644
--- a/csync/src/csync_time.c
+++ b/csync/src/csync_time.c
@@ -31,6 +31,11 @@
#include "csync_time.h"
#include "vio/csync_vio.h"
+#ifndef _WIN32
+#include
+#include
+#endif
+
#define CSYNC_LOG_CATEGORY_NAME "csync.time"
#include "csync_log.h"
@@ -45,7 +50,13 @@
int csync_gettime(struct timespec *tp)
{
-#ifdef HAVE_CLOCK_GETTIME
+#if defined(_WIN32)
+ __int64 wintime;
+ GetSystemTimeAsFileTime((FILETIME*)&wintime);
+ wintime -= 116444736000000000ll; //1jan1601 to 1jan1970
+ tp->tv_sec = wintime / 10000000ll; //seconds
+ tp->tv_nsec = wintime % 10000000ll * 100; //nano-seconds
+#elif defined(HAVE_CLOCK_GETTIME)
return clock_gettime(CSYNC_CLOCK, tp);
#else
struct timeval tv;
@@ -62,4 +73,11 @@ int csync_gettime(struct timespec *tp)
#undef CSYNC_CLOCK
-/* vim: set ts=8 sw=2 et cindent: */
+void csync_sleep(unsigned int msecs)
+{
+#if defined(_WIN32)
+ Sleep(msecs);
+#else
+ usleep(msecs * 1000);
+#endif
+}
diff --git a/csync/src/csync_time.h b/csync/src/csync_time.h
index fe91baba5..1492bef8d 100644
--- a/csync/src/csync_time.h
+++ b/csync/src/csync_time.h
@@ -26,5 +26,6 @@
#include "csync_private.h"
int csync_gettime(struct timespec *tp);
+void csync_sleep(unsigned int msecs);
#endif /* _CSYNC_TIME_H */
diff --git a/csync/src/csync_util.h b/csync/src/csync_util.h
index f8d02df7e..f65ada592 100644
--- a/csync/src/csync_util.h
+++ b/csync/src/csync_util.h
@@ -26,9 +26,9 @@
#include "csync_private.h"
-const char *csync_instruction_str(enum csync_instructions_e instr);
+const char OCSYNC_EXPORT *csync_instruction_str(enum csync_instructions_e instr);
-void csync_memstat_check(void);
+void OCSYNC_EXPORT csync_memstat_check(void);
-bool csync_file_locked_or_open( const char *dir, const char *fname);
+bool OCSYNC_EXPORT csync_file_locked_or_open( const char *dir, const char *fname);
#endif /* _CSYNC_UTIL_H */
diff --git a/csync/src/std/CMakeLists.txt b/csync/src/std/CMakeLists.txt
index 88456f354..91b8843a8 100644
--- a/csync/src/std/CMakeLists.txt
+++ b/csync/src/std/CMakeLists.txt
@@ -26,6 +26,12 @@ set(cstdlib_SRCS
c_time.c
)
+if(NOT HAVE_ASPRINTF AND NOT HAVE___MINGW_ASPRINTF)
+ list(APPEND cstdlib_SRCS
+ asprintf.c
+ )
+endif()
+
include_directories(
${CSTDLIB_PUBLIC_INCLUDE_DIRS}
${CSTDLIB_PRIVATE_INCLUDE_DIRS}
diff --git a/csync/src/std/asprintf.c b/csync/src/std/asprintf.c
new file mode 100644
index 000000000..8738df973
--- /dev/null
+++ b/csync/src/std/asprintf.c
@@ -0,0 +1,90 @@
+/*
+ https://raw.githubusercontent.com/littlstar/asprintf.c/20ce5207a4ecb24017b5a17e6cd7d006e3047146/asprintf.c
+
+ The MIT License (MIT)
+
+ Copyright (c) 2014 Little Star Media, Inc.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+*/
+
+/**
+ * `asprintf.c' - asprintf
+ *
+ * copyright (c) 2014 joseph werle
+ */
+
+#ifndef HAVE_ASPRINTF
+
+#include
+#include
+#include
+
+#include "asprintf.h"
+
+int
+asprintf (char **str, const char *fmt, ...) {
+ int size = 0;
+ va_list args;
+
+ // init variadic argumens
+ va_start(args, fmt);
+
+ // format and get size
+ size = vasprintf(str, fmt, args);
+
+ // toss args
+ va_end(args);
+
+ return size;
+}
+
+int
+vasprintf (char **str, const char *fmt, va_list args) {
+ int size = 0;
+ va_list tmpa;
+
+ // copy
+ va_copy(tmpa, args);
+
+ // apply variadic arguments to
+ // sprintf with format to get size
+ size = vsnprintf(NULL, size, fmt, tmpa);
+
+ // toss args
+ va_end(tmpa);
+
+ // return -1 to be compliant if
+ // size is less than 0
+ if (size < 0) { return -1; }
+
+ // alloc with size plus 1 for `\0'
+ *str = (char *) malloc(size + 1);
+
+ // return -1 to be compliant
+ // if pointer is `NULL'
+ if (NULL == *str) { return -1; }
+
+ // format string with original
+ // variadic arguments and set new size
+ size = vsprintf(*str, fmt, args);
+ return size;
+}
+
+#endif
diff --git a/csync/src/std/asprintf.h b/csync/src/std/asprintf.h
new file mode 100644
index 000000000..d6dd2e859
--- /dev/null
+++ b/csync/src/std/asprintf.h
@@ -0,0 +1,60 @@
+/*
+ https://raw.githubusercontent.com/littlstar/asprintf.c/20ce5207a4ecb24017b5a17e6cd7d006e3047146/asprintf.h
+
+ The MIT License (MIT)
+
+ Copyright (c) 2014 Little Star Media, Inc.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+*/
+
+/**
+ * `asprintf.h' - asprintf.c
+ *
+ * copyright (c) 2014 joseph werle
+ */
+
+#ifndef HAVE_ASPRINTF
+#ifndef ASPRINTF_H
+#define ASPRINTF_H 1
+
+#include
+
+/**
+ * Sets `char **' pointer to be a buffer
+ * large enough to hold the formatted string
+ * accepting a `va_list' args of variadic
+ * arguments.
+ */
+
+int
+vasprintf (char **, const char *, va_list);
+
+/**
+ * Sets `char **' pointer to be a buffer
+ * large enough to hold the formatted
+ * string accepting `n' arguments of
+ * variadic arguments.
+ */
+
+int
+asprintf (char **, const char *, ...);
+
+#endif
+#endif
diff --git a/csync/src/std/c_private.h b/csync/src/std/c_private.h
index a761506c5..09c1ea36b 100644
--- a/csync/src/std/c_private.h
+++ b/csync/src/std/c_private.h
@@ -31,14 +31,17 @@
#include
#ifdef _WIN32
+#include
#include
#include
#include
+#else
+#include
#endif
#include
-#ifdef _WIN32
+#ifdef __MINGW32__
#define EDQUOT 0
#define ENODATA 0
#ifndef S_IRGRP
@@ -65,6 +68,8 @@
#define nlink_t int
#define getuid() 0
#define geteuid() 0
+#elif defined(_WIN32)
+#define mode_t int
#else
#include
#endif
@@ -89,8 +94,12 @@ typedef struct stat csync_stat_t;
#define ENODATA EBADF
#endif
-#if !defined(HAVE_ASPRINTF) && defined(HAVE___MINGW_ASPRINTF)
+#if !defined(HAVE_ASPRINTF)
+#if defined(HAVE___MINGW_ASPRINTF)
#define asprintf __mingw_asprintf
+#else
+#include "asprintf.h"
+#endif
#endif
#ifndef HAVE_STRERROR_R
diff --git a/csync/src/std/c_time.c b/csync/src/std/c_time.c
index 561cd4763..ad43fed02 100644
--- a/csync/src/std/c_time.c
+++ b/csync/src/std/c_time.c
@@ -25,6 +25,10 @@
#include "c_path.h"
#include "c_time.h"
+#ifndef _WIN32
+#include
+#endif
+
struct timespec c_tspecdiff(struct timespec time1, struct timespec time0) {
struct timespec ret;
int xsec = 0;
diff --git a/csync/src/std/c_time.h b/csync/src/std/c_time.h
index a5718c1c9..aa8ef2f16 100644
--- a/csync/src/std/c_time.h
+++ b/csync/src/std/c_time.h
@@ -22,7 +22,6 @@
#define _C_TIME_H
#include
-#include
/**
* @brief Calculate time difference
diff --git a/csync/src/vio/csync_vio_local.h b/csync/src/vio/csync_vio_local.h
index dcd12ad6f..294383121 100644
--- a/csync/src/vio/csync_vio_local.h
+++ b/csync/src/vio/csync_vio_local.h
@@ -21,12 +21,10 @@
#ifndef _CSYNC_VIO_LOCAL_H
#define _CSYNC_VIO_LOCAL_H
-#include
+csync_vio_handle_t OCSYNC_EXPORT *csync_vio_local_opendir(const char *name);
+int OCSYNC_EXPORT csync_vio_local_closedir(csync_vio_handle_t *dhandle);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_local_readdir(csync_vio_handle_t *dhandle);
-csync_vio_handle_t *csync_vio_local_opendir(const char *name);
-int csync_vio_local_closedir(csync_vio_handle_t *dhandle);
-csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle);
-
-int csync_vio_local_stat(const char *uri, csync_vio_file_stat_t *buf);
+int OCSYNC_EXPORT csync_vio_local_stat(const char *uri, csync_vio_file_stat_t *buf);
#endif /* _CSYNC_VIO_LOCAL_H */
diff --git a/csync/src/vio/csync_vio_local_win.c b/csync/src/vio/csync_vio_local_win.c
index b50d0ecf6..fc4eea512 100644
--- a/csync/src/vio/csync_vio_local_win.c
+++ b/csync/src/vio/csync_vio_local_win.c
@@ -23,7 +23,6 @@
#include
#include
#include
-#include
#include
#include "windows.h"
diff --git a/csync/tests/csync_tests/check_csync_exclude.c b/csync/tests/csync_tests/check_csync_exclude.c
index 67b3fcb03..b788c1c3c 100644
--- a/csync/tests/csync_tests/check_csync_exclude.c
+++ b/csync/tests/csync_tests/check_csync_exclude.c
@@ -20,6 +20,7 @@
#include "config_csync.h"
#include
#include
+#include
#include "torture.h"
diff --git a/csync/tests/csync_tests/check_csync_log.c b/csync/tests/csync_tests/check_csync_log.c
index 61fb3aae2..a888447e3 100644
--- a/csync/tests/csync_tests/check_csync_log.c
+++ b/csync/tests/csync_tests/check_csync_log.c
@@ -19,7 +19,6 @@
*/
#include
#include
-#include
#include "torture.h"
diff --git a/csync/tests/csync_tests/check_csync_statedb_load.c b/csync/tests/csync_tests/check_csync_statedb_load.c
index 2b4a6bf93..c18c5a47e 100644
--- a/csync/tests/csync_tests/check_csync_statedb_load.c
+++ b/csync/tests/csync_tests/check_csync_statedb_load.c
@@ -18,7 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include
-#include
#include "torture.h"
diff --git a/csync/tests/std_tests/check_std_c_time.c b/csync/tests/std_tests/check_std_c_time.c
index 01580083b..df1abbe05 100644
--- a/csync/tests/std_tests/check_std_c_time.c
+++ b/csync/tests/std_tests/check_std_c_time.c
@@ -18,7 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include
-#include
#include "torture.h"
diff --git a/csync/tests/vio_tests/check_vio.c b/csync/tests/vio_tests/check_vio.c
index 745e5f3b1..e8d716f40 100644
--- a/csync/tests/vio_tests/check_vio.c
+++ b/csync/tests/vio_tests/check_vio.c
@@ -22,7 +22,6 @@
#include
#include
#include
-#include
#include "torture.h"
diff --git a/csync/tests/vio_tests/check_vio_ext.c b/csync/tests/vio_tests/check_vio_ext.c
index 7d6663aad..5642d76fc 100644
--- a/csync/tests/vio_tests/check_vio_ext.c
+++ b/csync/tests/vio_tests/check_vio_ext.c
@@ -22,7 +22,6 @@
#include
#include
#include
-#include
#include
#include "torture.h"
diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp
index fcfea2c7e..60f2aa5e0 100644
--- a/src/cmd/cmd.cpp
+++ b/src/cmd/cmd.cpp
@@ -41,6 +41,7 @@
#include
#else
#include
+#include
#endif
using namespace OCC;
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 5fc319b6f..af4c98ff9 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -70,9 +70,9 @@ set(client_SRCS
activityitemdelegate.cpp
selectivesyncdialog.cpp
settingsdialog.cpp
- share.cpp
sharedialog.cpp
sharelinkwidget.cpp
+ sharemanager.cpp
shareusergroupwidget.cpp
sharee.cpp
socketapi.cpp
diff --git a/src/gui/ocssharejob.h b/src/gui/ocssharejob.h
index ebf1885e8..29c8184fe 100644
--- a/src/gui/ocssharejob.h
+++ b/src/gui/ocssharejob.h
@@ -15,7 +15,7 @@
#define OCSSHAREJOB_H
#include "ocsjob.h"
-#include "share.h"
+#include "sharemanager.h"
#include
#include
#include
diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp
index ba93eb5d9..343565b3b 100644
--- a/src/gui/sharelinkwidget.cpp
+++ b/src/gui/sharelinkwidget.cpp
@@ -17,7 +17,7 @@
#include "account.h"
#include "capabilities.h"
-#include "share.h"
+#include "sharemanager.h"
#include "QProgressIndicator.h"
#include
diff --git a/src/gui/share.cpp b/src/gui/sharemanager.cpp
similarity index 98%
rename from src/gui/share.cpp
rename to src/gui/sharemanager.cpp
index e3c659489..c407b159f 100644
--- a/src/gui/share.cpp
+++ b/src/gui/sharemanager.cpp
@@ -11,7 +11,7 @@
* for more details.
*/
-#include "share.h"
+#include "sharemanager.h"
#include "ocssharejob.h"
#include "account.h"
@@ -30,9 +30,9 @@ Q_DECLARE_METATYPE(CreateShare)
namespace OCC {
-Share::Share(AccountPtr account,
- const QString& id,
- const QString& path,
+Share::Share(AccountPtr account,
+ const QString& id,
+ const QString& path,
const ShareType shareType,
const Permissions permissions,
const QSharedPointer shareWith)
@@ -100,7 +100,7 @@ void Share::slotDeleted()
void Share::slotOcsError(int statusCode, const QString &message)
{
- emit serverError(statusCode, message);
+ emit serverError(statusCode, message);
}
QUrl LinkShare::getLink() const
@@ -229,7 +229,7 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
if (code == 403) {
emit linkShareRequiresPassword(message);
return;
- }
+ }
//Parse share
auto data = reply.value("ocs").toMap().value("data").toMap();
@@ -329,7 +329,7 @@ void ShareManager::slotSharesFetched(const QVariantMap &reply)
newShare = parseShare(data);
}
- shares.append(QSharedPointer(newShare));
+ shares.append(QSharedPointer(newShare));
}
qDebug() << Q_FUNC_INFO << "Sending " << shares.count() << "shares";
@@ -371,7 +371,7 @@ QSharedPointer ShareManager::parseShare(const QVariantMap &data)
QSharedPointer sharee(new Sharee(data.value("share_with").toString(),
data.value("share_with_displayname").toString(),
(Sharee::Type)data.value("share_type").toInt()));
-
+
return QSharedPointer(new Share(_account,
data.value("id").toString(),
data.value("path").toString(),
diff --git a/src/gui/share.h b/src/gui/sharemanager.h
similarity index 99%
rename from src/gui/share.h
rename to src/gui/sharemanager.h
index e022624b4..8c248c686 100644
--- a/src/gui/share.h
+++ b/src/gui/sharemanager.h
@@ -11,8 +11,8 @@
* for more details.
*/
-#ifndef SHARE_H
-#define SHARE_H
+#ifndef SHAREMANAGER_H
+#define SHAREMANAGER_H
#include "accountfwd.h"
#include "sharee.h"
@@ -127,7 +127,7 @@ private slots:
class LinkShare : public Share {
Q_OBJECT
public:
-
+
explicit LinkShare(AccountPtr account,
const QString& id,
const QString& path,
@@ -154,7 +154,7 @@ public:
* In case of a server error the serverError signal is emitted.
*/
void setPublicUpload(bool publicUpload);
-
+
/*
* Set the password
*
@@ -276,7 +276,6 @@ private:
AccountPtr _account;
};
-
}
-#endif // SHARE_H
+#endif // SHAREMANAGER_H
diff --git a/src/gui/shareusergroupwidget.cpp b/src/gui/shareusergroupwidget.cpp
index b72de8ccc..546a796d6 100644
--- a/src/gui/shareusergroupwidget.cpp
+++ b/src/gui/shareusergroupwidget.cpp
@@ -24,8 +24,8 @@
#include "capabilities.h"
#include "thumbnailjob.h"
-#include "share.h"
#include "sharee.h"
+#include "sharemanager.h"
#include "QProgressIndicator.h"
#include
diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt
index 450f73f2a..abfb2cfd9 100644
--- a/src/libsync/CMakeLists.txt
+++ b/src/libsync/CMakeLists.txt
@@ -1,6 +1,5 @@
project(libsync)
set(CMAKE_AUTOMOC TRUE)
-include(GenerateExportHeader)
configure_file( version.h.in "${CMAKE_CURRENT_BINARY_DIR}/version.h" )
diff --git a/src/libsync/filesystem.cpp b/src/libsync/filesystem.cpp
index 2dd6b51dd..488d04f7b 100644
--- a/src/libsync/filesystem.cpp
+++ b/src/libsync/filesystem.cpp
@@ -29,10 +29,11 @@
#endif
#ifdef Q_OS_WIN
+#include
#include
#include
#include
-
+#include
#endif
// We use some internals of csync:
diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp
index 2b46ff781..83bd15b5a 100644
--- a/src/libsync/propagatedownload.cpp
+++ b/src/libsync/propagatedownload.cpp
@@ -31,6 +31,10 @@
#include
#include
+#ifdef Q_OS_UNIX
+#include
+#endif
+
namespace OCC {
// Always coming in with forward slashes.
From a221ac1e4d2b23b214d52d9a46911eab92fcb26a Mon Sep 17 00:00:00 2001
From: Jocelyn Turcotte
Date: Fri, 16 Sep 2016 17:55:28 +0200
Subject: [PATCH 51/93] Fix unit testing build warning on Linux
The compiler complained about the PathComponent reference on the lambdas comes from the anonymous namespace.
---
test/syncenginetestutils.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h
index b6929db91..76b2855a2 100644
--- a/test/syncenginetestutils.h
+++ b/test/syncenginetestutils.h
@@ -18,8 +18,7 @@
static const QUrl sRootUrl("owncloud://somehost/owncloud/remote.php/webdav/");
-namespace {
-QString generateEtag() {
+static QString generateEtag() {
return QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch(), 16);
}
@@ -35,7 +34,6 @@ public:
QString pathRoot() const { return first(); }
QString fileName() const { return last(); }
};
-}
class FileModifier
{
From ff701bd473242b417e8ef9b987d4593e1495020c Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 20 Sep 2016 11:55:43 +0200
Subject: [PATCH 52/93] ConnectionValidator: properly handle error in
status.php (#5188)
We wwer enot connecting to the right signal from the check server
job, and therefore we were not catching the condition in which the
json was invalid. We would then never terminate the ConnectionValidator job.
Note that instanceNotFound is also emited if there is a network error.
The log looked like this:
10:25:51.247 OCC::CheckServerJob::finished: status.php from server is not valid JSON!
10:25:51.248 OCC::CheckServerJob::finished: status.php returns: QMap() QNetworkReply::NetworkError(NoError) Reply: QNetworkReplyHttpImpl(0x2b6a790)
10:25:51.248 OCC::CheckServerJob::finished: No proper answer on QUrl("http://localhost/~owncloud/status.php")
10:26:23.235 OCC::AccountState::checkConnectivity: ConnectionValidator already running, ignoring "owncloud@localhost"
10:26:55.235 OCC::AccountState::checkConnectivity: ConnectionValidator already running, ignoring "owncloud@localhost"
[...]
---
src/libsync/connectionvalidator.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libsync/connectionvalidator.cpp b/src/libsync/connectionvalidator.cpp
index 2a955a521..a1eead282 100644
--- a/src/libsync/connectionvalidator.cpp
+++ b/src/libsync/connectionvalidator.cpp
@@ -106,7 +106,7 @@ void ConnectionValidator::slotCheckServerAndAuth()
checkJob->setTimeout(timeoutToUseMsec);
checkJob->setIgnoreCredentialFailure(true);
connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap)));
- connect(checkJob, SIGNAL(networkError(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
+ connect(checkJob, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
connect(checkJob, SIGNAL(timeout(QUrl)), SLOT(slotJobTimeout(QUrl)));
checkJob->start();
}
From 98bfa8d5de0b553262bb0107a4b68d45a8870dcc Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Wed, 21 Sep 2016 16:35:42 +0200
Subject: [PATCH 53/93] Propagator: properly send the success flag (#5189)
In case of the root directory, it may happen that the _item
is empty and the _item->_status is NoStatus. But we still need to report
the proper success or error of the whole propagation. We should really
use _hasError for that. However, _hasError is also defined to NoStatus
if there was no error, so in that case we need to set Success.
This fixes the problem in which the data-fingerprint is not saved on the
database because the SyncEngine think that the sync failed. (Issue #5185)
---
src/libsync/owncloudpropagator.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp
index d73f63c76..c875dcfd7 100644
--- a/src/libsync/owncloudpropagator.cpp
+++ b/src/libsync/owncloudpropagator.cpp
@@ -686,14 +686,14 @@ void PropagateDirectory::finalize()
SyncJournalFileRecord record(*_item, _propagator->_localDir + _item->_file);
ok = _propagator->_journal->setFileRecordMetadata(record);
if (!ok) {
- _item->_status = SyncFileItem::FatalError;
+ _hasError = _item->_status = SyncFileItem::FatalError;
_item->_errorString = tr("Error writing metadata to the database");
qWarning() << "Error writing to the database for file" << _item->_file;
}
}
}
_state = Finished;
- emit finished(_item->_status);
+ emit finished(_hasError == SyncFileItem::NoStatus ? SyncFileItem::Success : _hasError);
}
qint64 PropagateDirectory::committedDiskSpace() const
From ea9d17b41d38def0588ef638b5f5aef5711fd4ba Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Thu, 22 Sep 2016 01:15:16 +0200
Subject: [PATCH 54/93] [tx-robot] updated from transifex
---
admin/win/nsi/l10n/Portuguese.nsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/admin/win/nsi/l10n/Portuguese.nsh b/admin/win/nsi/l10n/Portuguese.nsh
index e81e535fa..d85652bc4 100644
--- a/admin/win/nsi/l10n/Portuguese.nsh
+++ b/admin/win/nsi/l10n/Portuguese.nsh
@@ -2,7 +2,7 @@
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar notas de lançamento"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Encontrados ${APPLICATION_EXECUTABLE} processo(s) em execução que precisa(m) de ser interrompido(s).$\nDeseja que o instalador o(s) termine por si?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "A terminar os processos de ${APPLICATION_EXECUTABLE}."
-StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Não foi encontrado nenhum processo para terminar!"
+StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Não foi encontrado o processo para terminar!"
StrCpy $PageReinstall_NEW_Field_1 "Está instalada no sistema uma versão antiga de ${APPLICATION_NAME}. É recomendado que desinstale a versão atual antes de instalar a mais recente. Selecione a operação que deseja executar e clique em $\"Seguinte$\" para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstale"
From 85b8ab178e21cf4dcaf792f68c15e55f6e0ee3c2 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 22 Sep 2016 09:02:47 +0200
Subject: [PATCH 55/93] SyncEngine: Fix renaming of folder when file are
changed (#5195)
Two bugs:
- The change filed are not considered as move, they are re-downloaded
but the old file was not removed from the database. The change in
owncloudpropagator.cpp takes care of removing the old entries.
- Next sync would then remove the file in the server in the old folder
This was not a problem until we start reusing the sync engine, and
that the _renamedFolders map is not cleared. We were before deleting
a non-existing file. But now we delete the actual file.
Also improve the tests to be able to do move on the server.
This include support for file id.
Issue #5192
---
src/libsync/owncloudpropagator.cpp | 6 ++++
src/libsync/syncengine.cpp | 1 +
test/syncenginetestutils.h | 45 ++++++++++++++++++++++++++++--
test/testsyncengine.cpp | 27 ++++++++++++++++++
4 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp
index c875dcfd7..1ff550073 100644
--- a/src/libsync/owncloudpropagator.cpp
+++ b/src/libsync/owncloudpropagator.cpp
@@ -668,6 +668,12 @@ void PropagateDirectory::finalize()
bool ok = true;
if (!_item->isEmpty() && _hasError == SyncFileItem::NoStatus) {
if( !_item->_renameTarget.isEmpty() ) {
+ if(_item->_instruction == CSYNC_INSTRUCTION_RENAME
+ && _item->_originalFile != _item->_renameTarget) {
+ // Remove the stale entries from the database.
+ _propagator->_journal->deleteFileRecord(_item->_originalFile, true);
+ }
+
_item->_file = _item->_renameTarget;
}
diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp
index fa7b01725..9b9a79e51 100644
--- a/src/libsync/syncengine.cpp
+++ b/src/libsync/syncengine.cpp
@@ -868,6 +868,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
bool walkOk = true;
_seenFiles.clear();
_temporarilyUnavailablePaths.clear();
+ _renamedFolders.clear();
if( csync_walk_local_tree(_csync_ctx, &treewalkLocal, 0) < 0 ) {
qDebug() << "Error in local treewalk.";
diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h
index 76b2855a2..570952c9c 100644
--- a/test/syncenginetestutils.h
+++ b/test/syncenginetestutils.h
@@ -14,13 +14,17 @@
#include
#include
+#include
#include
static const QUrl sRootUrl("owncloud://somehost/owncloud/remote.php/webdav/");
-static QString generateEtag() {
+inline QString generateEtag() {
return QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch(), 16);
}
+inline QByteArray generateFileId() {
+ return QByteArray::number(qrand(), 16);
+}
class PathComponents : public QStringList {
public:
@@ -44,6 +48,7 @@ public:
virtual void setContents(const QString &relativePath, char contentChar) = 0;
virtual void appendByte(const QString &relativePath) = 0;
virtual void mkdir(const QString &relativePath) = 0;
+ virtual void rename(const QString &relativePath, const QString &relativeDestinationDirectory) = 0;
};
class DiskFileModifier : public FileModifier
@@ -85,6 +90,9 @@ public:
void mkdir(const QString &relativePath) override {
_rootDir.mkpath(relativePath);
}
+ void rename(const QString &, const QString &) override {
+ Q_ASSERT(!"not implemented");
+ }
};
class FileInfo : public FileModifier
@@ -125,6 +133,7 @@ public:
for (const auto &source : children) {
auto &dest = this->children[source.name] = source;
dest.parentPath = p;
+ dest.fixupParentPathRecursively();
}
}
@@ -156,6 +165,21 @@ public:
createDir(relativePath);
}
+ void rename(const QString &oldPath, const QString &newPath) override {
+ const PathComponents newPathComponents{newPath};
+ FileInfo *dir = findInvalidatingEtags(newPathComponents.parentDirComponents());
+ Q_ASSERT(dir);
+ Q_ASSERT(dir->isDir);
+ const PathComponents pathComponents{oldPath};
+ FileInfo *parent = findInvalidatingEtags(pathComponents.parentDirComponents());
+ Q_ASSERT(parent);
+ FileInfo fi = parent->children.take(pathComponents.fileName());
+ fi.parentPath = dir->path();
+ fi.name = newPathComponents.fileName();
+ fi.fixupParentPathRecursively();
+ dir->children.insert(newPathComponents.fileName(), std::move(fi));
+ }
+
FileInfo *find(const PathComponents &pathComponents, const bool invalidateEtags = false) {
if (pathComponents.isEmpty()) {
if (invalidateEtags)
@@ -217,6 +241,7 @@ public:
bool isShared = false;
QDateTime lastModified = QDateTime::currentDateTime().addDays(-7);
QString etag = generateEtag();
+ QByteArray fileId = generateFileId();
qint64 size = 0;
char contentChar = 'W';
@@ -228,6 +253,19 @@ private:
FileInfo *findInvalidatingEtags(const PathComponents &pathComponents) {
return find(pathComponents, true);
}
+
+ void fixupParentPathRecursively() {
+ auto p = path();
+ for (auto it = children.begin(); it != children.end(); ++it) {
+ Q_ASSERT(it.key() == it->name);
+ it->parentPath = p;
+ it->fixupParentPathRecursively();
+ }
+ }
+
+ friend inline QDebug operator<<(QDebug dbg, const FileInfo& fi) {
+ return dbg << "{ " << fi.path() << ": " << fi.children;
+ }
};
class FakePropfindReply : public QNetworkReply
@@ -273,6 +311,7 @@ public:
xml.writeTextElement(davUri, QStringLiteral("getcontentlength"), QString::number(fileInfo.size));
xml.writeTextElement(davUri, QStringLiteral("getetag"), fileInfo.etag);
xml.writeTextElement(ocUri, QStringLiteral("permissions"), fileInfo.isShared ? QStringLiteral("SRDNVCKW") : QStringLiteral("RDNVCKW"));
+ xml.writeTextElement(ocUri, QStringLiteral("id"), fileInfo.fileId);
xml.writeEndElement(); // prop
xml.writeTextElement(davUri, QStringLiteral("status"), "HTTP/1.1 200 OK");
xml.writeEndElement(); // propstat
@@ -282,6 +321,7 @@ public:
Q_ASSERT(request.url().path().startsWith(sRootUrl.path()));
QString fileName = request.url().path().mid(sRootUrl.path().length());
const FileInfo *fileInfo = remoteRootFileInfo.find(fileName);
+ Q_ASSERT(fileInfo);
writeFileResponse(*fileInfo);
foreach(const FileInfo &childFileInfo, fileInfo->children)
@@ -380,7 +420,7 @@ public:
}
Q_INVOKABLE void respond() {
- // FIXME: setRawHeader("OC-FileId", fileInfo->???);
+ setRawHeader("OC-FileId", fileInfo->fileId);
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
emit metaDataChanged();
emit finished();
@@ -443,6 +483,7 @@ public:
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
setRawHeader("OC-ETag", fileInfo->etag.toLatin1());
setRawHeader("ETag", fileInfo->etag.toLatin1());
+ setRawHeader("OC-FileId", fileInfo->fileId);
emit metaDataChanged();
if (bytesAvailable())
emit readyRead();
diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp
index 55d2ce614..bfb44e22b 100644
--- a/test/testsyncengine.cpp
+++ b/test/testsyncengine.cpp
@@ -119,6 +119,33 @@ private slots:
QVERIFY(itemDidCompleteSuccessfully(completeSpy, "a3.eml"));
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
}
+
+ void testRemoteChangeInMovedFolder() {
+ // issue #5192
+ FakeFolder fakeFolder{FileInfo{ QString(), {
+ FileInfo { QStringLiteral("folder"), {
+ FileInfo{ QStringLiteral("folderA"), { { QStringLiteral("file.txt"), 400 } } },
+ QStringLiteral("folderB")
+ }
+ }}}};
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+ // Edit a file in a moved directory.
+ fakeFolder.remoteModifier().setContents("folder/folderA/file.txt", 'a');
+ fakeFolder.remoteModifier().rename("folder/folderA", "folder/folderB/folderA");
+ fakeFolder.syncOnce();
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ auto oldState = fakeFolder.currentLocalState();
+ QVERIFY(oldState.find(PathComponents("folder/folderB/folderA/file.txt")));
+ QVERIFY(!oldState.find(PathComponents("folder/folderA/file.txt")));
+
+ // This sync should not remove the file
+ fakeFolder.syncOnce();
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(fakeFolder.currentLocalState(), oldState);
+
+ }
};
QTEST_GUILESS_MAIN(TestSyncEngine)
From 0cea3d85f56b496d0f1cedc9b2b882471c2b557c Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Thu, 22 Sep 2016 09:57:42 +0200
Subject: [PATCH 56/93] Add log messages for LockWatcher use #5190
---
src/gui/lockwatcher.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/gui/lockwatcher.cpp b/src/gui/lockwatcher.cpp
index 7b1247990..2e01eacfa 100644
--- a/src/gui/lockwatcher.cpp
+++ b/src/gui/lockwatcher.cpp
@@ -15,6 +15,7 @@
#include "filesystem.h"
#include
+#include
using namespace OCC;
@@ -30,6 +31,7 @@ LockWatcher::LockWatcher(QObject* parent)
void LockWatcher::addFile(const QString& path)
{
+ qDebug() << "Watching for lock of" << path << "being released";
_watchedPaths.insert(path);
}
@@ -39,6 +41,7 @@ void LockWatcher::checkFiles()
foreach (const QString& path, _watchedPaths) {
if (!FileSystem::isFileLocked(path)) {
+ qDebug() << "Lock of" << path << "was released";
emit fileUnlocked(path);
unlocked.insert(path);
}
From fca5f1b2106a5042ad5647a8541cd3770ef80220 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 22 Sep 2016 10:29:21 +0200
Subject: [PATCH 57/93] owncloudcmd: fix --silent
We ignored csync log, but we also need to silent Qt debug output.
We need to ignore it at the very begining because there might be
qDebug also in account creation.
Issue #5196
---
src/cmd/cmd.cpp | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp
index d8f127dbe..17a713735 100644
--- a/src/cmd/cmd.cpp
+++ b/src/cmd/cmd.cpp
@@ -47,6 +47,9 @@
using namespace OCC;
+
+static void nullMessageHandler(QtMsgType, const char *) {}
+
struct CmdOptions {
QString source_dir;
QString target_url;
@@ -299,6 +302,11 @@ int main(int argc, char **argv) {
parseOptions( app.arguments(), &options );
+ csync_set_log_level(options.silent ? 1 : 11);
+ if (options.silent) {
+ qInstallMsgHandler(nullMessageHandler);
+ }
+
AccountPtr account = Account::create();
if( !account ) {
@@ -415,7 +423,6 @@ int main(int argc, char **argv) {
int restartCount = 0;
restart_sync:
- csync_set_log_level(options.silent ? 1 : 11);
opts = &options;
From 383479fbfd95f6a7a5e1ad3b7a2df3b5890e0eb0 Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Thu, 22 Sep 2016 13:50:42 +0200
Subject: [PATCH 58/93] Fix Windows build with WITH_UNIT_TESTING
---
csync/src/csync_exclude.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/csync/src/csync_exclude.h b/csync/src/csync_exclude.h
index 3e49a9291..f9f26547d 100644
--- a/csync/src/csync_exclude.h
+++ b/csync/src/csync_exclude.h
@@ -37,7 +37,7 @@ enum csync_exclude_type_e {
typedef enum csync_exclude_type_e CSYNC_EXCLUDE_TYPE;
#ifdef WITH_UNIT_TESTING
-int _csync_exclude_add(c_strlist_t **inList, const char *string);
+int OCSYNC_EXPORT _csync_exclude_add(c_strlist_t **inList, const char *string);
#endif
/**
From e10c97573fc7f01578882604098bd706210879c5 Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Thu, 22 Sep 2016 14:16:58 +0200
Subject: [PATCH 59/93] Warning if mailto url fails #5142
---
src/gui/sharelinkwidget.cpp | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp
index 343565b3b..f00bbf8b4 100644
--- a/src/gui/sharelinkwidget.cpp
+++ b/src/gui/sharelinkwidget.cpp
@@ -24,6 +24,7 @@
#include
#include
#include
+#include
namespace OCC {
@@ -490,13 +491,20 @@ void ShareLinkWidget::slotPushButtonMailLinkPressed()
{
QString fileName = _sharePath.mid(_sharePath.lastIndexOf('/') + 1);
- QDesktopServices::openUrl(QUrl(QString(
- "mailto: "
- "?subject=I shared %1 with you"
- "&body=%2").arg(
- fileName,
- _shareUrl),
- QUrl::TolerantMode));
+ if (!QDesktopServices::openUrl(QUrl(QString(
+ "mailto: "
+ "?subject=I shared %1 with you"
+ "&body=%2").arg(
+ fileName,
+ _shareUrl),
+ QUrl::TolerantMode))) {
+ QMessageBox::warning(
+ this,
+ tr("Could not open email client"),
+ tr("There was an error when launching the email client to "
+ "create a new message. Maybe no default email client is "
+ "configured?"));
+ }
}
void ShareLinkWidget::slotCheckBoxEditingClicked()
From bc04f7995979ce79b3d95022fac2fbaf4db922be Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 22 Sep 2016 15:03:15 +0200
Subject: [PATCH 60/93] Missing Inc -> GmbH (#5181)
---
src/libsync/owncloudtheme.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libsync/owncloudtheme.cpp b/src/libsync/owncloudtheme.cpp
index f5fcbd945..09121acd6 100644
--- a/src/libsync/owncloudtheme.cpp
+++ b/src/libsync/owncloudtheme.cpp
@@ -49,8 +49,8 @@ QString ownCloudTheme::about() const
"Olivier Goffart, Markus Götz and others.
"
"
Copyright ownCloud GmbH
"
"
Licensed under the GNU General Public License (GPL) Version 2.0 "
- "ownCloud and the ownCloud Logo are registered trademarks of ownCloud, "
- "Inc. in the United States, other countries, or both.
"
+ "ownCloud and the ownCloud Logo are registered trademarks of ownCloud GmbH "
+ "in the United States, other countries, or both."
)
.arg(MIRALL_VERSION_STRING)
.arg("https://" MIRALL_STRINGIFY(APPLICATION_DOMAIN))
From 98efb075357fa64f424070e723db1786faa89d25 Mon Sep 17 00:00:00 2001
From: ckamm
Date: Fri, 23 Sep 2016 10:44:54 +0200
Subject: [PATCH 61/93] Tray: Workaround collection (#5179)
Tray: Workaround collection
* QDBus workaround for Qt 5.5.0 only, there were reports of the tray
working fine with 5.5.1. #5164
* OWNCLOUD_FORCE_QDBUS_TRAY_WORKAROUND to force the workaround on an off
* OWNCLOUD_TRAY_UPDATE_WHILE_VISIBLE to enable or disable updating of
the menu while it's visible - disable by default due to problems on OSX and Xubuntu.
* Track the visibility of the tray menu with aboutToShow/aboutToHide
only on OSX - the aboutToHide signal doesn't trigger reliably on linux
* Refactor such that setupContextMenu is different from updateContextMenu
* Don't use on-demand updating of the tray menu when the qdbus workaround
is active, instead to occasional (30s) updates of the tray menu.
---
src/gui/owncloudgui.cpp | 232 ++++++++++++++++++++++++++--------------
src/gui/owncloudgui.h | 13 ++-
2 files changed, 164 insertions(+), 81 deletions(-)
diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp
index 60be57f24..1f5226944 100644
--- a/src/gui/owncloudgui.cpp
+++ b/src/gui/owncloudgui.cpp
@@ -56,7 +56,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_settingsDialog(new SettingsDialog(this)),
#endif
_logBrowser(0),
- _contextMenuVisible(false),
+ _contextMenuVisibleOsx(false),
_recentActionsMenu(0),
_qdbusmenuWorkaround(false),
_folderOpenActionMapper(new QSignalMapper(this)),
@@ -93,9 +93,9 @@ ownCloudGui::ownCloudGui(Application *parent) :
this,SLOT(slotSyncStateChange(Folder*)));
connect( AccountManager::instance(), SIGNAL(accountAdded(AccountState*)),
- SLOT(setupContextMenuIfVisible()));
+ SLOT(updateContextMenuNeeded()));
connect( AccountManager::instance(), SIGNAL(accountRemoved(AccountState*)),
- SLOT(setupContextMenuIfVisible()));
+ SLOT(updateContextMenuNeeded()));
connect( Logger::instance(), SIGNAL(guiLog(QString,QString)),
SLOT(slotShowTrayMessage(QString,QString)));
@@ -194,7 +194,7 @@ void ownCloudGui::slotTrayClicked( QSystemTrayIcon::ActivationReason reason )
void ownCloudGui::slotSyncStateChange( Folder* folder )
{
slotComputeOverallSyncStatus();
- setupContextMenuIfVisible();
+ updateContextMenuNeeded();
if( !folder ) {
return; // Valid, just a general GUI redraw was needed.
@@ -216,7 +216,7 @@ void ownCloudGui::slotSyncStateChange( Folder* folder )
void ownCloudGui::slotFoldersChanged()
{
slotComputeOverallSyncStatus();
- setupContextMenuIfVisible();
+ updateContextMenuNeeded();
}
void ownCloudGui::slotOpenPath(const QString &path)
@@ -226,7 +226,7 @@ void ownCloudGui::slotOpenPath(const QString &path)
void ownCloudGui::slotAccountStateChanged()
{
- setupContextMenuIfVisible();
+ updateContextMenuNeeded();
slotComputeOverallSyncStatus();
}
@@ -400,41 +400,154 @@ void ownCloudGui::addAccountContextMenu(AccountStatePtr accountState, QMenu *men
}
-static bool minimalTrayMenu()
-{
- static QByteArray var = qgetenv("OWNCLOUD_MINIMAL_TRAY_MENU");
- return !var.isEmpty();
-}
-
-
void ownCloudGui::slotContextMenuAboutToShow()
{
// For some reason on OS X _contextMenu->isVisible returns always false
qDebug() << "";
- _contextMenuVisible = true;
+ _contextMenuVisibleOsx = true;
}
void ownCloudGui::slotContextMenuAboutToHide()
{
// For some reason on OS X _contextMenu->isVisible returns always false
qDebug() << "";
- _contextMenuVisible = false;
+ _contextMenuVisibleOsx = false;
+}
+
+bool ownCloudGui::contextMenuVisible() const
+{
+#ifdef Q_OS_MAC
+ return _contextMenuVisibleOsx;
+#else
+ return _contextMenu->isVisible();
+#endif
+}
+
+static bool minimalTrayMenu()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_MINIMAL_TRAY_MENU");
+ return !var.isEmpty();
+}
+
+static bool updateWhileVisible()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_TRAY_UPDATE_WHILE_VISIBLE");
+ if (var == "1") {
+ return true;
+ } else if (var == "0") {
+ return false;
+ } else {
+ // triggers bug on OS X: https://bugreports.qt.io/browse/QTBUG-54845
+ // or flickering on Xubuntu
+ return false;
+ }
+}
+
+static QByteArray forceQDBusTrayWorkaround()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_FORCE_QDBUS_TRAY_WORKAROUND");
+ return var;
}
void ownCloudGui::setupContextMenu()
{
+ if (_contextMenu) {
+ return;
+ }
+
+ _contextMenu.reset(new QMenu());
+ _contextMenu->setTitle(Theme::instance()->appNameGUI() );
+
+ _recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
+
+ // this must be called only once after creating the context menu, or
+ // it will trigger a bug in Ubuntu's SNI bridge patch (11.10, 12.04).
+ _tray->setContextMenu(_contextMenu.data());
+
// The tray menu is surprisingly problematic. Being able to switch to
// a minimal version of it is a useful workaround and testing tool.
if (minimalTrayMenu()) {
- if (!_contextMenu) {
- _contextMenu.reset(new QMenu());
- _recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
- _tray->setContextMenu(_contextMenu.data());
- _contextMenu->addAction(_actionQuit);
- }
+ _contextMenu->addAction(_actionQuit);
return;
}
+ // Enables workarounds for bugs introduced in Qt 5.5.0
+ // In particular QTBUG-47863 #3672 (tray menu fails to update and
+ // becomes unresponsive) and QTBUG-48068 #3722 (click signal is
+ // emitted several times)
+ // The Qt version check intentionally uses 5.0.0 (where platformMenu()
+ // was introduced) instead of 5.5.0 to avoid issues where the Qt
+ // version used to build is different from the one used at runtime.
+ // If we build with 5.6.1 or newer, we can skip this because the
+ // bugs should be fixed there.
+#ifdef Q_OS_LINUX
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ if (qVersion() == QByteArray("5.5.0")) {
+ QObject* platformMenu = reinterpret_cast(_tray->contextMenu()->platformMenu());
+ if (platformMenu
+ && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
+ _qdbusmenuWorkaround = true;
+ qDebug() << "Enabled QDBusPlatformMenu workaround";
+ }
+ }
+#endif
+#endif
+
+ if (forceQDBusTrayWorkaround() == "1") {
+ _qdbusmenuWorkaround = true;
+ } else if (forceQDBusTrayWorkaround() == "0") {
+ _qdbusmenuWorkaround = false;
+ }
+
+ // When the qdbusmenuWorkaround is necessary, we can't do on-demand updates
+ // because the workaround is to hide and show the tray icon.
+ if (_qdbusmenuWorkaround) {
+ connect(&_workaroundBatchTrayUpdate, SIGNAL(timeout()), SLOT(updateContextMenu()));
+ _workaroundBatchTrayUpdate.setInterval(30 * 1000);
+ _workaroundBatchTrayUpdate.setSingleShot(true);
+ } else {
+ // Update the context menu whenever we're about to show it
+ // to the user.
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54633
+ connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
+ connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
+#else
+ connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(updateContextMenu()));
+#endif
+ }
+
+ // Populate the context menu now.
+ updateContextMenu();
+}
+
+void ownCloudGui::updateContextMenu()
+{
+ if (minimalTrayMenu()) {
+ return;
+ }
+
+ if (_qdbusmenuWorkaround) {
+ // To make tray menu updates work with these bugs (see setupContextMenu)
+ // we need to hide and show the tray icon. We don't want to do that
+ // while it's visible!
+ if (contextMenuVisible()) {
+ if (!_workaroundBatchTrayUpdate.isActive()) {
+ _workaroundBatchTrayUpdate.start();
+ }
+ return;
+ }
+ _tray->hide();
+ }
+
+ _contextMenu->clear();
+ slotRebuildRecentMenus();
+
+ // We must call deleteLater because we might be called from the press in one of the actions.
+ foreach (auto menu, _accountMenus) { menu->deleteLater(); }
+ _accountMenus.clear();
+
+
auto accountList = AccountManager::instance()->accounts();
bool isConfigured = (!accountList.isEmpty());
@@ -461,54 +574,6 @@ void ownCloudGui::setupContextMenu()
}
}
- if ( _contextMenu ) {
- if (_qdbusmenuWorkaround) {
- _tray->hide();
- }
- _contextMenu->clear();
- } else {
- _contextMenu.reset(new QMenu());
-
- // Update the context menu whenever we're about to show it
- // to the user.
-#ifdef Q_OS_MAC
- // https://bugreports.qt.io/browse/QTBUG-54633
-#else
- connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(setupContextMenu()));
-#endif
- connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
- connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
-
-
- _recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
- // this must be called only once after creating the context menu, or
- // it will trigger a bug in Ubuntu's SNI bridge patch (11.10, 12.04).
- _tray->setContextMenu(_contextMenu.data());
-
- // Enables workarounds for bugs introduced in Qt 5.5.0
- // In particular QTBUG-47863 #3672 (tray menu fails to update and
- // becomes unresponsive) and QTBUG-48068 #3722 (click signal is
- // emitted several times)
- // The Qt version check intentionally uses 5.0.0 (where platformMenu()
- // was introduced) instead of 5.5.0 to avoid issues where the Qt
- // version used to build is different from the one used at runtime.
-#ifdef Q_OS_LINUX
-#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
- QObject* platformMenu = reinterpret_cast(_tray->contextMenu()->platformMenu());
- if (platformMenu
- && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
- _qdbusmenuWorkaround = true;
- qDebug() << "Enabled QDBusPlatformMenu workaround";
- }
-#endif
-#endif
- }
- _contextMenu->setTitle(Theme::instance()->appNameGUI() );
- slotRebuildRecentMenus();
-
- // We must call deleteLater because we might be called from the press in one of the actions.
- foreach (auto menu, _accountMenus) { menu->deleteLater(); }
- _accountMenus.clear();
if (accountList.count() > 1) {
foreach (AccountStatePtr account, accountList) {
QMenu* accountMenu = new QMenu(account->account()->displayName(), _contextMenu.data());
@@ -581,17 +646,30 @@ void ownCloudGui::setupContextMenu()
}
}
-void ownCloudGui::setupContextMenuIfVisible()
+void ownCloudGui::updateContextMenuNeeded()
{
+ // For the workaround case updating while visible is impossible. Instead
+ // occasionally update the menu when it's invisible.
+ if (_qdbusmenuWorkaround) {
+ if (!_workaroundBatchTrayUpdate.isActive()) {
+ _workaroundBatchTrayUpdate.start();
+ }
+ return;
+ }
+
#ifdef Q_OS_MAC
// https://bugreports.qt.io/browse/QTBUG-54845
- if (!_contextMenuVisible) {
- setupContextMenu();
+ // We cannot update on demand or while visible -> update when invisible.
+ if (!contextMenuVisible()) {
+ updateContextMenu();
}
#else
- if (_contextMenuVisible)
- setupContextMenu();
+ if (updateWhileVisible() && contextMenuVisible())
+ updateContextMenu();
#endif
+
+ // If no update was done here, we might update it on-demand due to
+ // the aboutToShow() signal.
}
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)
@@ -754,13 +832,9 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const ProgressInfo&
// Update the "Recent" menu if the context menu is being shown,
// otherwise it'll be updated later, when the context menu is opened.
-#ifdef Q_OS_MAC
- // https://bugreports.qt.io/browse/QTBUG-54845
-#else
- if (_contextMenuVisible) {
+ if (updateWhileVisible() && contextMenuVisible()) {
slotRebuildRecentMenus();
}
-#endif
}
if (progress.isUpdatingEstimates()
diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h
index 682944cb5..938158d8a 100644
--- a/src/gui/owncloudgui.h
+++ b/src/gui/owncloudgui.h
@@ -24,6 +24,7 @@
#include
#include
#include
+#include
namespace OCC {
@@ -52,12 +53,16 @@ public:
static QSize settingsDialogSize() { return QSize(800, 500); }
void setupOverlayIcons();
+ /// Whether the tray menu is visible
+ bool contextMenuVisible() const;
+
signals:
void setupProxy();
public slots:
void setupContextMenu();
- void setupContextMenuIfVisible();
+ void updateContextMenu();
+ void updateContextMenuNeeded();
void slotContextMenuAboutToShow();
void slotContextMenuAboutToHide();
void slotComputeOverallSyncStatus();
@@ -104,11 +109,15 @@ private:
QPointer_logBrowser;
// tray's menu
QScopedPointer _contextMenu;
- bool _contextMenuVisible;
+
+ // Manually tracking whether the context menu is visible, but only works
+ // on OSX because aboutToHide is not reliable everywhere.
+ bool _contextMenuVisibleOsx;
QMenu *_recentActionsMenu;
QVector _accountMenus;
bool _qdbusmenuWorkaround;
+ QTimer _workaroundBatchTrayUpdate;
QMap > _shareDialogs;
QAction *_actionLogin;
From 035442b6da374cee4995e2ce2c4e377dd3d1f427 Mon Sep 17 00:00:00 2001
From: ckamm
Date: Fri, 23 Sep 2016 13:47:57 +0200
Subject: [PATCH 62/93] Improve the "new big folder" UI #5202 (#5204)
Instead of using the regular selective-sync UI (where it's unclear what
the "Cancel" button would even mean in this context), provide a
different set of buttons that allow the user to quickly synchronize
all pending big folders, none of them, or perform manual changes
as usual.
---
src/gui/accountsettings.cpp | 11 ++-
src/gui/accountsettings.ui | 127 +++++++++++++++++++++++++---------
src/gui/folderstatusmodel.cpp | 71 +++++++++++++++++++
src/gui/folderstatusmodel.h | 2 +
4 files changed, 175 insertions(+), 36 deletions(-)
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index 69028efc3..eb458079e 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -117,6 +117,10 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) :
connect(ui->selectiveSyncApply, SIGNAL(clicked()), _model, SLOT(slotApplySelectiveSync()));
connect(ui->selectiveSyncCancel, SIGNAL(clicked()), _model, SLOT(resetFolders()));
+ connect(ui->bigFolderApply, SIGNAL(clicked(bool)), _model, SLOT(slotApplySelectiveSync()));
+ connect(ui->bigFolderSyncAll, SIGNAL(clicked(bool)), _model, SLOT(slotSyncAllPendingBigFolders()));
+ connect(ui->bigFolderSyncNone, SIGNAL(clicked(bool)), _model, SLOT(slotSyncNoPendingBigFolders()));
+
connect(FolderMan::instance(), SIGNAL(folderListChanged(Folder::Map)), _model, SLOT(resetFolders()));
connect(this, SIGNAL(folderChanged()), _model, SLOT(resetFolders()));
@@ -635,12 +639,13 @@ void AccountSettings::refreshSelectiveSyncStatus()
}
if (msg.isEmpty()) {
- ui->selectiveSyncNotification->setVisible(false);
- ui->selectiveSyncNotification->setText(QString());
+ ui->selectiveSyncButtons->setVisible(true);
+ ui->bigFolderUi->setVisible(false);
} else {
- ui->selectiveSyncNotification->setVisible(true);
QString wholeMsg = tr("There are new folders that were not synchronized because they are too big: ") + msg;
ui->selectiveSyncNotification->setText(wholeMsg);
+ ui->selectiveSyncButtons->setVisible(false);
+ ui->bigFolderUi->setVisible(true);
shouldBeVisible = true;
}
diff --git a/src/gui/accountsettings.ui b/src/gui/accountsettings.ui
index 8cc236cef..f100d3752 100644
--- a/src/gui/accountsettings.ui
+++ b/src/gui/accountsettings.ui
@@ -154,44 +154,105 @@
-
-
- color: red
-
-
-
-
-
- true
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ color: red
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+ Synchronize all
+
+
+
+
+
+
+ Synchronize none
+
+
+
+
+
+
+ Apply manual changes
+
+
+
+
+
+
-
-
-
- 0
- 0
-
-
-
- Cancel
-
-
-
-
-
-
-
- 0
- 0
-
-
-
- Apply
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+ 0
+ 0
+
+
+
+ Cancel
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ Apply
+
+
+
+
diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp
index a850824d7..5b6ea1b2a 100644
--- a/src/gui/folderstatusmodel.cpp
+++ b/src/gui/folderstatusmodel.cpp
@@ -1046,6 +1046,77 @@ void FolderStatusModel::resetFolders()
setAccountState(_accountState);
}
+void FolderStatusModel::slotSyncAllPendingBigFolders()
+{
+ for (int i = 0; i < _folders.count(); ++i) {
+ if (!_folders[i]._fetched) {
+ _folders[i]._folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+ continue;
+ }
+ auto folder = _folders.at(i)._folder;
+
+ bool ok;
+ auto undecidedList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+
+ // If this folder had no undecided entries, skip it.
+ if (undecidedList.isEmpty()) {
+ continue;
+ }
+
+ // Remove all undecided folders from the blacklist
+ auto blackList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+ foreach (const auto& undecidedFolder, undecidedList) {
+ blackList.removeAll(undecidedFolder);
+ }
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, blackList);
+
+ // Add all undecided folders to the white list
+ auto whiteList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+ whiteList += undecidedList;
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, whiteList);
+
+ // Clear the undecided list
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+
+ // Trigger a sync
+ if (folder->isBusy()) {
+ folder->slotTerminateSync();
+ }
+ // The part that changed should not be read from the DB on next sync because there might be new folders
+ // (the ones that are no longer in the blacklist)
+ foreach (const auto &it, undecidedList) {
+ folder->journalDb()->avoidReadFromDbOnNextSync(it);
+ }
+ FolderMan::instance()->slotScheduleSync(folder);
+ }
+
+ resetFolders();
+}
+
+void FolderStatusModel::slotSyncNoPendingBigFolders()
+{
+ for (int i = 0; i < _folders.count(); ++i) {
+ auto folder = _folders.at(i)._folder;
+
+ // clear the undecided list
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+ }
+
+ resetFolders();
+}
+
void FolderStatusModel::slotNewBigFolder()
{
auto f = qobject_cast(sender());
diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h
index 312e978ae..f1813ca1c 100644
--- a/src/gui/folderstatusmodel.h
+++ b/src/gui/folderstatusmodel.h
@@ -107,6 +107,8 @@ public slots:
void slotUpdateFolderState(Folder *);
void slotApplySelectiveSync();
void resetFolders();
+ void slotSyncAllPendingBigFolders();
+ void slotSyncNoPendingBigFolders();
void slotSetProgress(const ProgressInfo &progress);
private slots:
From 95c479aa07e29cce0b3a948964e5056de355edd4 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Mon, 26 Sep 2016 15:45:30 +0200
Subject: [PATCH 63/93] Wizard: Do the system proxy lookup in a thread (#5160)
This is analogous to the code in ConnectionValidator.
---
src/gui/owncloudsetupwizard.cpp | 36 +++++++++++++++++++++++++++++++--
src/gui/owncloudsetupwizard.h | 2 ++
src/libsync/clientproxy.cpp | 1 -
src/libsync/clientproxy.h | 2 +-
4 files changed, 37 insertions(+), 4 deletions(-)
diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp
index 0f4637845..993bf04f0 100644
--- a/src/gui/owncloudsetupwizard.cpp
+++ b/src/gui/owncloudsetupwizard.cpp
@@ -30,6 +30,7 @@
#include "networkjobs.h"
#include "sslerrordialog.h"
#include "accountmanager.h"
+#include "clientproxy.h"
#include "creds/credentialsfactory.h"
#include "creds/abstractcredentials.h"
@@ -128,7 +129,38 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString)
account->setUrl(url);
// Reset the proxy which might had been determined previously in ConnectionValidator::checkServerAndAuth()
// when there was a previous account.
- account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::DefaultProxy));
+ account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
+
+ // Lookup system proxy in a thread https://github.com/owncloud/client/issues/2993
+ if (ClientProxy::isUsingSystemDefault()) {
+ qDebug() << "Trying to look up system proxy";
+ ClientProxy::lookupSystemProxyAsync(account->url(),
+ this, SLOT(slotSystemProxyLookupDone(QNetworkProxy)));
+ } else {
+ // We want to reset the QNAM proxy so that the global proxy settings are used (via ClientProxy settings)
+ account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::DefaultProxy));
+ // use a queued invocation so we're as asynchronous as with the other code path
+ QMetaObject::invokeMethod(this, "slotContinueDetermineAuth", Qt::QueuedConnection);
+ }
+}
+
+void OwncloudSetupWizard::slotSystemProxyLookupDone(const QNetworkProxy &proxy)
+{
+ if (proxy.type() != QNetworkProxy::NoProxy) {
+ qDebug() << "Setting QNAM proxy to be system proxy" << printQNetworkProxy(proxy);
+ } else {
+ qDebug() << "No system proxy set by OS";
+ }
+ AccountPtr account = _ocWizard->account();
+ account->networkAccessManager()->setProxy(proxy);
+
+ slotContinueDetermineAuth();
+}
+
+void OwncloudSetupWizard::slotContinueDetermineAuth()
+{
+ AccountPtr account = _ocWizard->account();
+
// Set fake credentials before we check what credential it actually is.
account->setCredentials(CredentialsFactory::create("dummy"));
CheckServerJob *job = new CheckServerJob(_ocWizard->account(), this);
@@ -136,7 +168,7 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString)
connect(job, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotOwnCloudFoundAuth(QUrl,QVariantMap)));
connect(job, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoOwnCloudFoundAuth(QNetworkReply*)));
connect(job, SIGNAL(timeout(const QUrl&)), SLOT(slotNoOwnCloudFoundAuthTimeout(const QUrl&)));
- job->setTimeout(10*1000);
+ job->setTimeout((account->url().scheme() == "https") ? 30*1000 : 10*1000);
job->start();
}
diff --git a/src/gui/owncloudsetupwizard.h b/src/gui/owncloudsetupwizard.h
index 65075ad47..8f172c8db 100644
--- a/src/gui/owncloudsetupwizard.h
+++ b/src/gui/owncloudsetupwizard.h
@@ -66,6 +66,8 @@ signals:
private slots:
void slotDetermineAuthType(const QString&);
+ void slotSystemProxyLookupDone(const QNetworkProxy &proxy);
+ void slotContinueDetermineAuth();
void slotOwnCloudFoundAuth(const QUrl&, const QVariantMap&);
void slotNoOwnCloudFoundAuth(QNetworkReply *reply);
void slotNoOwnCloudFoundAuthTimeout(const QUrl&url);
diff --git a/src/libsync/clientproxy.cpp b/src/libsync/clientproxy.cpp
index 721906645..b2fb18d30 100644
--- a/src/libsync/clientproxy.cpp
+++ b/src/libsync/clientproxy.cpp
@@ -129,7 +129,6 @@ SystemProxyRunnable::SystemProxyRunnable(const QUrl &url) : QObject(), QRunnable
void SystemProxyRunnable::run()
{
- qDebug() << Q_FUNC_INFO << "Starting system proxy lookup";
qRegisterMetaType("QNetworkProxy");
QList proxies = QNetworkProxyFactory::systemProxyForQuery(QNetworkProxyQuery(_url));
diff --git a/src/libsync/clientproxy.h b/src/libsync/clientproxy.h
index c377a04d8..6d7fbfdda 100644
--- a/src/libsync/clientproxy.h
+++ b/src/libsync/clientproxy.h
@@ -57,7 +57,7 @@ private:
QUrl _url;
};
-QString printQNetworkProxy(const QNetworkProxy &proxy);
+OWNCLOUDSYNC_EXPORT QString printQNetworkProxy(const QNetworkProxy &proxy);
}
From f1e2e42d99ccc221eeeaa612ef3550c82363354b Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Tue, 27 Sep 2016 10:52:18 +0200
Subject: [PATCH 64/93] 2.2.4: Set release date
---
ChangeLog | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index ee4f0d43e..30848411c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
ChangeLog
=========
-version 2.2.4 (release 2016-09-xx)
+version 2.2.4 (release 2016-09-27)
* Dolphin Plugin: Use the Application name for the socket path (#5172)
* SyncEngine: Fix renaming of folder when file are changed (#5195)
* Selective Sync: Fix HTTP request loop and show error in view (#5154)
From e8c8943a30ee91c35344dd2945f67b50c382797c Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Tue, 27 Sep 2016 18:21:55 +0200
Subject: [PATCH 65/93] VERSION.cmake: We're at 2.2.5
---
VERSION.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/VERSION.cmake b/VERSION.cmake
index ed25cd247..b4fd28972 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -1,6 +1,6 @@
set( MIRALL_VERSION_MAJOR 2 )
set( MIRALL_VERSION_MINOR 2 )
-set( MIRALL_VERSION_PATCH 4 )
+set( MIRALL_VERSION_PATCH 5 )
set( MIRALL_VERSION_YEAR 2016 )
set( MIRALL_SOVERSION 0 )
From 46d934bd95ae217fbc6c95368179fdfa105b5455 Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Wed, 28 Sep 2016 02:18:31 +0200
Subject: [PATCH 66/93] [tx-robot] updated from transifex
---
mirall.desktop.in | 3 +++
translations/client_ca.ts | 6 +++---
translations/client_cs.ts | 6 +++---
translations/client_de.ts | 6 +++---
translations/client_el.ts | 6 +++---
translations/client_en.ts | 6 +++---
translations/client_es.ts | 6 +++---
translations/client_es_AR.ts | 6 +++---
translations/client_et.ts | 6 +++---
translations/client_eu.ts | 6 +++---
translations/client_fa.ts | 6 +++---
translations/client_fi.ts | 6 +++---
translations/client_fr.ts | 6 +++---
translations/client_gl.ts | 6 +++---
translations/client_hu.ts | 6 +++---
translations/client_it.ts | 6 +++---
translations/client_ja.ts | 6 +++---
translations/client_nb_NO.ts | 6 +++---
translations/client_nl.ts | 6 +++---
translations/client_pl.ts | 6 +++---
translations/client_pt.ts | 6 +++---
translations/client_pt_BR.ts | 6 +++---
translations/client_ru.ts | 6 +++---
translations/client_sk.ts | 6 +++---
translations/client_sl.ts | 6 +++---
translations/client_sr.ts | 6 +++---
translations/client_sv.ts | 6 +++---
translations/client_th.ts | 6 +++---
translations/client_tr.ts | 6 +++---
translations/client_uk.ts | 6 +++---
translations/client_zh_CN.ts | 6 +++---
translations/client_zh_TW.ts | 6 +++---
32 files changed, 96 insertions(+), 93 deletions(-)
diff --git a/mirall.desktop.in b/mirall.desktop.in
index dfbc8bb78..4fbf84177 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -352,6 +352,9 @@ X-GNOME-Autostart-Delay=3
# Translations
+# Translations
+
+
# Translations
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
GenericName[oc]=Dorsièr de Sincronizacion
diff --git a/translations/client_ca.ts b/translations/client_ca.ts
index 7fc17f7bd..5307a46b5 100644
--- a/translations/client_ca.ts
+++ b/translations/client_ca.ts
@@ -1954,17 +1954,17 @@ No és aconsellada usar-la.
-
+
-
+ El fitxer ha canviat des de que es va descobrir
-
+ Error en escriure les metadades a la base de dades
diff --git a/translations/client_cs.ts b/translations/client_cs.ts
index d2166b7bc..3b55aca51 100644
--- a/translations/client_cs.ts
+++ b/translations/client_cs.ts
@@ -1956,17 +1956,17 @@ Nedoporučuje se jí používat.
Stažený soubor je prázdný, přestože server oznámil, že měl být %1.
-
+ Soubor %1 nemohl být uložen z důvodu kolize názvu se souborem v místním systému!
-
+ Soubor se mezitím změnil
-
+ Chyba zápisu metadat do databáze
diff --git a/translations/client_de.ts b/translations/client_de.ts
index 18edf083c..d8f7f28d1 100644
--- a/translations/client_de.ts
+++ b/translations/client_de.ts
@@ -1954,17 +1954,17 @@ Es ist nicht ratsam, diese zu benutzen.
Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat.
-
+ Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gespeichert geladen werden!
-
+ Datei ist seit der Entdeckung geändert worden
-
+ Fehler beim Schreiben der Metadaten in die Datenbank
diff --git a/translations/client_el.ts b/translations/client_el.ts
index 138796167..b2efb2e6c 100644
--- a/translations/client_el.ts
+++ b/translations/client_el.ts
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
-
+ Το αρχείο %1 δεν είναι δυνατό να αποθηκευτεί λόγω διένεξης με το όνομα ενός τοπικού ονόματος αρχείου!
-
+ Το αρχείο έχει αλλάξει από όταν ανακαλύφθηκε
-
+ Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων
diff --git a/translations/client_en.ts b/translations/client_en.ts
index fd183c26e..1da9670dd 100644
--- a/translations/client_en.ts
+++ b/translations/client_en.ts
@@ -1975,17 +1975,17 @@ It is not advisable to use it.
-
+
-
+
-
+
diff --git a/translations/client_es.ts b/translations/client_es.ts
index c576301bf..f1256502f 100644
--- a/translations/client_es.ts
+++ b/translations/client_es.ts
@@ -1955,17 +1955,17 @@ No se recomienda usarla.
El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.
-
+ ¡El fichero %1 no puede guardarse debido a un conflicto con el nombre de otro fichero local!
-
+ El archivo ha cambiado desde que fue descubierto
-
+ Error al escribir los metadatos en la base de datos
diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts
index ef9829d38..65826bb9c 100644
--- a/translations/client_es_AR.ts
+++ b/translations/client_es_AR.ts
@@ -1943,17 +1943,17 @@ It is not advisable to use it.
-
+
-
+
-
+
diff --git a/translations/client_et.ts b/translations/client_et.ts
index 8d0e7a385..b52918e95 100644
--- a/translations/client_et.ts
+++ b/translations/client_et.ts
@@ -1944,17 +1944,17 @@ Selle kasutamine pole soovitatav.
-
+ Faili %1 ei saa salvestada kuna on nime konflikt kohaliku failiga!
-
+ Faili on pärast avastamist muudetud
-
+
diff --git a/translations/client_eu.ts b/translations/client_eu.ts
index ec5f55c15..1cadb6edd 100644
--- a/translations/client_eu.ts
+++ b/translations/client_eu.ts
@@ -1950,17 +1950,17 @@ Ez da gomendagarria erabltzea.
-
+
-
+
-
+
diff --git a/translations/client_fa.ts b/translations/client_fa.ts
index f3d1ac134..d93f76619 100644
--- a/translations/client_fa.ts
+++ b/translations/client_fa.ts
@@ -1943,17 +1943,17 @@ It is not advisable to use it.
-
+
-
+
-
+
diff --git a/translations/client_fi.ts b/translations/client_fi.ts
index 3c006df3b..8152c92fe 100644
--- a/translations/client_fi.ts
+++ b/translations/client_fi.ts
@@ -1951,17 +1951,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.
-
+
-
+ Tiedosto on muuttunut löytymisen jälkeen
-
+ Virhe kirjoittaessa metadataa tietokantaan
diff --git a/translations/client_fr.ts b/translations/client_fr.ts
index cf6cf9656..b9def8a79 100644
--- a/translations/client_fr.ts
+++ b/translations/client_fr.ts
@@ -1956,17 +1956,17 @@ Il est déconseillé de l'utiliser.
Le fichier téléchargé est vide malgré que le serveur a annoncé qu'il aurait dû être %1.
-
+ Le fichier %1 n'a pas pu être sauvegardé en raison d'un conflit sur le nom du fichier local !
-
+ Le fichier a changé depuis sa découverte
-
+ Erreur à l'écriture des métadonnées dans la base de données
diff --git a/translations/client_gl.ts b/translations/client_gl.ts
index f298eff8f..b2e12d187 100644
--- a/translations/client_gl.ts
+++ b/translations/client_gl.ts
@@ -1950,17 +1950,17 @@ Recomendámoslle que non o use.
-
+ Non foi posíbel gardar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local!
-
+ O ficheiro cambiou após seren atopado
-
+
diff --git a/translations/client_hu.ts b/translations/client_hu.ts
index 1e1a3111e..4075cefee 100644
--- a/translations/client_hu.ts
+++ b/translations/client_hu.ts
@@ -1947,17 +1947,17 @@ It is not advisable to use it.
-
+
-
+
-
+
diff --git a/translations/client_it.ts b/translations/client_it.ts
index 0b704ecee..6eb19868f 100644
--- a/translations/client_it.ts
+++ b/translations/client_it.ts
@@ -1955,17 +1955,17 @@ Non è consigliabile utilizzarlo.
Il file scaricato è vuoto nonostante il server indicasse una dimensione di %1.
-
+ Il file %1 non può essere salvato a causa di un conflitto con un file locale.
-
+ Il file è stato modificato dal suo rilevamento
-
+ Errore durante la scrittura dei metadati nel database
diff --git a/translations/client_ja.ts b/translations/client_ja.ts
index b53803b21..175a25e50 100644
--- a/translations/client_ja.ts
+++ b/translations/client_ja.ts
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
サーバーが通知しているファイルは %1 であるべきですが、ダウンロードファイルは空でした。
-
+ %1 はローカルファイル名が衝突しているため保存できません!
-
+ ファイルは発見以降に変更されました
-
+ メタデータのデータベースへの書き込みに失敗
diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts
index bdfa025bd..2dda63d17 100644
--- a/translations/client_nb_NO.ts
+++ b/translations/client_nb_NO.ts
@@ -1956,17 +1956,17 @@ Det er ikke tilrådelig å bruke den.
Nedlastet fil er tom, selv om serveren annonserte at den skulle være %1.
-
+ Fil %1 kan ikke lagres på grunn av lokal konflikt med filnavn.
-
+ Filen er endret siden den ble oppdaget
-
+ Feil ved skriving av metadata til databasen
diff --git a/translations/client_nl.ts b/translations/client_nl.ts
index 6757347ed..82d9cbb4c 100644
--- a/translations/client_nl.ts
+++ b/translations/client_nl.ts
@@ -1957,17 +1957,17 @@ We adviseren deze site niet te gebruiken.
Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.
-
+ Bestand %1 kan niet worden opgeslagen wegens een lokaal bestandsnaam conflict!
-
+ Het bestand is gewijzigd sinds het is gevonden
-
+ Fout bij schrijven van Metadata naar de database
diff --git a/translations/client_pl.ts b/translations/client_pl.ts
index 015cf1d77..c74aab789 100644
--- a/translations/client_pl.ts
+++ b/translations/client_pl.ts
@@ -1956,17 +1956,17 @@ Niezalecane jest jego użycie.
-
+
-
+
-
+ Błąd podczas zapisu metadanych do bazy
diff --git a/translations/client_pt.ts b/translations/client_pt.ts
index 622708599..1ce3c8173 100644
--- a/translations/client_pt.ts
+++ b/translations/client_pt.ts
@@ -1956,17 +1956,17 @@ Não é aconselhada a sua utilização.
O ficheiro transferido está vazio, apesar do servidor indicar que este deveria ter %1.
-
+ Ficheiro %1 não pode ser guardado devido à existência de um ficheiro local com o mesmo nome.
-
+ O ficheiro alterou-se desde a sua descoberta
-
+ Erro ao escrever a meta-informação par a base de dados
diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts
index ffeaf8ee4..2c93d0c29 100644
--- a/translations/client_pt_BR.ts
+++ b/translations/client_pt_BR.ts
@@ -1955,17 +1955,17 @@ It is not advisable to use it.
O arquivo baixado está vazio apesar do servidor anunciou que deveria ter %1.
-
+ O arquivo %1 não pode ser salvo por causa de um confronto com um nome de arquivo local!
-
+ Arquivo foi alterado desde a descoberta
-
+ Ocorreu um erro ao escrever metadados ao banco de dados
diff --git a/translations/client_ru.ts b/translations/client_ru.ts
index 428955195..4ed398f2b 100644
--- a/translations/client_ru.ts
+++ b/translations/client_ru.ts
@@ -1955,17 +1955,17 @@ It is not advisable to use it.
Скачанный файл пуст, хотя сервер заявил, что он должен быть %1.
-
+ Файл %1 не может быть сохранён из-за локального конфликта имен!
-
+ После обнаружения файл был изменен
-
+ Ошибка записи метаданных в базу данных
diff --git a/translations/client_sk.ts b/translations/client_sk.ts
index 018293758..cc36165c5 100644
--- a/translations/client_sk.ts
+++ b/translations/client_sk.ts
@@ -1950,17 +1950,17 @@ Nie je vhodné ju používať.
-
+ Súbor %1 nie je možné uložiť, pretože jeho názov koliduje s názvom lokálneho súboru!
-
+ Súbor sa medzitým zmenil
-
+ Chyba pri zápise metadát do databázy
diff --git a/translations/client_sl.ts b/translations/client_sl.ts
index c4043a332..8771f49c7 100644
--- a/translations/client_sl.ts
+++ b/translations/client_sl.ts
@@ -1955,17 +1955,17 @@ Uporaba ni priporočljiva.
Prejeta datoteka je prazna, čeprav je na strežniku objavljena z %1.
-
+ Datoteke %1 ni mogoče shraniti zaradi neskladja z imenom obstoječe datoteke!
-
+ Datoteka je bila po spremenjena po usklajevanju seznama datotek.
-
+ Napaka zapisovanja metapodatkov v podatkovno zbirko
diff --git a/translations/client_sr.ts b/translations/client_sr.ts
index 8b68bff78..05b17412d 100644
--- a/translations/client_sr.ts
+++ b/translations/client_sr.ts
@@ -1949,17 +1949,17 @@ It is not advisable to use it.
-
+ Фајл %1 се не може сачувати јер се судара са називом локалног фајла!
-
+ Фајл је измењен у међувремену
-
+
diff --git a/translations/client_sv.ts b/translations/client_sv.ts
index b5508c2d8..c712dfc4f 100644
--- a/translations/client_sv.ts
+++ b/translations/client_sv.ts
@@ -1956,17 +1956,17 @@ Det är inte lämpligt använda den.
Den nedladdade filen är tom men servern sa att den skulle vara %1.
-
+ Fil %1 kan inte sparas eftersom namnet krockar med en lokal fil!
-
+ Filen har ändrats sedan upptäckten
-
+ Fel vid skrivning av metadata till databasen
diff --git a/translations/client_th.ts b/translations/client_th.ts
index 96e797cff..f483de215 100644
--- a/translations/client_th.ts
+++ b/translations/client_th.ts
@@ -1956,17 +1956,17 @@ It is not advisable to use it.
ไฟล์ที่ดาวน์โหลดว่างเปล่าแม้ว่าเซิร์ฟเวอร์ประกาศว่าควรจะเป็น %1
-
+ ไฟล์ %1 ไม่สามารถบันทึกได้เพราะชื่อไฟล์ต้นทางเหมือนกัน!
-
+ ไฟล์มีการเปลี่ยนแปลงตั้งแต่ถูกพบ
-
+ ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล
diff --git a/translations/client_tr.ts b/translations/client_tr.ts
index c3758557b..69827db33 100644
--- a/translations/client_tr.ts
+++ b/translations/client_tr.ts
@@ -1954,17 +1954,17 @@ Kullanmanız önerilmez.
Sunucu boyutunu %1 olarak duyurmasına rağmen indirilen dosya boş.
-
+ Yerel bir dosya ismi ile çakıştığından, %1 dosyası kaydedilemedi!
-
+ Dosya, bulunduğundan itibaren değişmiş
-
+ Veritabanına üstveri yazma hatası
diff --git a/translations/client_uk.ts b/translations/client_uk.ts
index b7408f8f1..9c6395cba 100644
--- a/translations/client_uk.ts
+++ b/translations/client_uk.ts
@@ -1944,17 +1944,17 @@ It is not advisable to use it.
-
+ Файл %1 не збережено через локальний конфлікт назви файлу!
-
+ Файл змінився з моменту знаходження
-
+
diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts
index 070a82800..3d140a5f2 100644
--- a/translations/client_zh_CN.ts
+++ b/translations/client_zh_CN.ts
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
虽然服务器宣称已完成 %1,但实际下载文件为空。
-
+ 由于本地文件名冲突,文件 %1 无法保存。
-
+ 自从发现文件以来,它已经被改变了
-
+ 向数据库写入元数据错误
diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts
index 2772e0944..aac175689 100644
--- a/translations/client_zh_TW.ts
+++ b/translations/client_zh_TW.ts
@@ -1954,17 +1954,17 @@ It is not advisable to use it.
-
+ 檔案 %1 無法存檔,因為本地端的檔案名稱已毀損!
-
+ 尋找的過程中檔案已經被更改
-
+
From bd2bcad3baead318431fc747a7fb04d5591781ce Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Wed, 28 Sep 2016 13:00:52 +0200
Subject: [PATCH 67/93] ShareDialog: Remove context help button
Ticket #5203
---
src/gui/sharedialog.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp
index 1b2e744e5..4a8de24a5 100644
--- a/src/gui/sharedialog.cpp
+++ b/src/gui/sharedialog.cpp
@@ -46,6 +46,7 @@ ShareDialog::ShareDialog(QPointer accountState,
_userGroupWidget(NULL),
_progressIndicator(NULL)
{
+ setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setAttribute(Qt::WA_DeleteOnClose);
setObjectName("SharingDialog"); // required as group for saveGeometry call
From 5f2b1999f6c22b293cb8aa91835b53cedc2dec94 Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Wed, 28 Sep 2016 13:09:15 +0200
Subject: [PATCH 68/93] Package: Fix nautilus plugin name collision when
branded
As suggested by @olifre in #5183
---
shell_integration/nautilus/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/shell_integration/nautilus/CMakeLists.txt b/shell_integration/nautilus/CMakeLists.txt
index 6c1e9f73b..33911026f 100644
--- a/shell_integration/nautilus/CMakeLists.txt
+++ b/shell_integration/nautilus/CMakeLists.txt
@@ -19,8 +19,8 @@ if( UNIX AND NOT APPLE )
ERROR_VARIABLE errors OUTPUT_VARIABLE out)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate.py DESTINATION ${DATADIR}/nautilus-python/extensions)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate_nemo.py DESTINATION ${DATADIR}/nemo-python/extensions RENAME syncstate.py)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate.py DESTINATION ${DATADIR}/nautilus-python/extensions RENAME syncstate-${APPLICATION_SHORTNAME}.py)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate_nemo.py DESTINATION ${DATADIR}/nemo-python/extensions RENAME syncstate-${APPLICATION_SHORTNAME}.py)
From 6382a142cdcde7b970a4fa6827b476e61662e16d Mon Sep 17 00:00:00 2001
From: Jenkins for ownCloud
Date: Sat, 1 Oct 2016 01:15:17 +0200
Subject: [PATCH 69/93] [tx-robot] updated from transifex
---
admin/win/nsi/l10n/Dutch.nsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/admin/win/nsi/l10n/Dutch.nsh b/admin/win/nsi/l10n/Dutch.nsh
index e5bf94e2e..82f66b949 100644
--- a/admin/win/nsi/l10n/Dutch.nsh
+++ b/admin/win/nsi/l10n/Dutch.nsh
@@ -1,5 +1,5 @@
# Auto-generated - do not modify
-StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Toon opmerkingen bij deze uitgave"
+StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Toon opmerkingen bij deze versie"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Gevonden ${APPLICATION_EXECUTABLE} proces(sen) moet worden gestopt.$\nWilt u dat het installatieprogramma dat voor u doet?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Stoppen ${APPLICATION_EXECUTABLE} processen."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Het te stoppen proces is niet gevonden!"
From 84c925dc588bd328bf9b7e2fd1c196816c4ae787 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Thu, 6 Oct 2016 14:45:04 +0200
Subject: [PATCH 70/93] 503: Also parse other server error message (#5228)
From https://github.com/owncloud/core/pull/26145
---
src/libsync/discoveryphase.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp
index fa71944c0..b55ecbf62 100644
--- a/src/libsync/discoveryphase.cpp
+++ b/src/libsync/discoveryphase.cpp
@@ -192,7 +192,8 @@ int get_errno_from_http_errcode( int err, const QString & reason ) {
new_errno = EIO;
break;
case 503: /* Service Unavailable */
- if (reason == "Storage not available") {
+ // https://github.com/owncloud/core/pull/26145/files
+ if (reason == "Storage not available" || reason == "Storage is temporarily not available") {
new_errno = ERRNO_STORAGE_UNAVAILABLE;
} else {
new_errno = ERRNO_SERVICE_UNAVAILABLE;
From 67ecca492b71d17411ed2cb4c239fea18a7f638d Mon Sep 17 00:00:00 2001
From: Tommy Sparber
Date: Thu, 6 Oct 2016 17:18:51 +0200
Subject: [PATCH 71/93] Improve macOS SysTray/StatusBar monochrome icon (#5227)
- Use a white icon if the context menu is visible.
- Enable `QIcon::setIsMask` if compiled on Qt >= 5.6 to allow automatic
macOS color handling.
- No changes if the colored icons are used.
---
src/gui/owncloudgui.cpp | 18 ++++++++++++------
src/libsync/theme.cpp | 28 +++++++++++++++++++++-------
src/libsync/theme.h | 8 ++++----
3 files changed, 37 insertions(+), 17 deletions(-)
diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp
index 1f5226944..ae5eb0170 100644
--- a/src/gui/owncloudgui.cpp
+++ b/src/gui/owncloudgui.cpp
@@ -67,7 +67,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_tray->setParent(this);
// for the beginning, set the offline icon until the account was verified
- _tray->setIcon( Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon( Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
connect(_tray.data(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
SLOT(slotTrayClicked(QSystemTrayIcon::ActivationReason)));
@@ -262,7 +262,7 @@ void ownCloudGui::slotComputeOverallSyncStatus()
}
if (!problemAccounts.empty()) {
- _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon(Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
#ifdef Q_OS_WIN
// Windows has a 128-char tray tooltip length limit.
QStringList accountNames;
@@ -289,11 +289,11 @@ void ownCloudGui::slotComputeOverallSyncStatus()
}
if (allSignedOut) {
- _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon(Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
_tray->setToolTip(tr("Please sign in"));
return;
} else if (allPaused) {
- _tray->setIcon(Theme::instance()->syncStateIcon(SyncResult::Paused, true));
+ _tray->setIcon(Theme::instance()->syncStateIcon(SyncResult::Paused, true, contextMenuVisible()));
_tray->setToolTip(tr("Account synchronization is disabled"));
return;
}
@@ -323,12 +323,12 @@ void ownCloudGui::slotComputeOverallSyncStatus()
trayMessage = tr("No sync folders configured.");
}
- QIcon statusIcon = Theme::instance()->syncStateIcon( overallResult.status(), true);
+ QIcon statusIcon = Theme::instance()->syncStateIcon( overallResult.status(), true, contextMenuVisible());
_tray->setIcon( statusIcon );
_tray->setToolTip(trayMessage);
} else {
// undefined because there are no folders.
- QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Problem, true);
+ QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Problem, true, contextMenuVisible());
_tray->setIcon( icon );
_tray->setToolTip(tr("There are no sync folders configured."));
}
@@ -405,6 +405,9 @@ void ownCloudGui::slotContextMenuAboutToShow()
// For some reason on OS X _contextMenu->isVisible returns always false
qDebug() << "";
_contextMenuVisibleOsx = true;
+
+ // Update icon in sys tray, as it might change depending on the context menu state
+ slotComputeOverallSyncStatus();
}
void ownCloudGui::slotContextMenuAboutToHide()
@@ -412,6 +415,9 @@ void ownCloudGui::slotContextMenuAboutToHide()
// For some reason on OS X _contextMenu->isVisible returns always false
qDebug() << "";
_contextMenuVisibleOsx = false;
+
+ // Update icon in sys tray, as it might change depending on the context menu state
+ slotComputeOverallSyncStatus();
}
bool ownCloudGui::contextMenuVisible() const
diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp
index 5dfecc94b..474124275 100644
--- a/src/libsync/theme.cpp
+++ b/src/libsync/theme.cpp
@@ -115,11 +115,11 @@ QIcon Theme::trayFolderIcon( const QString& backend ) const
* helper to load a icon from either the icon theme the desktop provides or from
* the apps Qt resources.
*/
-QIcon Theme::themeIcon( const QString& name, bool sysTray ) const
+QIcon Theme::themeIcon( const QString& name, bool sysTray, bool sysTrayMenuVisible ) const
{
QString flavor;
if (sysTray) {
- flavor = systrayIconFlavor(_mono);
+ flavor = systrayIconFlavor(_mono, sysTrayMenuVisible);
} else {
flavor = QLatin1String("colored");
}
@@ -158,6 +158,14 @@ QIcon Theme::themeIcon( const QString& name, bool sysTray ) const
}
}
+ #ifdef Q_OS_MAC
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
+ // This defines the icon as a template and enables automatic macOS color handling
+ // See https://bugreports.qt.io/browse/QTBUG-42109
+ cached.setIsMask(_mono && sysTray && !sysTrayMenuVisible);
+ #endif
+ #endif
+
return cached;
}
@@ -227,11 +235,17 @@ QString Theme::defaultClientFolder() const
return appName();
}
-QString Theme::systrayIconFlavor(bool mono) const
+QString Theme::systrayIconFlavor(bool mono, bool sysTrayMenuVisible ) const
{
QString flavor;
if (mono) {
flavor = Utility::hasDarkSystray() ? QLatin1String("white") : QLatin1String("black");
+
+ #ifdef Q_OS_MAC
+ if (sysTrayMenuVisible) {
+ flavor = QLatin1String("white");
+ }
+ #endif
} else {
flavor = QLatin1String("colored");
}
@@ -331,7 +345,7 @@ QVariant Theme::customMedia( CustomMediaType type )
return re;
}
-QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
+QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray, bool sysTrayMenuVisible ) const
{
// FIXME: Mind the size!
QString statusIcon;
@@ -363,7 +377,7 @@ QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
statusIcon = QLatin1String("state-error");
}
- return themeIcon( statusIcon, sysTray );
+ return themeIcon( statusIcon, sysTray, sysTrayMenuVisible );
}
QIcon Theme::folderDisabledIcon( ) const
@@ -371,9 +385,9 @@ QIcon Theme::folderDisabledIcon( ) const
return themeIcon( QLatin1String("state-pause") );
}
-QIcon Theme::folderOfflineIcon(bool systray) const
+QIcon Theme::folderOfflineIcon(bool sysTray, bool sysTrayMenuVisible ) const
{
- return themeIcon( QLatin1String("state-offline"), systray );
+ return themeIcon( QLatin1String("state-offline"), sysTray, sysTrayMenuVisible );
}
QColor Theme::wizardHeaderTitleColor() const
diff --git a/src/libsync/theme.h b/src/libsync/theme.h
index 84416fc78..63c86b4aa 100644
--- a/src/libsync/theme.h
+++ b/src/libsync/theme.h
@@ -97,10 +97,10 @@ public:
/**
* get an sync state icon
*/
- virtual QIcon syncStateIcon( SyncResult::Status, bool sysTray = false ) const;
+ virtual QIcon syncStateIcon( SyncResult::Status, bool sysTray = false, bool sysTrayMenuVisible = false) const;
virtual QIcon folderDisabledIcon() const;
- virtual QIcon folderOfflineIcon(bool systray = false) const;
+ virtual QIcon folderOfflineIcon(bool sysTray = false, bool sysTrayMenuVisible = false) const;
virtual QIcon applicationIcon() const = 0;
#endif
@@ -152,7 +152,7 @@ public:
virtual QString enforcedLocale() const { return QString::null; }
/** colored, white or black */
- QString systrayIconFlavor(bool mono) const;
+ QString systrayIconFlavor(bool mono, bool sysTrayMenuVisible = false) const;
#ifndef TOKEN_AUTH_ONLY
/**
@@ -304,7 +304,7 @@ public:
protected:
#ifndef TOKEN_AUTH_ONLY
- QIcon themeIcon(const QString& name, bool sysTray = false) const;
+ QIcon themeIcon(const QString& name, bool sysTray = false, bool sysTrayMenuVisible = false) const;
#endif
Theme();
From f36d4562a15cd6cc4ea8c834acd24403c63a52b2 Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Fri, 7 Oct 2016 13:22:43 +0200
Subject: [PATCH 72/93] Doc: Remove mention of "F5 to reset database" #5130
---
doc/architecture.rst | 6 ------
1 file changed, 6 deletions(-)
diff --git a/doc/architecture.rst b/doc/architecture.rst
index 860b7606c..daf1a9515 100644
--- a/doc/architecture.rst
+++ b/doc/architecture.rst
@@ -199,12 +199,6 @@ the database by comparing the files and their modification times. This process
ensures that both server and client are synchronized using the appropriate NTP
time before restarting the client following a database removal.
-Pressing ``F5`` while in the Account Settings Dialog enables you to "reset" the
-journal. This function can be used to recreate the journal database.
-
-.. note:: We recommend that you use this function only when advised to do so by
- ownCloud support staff.
-
Custom WebDAV Properties
------------------------
From 91b6b888835852450e521c3a6bf5f2366e85feef Mon Sep 17 00:00:00 2001
From: Christian Kamm
Date: Fri, 7 Oct 2016 13:32:42 +0200
Subject: [PATCH 73/93] Tray: Fix crash on startup for non-OSX oses
---
src/gui/owncloudgui.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp
index ae5eb0170..3a2fd92a3 100644
--- a/src/gui/owncloudgui.cpp
+++ b/src/gui/owncloudgui.cpp
@@ -67,7 +67,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_tray->setParent(this);
// for the beginning, set the offline icon until the account was verified
- _tray->setIcon( Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
+ _tray->setIcon( Theme::instance()->folderOfflineIcon(/*systray?*/ true, /*currently visible?*/ false));
connect(_tray.data(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
SLOT(slotTrayClicked(QSystemTrayIcon::ActivationReason)));
From 86522cbbf0be43b767405cab5dfc00d1c6c6bec9 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Thu, 22 Sep 2016 11:25:27 +0200
Subject: [PATCH 74/93] OwnSQL: avoid crashing in
SqlQuery::reset_and_clear_bindings
The crash reporter shows a lot of crashes in sqlite3_clear_bindings
which seems to indicate that _stmt is null. We should guard against
a null value in order to avoid crashing.
This should only happen if the prepare call fails. We don't usually
check the return value of the prepare call, but if _stmt is null, the
exec call should return false, not true. We check the result of the
exec call, so this should then abort the sync with an error, rather
than crashing.
---
src/libsync/ownsql.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/libsync/ownsql.cpp b/src/libsync/ownsql.cpp
index 7628e229c..96f03efc3 100644
--- a/src/libsync/ownsql.cpp
+++ b/src/libsync/ownsql.cpp
@@ -230,8 +230,12 @@ bool SqlQuery::isPragma()
bool SqlQuery::exec()
{
+ if (!_stmt) {
+ return false;
+ }
+
// Don't do anything for selects, that is how we use the lib :-|
- if(_stmt && !isSelect() && !isPragma() ) {
+ if( !isSelect() && !isPragma() ) {
int rc, n = 0;
do {
rc = sqlite3_step(_stmt);
@@ -376,8 +380,10 @@ void SqlQuery::finish()
void SqlQuery::reset_and_clear_bindings()
{
- SQLITE_DO(sqlite3_reset(_stmt));
- SQLITE_DO(sqlite3_clear_bindings(_stmt));
+ if (_stmt) {
+ SQLITE_DO(sqlite3_reset(_stmt));
+ SQLITE_DO(sqlite3_clear_bindings(_stmt));
+ }
}
} // namespace OCC
From c2fa9b5bbf6cbdce5d6fed6c16d9ce8ac6eebd8f Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Mon, 10 Oct 2016 12:47:59 +0200
Subject: [PATCH 75/93] AccoutWizard: Change the set policy of a radio button
In an attempt to make sure the button next to it don't get too small.
Issue #5209
---
src/gui/wizard/owncloudadvancedsetuppage.ui | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/gui/wizard/owncloudadvancedsetuppage.ui b/src/gui/wizard/owncloudadvancedsetuppage.ui
index 660e43a5a..74ec741ea 100644
--- a/src/gui/wizard/owncloudadvancedsetuppage.ui
+++ b/src/gui/wizard/owncloudadvancedsetuppage.ui
@@ -267,6 +267,12 @@
+
+
+ 0
+ 0
+
+
From 57fe7b800f635450573545f882ac5da7a7582d6a Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 11 Oct 2016 10:29:24 +0200
Subject: [PATCH 76/93] Theme: Fix compiler warning
Relates #5227
---
src/libsync/theme.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp
index 474124275..53e850b99 100644
--- a/src/libsync/theme.cpp
+++ b/src/libsync/theme.cpp
@@ -237,6 +237,7 @@ QString Theme::defaultClientFolder() const
QString Theme::systrayIconFlavor(bool mono, bool sysTrayMenuVisible ) const
{
+ Q_UNUSED(sysTrayMenuVisible)
QString flavor;
if (mono) {
flavor = Utility::hasDarkSystray() ? QLatin1String("white") : QLatin1String("black");
From f75106fd8ebe615a6bb32b928cb8f4daa5e2421d Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 11 Oct 2016 09:51:14 +0200
Subject: [PATCH 77/93] SyncJournalDB: check the return value of the prepare
statements in checkConnect
Relates to #5199
---
src/libsync/syncjournaldb.cpp | 106 ++++++++++++++++++++++++----------
1 file changed, 75 insertions(+), 31 deletions(-)
diff --git a/src/libsync/syncjournaldb.cpp b/src/libsync/syncjournaldb.cpp
index d624fac1c..988646c6e 100644
--- a/src/libsync/syncjournaldb.cpp
+++ b/src/libsync/syncjournaldb.cpp
@@ -318,7 +318,9 @@ bool SyncJournalDb::checkConnect()
createQuery.bindValue(2, MIRALL_VERSION_MINOR);
createQuery.bindValue(3, MIRALL_VERSION_PATCH);
createQuery.bindValue(4, MIRALL_VERSION_BUILD);
- createQuery.exec();
+ if (!createQuery.exec()) {
+ return sqlFail("Update version", createQuery);
+ }
} else {
int major = versionQuery.intValue(0);
@@ -367,60 +369,84 @@ bool SyncJournalDb::checkConnect()
}
_getFileRecordQuery.reset(new SqlQuery(_db));
- _getFileRecordQuery->prepare(
+ if (_getFileRecordQuery->prepare(
"SELECT path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize,"
" ignoredChildrenRemote, contentChecksum, contentchecksumtype.name"
" FROM metadata"
" LEFT JOIN checksumtype as contentchecksumtype ON metadata.contentChecksumTypeId == contentchecksumtype.id"
- " WHERE phash=?1" );
+ " WHERE phash=?1" )) {
+ return sqlFail("prepare _getFileRecordQuery", *_getFileRecordQuery);
+ }
_setFileRecordQuery.reset(new SqlQuery(_db) );
- _setFileRecordQuery->prepare("INSERT OR REPLACE INTO metadata "
+ if (_setFileRecordQuery->prepare("INSERT OR REPLACE INTO metadata "
"(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) "
- "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16);" );
+ "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16);" )) {
+ return sqlFail("prepare _setFileRecordQuery", *_setFileRecordQuery);
+ }
_setFileRecordChecksumQuery.reset(new SqlQuery(_db) );
- _setFileRecordChecksumQuery->prepare(
+ if (_setFileRecordChecksumQuery->prepare(
"UPDATE metadata"
" SET contentChecksum = ?2, contentChecksumTypeId = ?3"
- " WHERE phash == ?1;");
+ " WHERE phash == ?1;")) {
+ return sqlFail("prepare _setFileRecordChecksumQuery", *_setFileRecordChecksumQuery);
+ }
_setFileRecordLocalMetadataQuery.reset(new SqlQuery(_db));
- _setFileRecordLocalMetadataQuery->prepare(
+ if (_setFileRecordLocalMetadataQuery->prepare(
"UPDATE metadata"
" SET inode=?2, modtime=?3, filesize=?4"
- " WHERE phash == ?1;");
+ " WHERE phash == ?1;")) {
+ return sqlFail("prepare _setFileRecordLocalMetadataQuery", *_setFileRecordLocalMetadataQuery);
+ }
_getDownloadInfoQuery.reset(new SqlQuery(_db) );
- _getDownloadInfoQuery->prepare( "SELECT tmpfile, etag, errorcount FROM "
- "downloadinfo WHERE path=?1" );
+ if (_getDownloadInfoQuery->prepare( "SELECT tmpfile, etag, errorcount FROM "
+ "downloadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _getDownloadInfoQuery", *_getDownloadInfoQuery);
+ }
_setDownloadInfoQuery.reset(new SqlQuery(_db) );
- _setDownloadInfoQuery->prepare( "INSERT OR REPLACE INTO downloadinfo "
+ if (_setDownloadInfoQuery->prepare( "INSERT OR REPLACE INTO downloadinfo "
"(path, tmpfile, etag, errorcount) "
- "VALUES ( ?1 , ?2, ?3, ?4 )" );
+ "VALUES ( ?1 , ?2, ?3, ?4 )" )) {
+ return sqlFail("prepare _setDownloadInfoQuery", *_setDownloadInfoQuery);
+ }
_deleteDownloadInfoQuery.reset(new SqlQuery(_db) );
- _deleteDownloadInfoQuery->prepare( "DELETE FROM downloadinfo WHERE path=?1" );
+ if (_deleteDownloadInfoQuery->prepare( "DELETE FROM downloadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _deleteDownloadInfoQuery", *_deleteDownloadInfoQuery);
+ }
_getUploadInfoQuery.reset(new SqlQuery(_db));
- _getUploadInfoQuery->prepare( "SELECT chunk, transferid, errorcount, size, modtime FROM "
- "uploadinfo WHERE path=?1" );
+ if (_getUploadInfoQuery->prepare( "SELECT chunk, transferid, errorcount, size, modtime FROM "
+ "uploadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _getUploadInfoQuery", *_getUploadInfoQuery);
+ }
_setUploadInfoQuery.reset(new SqlQuery(_db));
- _setUploadInfoQuery->prepare( "INSERT OR REPLACE INTO uploadinfo "
+ if (_setUploadInfoQuery->prepare( "INSERT OR REPLACE INTO uploadinfo "
"(path, chunk, transferid, errorcount, size, modtime) "
- "VALUES ( ?1 , ?2, ?3 , ?4 , ?5, ?6 )");
+ "VALUES ( ?1 , ?2, ?3 , ?4 , ?5, ?6 )")) {
+ return sqlFail("prepare _setUploadInfoQuery", *_setUploadInfoQuery);
+ }
_deleteUploadInfoQuery.reset(new SqlQuery(_db));
- _deleteUploadInfoQuery->prepare("DELETE FROM uploadinfo WHERE path=?1" );
+ if (_deleteUploadInfoQuery->prepare("DELETE FROM uploadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _deleteUploadInfoQuery", *_deleteUploadInfoQuery);
+ }
_deleteFileRecordPhash.reset(new SqlQuery(_db));
- _deleteFileRecordPhash->prepare("DELETE FROM metadata WHERE phash=?1");
+ if (_deleteFileRecordPhash->prepare("DELETE FROM metadata WHERE phash=?1")) {
+ return sqlFail("prepare _deleteFileRecordPhash", *_deleteFileRecordPhash);
+ }
_deleteFileRecordRecursively.reset(new SqlQuery(_db));
- _deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')");
+ if (_deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')")) {
+ return sqlFail("prepare _deleteFileRecordRecursively", *_deleteFileRecordRecursively);
+ }
QString sql( "SELECT lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget "
"FROM blacklist WHERE path=?1");
@@ -430,32 +456,50 @@ bool SyncJournalDb::checkConnect()
sql += QLatin1String(" COLLATE NOCASE");
}
_getErrorBlacklistQuery.reset(new SqlQuery(_db));
- _getErrorBlacklistQuery->prepare(sql);
+ if (_getErrorBlacklistQuery->prepare(sql)) {
+ return sqlFail("prepare _getErrorBlacklistQuery", *_getErrorBlacklistQuery);
+ }
_setErrorBlacklistQuery.reset(new SqlQuery(_db));
- _setErrorBlacklistQuery->prepare("INSERT OR REPLACE INTO blacklist "
+ if (_setErrorBlacklistQuery->prepare("INSERT OR REPLACE INTO blacklist "
"(path, lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget) "
- "VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)");
+ "VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)")) {
+ return sqlFail("prepare _setErrorBlacklistQuery", *_setErrorBlacklistQuery);
+ }
_getSelectiveSyncListQuery.reset(new SqlQuery(_db));
- _getSelectiveSyncListQuery->prepare("SELECT path FROM selectivesync WHERE type=?1");
+ if (_getSelectiveSyncListQuery->prepare("SELECT path FROM selectivesync WHERE type=?1")) {
+ return sqlFail("prepare _getSelectiveSyncListQuery", *_getSelectiveSyncListQuery);
+ }
_getChecksumTypeIdQuery.reset(new SqlQuery(_db));
- _getChecksumTypeIdQuery->prepare("SELECT id FROM checksumtype WHERE name=?1");
+ if (_getChecksumTypeIdQuery->prepare("SELECT id FROM checksumtype WHERE name=?1")) {
+ return sqlFail("prepare _getChecksumTypeIdQuery", *_getChecksumTypeIdQuery);
+ }
_getChecksumTypeQuery.reset(new SqlQuery(_db));
- _getChecksumTypeQuery->prepare("SELECT name FROM checksumtype WHERE id=?1");
+ if (_getChecksumTypeQuery->prepare("SELECT name FROM checksumtype WHERE id=?1")) {
+ return sqlFail("prepare _getChecksumTypeQuery", *_getChecksumTypeQuery);
+ }
_insertChecksumTypeQuery.reset(new SqlQuery(_db));
- _insertChecksumTypeQuery->prepare("INSERT OR IGNORE INTO checksumtype (name) VALUES (?1)");
+ if (_insertChecksumTypeQuery->prepare("INSERT OR IGNORE INTO checksumtype (name) VALUES (?1)")) {
+ return sqlFail("prepare _insertChecksumTypeQuery", *_insertChecksumTypeQuery);
+ }
_getDataFingerprintQuery.reset(new SqlQuery(_db));
- _getDataFingerprintQuery->prepare("SELECT fingerprint FROM datafingerprint");
+ if (_getDataFingerprintQuery->prepare("SELECT fingerprint FROM datafingerprint")) {
+ return sqlFail("prepare _getDataFingerprintQuery", *_getDataFingerprintQuery);
+ }
_setDataFingerprintQuery1.reset(new SqlQuery(_db));
- _setDataFingerprintQuery1->prepare("DELETE FROM datafingerprint;");
+ if (_setDataFingerprintQuery1->prepare("DELETE FROM datafingerprint;")) {
+ return sqlFail("prepare _setDataFingerprintQuery1", *_setDataFingerprintQuery1);
+ }
_setDataFingerprintQuery2.reset(new SqlQuery(_db));
- _setDataFingerprintQuery2->prepare("INSERT INTO datafingerprint (fingerprint) VALUES (?1);");
+ if (_setDataFingerprintQuery2->prepare("INSERT INTO datafingerprint (fingerprint) VALUES (?1);")) {
+ return sqlFail("prepare _setDataFingerprintQuery2", *_setDataFingerprintQuery2);
+ }
// don't start a new transaction now
commitInternal(QString("checkConnect End"), false);
From b6079bfe4f8a6eb6a42178bd42c3427c4a0df9ce Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 11 Oct 2016 10:55:02 +0200
Subject: [PATCH 78/93] Remove usused variable
---
src/libsync/syncengine.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h
index ae091af46..ff119d6cb 100644
--- a/src/libsync/syncengine.h
+++ b/src/libsync/syncengine.h
@@ -202,7 +202,6 @@ private:
SyncJournalDb *_journal;
QPointer _discoveryMainThread;
QSharedPointer _propagator;
- QString _lastDeleted; // if the last item was a path and it has been deleted
// After a sync, only the syncdb entries whose filenames appear in this
// set will be kept. See _temporarilyUnavailablePaths.
From 9d3e78ed542cda175a9121b805cb93689f2dab65 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 11 Oct 2016 11:46:51 +0200
Subject: [PATCH 79/93] AccountManager: do not load invalid account
Some tests (such as FolderManTest) can polute the config file with invalid
accounts.
(That's because most of the code, (even in libsync) always instentiate a ConfigFile)
---
src/gui/accountmanager.cpp | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp
index 421ee0add..70ec84cf0 100644
--- a/src/gui/accountmanager.cpp
+++ b/src/gui/accountmanager.cpp
@@ -209,6 +209,13 @@ void AccountManager::saveAccountHelper(Account* acc, QSettings& settings, bool s
AccountPtr AccountManager::loadAccountHelper(QSettings& settings)
{
+ auto urlConfig = settings.value(QLatin1String(urlC));
+ if (!urlConfig.isValid()) {
+ // No URL probably means a corrupted entry in the account settings
+ qDebug() << "No URL for account " << settings.group();
+ return AccountPtr();
+ }
+
auto acc = createAccount();
QString authType = settings.value(QLatin1String(authTypeC)).toString();
@@ -220,7 +227,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings& settings)
acc->setUrl(overrideUrl);
authType = forceAuth;
} else {
- acc->setUrl(settings.value(QLatin1String(urlC)).toUrl());
+ acc->setUrl(urlConfig.toUrl());
}
acc->_serverVersion = settings.value(QLatin1String(serverVersionC)).toString();
From e0a36ab3137501fab3ff4463ce74219590c48383 Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Tue, 11 Oct 2016 11:55:20 +0200
Subject: [PATCH 80/93] TestFolderMan: don't pollute user's settings
---
test/testfolderman.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/testfolderman.cpp b/test/testfolderman.cpp
index 7b1c3cc5b..d753d5977 100644
--- a/test/testfolderman.cpp
+++ b/test/testfolderman.cpp
@@ -15,6 +15,7 @@
#include "folderman.h"
#include "account.h"
#include "accountstate.h"
+#include "configfile.h"
using namespace OCC;
@@ -39,6 +40,7 @@ private slots:
{
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
QTemporaryDir dir;
+ ConfigFile::setConfDir(dir.path()); // we don't want to pollute the user's config file
QVERIFY(dir.isValid());
QDir dir2(dir.path());
QVERIFY(dir2.mkpath("sub/ownCloud1/folder/f"));
From d80d5a8ee48a1f578b226a2468e565879f98563a Mon Sep 17 00:00:00 2001
From: Olivier Goffart
Date: Mon, 10 Oct 2016 16:55:31 +0200
Subject: [PATCH 81/93] SyncEngine: Fix renaming a folder should keep the
selective sync state
Issue #5224
Two problems:
- In the discovery phase, we need to check the selective sync entries of
the source path in case of renames.
- When the rename is done, we need to actually update the black list in the
database.
---
csync/src/csync_rename.cc | 5 ++
csync/src/csync_rename.h | 2 +
src/libsync/discoveryphase.cpp | 19 ++++++--
src/libsync/discoveryphase.h | 2 +-
src/libsync/propagateremotemove.cpp | 36 +++++++++++++++
src/libsync/propagateremotemove.h | 6 +++
src/libsync/propagatorjobs.cpp | 10 +++-
test/syncenginetestutils.h | 38 ++++++++++++++-
test/testsyncengine.cpp | 71 ++++++++++++++++++++++++++++-
9 files changed, 179 insertions(+), 10 deletions(-)
diff --git a/csync/src/csync_rename.cc b/csync/src/csync_rename.cc
index f7c77a4ea..5cc43ce22 100644
--- a/csync/src/csync_rename.cc
+++ b/csync/src/csync_rename.cc
@@ -20,6 +20,7 @@
extern "C" {
#include "csync_private.h"
+#include "csync_rename.h"
}
#include