Comparar commits

...

8 Commits

Autor SHA1 Mensagem Data
Daniel Molkentin 20e6d2a46e update binary path 2016-05-10 14:01:46 +02:00
Daniel Molkentin 9d6701ecbe Windows Shell Integration: Fix another spot where the pipe path was constructed manually 2016-05-10 13:49:14 +02:00
Daniel Molkentin d659c54798 Update binary sub module 2016-05-10 10:36:49 +02:00
Daniel Molkentin 0e9170cb36 Windows Shell Integration: Unify path lookups 2016-05-10 10:18:53 +02:00
Markus Goetz 8820bc1c17 Windows: Fix Share menu #4781 2016-05-09 14:37:46 +02:00
Jenkins for ownCloud 74f67c97a9 [tx-robot] updated from transifex 2016-05-09 02:19:15 -04:00
Jenkins for ownCloud fd96b482c5 [tx-robot] updated from transifex 2016-05-07 02:19:16 -04:00
Jocelyn Turcotte 727e73d640 [shell/windows] Fix the windows status push not working (#4784)
Since the windows implementation first does cache lookups using the
path string, directories need to be passed identically as through
RETRIEVE_FILE_STATUS.

Change the convention to never have a trailing slash for directories
in the protocol. This allows the convention to be applied without
having to access the disk (since we'd need to know if the path is
represented by a directory) and also matches the convention of the
rest of the sync engine. Individual file manager plugins are then
responsible of handling pushed paths as not ending with a trailing
slash.

This also:
- Moves the trailing slash removal logic from the SyncFileStatusTracker
  to the SocketApi class
- Remove the unneeded QString::normalized call in fileStatus, since
  this should already be done by the FolderWatcher and plugins
2016-05-06 12:32:01 +02:00
39 arquivos alterados com 128 adições e 116 exclusões
+1 -1
Submodule binary updated: a56480559d...230ed45cd0
@@ -36,8 +36,7 @@ using namespace std;
OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud";
auto pipename = CommunicationSocket::DefaultPipePath();
CommunicationSocket socket;
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
@@ -72,8 +71,7 @@ OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
void OCClientInterface::ShareObject(const std::wstring &path)
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud";
auto pipename = CommunicationSocket::DefaultPipePath();
CommunicationSocket socket;
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
@@ -24,11 +24,31 @@
#include <fstream>
#define BUFSIZE 1024
#define DEFAULT_BUFLEN 4096
using namespace std;
#define DEFAULT_BUFLEN 4096
namespace {
std::wstring getUserName() {
DWORD len = DEFAULT_BUFLEN;
TCHAR buf[DEFAULT_BUFLEN];
if (GetUserName(buf, &len)) {
return std::wstring(&buf[0], len);
} else {
return std::wstring();
}
}
}
std::wstring CommunicationSocket::DefaultPipePath()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud\\";
pipename += getUserName();
return pipename;
}
CommunicationSocket::CommunicationSocket()
: _pipe(INVALID_HANDLE_VALUE)
@@ -26,6 +26,8 @@
class __declspec(dllexport) CommunicationSocket
{
public:
static std::wstring DefaultPipePath();
CommunicationSocket();
~CommunicationSocket();
@@ -43,4 +45,4 @@ private:
bool _connected;
};
#endif
#endif
@@ -31,25 +31,10 @@
using namespace std;
#define BUFSIZE 512
std::wstring getUserName() {
DWORD len = BUFSIZE;
TCHAR buf[BUFSIZE];
if (GetUserName(buf, &len)) {
return std::wstring(&buf[0], len);
} else {
return std::wstring();
}
}
// This code is run in a thread
void RemotePathChecker::workerThreadLoop()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
pipename += L"ownCloud\\";
pipename += getUserName();
auto pipename = CommunicationSocket::DefaultPipePath();
bool connected = false;
CommunicationSocket socket;
std::unordered_set<std::wstring> asked;
+19 -7
Ver Arquivo
@@ -56,6 +56,13 @@
// The second number should be changed when there are new features.
#define MIRALL_SOCKET_API_VERSION "1.0"
static inline QString removeTrailingSlash(QString path)
{
Q_ASSERT(path.endsWith(QLatin1Char('/')));
path.truncate(path.length()-1);
return path;
}
namespace OCC {
#define DEBUG qDebug() << "SocketApi: "
@@ -142,7 +149,7 @@ void SocketApi::slotNewConnection()
foreach( Folder *f, FolderMan::instance()->map() ) {
if (f->canSync()) {
QString message = buildRegisterPathMessage(f->path());
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
sendMessage(socket, message);
}
}
@@ -189,7 +196,7 @@ void SocketApi::slotRegisterPath( const QString& alias )
Folder *f = FolderMan::instance()->folder(alias);
if (f) {
QString message = buildRegisterPathMessage(f->path());
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
foreach(QIODevice *socket, _listeners) {
sendMessage(socket, message);
}
@@ -205,7 +212,7 @@ void SocketApi::slotUnregisterPath( const QString& alias )
Folder *f = FolderMan::instance()->folder(alias);
if (f)
broadcastMessage(QLatin1String("UNREGISTER_PATH"), f->path(), QString::null, true );
broadcastMessage(QLatin1String("UNREGISTER_PATH"), removeTrailingSlash(f->path()), QString::null, true );
_registeredAliases.remove(alias);
}
@@ -225,10 +232,11 @@ void SocketApi::slotUpdateFolderView(Folder *f)
f->syncResult().status() == SyncResult::Error ||
f->syncResult().status() == SyncResult::SetupError ) {
broadcastMessage(QLatin1String("STATUS"), f->path() ,
QString rootPath = removeTrailingSlash(f->path());
broadcastMessage(QLatin1String("STATUS"), rootPath,
f->syncEngine().syncFileStatusTracker().fileStatus("").toSocketAPIString());
broadcastMessage(QLatin1String("UPDATE_VIEW"), f->path() );
broadcastMessage(QLatin1String("UPDATE_VIEW"), rootPath);
} else {
qDebug() << "Not sending UPDATE_VIEW for" << f->alias() << "because status() is" << f->syncResult().status();
}
@@ -302,8 +310,12 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, QIODevice*
// this can happen in offline mode e.g.: nothing to worry about
statusString = QLatin1String("NOP");
} else {
const QString file = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(file);
QString relativePath = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
if( relativePath.endsWith(QLatin1Char('/')) ) {
relativePath.truncate(relativePath.length()-1);
qWarning() << "Removed trailing slash for directory: " << relativePath << "Status pushes won't have one.";
}
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(relativePath);
statusString = fileStatus.toSocketAPIString();
}
+18 -23
Ver Arquivo
@@ -92,15 +92,11 @@ SyncFileItem SyncFileStatusTracker::rootSyncFileItem()
return fakeRootItem;
}
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
{
QString fileName = systemFileName.normalized(QString::NormalizationForm_C);
if( fileName.endsWith(QLatin1Char('/')) ) {
fileName.truncate(fileName.length()-1);
qDebug() << "Removed trailing slash: " << fileName;
}
Q_ASSERT(!relativePath.endsWith(QLatin1Char('/')));
if( fileName.isEmpty() ) {
if (relativePath.isEmpty()) {
// This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so create one manually.
return syncFileItemStatus(rootSyncFileItem());
}
@@ -111,22 +107,22 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
// update the exclude list at runtime and doing it statically here removes
// our ability to notify changes through the fileStatusChanged signal,
// it's an acceptable compromize to treat all exclude types the same.
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + fileName,
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + relativePath,
_syncEngine->localPath(),
_syncEngine->ignoreHiddenFiles()) ) {
return SyncFileStatus(SyncFileStatus::StatusWarning);
}
if ( _dirtyPaths.contains(fileName) )
if ( _dirtyPaths.contains(relativePath) )
return SyncFileStatus::StatusSync;
SyncFileItem* item = _syncEngine->findSyncItem(fileName);
SyncFileItem* item = _syncEngine->findSyncItem(relativePath);
if (item) {
return syncFileItemStatus(*item);
}
// If we're not currently syncing that file, look it up in the database to know if it's shared
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(fileName);
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(relativePath);
if (rec.isValid()) {
return syncFileItemStatus(rec.toSyncFileItem());
}
@@ -158,7 +154,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
} else if (showWarningInSocketApi(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
}
emit fileStatusChanged(getSystemDestination(*item), syncFileItemStatus(*item));
emit fileStatusChanged(getSystemDestination(item->destination()), syncFileItemStatus(*item));
}
// Make sure to push any status that might have been resolved indirectly since the last sync
@@ -170,7 +166,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
SyncFileStatus::SyncFileStatusTag severity = it->second;
if (severity == SyncFileStatus::StatusError)
invalidateParentPaths(path);
emit fileStatusChanged(_syncEngine->localPath() + path, fileStatus(path));
emit fileStatusChanged(getSystemDestination(path), fileStatus(path));
}
}
@@ -188,7 +184,7 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
Q_ASSERT(_syncProblems.find(item._file) == _syncProblems.end());
}
emit fileStatusChanged(getSystemDestination(item), syncFileItemStatus(item));
emit fileStatusChanged(getSystemDestination(item.destination()), syncFileItemStatus(item));
}
void SyncFileStatusTracker::slotSyncEngineRunningChanged()
@@ -236,20 +232,19 @@ void SyncFileStatusTracker::invalidateParentPaths(const QString& path)
QStringList splitPath = path.split('/', QString::SkipEmptyParts);
for (int i = 0; i < splitPath.size(); ++i) {
QString parentPath = QStringList(splitPath.mid(0, i)).join(QLatin1String("/"));
emit fileStatusChanged(_syncEngine->localPath() + parentPath, fileStatus(parentPath));
emit fileStatusChanged(getSystemDestination(parentPath), fileStatus(parentPath));
}
}
QString SyncFileStatusTracker::getSystemDestination(const SyncFileItem& item)
QString SyncFileStatusTracker::getSystemDestination(const QString& relativePath)
{
QString systemFileName = _syncEngine->localPath() + item.destination();
// the trailing slash for directories must be appended as the filenames coming in
// from the plugins have that too. Otherwise the matching entry item is not found
// in the plugin.
if( item._type == SyncFileItem::Type::Directory ) {
systemFileName += QLatin1Char('/');
QString systemPath = _syncEngine->localPath() + relativePath;
// SyncEngine::localPath() has a trailing slash, make sure to remove it if the
// destination is empty.
if( systemPath.endsWith(QLatin1Char('/')) ) {
systemPath.truncate(systemPath.length()-1);
}
return systemFileName;
return systemPath;
}
}
+2 -2
Ver Arquivo
@@ -35,7 +35,7 @@ class OWNCLOUDSYNC_EXPORT SyncFileStatusTracker : public QObject
Q_OBJECT
public:
explicit SyncFileStatusTracker(SyncEngine* syncEngine);
SyncFileStatus fileStatus(const QString& systemFileName);
SyncFileStatus fileStatus(const QString& relativePath);
public slots:
void slotPathTouched(const QString& fileName);
@@ -54,7 +54,7 @@ private:
SyncFileItem rootSyncFileItem();
void invalidateParentPaths(const QString& path);
QString getSystemDestination(const SyncFileItem& syncEnginePath);
QString getSystemDestination(const QString& relativePath);
SyncEngine* _syncEngine;
+1 -1
Ver Arquivo
@@ -2559,7 +2559,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Comparteix amb %1</translation>
+1 -1
Ver Arquivo
@@ -2563,7 +2563,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Sdílet s %1</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Via %1 teilen</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Διαμοιρασμός με %1</translation>
+1 -1
Ver Arquivo
@@ -2582,7 +2582,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"></translation>
+7 -7
Ver Arquivo
@@ -440,17 +440,17 @@
<message numerus="yes">
<location filename="../src/gui/activitywidget.cpp" line="351"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>Ha recibido %n nueva notificación de %2.</numerusform><numerusform>Ha recibido %n nueva notificacióne(s) de %2.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/activitywidget.cpp" line="359"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>Ha recibido %n nueva notificación de %1 y de %2.</numerusform><numerusform>Ha recibido %n nuevas notificacióne(s) de %1 y de %2.</numerusform></translation>
</message>
<message>
<location filename="../src/gui/activitywidget.cpp" line="361"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
<translation>Ha recibido nuevas notificaciónes de %1, %2 y otras cuentas.</translation>
</message>
<message>
<location filename="../src/gui/activitywidget.cpp" line="365"/>
@@ -1684,7 +1684,7 @@ for additional privileges during the process.</source>
<message>
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
<translation>&amp;Email</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
@@ -1952,7 +1952,7 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
<translation>El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
@@ -2384,7 +2384,7 @@ No se recomienda usarla.</translation>
<message>
<location filename="../src/gui/sharedialog.cpp" line="113"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
<translation>Descargando el maximo número de permisos compartidos del servidor...</translation>
</message>
<message>
<location filename="../src/gui/sharedialog.cpp" line="169"/>
@@ -2562,7 +2562,7 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartir con %1</translation>
+1 -1
Ver Arquivo
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
+1 -1
Ver Arquivo
@@ -2551,7 +2551,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Jagatud kasutajaga %1</translation>
+1 -1
Ver Arquivo
@@ -2557,7 +2557,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
+1 -1
Ver Arquivo
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>اشتراکگذاری با %1</translation>
+1 -1
Ver Arquivo
@@ -2558,7 +2558,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
+1 -1
Ver Arquivo
@@ -2563,7 +2563,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Partager avec %1</translation>
+1 -1
Ver Arquivo
@@ -2557,7 +2557,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartir con %1</translation>
+1 -1
Ver Arquivo
@@ -2554,7 +2554,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Megosztás vele: %1</translation>
+1 -1
Ver Arquivo
@@ -2562,7 +2562,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Condividi con %1</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>%1 </translation>
+1 -1
Ver Arquivo
@@ -2563,7 +2563,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Del med %1</translation>
+12 -12
Ver Arquivo
@@ -631,42 +631,42 @@
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 en %n ander bestand(en) zijn verwijderd.</numerusform><numerusform>%1 en %n andere bestand(en) zijn verwijderd.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 en %n ander bestand(en) zijn gedownload.</numerusform><numerusform>%1 en %n andere bestand(en) zijn gedownload.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="508"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 en %n ander bestand(en) zijn bijgewerkt.</numerusform><numerusform>%1 en %n andere bestand(en) zijn bijgewerkt.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="515"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd.</numerusform><numerusform>%1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="522"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst.</numerusform><numerusform>%1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst.</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="529"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 en %n ander bestand(en) hebben een sync conflict.</numerusform><numerusform>%1 en %n andere bestand(en) hebben sync conflicten.</numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="531"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
<translation>%1 heeft een sync conflict. Controleer het conflict bestand!</translation>
</message>
<message numerus="yes">
<location filename="../src/gui/folder.cpp" line="536"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
<translation><numerusform>%1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform><numerusform>%1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform></translation>
</message>
<message>
<location filename="../src/gui/folder.cpp" line="538"/>
@@ -1954,7 +1954,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
<translation>Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
@@ -2386,7 +2386,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/gui/sharedialog.cpp" line="113"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
<translation>Maximum aantal mogelijke permissies van de server ophalen...</translation>
</message>
<message>
<location filename="../src/gui/sharedialog.cpp" line="169"/>
@@ -2564,7 +2564,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Delen met %1</translation>
@@ -3639,7 +3639,7 @@ We adviseren deze site niet te gebruiken.</translation>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
<translation>Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+13 -13
Ver Arquivo
@@ -455,7 +455,7 @@
<message>
<location filename="../src/gui/activitywidget.cpp" line="365"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
<translation>%1 Powiadomień - Wymagana akcja</translation>
</message>
</context>
<context>
@@ -524,7 +524,7 @@
<message>
<location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -1920,7 +1920,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -1938,17 +1938,17 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="381"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
<translation>Wolne miejsce na dysku jest mniejsze niż %1</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="496"/>
<source>File was deleted from server</source>
<translation type="unfinished"/>
<translation>Plik został usunięty z serwera</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="545"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
<translation>Ten plik nie mógł być całkowicie pobrany.</translation>
</message>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
@@ -1968,7 +1968,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2009,7 +2009,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2040,7 +2040,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2066,7 +2066,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2094,7 +2094,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2143,7 +2143,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
@@ -2563,7 +2563,7 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Współdzielone z %1</translation>
+1 -1
Ver Arquivo
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Partilhar com %1</translation>
+1 -1
Ver Arquivo
@@ -2563,7 +2563,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartilhar com %1</translation>
+1 -1
Ver Arquivo
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Поделиться с %1</translation>
+1 -1
Ver Arquivo
@@ -2555,7 +2555,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Zdieľať s %1</translation>
+1 -1
Ver Arquivo
@@ -2560,7 +2560,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Omogoči souporabo z %1</translation>
+1 -1
Ver Arquivo
@@ -2556,7 +2556,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Подели са %1</translation>
+1 -1
Ver Arquivo
@@ -2563,7 +2563,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Dela med %1</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation> %1</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>%1 ile paylaş</translation>
+1 -1
Ver Arquivo
@@ -2551,7 +2551,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Поділитися з %1</translation>
+1 -1
Ver Arquivo
@@ -2560,7 +2560,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation> %1</translation>
+1 -1
Ver Arquivo
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
<location filename="../src/gui/socketapi.cpp" line="441"/>
<location filename="../src/gui/socketapi.cpp" line="453"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation> %1 </translation>