Merge branch 'master' into rename_client

Conflicts:
	README.md
	src/gui/folderman.cpp
	src/gui/settingsdialog.cpp
	src/libsync/accessmanager.cpp
	src/libsync/propagateupload.h
This commit is contained in:
Daniel Molkentin 2014-12-02 13:37:22 +01:00
commit 3016844dd7
111 changed files with 3892 additions and 2583 deletions

1
.gitignore vendored
View file

@ -2,7 +2,6 @@
*build*/
*flymake*
CMakeLists.txt.user*
*.patch
*~
*.autosave
doc/_build/*

View file

@ -9,6 +9,13 @@ if ( EXISTS ${OEM_THEME_DIR}/OEM.cmake )
else ()
include ( ${CMAKE_SOURCE_DIR}/OWNCLOUD.cmake )
endif()
# need this logic to not mess with re/uninstallations via macosx.pkgproj
if(${APPLICATION_REV_DOMAIN} STREQUAL "com.owncloud.desktopclient")
set(APPLICATION_REV_DOMAIN_INSTALLER "com.ownCloud.client")
else()
set(APPLICATION_REV_DOMAIN_INSTALLER ${APPLICATION_REV_DOMAIN})
endif()
if (NOT DEFINED APPLICATION_SHORTNAME)
set ( APPLICATION_SHORTNAME ${APPLICATION_NAME} )
@ -166,9 +173,11 @@ set(TRANSLATIONS ${TRANS_FILES})
add_subdirectory(csync)
add_subdirectory(src)
if(NOT BUILD_LIBRARIES_ONLY)
add_subdirectory(shell_integration)
add_subdirectory(doc)
add_subdirectory(admin)
endif(NOT BUILD_LIBRARIES_ONLY)
if(UNIT_TESTING)
include(CTest)

View file

@ -21,8 +21,7 @@ https://github.com/owncloud/client.
## Building the source code
Please refer to doc/building.rst, or
[Building the Client](http://doc.owncloud.org/desktop/1.5/building.html)
[Building the Client](http://doc.owncloud.org/desktop/1.7/building.html)
in the ownCloud Desktop Client manual.
## Maintainers and Contributors

View file

@ -485,9 +485,9 @@
<key>CONCLUSION_ACTION</key>
<integer>0</integer>
<key>IDENTIFIER</key>
<string>com.ownCloud.client</string>
<string>@APPLICATION_REV_DOMAIN_INSTALLER@</string>
<key>NAME</key>
<string>ownCloud Client</string>
<string>@APPLICATION_NAME@</string>
<key>OVERWRITE_PERMISSIONS</key>
<false/>
<key>VERSION</key>
@ -1213,7 +1213,7 @@
<key>LANGUAGE</key>
<string>English</string>
<key>VALUE</key>
<string>ownCloud Client</string>
<string>@APPLICATION_NAME@ Client</string>
</dict>
</array>
</dict>
@ -1413,7 +1413,7 @@
</dict>
</array>
<key>NAME</key>
<string>ownCloud Installer</string>
<string>@APPLICATION_NAME@ Installer</string>
<key>REFERENCE_FOLDER_PATH</key>
<string>@CMAKE_INSTALL_DIR@</string>
</dict>

View file

@ -1,14 +1,14 @@
# Auto-generated - do not modify
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar notas de lançamento"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Encontrados processos ${APPLICATION_EXECUTABLE} que precisam de ser parados.$\nDeseja que o instalador os pare ?"
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Ver notas de lançamento"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Processos(s) ${APPLICATION_EXECUTABLE} em execução. Estes processos precisam de ser interrompidos.$\\nDeseja que o instalador os termine automaticamente?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "A terminar processos ${APPLICATION_EXECUTABLE}."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Processo para terminar não foi encontrado!"
StrCpy $PageReinstall_NEW_Field_1 "Está instalada uma versão anterior de ${APPLICATION_NAME} no seu sistema. Recomenda-se que desinstale primeiro a versão atual antes de instalar. Selecione a operação que pretende fazer, e clique Seguinte para continuar."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Processo a terminar não encontrado!"
StrCpy $PageReinstall_NEW_Field_1 "Uma versão antiga de ${APPLICATION_NAME} está instalada no sistema. É recomendado que você desinstale a versão atual antes de instalar. Selecione a operação que deseja executar e clique em $\"Avançar$\" para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstale"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Já instalado"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Escolha como pretende instalar ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Já esta instalada uma nova versão dfe ${APPLICATION_NAME}! Não se recomenda instalar uma versão anterior. Se quer mesmo instalar esta versão mais antiga, é melhor desinstalar primeiro a versão atual. Selecione a operação que pretende fazer e clique Seguinte para continuar."
StrCpy $PageReinstall_OLD_Field_1 "Uma versão mais recente do ${APPLICATION_NAME} já está instalada! Não é recomendada a instalação de uma versão mais antiga. Se realmente deseja instalar esta versão, aconselha-se a desinstalação da versão atual primeiro. Selecione a operação que deseja executar e clique em Avançar para continuar."
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} já está instalado.\nSelecione a operação que deseja fazer, e clique Seguinte para continuar."
StrCpy $PageReinstall_SAME_Field_2 "Adicionar/Reinstalar Componentes"
StrCpy $PageReinstall_SAME_Field_3 "Desinstalar ${APPLICATION_NAME}"
@ -40,7 +40,7 @@ StrCpy $INIT_NO_QUICK_LAUNCH "Atalho de Início Rápido (N/A)"
StrCpy $INIT_NO_DESKTOP "Atalho do Ambiente de Trabalho (sobrepõe o existente)"
StrCpy $UAC_ERROR_ELEVATE "Incapaz de elevar, erro:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Este instalador precisa de permissões de administrador, tente novamente"
StrCpy $INIT_INSTALLER_RUNNING "O instalador já está a correr."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador precisa de acesso de administrador; tente novamente"
StrCpy $INIT_UNINSTALLER_RUNNING "O desinstalador já está a correr."
StrCpy $INIT_INSTALLER_RUNNING "O instalador já está em execução."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador requer permissões de administrador, tente novamente"
StrCpy $INIT_UNINSTALLER_RUNNING "O desinstalador já está em execução."
StrCpy $SectionGroup_Shortcuts "Atalhos"

View file

@ -1,4 +1,4 @@
SET(WINDRES_EXECUTABLE ${CMAKE_RC_COMPILER})
SET(WINDRES_EXECUTABLE_BASE ${CMAKE_RC_COMPILER})
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
#
@ -21,7 +21,7 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
else(NOT WINCE)
find_program(PNG2ICO_EXECUTABLE NAMES png2ico PATHS ${HOST_BINDIR} NO_DEFAULT_PATH )
endif(NOT WINCE)
find_program(WINDRES_EXECUTABLE NAMES windres)
find_program(WINDRES_EXECUTABLE NAMES ${WINDRES_EXECUTABLE_BASE})
if(MSVC)
set(WINDRES_EXECUTABLE TRUE)
endif(MSVC)

View file

@ -29,6 +29,7 @@
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <time.h>
#include "c_lib.h"
#include "c_jhash.h"
@ -266,7 +267,10 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
goto out;
}
if((ctx->current == REMOTE_REPLICA && !c_streq(fs->etag, tmp->etag ))
|| (ctx->current == LOCAL_REPLICA && (fs->mtime != tmp->modtime
|| (ctx->current == LOCAL_REPLICA && ((fs->mtime != tmp->modtime
/* Ignore when there is exactly one hour difference because of summer time switches */
&& (int64_t)difftime(fs->mtime, tmp->modtime) != 3600
&& (int64_t)difftime(fs->mtime, tmp->modtime) != -3600)
// zero size in statedb can happen during migration
|| (tmp->size != 0 && fs->size != tmp->size)
#if 0

View file

@ -503,6 +503,8 @@ Hbf_State hbf_transfer( ne_session *session, hbf_transfer_t *transfer, const cha
if( transfer->block_cnt > 1 ) {
ne_add_request_header(req, "OC-Chunked", "1");
snprintf(buf, sizeof(buf), "%"PRId64, transfer->threshold);
ne_add_request_header(req, "OC-Chunk-Size", buf);
}
ne_add_request_header( req, "Content-Type", "application/octet-stream");

View file

@ -127,10 +127,9 @@ glob_put( "$tmpdir2/*", "parallel" );
csync();
# We assume the smaller file finished first, blocking
# the second file from being saved.
assert( !-e localDir() . 'parallel/FILE.dat' );
assert( -e localDir() . 'parallel/file.dat' );
# only one file must exist
assert( (!-e localDir() . 'parallel/FILE.dat' ) or (!-e localDir() . 'parallel/file.dat') );
assert( (-e localDir() . 'parallel/FILE.dat' ) or (-e localDir() . 'parallel/file.dat') );
cleanup();
system("rm -r " . $tmpdir);

BIN
doc/images/icon-error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
doc/images/icon-offline.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
doc/images/icon-paused.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
doc/images/icon-syncing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -9,7 +9,35 @@ system tray (Windows, KDE), status bar (MAC OS X), or notification area
.. image:: images/icon.png
**ownCloud Desktop Client icon**
This is a status indicator which uses overlay icons to indicate the
current status of your synchronization. The green circle with the white checkmark
tells you that your synchronization is current and you are connected to your
ownCloud server.
.. image:: images/icon-syncing.png
The blue icon with the white semi-circles means synchronization is in progress.
.. image:: images/icon-paused.png
The yellow overlay icon with the parallel lines tells you your synchronization
has been paused. (Most likely by you, by opening the client and clicking
Account > Pause.)
.. image:: images/icon-offline.png
The gray icon with three white dots means your sync client has lost its
connection with your ownCloud server.
.. image:: images/icon-information.png
When you see a white circle with the letter "i" that is the informational icon,
so you should click it to see what it has to tell you.
.. image:: images/icon-error.png
The red circle with the white "x" indicates a configuration error, such as an
incorrect login or server URL.
Using the Desktop Client Menu
-----------------------------
@ -24,10 +52,17 @@ following menu:
The Desktop Client menu provides the following options:
* ``Open ownCloud in browser``: Launches the ownCloud WEB interface.
* ``Open folder 'ownCloud'``: Opens the ownCloud local folder. If you have defined multiple synchronization targets, the window displays each local folder.
* **Disk space indicator**: Indicates the amount of space currently used on the server.
* Operation indicator: Displays the status of the current synchronization process or indicates ``Up to date`` if the server and client are in sync.
* **Recent Changes**: Displays the last six files modified by the synchronization operations and provides access to the current synchronization status listing all changes since the last restart of the ownCloud client.
* ``Open folder 'ownCloud'``: Opens the ownCloud local folder. If you have
defined multiple synchronization targets, the window displays each local
folder.
* **Disk space indicator**: Indicates the amount of space currently used on the
server.
* Operation indicator: Displays the status of the current synchronization
process or indicates ``Up to date`` if the server and client are in sync.
* **Recent Changes**: Displays the last six files modified by the
synchronization operations and provides access to the current
synchronization status listing all changes since the last restart of the
ownCloud client.
* ``Settings...``: Provides access to the settings menu.
* ``Help``: Opens a browser to display ownCloud Desktop Client Guide.
* ``Sign out``: Disables the client from continued synchronizations.
@ -39,7 +74,9 @@ Using the Account Settings Window
.. index:: account settings, user, password, Server URL
The ``Account`` window provides a summary for general settings associated with the ownCloud account. This window enalbes you to manage any synchronized folders in the account and enables you to modify them.
The ``Account`` window provides a summary for general settings associated with
the ownCloud account. This window enalbes you to manage any synchronized
folders in the account and enables you to modify them.
To access and modify the account settings:
@ -48,25 +85,37 @@ To access and modify the account settings:
The fields and options in this window include:
* ``Connected to <ownCloud instance> as <user>`` field: Indicates the ownCloud server to which the client is synchronizing and the user account on that server.
* ``Connected to <ownCloud instance> as <user>`` field: Indicates the ownCloud
server to which the client is synchronizing and the user account on that
server.
* ``Add Folder...`` button: Provides the ability to add another folder to the synchronization process (see ``Adding a Folder``).
* ``Add Folder...`` button: Provides the ability to add another folder to the
synchronization process (see ``Adding a Folder``).
* ``Pause/Resume`` button: Pauses the current sync (or prevents the client from starting a new sync) or resumes the sync process.
* ``Pause/Resume`` button: Pauses the current sync (or prevents the client from
starting a new sync) or resumes the sync process.
* ``Remove`` button: Removes the selected folder from the sync process. This button is used when you want to synchronize only a few folders and not the root folder. If only the root folder is available, you must first remove the root from the synchronization and then add individual folders that you want to synchronize as desired.
* ``Remove`` button: Removes the selected folder from the sync process. This
button is used when you want to synchronize only a few folders and not the
root folder. If only the root folder is available, you must first remove the
root from the synchronization and then add individual folders that you want
to synchronize as desired.
* ``Storage Usage`` field: Indicates the storage utilization on the ownCloud server.
* ``Storage Usage`` field: Indicates the storage utilization on the ownCloud
server.
* ``Edit Ignored Files`` button: Launches the Ignored Files Editor.
* ``Modify Account`` button: Enables you to change the ownCloud server to which you are synchronizing. This option launches the ``Setting up an Account`` windows (See ??).
* ``Modify Account`` button: Enables you to change the ownCloud server to which
you are synchronizing. This option launches the ``Setting up an Account``
dialog (see :doc:`accountsetup`).
Adding a Folder
^^^^^^^^^^^^^^^
The ``Add a Folder ...`` button enables you to add a new folder to the syncrhonization process.
The ``Add a Folder ...`` button enables you to add a new folder to the
syncrhonization process.
To add a new folder:
@ -74,37 +123,35 @@ To add a new folder:
The ``Add Folder...`` window opens
.. image:: images/folderwizard_local.png
:scale: 50 %
.. image:: images/folderwizard_local.png
**``Add Folder...`` window (local folder)**
2. Specify a *unique* path and alias name to the folder or use the ``Choose...``
button to locate the new folder on your system to which you want to
synchronize.
2. Specify a *unique* path and alias name to the folder or use the ``Choose...`` button to locate the new folder on your system to which you want to synchronize.
..note:: Nested synchronizations are not supported. In other words, you
.. note:: Nested synchronizations are not supported. In other words, you
cannot add a folder that is already contained within another synchronized
folder. In addition, you cannot add a higher level (parent) folder that
contains a folder to which you are already synchronizing. By default, the
ownCloud Set Up Wizard syncrhonizes your entire ownCloud account to the root
folder of the ownCloud server. Due to this default setup, you must first remove
the top-level folder prior to specifying new synchronizations.
folder of the ownCloud server. Due to this default setup, you must first
remove the top-level folder prior to specifying new synchronizations.
3. Click 'Next' to continue.
A window opens prompting you to select a remote destination folder on the
ownCloud server to which you want to synchronize.
.. image:: images/folderwizard_remote.png
:scale: 50 %
.. image:: images/folderwizard_remote.png
**``Add Folder...`` window (remote destination)**
4. Select a folder on the ownCloud server to which you want to synchronize your
newly added folder.
4. Select a folder on the ownCloud server to which you want to synchronize your newly added folder.
..note:: A server folder can only be synchronized with a particular client once.
If you attempt to sync the root directory, you cannot sync with other folders
on the server. Similarly, if you sync with folder ``/a``, you cannot create
another sync with ``/a/b``, since ``b`` is already being synched.
..note:: A server folder can only be synchronized with a particular client
once. If you attempt to sync the root directory, you cannot sync with
other folders on the server. Similarly, if you sync with folder ``/a``, you
cannot create another sync with ``/a/b``, since ``b`` is already being
synched.
Editing Ignored Files
^^^^^^^^^^^^^^^^^^^^^
@ -117,7 +164,8 @@ In addition to using standard characters, the Ignored Files Editor enables you
to use wild cards (for example, using an asterisk * to indicate multiple
characters or a question mark ? to incidate a single character).
For additional information about this editor, see `Using the Ignored Files Editor`_
For additional information about this editor, see `Using the Ignored Files
Editor`_
Using the Activity Settings Window
----------------------------------
@ -131,9 +179,6 @@ manner due to containing special characters that cannot be stored on certain
file systems.
.. image:: images/settings_activity.png
:scale: 50 %
**Activity settings window**
You can open the Activity window in one of the following ways:
@ -152,9 +197,6 @@ ownCloud Desktop Client and provides information about the software version,
its creator, and the existance of any updates.
.. image:: images/settings_general.png
:scale: 50 %
**General settings window**
The settings and information contained in this window are as follows:
@ -170,12 +212,13 @@ The settings and information contained in this window are as follows:
* ``Use Monochrome Icons`` checkbox: Provides the option to check (enable) or
uncheck (disable) the use of monochrome (visually less obtrusive) icons.
.. note:: This option can be useful on MAC OSX platforms.
.. note:: This option can be useful on MAC OSX platforms.
* ``About`` field: Provides information about the software authors along with
pertinent build conditions.
.. note:: Information in this field can be valuable when submitting a support request.
.. note:: Information in this field can be valuable when submitting a support
request.
* ``Updates`` field: Provides information about any available updates for the
ownCloud Desktop Client.
@ -190,9 +233,6 @@ well as limit the download and upload bandwidth utilization of file
synchronizations.
.. image:: images/settings_network.png
:scale: 50 %
**Network settings window**
Specifying Proxy Settings
^^^^^^^^^^^^^^^^^^^^^^^^^
@ -202,20 +242,27 @@ that functions as an intermediary contact for requests from clients that are
seeking resources from other servers. For the ownCloud Desktop Client, you can
define the following proxy settings:
* ``No Proxy`` option: Specifies that the ownCloud Client circumvent the default proxy configured on the system.
* ``No Proxy`` option: Specifies that the ownCloud Client circumvent the default
proxy configured on the system.
* ``Use system proxy`` option: Default setting. Follows the systems proxy
settings. On Linux systems, this setting uses the value of the variable
``http_proxy``.
* ``Specify proxy manually as`` option: Enables you to specify
the following custom proxy settings:
- ``HTTP(S)``: Used when you are required to use an HTTP(S) proxy server (for example, Squid or Microsoft Forefront TMG).
- ``SOCKSv5``: Typically used in special company LAN setups, or in combination with the OpenSSH
- ``HTTP(S)``: Used when you are required to use an HTTP(S) proxy server (for
example, Squid or Microsoft Forefront TMG).
- ``SOCKSv5``: Typically used in special company LAN setups, or in combination
with the OpenSSH
dynamic application level forwarding feature (see ``ssh -D``).
- ``Host``: Host name or IP address of the proxy server along with the port number. HTTP proxies
typically listen over Ports 8080 (default) or 3128. SOCKS servers typically listen over port 1080.
* ``Proxy Server requires authentication`` checkbox: Provides the option to check (enable/require) or
uncheck (disable/not require) proxy server authentication. When not checked, the proxy server must
be configured to allow anonymous usage. When checked, a proxy server username and password is required.
- ``Host``: Host name or IP address of the proxy server along with the port
number. HTTP proxies typically listen over Ports 8080 (default) or 3128.
SOCKS servers typically listen over port 1080.
* ``Proxy Server requires authentication`` checkbox: Provides the option to
check (enable/require) or
uncheck (disable/not require) proxy server authentication. When not checked,
the proxy server must
be configured to allow anonymous usage. When checked, a proxy server username
and password is required.
Bandwidth Limiting
^^^^^^^^^^^^^^^^^^
@ -265,13 +312,10 @@ can use the *Ignored Files Editor* that is embedded in the ownCloud Desktop
Client.
.. image:: images/ignored_files_editor.png
:scale: 50%
Ignored Files Editor window
The :guilabel:`Ignored Files Editor` enables you to define customized patterns that the
ownCloud Client uses to identify files and directories that you want to exclude
from the synchronization process. For your convenience, the editor is
The ``Ignored Files Editor`` enables you to define customized patterns
that the ownCloud Client uses to identify files and directories that you want
to exclude from the synchronization process. For your convenience, the editor is
pre-populated with a default list of typically ignore patterns. These patterns
are contained in a system file (typically ``sync-exclude.lst``) located in the
ownCloud Client application directory. You cannot modify these pre-populated

View file

@ -39,6 +39,8 @@ logs.
```Template for output < 10 lines```
1. Output of `owncloud --logwindow` or `owncloud --logfile log.txt`
(On Windows using `cmd.exe`, you might need to first `cd` into the ownCloud directory)
(See also http://doc.owncloud.org/desktop/1.5/troubleshooting.html#client-logfile )
2. Web server error log:

View file

@ -13,7 +13,8 @@
<file>resources/settings.png</file>
<file>resources/activity.png</file>
<file>resources/network.png</file>
<file>resources/lock-http.png</file>
<file>resources/lock-https.png</file>
<file>resources/lock-http.png</file>
<file>resources/lock-https.png</file>
<file>resources/accounts.png</file>
</qresource>
</RCC>

BIN
resources/accounts.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,256 @@
From 3a26dc77f8e988ea99b23c4d5a2c831ecc31c920 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@woboq.com>
Date: Thu, 17 Jul 2014 13:26:56 +0200
Subject: [PATCH] WIP: add KOverlayIconPlugin
---
.../src/kitemviews/kfileitemmodelrolesupdater.cpp | 35 ++++++++++++-
.../src/kitemviews/kfileitemmodelrolesupdater.h | 9 ++++
lib/konq/CMakeLists.txt | 4 +-
lib/konq/koverlayiconplugin.cpp | 30 ++++++++++++
lib/konq/koverlayiconplugin.desktop | 4 ++
lib/konq/koverlayiconplugin.h | 57 ++++++++++++++++++++++
6 files changed, 137 insertions(+), 2 deletions(-)
create mode 100644 lib/konq/koverlayiconplugin.cpp
create mode 100644 lib/konq/koverlayiconplugin.desktop
create mode 100644 lib/konq/koverlayiconplugin.h
diff --git a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp
index 0865d40..840a65d 100644
--- a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -28,9 +28,11 @@
#include <KGlobal>
#include <KIO/JobUiDelegate>
#include <KIO/PreviewJob>
+#include <KServiceTypeTrader>
#include "private/kpixmapmodifier.h"
#include "private/kdirectorycontentscounter.h"
+#include <koverlayiconplugin.h>
#include <QApplication>
#include <QPainter>
@@ -129,6 +131,17 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO
m_directoryContentsCounter = new KDirectoryContentsCounter(m_model, this);
connect(m_directoryContentsCounter, SIGNAL(result(QString,int)),
this, SLOT(slotDirectoryContentsCountReceived(QString,int)));
+
+
+ const KService::List pluginServices = KServiceTypeTrader::self()->query("KOverlayIconPlugin");
+
+ for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) {
+ KOverlayIconPlugin* plugin = (*it)->createInstance<KOverlayIconPlugin>(this);
+ if (plugin) {
+ m_overlayIconsPlugin.append(plugin);
+ connect(plugin, SIGNAL(overlaysChanged(KUrl,QStringList)), this, SLOT(slotOverlaysChanged(KUrl,QStringList)));
+ }
+ }
}
KFileItemModelRolesUpdater::~KFileItemModelRolesUpdater()
@@ -1075,7 +1088,11 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
data.insert("type", item.mimeComment());
}
- data.insert("iconOverlays", item.overlays());
+ QStringList overlays = item.overlays();
+ foreach(KOverlayIconPlugin *it, m_overlayIconsPlugin) {
+ overlays.append(it->getOverlays(item));
+ }
+ data.insert("iconOverlays", overlays);
#ifdef HAVE_BALOO
if (m_balooFileMonitor) {
@@ -1086,6 +1103,22 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
return data;
}
+void KFileItemModelRolesUpdater::slotOverlaysChanged(const KUrl& url, const QStringList &)
+{
+ KFileItem item = m_model->fileItem(url);
+ if (item.isNull())
+ return;
+ int index = m_model->index(item);
+ QHash <QByteArray, QVariant> data = m_model->data(index);
+ QStringList overlays = item.overlays();
+ foreach(KOverlayIconPlugin *it, m_overlayIconsPlugin) {
+ overlays.append(it->getOverlays(item));
+ }
+ data.insert("iconOverlays", overlays);
+ m_model->setData(index, data);
+}
+
+
void KFileItemModelRolesUpdater::updateAllPreviews()
{
if (m_state == Paused) {
diff --git a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h
index a9e979a..6d3add0 100644
--- a/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h
+++ b/dolphin/src/kitemviews/kfileitemmodelrolesupdater.h
@@ -32,6 +32,7 @@
#include <QSize>
#include <QStringList>
+class KOverlayIconPlugin;
class KDirectoryContentsCounter;
class KFileItemModel;
class KJob;
@@ -180,6 +181,12 @@ private slots:
void slotPreviewJobFinished();
/**
+ * Is invoked when one of the KOverlayIconPlugin emit the signal that an overlay has changed
+ */
+ void slotOverlaysChanged(const KUrl&, const QStringList&);
+
+
+ /**
* Resolves the sort role of the next item in m_pendingSortRole, applies it
* to the model, and invokes itself if there are any pending items left. If
* that is not the case, \a startUpdating() is called.
@@ -331,6 +338,8 @@ private:
KDirectoryContentsCounter* m_directoryContentsCounter;
+ QList<KOverlayIconPlugin*> m_overlayIconsPlugin;
+
#ifdef HAVE_BALOO
Baloo::FileMonitor* m_balooFileMonitor;
#endif
diff --git a/lib/konq/CMakeLists.txt b/lib/konq/CMakeLists.txt
index 8ecbfa9..7381caf 100644
--- a/lib/konq/CMakeLists.txt
+++ b/lib/konq/CMakeLists.txt
@@ -22,6 +22,7 @@ set(konq_LIB_SRCS
konq_historyprovider.cpp
kversioncontrolplugin.cpp # used by dolphin and its version control plugins (deprecated)
kversioncontrolplugin2.cpp # used by dolphin and its version control plugins
+ koverlayiconplugin.cpp
konq_nameandurlinputdialog.cpp # deprecated (functionality has moved to kdelibs)
knewmenu.cpp # deprecated (functionality has moved to kdelibs)
@@ -67,8 +68,9 @@ install( FILES
konq_fileitemcapabilities.h
kversioncontrolplugin.h
kversioncontrolplugin2.h
+ koverlayiconplugin.h
konq_historyprovider.h
konq_historyentry.h
DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel
)
-install( FILES konqpopupmenuplugin.desktop konqdndpopupmenuplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} )
+install( FILES konqpopupmenuplugin.desktop konqdndpopupmenuplugin.desktop koverlayiconplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} )
diff --git a/lib/konq/koverlayiconplugin.cpp b/lib/konq/koverlayiconplugin.cpp
new file mode 100644
index 0000000..6125040
--- /dev/null
+++ b/lib/konq/koverlayiconplugin.cpp
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ * Copyright (C) 2014 by Olivier Goffart <ogoffart@woboq.com> *
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Library General Public *
+ * License version 2 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Library General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Library General Public License *
+ * along with this library; see the file COPYING.LIB. If not, write to *
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
+ * Boston, MA 02110-1301, USA. *
+ *****************************************************************************/
+
+#include "koverlayiconplugin.h"
+#include <KFileItem>
+
+KOverlayIconPlugin::KOverlayIconPlugin(QObject* parent) : QObject(parent)
+{
+}
+
+KOverlayIconPlugin::~KOverlayIconPlugin()
+{
+}
+
+#include "koverlayiconplugin.moc"
diff --git a/lib/konq/koverlayiconplugin.desktop b/lib/konq/koverlayiconplugin.desktop
new file mode 100644
index 0000000..65a1170
--- /dev/null
+++ b/lib/konq/koverlayiconplugin.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Type=ServiceType
+X-KDE-ServiceType=KOverlayIconPlugin
+Comment=Plugin to add overlay icons in Dolphin
diff --git a/lib/konq/koverlayiconplugin.h b/lib/konq/koverlayiconplugin.h
new file mode 100644
index 0000000..bcdf31b
--- /dev/null
+++ b/lib/konq/koverlayiconplugin.h
@@ -0,0 +1,57 @@
+/*****************************************************************************
+ * Copyright (C) 2014 by Olivier Goffart <ogoffart@woboq.com> *
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Library General Public *
+ * License version 2 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Library General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Library General Public License *
+ * along with this library; see the file COPYING.LIB. If not, write to *
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
+ * Boston, MA 02110-1301, USA. *
+ *****************************************************************************/
+
+
+#ifndef OverlayIconPlugin_H
+#define OverlayIconPlugin_H
+
+#include <QtCore/QObject>
+#include <libkonq_export.h>
+
+class KUrl;
+class KFileItem;
+
+/**
+ * @brief Base class for overlay icon plugins.
+ *
+ * Enables the file manager to show custom overlay icons on files.
+ *
+ * To write a custom plugin you need to create a .desktop file for your plugin with
+ * KDE-ServiceTypes=KOverlayIconPlugin
+ */
+class LIBKONQ_EXPORT KOverlayIconPlugin : public QObject {
+ Q_OBJECT
+ void *d;
+public:
+ explicit KOverlayIconPlugin(QObject *parent = 0);
+ ~KOverlayIconPlugin();
+
+ /**
+ * Returns a list of overlay pixmap to add to a file
+ * This can be a path to an icon, or the icon name
+ */
+ virtual QStringList getOverlays(const KFileItem &item) = 0;
+signals:
+
+ /**
+ * Emit this signal when the list of overlay icon changed for a given URL
+ */
+ void overlaysChanged(const KUrl &url, const QStringList &overlays);
+};
+
+#endif
--
2.1.3

View file

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 2.6)
project(dolphin-owncloud)
find_package(KDE4 REQUIRED)
include(KDE4Defaults)
include(MacroLibrary)
find_package(LibKonq REQUIRED)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} )
include_directories( ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${LIBKONQ_INCLUDE_DIR} )
kde4_add_plugin(ownclouddolphinplugin ownclouddolphinplugin.cpp)
target_link_libraries(ownclouddolphinplugin ${KDE4_KIO_LIBS} ${LIBKONQ_LIBRARY})
install(FILES ownclouddolphinplugin.desktop DESTINATION ${SERVICES_INSTALL_DIR})
install(TARGETS ownclouddolphinplugin DESTINATION ${PLUGIN_INSTALL_DIR})

View file

@ -0,0 +1,18 @@
- The patch 0001-KOverlayIconPlugin.patch should be applied to kde-baseapps git repository
(It should applies to both KDE/4.14 or Applications/14.12 branches)
- Recompile and install dolphin
- Build and install the plugin
- After installing, run
kdeinit4 --noincremental
- To test taht the plugin is well installed
ktraderclient --servicetype KOverlayIconPlugin
It should show the Owncloud plugin
- restart dolphin (make sure to kill all instances)

View file

@ -0,0 +1,131 @@
/******************************************************************************
* Copyright (C) 2014 by Olivier Goffart <ogoffart@woboq.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
******************************************************************************/
#include <koverlayiconplugin.h>
#include <KPluginFactory>
#include <KPluginLoader>
#include <kdebug.h>
#include <kfileitem.h>
#include <QtNetwork/QLocalSocket>
class OwncloudDolphinPlugin : public KOverlayIconPlugin
{
Q_OBJECT
QLocalSocket m_socket;
typedef QHash<QByteArray, QByteArray> StatusMap;
StatusMap m_status;
QByteArray m_line;
public:
explicit OwncloudDolphinPlugin(QObject* parent, const QList<QVariant>&) : KOverlayIconPlugin(parent) {
connect(&m_socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
tryConnect();
}
virtual QStringList getOverlays(const KFileItem& item) {
KUrl url = item.url();
if (!url.isLocalFile())
return QStringList();
const QByteArray localFile = url.toLocalFile().toUtf8();
kDebug() << localFile;
tryConnect();
if (m_socket.state() == QLocalSocket::ConnectingState) {
if (!m_socket.waitForConnected(100)) {
kWarning() << "not connected" << m_socket.errorString();
}
}
if (m_socket.state() == QLocalSocket::ConnectedState) {
m_socket.write("RETRIEVE_FILE_STATUS:");
m_socket.write(localFile);
m_socket.write("\n");
}
StatusMap::iterator it = m_status.find(localFile);
if (it != m_status.constEnd()) {
return overlaysForString(*it);
}
return QStringList();
}
private:
void tryConnect() {
if (m_socket.state() != QLocalSocket::UnconnectedState)
return;
QString runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
QString socketPath = runtimeDir + "/" + "ownCloud" + "/socket";
m_socket.connectToServer(socketPath);
}
QStringList overlaysForString(const QByteArray status) {
QStringList r;
if (status.startsWith("NOP"))
return r;
if (status.startsWith("OK"))
r << "dialog-ok";
if (status.startsWith("SYNC") || status.startsWith("NEW"))
r << "view-refresh";
if (status.contains("+SWM"))
r << "document-share";
kDebug() << status << r;
return r;
}
private slots:
void readyRead() {
while (m_socket.bytesAvailable()) {
m_line += m_socket.readLine();
if (!m_line.endsWith("\n"))
continue;
QByteArray line;
qSwap(line, m_line);
line.chop(1);
kDebug() << "got line " << line;
if (line.isEmpty())
continue;
QList<QByteArray> tokens = line.split(':');
if (tokens.count() != 3)
continue;
if (tokens[0] != "STATUS" && tokens[0] != "BROADCAST")
continue;
if (tokens[2].isEmpty())
continue;
const QByteArray name = tokens[2];
QByteArray &status = m_status[name]; // reference to the item in the hash
if (status == tokens[1])
continue;
status = tokens[1];
emit this->overlaysChanged(KUrl::fromLocalFile(QString::fromUtf8(name)), overlaysForString(status));
}
}
};
K_PLUGIN_FACTORY(OwncloudDolphinPluginFactory, registerPlugin<OwncloudDolphinPlugin>();)
K_EXPORT_PLUGIN(OwncloudDolphinPluginFactory("ownclouddolhpinplugin"))
#include "ownclouddolphinplugin.moc"

View file

@ -0,0 +1,6 @@
[Desktop Entry]
Type=Service
Name=Owncloud
X-KDE-ServiceTypes=KOverlayIconPlugin
MimeType=text/plain;
X-KDE-Library=ownclouddolphinplugin

View file

@ -18,6 +18,19 @@ import socket
from gi.repository import GObject, Nautilus
def get_runtime_dir():
"""Returns the value of $XDG_RUNTIME_DIR, a directory path.
If the value is not set, returns the same default as in Qt5
"""
try:
return os.environ['XDG_RUNTIME_DIR']
except KeyError:
fallback = '/tmp/runtime-' + os.environ['USER']
return fallback
class syncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoProvider):
nautilusVFSFile_table = {}
@ -38,21 +51,21 @@ class syncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.Info
try:
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
postfix = "/"+self.appname+"/socket"
sock_file = os.environ["XDG_RUNTIME_DIR"]+postfix
sock_file = get_runtime_dir()+postfix
print ("XXXX " + sock_file + " <=> " + postfix)
if sock_file != postfix:
try:
print("Socket File: "+sock_file)
self.sock.connect(sock_file)
self.connected = True
print("Setting connected to %r" % self.connected )
self.watch_id = GObject.io_add_watch(self.sock, GObject.IO_IN, self.handle_notify)
do_reconnect = False
except Exception, e:
print("Could not connect to unix socket." + str(e))
else:
print("Sock-File not valid: "+sock_file)
except Exception, e:
try:
print("Socket File: "+sock_file)
self.sock.connect(sock_file)
self.connected = True
print("Setting connected to %r" % self.connected )
self.watch_id = GObject.io_add_watch(self.sock, GObject.IO_IN, self.handle_notify)
do_reconnect = False
except Exception as e:
print("Could not connect to unix socket." + str(e))
else:
print("Sock-File not valid: "+sock_file)
except Exception as e:
print("Connect could not be established, try again later " + str(e))
self.sock.close()
# print("Returning %r" % do_reconnect)
@ -75,7 +88,7 @@ class syncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.Info
return None
def askForOverlay(self, file):
# print("Asking for overlay for "+file)
# print("Asking for overlay for "+file)
if os.path.isdir(file):
folderStatus = self.sendCommand("RETRIEVE_FOLDER_STATUS:"+file+"\n");
@ -85,15 +98,15 @@ class syncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.Info
def invalidate_items_underneath(self, path):
update_items = []
if not self.nautilusVFSFile_table:
self.askForOverlay(path)
else:
for p in self.nautilusVFSFile_table:
if p == path or p.startswith(path):
item = self.nautilusVFSFile_table[p]['item']
update_items.append(item)
self.askForOverlay(path)
else:
for p in self.nautilusVFSFile_table:
if p == path or p.startswith(path):
item = self.nautilusVFSFile_table[p]['item']
update_items.append(item)
for item in update_items:
item.invalidate_extension_info()
for item in update_items:
item.invalidate_extension_info()
# Handles a single line of server respoonse and sets the emblem
def handle_server_response(self, l):
@ -118,16 +131,16 @@ class syncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.Info
# file = parts[1]
# print "Action for " + file + ": "+parts[0]
if action == 'STATUS':
newState = parts[1]
newState = parts[1]
emblem = Emblems[newState]
if emblem:
itemStore = self.find_item_for_file(parts[2])
if itemStore:
if( not itemStore['state'] or newState != itemStore['state'] ):
item = itemStore['item']
item.add_emblem(emblem)
# print "Setting emblem on " + parts[2]+ "<>"+emblem+"<>"
self.nautilusVFSFile_table[parts[2]] = {'item': item, 'state':newState}
if( not itemStore['state'] or newState != itemStore['state'] ):
item = itemStore['item']
item.add_emblem(emblem)
# print "Setting emblem on " + parts[2]+ "<>"+emblem+"<>"
self.nautilusVFSFile_table[parts[2]] = {'item': item, 'state':newState}
elif action == 'UPDATE_VIEW':
# Search all items underneath this path and invalidate them

View file

@ -1,37 +0,0 @@
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include "RemotePathChecker.h"
#include "StringUtil.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
RemotePathChecker checker(33001);
vector<wstring> paths;
wstring test1(L"C:\\Users\\owncloud\\ownCloud\\wizard2.png");
wstring test2(L"C:\\Users\\owncloud\\ownCloud\\wizard3.png");
wstring test3(L"C:\\Users\\owncloud\\ownCloud\\HAMMANET.png");
paths.push_back(test1);
paths.push_back(test2);
paths.push_back(test3);
// wstring test3 = StringUtil::toUtf16(StringUtil::toUtf8(test1.c_str()));
vector<wstring>::iterator it;
for (it = paths.begin(); it != paths.end(); ++it) {
bool monitored = checker.IsMonitoredPath(it->c_str(), false);
wcout << *it << " " << monitored << " with value " << checker.GetPathType() << endl;
}
return 0;
}

View file

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="OCUtilTest.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View file

@ -1,97 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A81E3DAE-8FE7-4BD0-82F9-939B2D59D033}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>OCUtilTest</RootNamespace>
<ProjectName>OCUtilTest</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x86.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="OCUtilTest.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -1,40 +0,0 @@
========================================================================
CONSOLE APPLICATION : ConsoleApplication1 Project Overview
========================================================================
AppWizard has created this ConsoleApplication1 application for you.
This file contains a summary of what you will find in each of the files that
make up your ConsoleApplication1 application.
ConsoleApplication1.vcxproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
ConsoleApplication1.vcxproj.filters
This is the filters file for VC++ projects generated using an Application Wizard.
It contains information about the association between the files in your project
and the filters. This association is used in the IDE to show grouping of files with
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
"Source Files" filter).
ConsoleApplication1.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named ConsoleApplication1.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View file

@ -1,8 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// ConsoleApplication1.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

View file

@ -1,15 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here

View file

@ -1,8 +0,0 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>

View file

@ -540,6 +540,37 @@ int Folder::slotWipeBlacklist()
return _journal.wipeBlacklist();
}
void Folder::slotWatchedPathChanged(const QString& path)
{
// When no sync is running or it's in the prepare phase, we can
// always schedule a new sync.
if (! _engine || _syncResult.status() == SyncResult::SyncPrepare) {
emit scheduleToSync(alias());
return;
}
// The folder watcher fires a lot of bogus notifications during
// a sync operation, both for actual user files and the database
// and log. Therefore we check notifications against operations
// the sync is doing to filter out our own changes.
bool ownChange = false;
#ifdef Q_OS_MAC
// On OSX the folder watcher does not report changes done by our
// own process. Therefore nothing needs to be done here!
#else
// Use the path to figure out whether it was our own change
const auto maxNotificationDelay = 15*1000;
qint64 time = _engine->timeSinceFileTouched(path);
if (time != -1 && time < maxNotificationDelay) {
ownChange = true;
}
#endif
if (! ownChange) {
emit scheduleToSync(alias());
}
}
void Folder::setConfigFile( const QString& file )
{
_configFile = file;

View file

@ -154,6 +154,13 @@ public slots:
int slotWipeBlacklist();
int blackListEntryCount();
/**
* Triggered by the folder watcher when a file/dir in this folder
* changes. Needs to check whether this change should trigger a new
* sync run to be scheduled.
*/
void slotWatchedPathChanged(const QString& path);
private slots:
void slotSyncStarted();
void slotSyncError(const QString& );

View file

@ -55,10 +55,6 @@ FolderMan::FolderMan(QObject *parent) :
connect(_folderChangeSignalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(folderSyncStateChange(const QString &)));
_folderWatcherSignalMapper = new QSignalMapper(this);
connect(_folderWatcherSignalMapper, SIGNAL(mapped(const QString&)),
this, SLOT(slotScheduleSync(const QString&)));
ne_sock_init();
Q_ASSERT(!_instance);
_instance = this;
@ -100,8 +96,6 @@ void FolderMan::unloadFolder( const QString& alias )
_folderChangeSignalMapper->removeMappings(f);
if( _folderWatchers.contains(alias)) {
FolderWatcher *fw = _folderWatchers[alias];
_folderWatcherSignalMapper->removeMappings(fw);
_folderWatchers.remove(alias);
}
_folderMap.remove( alias );
@ -135,20 +129,19 @@ void FolderMan::registerFolderMonitor( Folder *folder )
if( !folder ) return;
if( !_folderWatchers.contains(folder->alias() ) ) {
FolderWatcher *fw = new FolderWatcher(folder->path(), this);
FolderWatcher *fw = new FolderWatcher(folder->path(), folder);
ConfigFile cfg;
fw->addIgnoreListFile( cfg.excludeFile(ConfigFile::SystemScope) );
fw->addIgnoreListFile( cfg.excludeFile(ConfigFile::UserScope) );
// Connect the folderChanged signal, which comes with the changed path,
// Connect the pathChanged signal, which comes with the changed path,
// to the signal mapper which maps to the folder alias. The changed path
// is lost this way, but we do not need it for the current implementation.
connect(fw, SIGNAL(folderChanged(QString)), _folderWatcherSignalMapper, SLOT(map()));
_folderWatcherSignalMapper->setMapping(fw, folder->alias());
connect(fw, SIGNAL(pathChanged(QString)), folder, SLOT(slotWatchedPathChanged(QString)));
_folderWatchers.insert(folder->alias(), fw);
// This is at the moment only for the behaviour of the SocketApi.
connect(fw, SIGNAL(folderChanged(QString)), folder, SLOT(watcherSlot(QString)));
connect(fw, SIGNAL(pathChanged(QString)), folder, SLOT(watcherSlot(QString)));
}
// register the folder with the socket API
@ -444,17 +437,6 @@ void FolderMan::slotScheduleSync( const QString& alias )
return;
}
// The folder watcher fires a lot of bogus notifications during
// a sync operation, both for actual user files and the database
// and log. Never enqueue a folder for sync while it is syncing.
// We lose some genuine sync requests that way, but that can't be
// helped.
// ^^ FIXME: Note that this is not the case on OS X
if( _currentSyncFolder == alias ) {
qDebug() << "folder " << alias << " is currently syncing. NOT scheduling.";
return;
}
if( _socketApi ) {
// We want the SocketAPI to already now update so that it can show the EVAL icon
// for files/folders. Only do this when not syncing, else we might get a lot

View file

@ -150,7 +150,6 @@ private:
Folder::Map _folderMap;
QString _folderConfigPath;
QSignalMapper *_folderChangeSignalMapper;
QSignalMapper *_folderWatcherSignalMapper;
QString _currentSyncFolder;
bool _syncEnabled;
QMap<QString, FolderWatcher*> _folderWatchers;

View file

@ -130,7 +130,7 @@ void FolderWatcher::changeDetected( const QStringList& paths )
_lastPaths = pathsSet;
_timer.restart();
QSet<QString> changedFolders;
QSet<QString> changedPaths;
// ------- handle ignores:
for (int i = 0; i < paths.size(); ++i) {
@ -139,20 +139,15 @@ void FolderWatcher::changeDetected( const QStringList& paths )
continue;
}
QFileInfo fi(path);
if (fi.isDir()) {
changedFolders.insert(path);
} else {
changedFolders.insert(fi.dir().path());
}
changedPaths.insert(path);
}
if (changedFolders.isEmpty()) {
if (changedPaths.isEmpty()) {
return;
}
qDebug() << "detected changes in folders:" << changedFolders;
foreach (const QString &path, changedFolders) {
emit folderChanged(path);
qDebug() << "detected changes in paths:" << changedPaths;
foreach (const QString &path, changedPaths) {
emit pathChanged(path);
}
}

View file

@ -34,7 +34,7 @@ class FolderWatcherPrivate;
/*
* Folder Watcher monitors a directory and its sub directories
* for changes in the local file system. Changes are signalled
* through the folderChanged() signal.
* through the pathChanged() signal.
*
* Note that if new folders are created, this folderwatcher class
* does not automatically adds them to the list of monitored
@ -74,8 +74,9 @@ public:
bool pathIsIgnored( const QString& path );
signals:
/** Emitted when one of the paths is changed */
void folderChanged(const QString &path);
/** Emitted when one of the watched directories or one
* of the contained files is changed. */
void pathChanged(const QString &path);
/** Emitted if an error occurs */
void error(const QString& error);

View file

@ -159,23 +159,22 @@ void FolderWatcherPrivate::slotReceivedNotification(int fd)
while(i + sizeof(struct inotify_event) < static_cast<unsigned int>(len)) {
// cast an inotify_event
event = (struct inotify_event*)&buffer[i];
// with the help of watch descriptor, retrieve, corresponding INotify
if (event == NULL) {
qDebug() << "NULL event";
i += sizeof(struct inotify_event);
continue;
}
// fire event
// Note: The name of the changed file and stuff could be taken from
// the event data structure. That does not happen yet.
// Fire event for the path that was changed.
if (event->len > 0 && event->wd > -1) {
QByteArray fileName(event->name);
// qDebug() << Q_FUNC_INFO << event->name;
if (QByteArray(event->name).startsWith(".csync") ||
QByteArray(event->name).startsWith(".owncloudsync.log")) {
if (fileName.startsWith(".csync_journal.db") ||
fileName.startsWith(".owncloudsync.log")) {
// qDebug() << "ignore journal";
} else {
const QString p = _watches[event->wd];
const QString p = _watches[event->wd] + '/' + fileName;
//qDebug() << "found a change in " << p;
_parent->changeDetected(p);
}
}

View file

@ -13,6 +13,7 @@
#include <QThread>
#include <QDebug>
#include <QDir>
#include "folderwatcher.h"
#include "folderwatcher_win.h"
@ -23,52 +24,123 @@
namespace OCC {
void WatcherThread::run()
void WatcherThread::watchChanges(size_t fileNotifyBufferSize,
bool* increaseBufferSize)
{
_handle = FindFirstChangeNotification((wchar_t*)_path.utf16(),
true, // recursive watch
FILE_NOTIFY_CHANGE_FILE_NAME |
FILE_NOTIFY_CHANGE_DIR_NAME |
FILE_NOTIFY_CHANGE_LAST_WRITE);
*increaseBufferSize = false;
_handle = CreateFileW(
(wchar_t*)_path.utf16(),
FILE_LIST_DIRECTORY,
FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL
);
if (_handle == INVALID_HANDLE_VALUE)
{
qDebug() << Q_FUNC_INFO << "FindFirstChangeNotification function failed, stopping watcher!";
FindCloseChangeNotification(_handle);
DWORD errorCode = GetLastError();
qDebug() << Q_FUNC_INFO << "Failed to create handle for" << _path << ", error:" << errorCode;
_handle = 0;
return;
}
if (_handle == NULL)
{
qDebug() << Q_FUNC_INFO << "FindFirstChangeNotification returned null, stopping watcher!";
FindCloseChangeNotification(_handle);
_handle = 0;
return;
}
// QVarLengthArray ensures the stack-buffer is aligned like double and qint64.
QVarLengthArray<char, 4096*10> fileNotifyBuffer;
fileNotifyBuffer.resize(fileNotifyBufferSize);
while(true) {
switch(WaitForSingleObject(_handle, /*wait*/ INFINITE)) {
case WAIT_OBJECT_0:
if (FindNextChangeNotification(_handle) == false) {
qDebug() << Q_FUNC_INFO << "FindFirstChangeNotification returned FALSE, stopping watcher!";
FindCloseChangeNotification(_handle);
_handle = 0;
return;
const size_t fileNameBufferSize = 4096;
TCHAR fileNameBuffer[fileNameBufferSize];
forever {
FILE_NOTIFY_INFORMATION *pFileNotifyBuffer =
(FILE_NOTIFY_INFORMATION*)fileNotifyBuffer.data();
DWORD dwBytesReturned = 0;
SecureZeroMemory(pFileNotifyBuffer, fileNotifyBufferSize);
if(ReadDirectoryChangesW( _handle, (LPVOID)pFileNotifyBuffer,
fileNotifyBufferSize, true,
FILE_NOTIFY_CHANGE_FILE_NAME |
FILE_NOTIFY_CHANGE_DIR_NAME |
FILE_NOTIFY_CHANGE_LAST_WRITE,
&dwBytesReturned, NULL, NULL))
{
FILE_NOTIFY_INFORMATION *curEntry = pFileNotifyBuffer;
forever {
size_t len = curEntry->FileNameLength / 2;
QString file = _path + "\\" + QString::fromWCharArray(curEntry->FileName, len);
// Unless the file was removed or renamed, get its full long name
// TODO: We could still try expanding the path in the tricky cases...
QString longfile = file;
if (curEntry->Action != FILE_ACTION_REMOVED
&& curEntry->Action != FILE_ACTION_RENAMED_OLD_NAME) {
size_t longNameSize = GetLongPathNameW(reinterpret_cast<LPCWSTR>(file.utf16()), fileNameBuffer, fileNameBufferSize);
if (longNameSize > 0) {
longfile = QString::fromUtf16(reinterpret_cast<const ushort *>(fileNameBuffer), longNameSize);
} else {
qDebug() << Q_FUNC_INFO << "Error converting file name to full length, keeping original name.";
}
}
longfile = QDir::cleanPath(longfile);
qDebug() << Q_FUNC_INFO << "Found change in" << longfile << "action:" << curEntry->Action;
emit changed(longfile);
if (curEntry->NextEntryOffset == 0) {
break;
}
curEntry = (FILE_NOTIFY_INFORMATION*)(
(char*)curEntry + curEntry->NextEntryOffset);
}
// qDebug() << Q_FUNC_INFO << "Change detected in" << _path << "from" << QThread::currentThread ();
emit changed(_path);
break;
default:
qDebug() << Q_FUNC_INFO << "Error while watching";
} else {
DWORD errorCode = GetLastError();
switch(errorCode) {
case ERROR_NOTIFY_ENUM_DIR:
qDebug() << Q_FUNC_INFO << "The buffer for changes overflowed! Triggering a generic change and resizing";
emit changed(_path);
*increaseBufferSize = true;
break;
default:
qDebug() << Q_FUNC_INFO << "General error" << errorCode << "while watching. Exiting.";
break;
}
CloseHandle(_handle);
_handle = NULL;
return;
}
}
}
void WatcherThread::run()
{
// If this buffer fills up before we've extracted its data we will lose
// change information. Therefore start big.
size_t bufferSize = 4096*10;
size_t maxBuffer = 64*1024;
forever {
bool increaseBufferSize = false;
watchChanges(bufferSize, &increaseBufferSize);
if (increaseBufferSize) {
bufferSize = qMin(bufferSize*2, maxBuffer);
} else {
// Other errors shouldn't actually happen,
// so sleep a bit to avoid running into the same error case in a
// tight loop.
sleep(2);
}
}
}
WatcherThread::~WatcherThread()
{
if (_handle)
FindCloseChangeNotification(_handle);
if (_handle) {
CloseHandle(_handle);
_handle = NULL;
}
}
FolderWatcherPrivate::FolderWatcherPrivate(FolderWatcher *p, const QString& path)

View file

@ -33,6 +33,8 @@ public:
protected:
void run();
void watchChanges(size_t fileNotifyBufferSize,
bool* increaseBufferSize);
signals:
void changed(const QString &path);

View file

@ -278,11 +278,6 @@ void ownCloudGui::slotComputeOverallSyncStatus()
QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Problem);
_tray->setIcon( icon );
_tray->setToolTip(tr("There are no sync folders configured."));
#if !defined Q_OS_MAC
if( _settingsDialog ) {
_settingsDialog->slotUpdateAccountIcon(icon);
}
#endif
}
}
}

View file

@ -26,26 +26,37 @@
#include <QLabel>
#include <QStandardItemModel>
#include <QStackedWidget>
#include <QPushButton>
#include <QDebug>
#include <QSettings>
#include <QToolBar>
#include <QLayout>
namespace {
const char TOOLBAR_CSS[] =
"QToolBar { background: white; margin: 0; padding: 0; border: none; border-bottom: 1px solid grey; spacing: 0; } "
"QToolBar QToolButton { background: white; border: none; border-bottom: 1px solid grey; margin: 0; padding: 0; } "
"QToolBar QToolButton:checked { background: %1; color: %2; }";
}
namespace OCC {
QIcon createDummy() {
QIcon icon;
QPixmap p(32,32);
p.fill(Qt::transparent);
icon.addPixmap(p);
return icon;
}
SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
QDialog(parent),
_ui(new Ui::SettingsDialog)
QDialog(parent)
, _ui(new Ui::SettingsDialog)
, _accountSettings(new AccountSettings)
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
_ui->setupUi(this);
QToolBar *toolBar = new QToolBar;
toolBar->setIconSize(QSize(32,32));
QString highlightColor(palette().highlight().color().name());
QString altBase(palette().alternateBase().color().name());
toolBar->setStyleSheet(QString::fromAscii(TOOLBAR_CSS).arg(highlightColor).arg(altBase));
toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
layout()->setMenuBar(toolBar);
// People perceive this as a Window, so also make Ctrl+W work
QAction *closeWindowAction = new QAction(this);
@ -55,32 +66,44 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
setObjectName("Settings"); // required as group for saveGeometry call
setWindowTitle(tr("%1").arg(Theme::instance()->appNameGUI()));
setWindowTitle(Theme::instance()->appNameGUI());
_accountSettings = new AccountSettings(this);
addAccount(tr("Account"), _accountSettings);
QIcon accountIcon(QLatin1String(":/mirall/resources/accounts.png"));
QAction *accountAction = toolBar->addAction(accountIcon, tr("Account"));
accountAction->setCheckable(true);
_ui->stack->addWidget(_accountSettings);
QIcon protocolIcon(QLatin1String(":/mirall/resources/activity.png"));
QListWidgetItem *protocol= new QListWidgetItem(protocolIcon, tr("Activity"), _ui->labelWidget);
protocol->setSizeHint(QSize(0, 32));
_ui->labelWidget->addItem(protocol);
_protocolWidget = new ProtocolWidget;
_protocolIdx = _ui->stack->addWidget(_protocolWidget);
_protocolAction = toolBar->addAction(protocolIcon, tr("Activity"));
_protocolAction->setCheckable(true);
ProtocolWidget *protocolWidget = new ProtocolWidget;
_ui->stack->addWidget(protocolWidget);
QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png"));
QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget);
general->setSizeHint(QSize(0, 32));
_ui->labelWidget->addItem(general);
QAction *generalAction = toolBar->addAction(generalIcon, tr("General"));
generalAction->setCheckable(true);
GeneralSettings *generalSettings = new GeneralSettings;
_ui->stack->addWidget(generalSettings);
QIcon networkIcon(QLatin1String(":/mirall/resources/network.png"));
QListWidgetItem *network = new QListWidgetItem(networkIcon, tr("Network"), _ui->labelWidget);
network->setSizeHint(QSize(0, 32));
_ui->labelWidget->addItem(network);
QAction *networkAction = toolBar->addAction(networkIcon, tr("Network"));
networkAction->setCheckable(true);
NetworkSettings *networkSettings = new NetworkSettings;
_ui->stack->addWidget(networkSettings);
_actions.insert(accountAction, _accountSettings);
_actions.insert(_protocolAction, protocolWidget);
_actions.insert(generalAction, generalSettings);
_actions.insert(networkAction, networkSettings);
QActionGroup *group = new QActionGroup(this);
group->addAction(accountAction);
group->addAction(_protocolAction);
group->addAction(generalAction);
group->addAction(networkAction);
group->setExclusive(true);
connect(group, SIGNAL(triggered(QAction*)), SLOT(slotSwitchPage(QAction*)));
connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged()));
connect( _accountSettings, SIGNAL(accountIconChanged(QIcon)), SLOT(slotUpdateAccountIcon(QIcon)));
connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)),
@ -89,10 +112,9 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)),
_accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) );
_ui->labelWidget->setCurrentRow(_ui->labelWidget->row(_accountItem));
connect(_ui->labelWidget, SIGNAL(currentRowChanged(int)),
_ui->stack, SLOT(setCurrentIndex(int)));
// default to Account
accountAction->setChecked(true);
QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close);
connect(closeButton, SIGNAL(clicked()), SLOT(accept()));
@ -102,23 +124,6 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
connect(showLogWindow, SIGNAL(triggered()), gui, SLOT(slotToggleLogBrowser()));
addAction(showLogWindow);
int iconSize = 32;
QListWidget *listWidget = _ui->labelWidget;
int spacing = 20;
// reverse at least ~8 characters
int effectiveWidth = fontMetrics().averageCharWidth() * 8 + iconSize + spacing;
// less than ~16 characters, elide otherwise
int maxWidth = fontMetrics().averageCharWidth() * 16 + iconSize + spacing;
for (int i = 0; i < listWidget->count(); i++) {
QListWidgetItem *item = listWidget->item(i);
QFontMetrics fm(item->font());
int curWidth = fm.width(item->text()) + iconSize + spacing;
effectiveWidth = qMax(curWidth, effectiveWidth);
if (curWidth > maxWidth) item->setToolTip(item->text());
}
effectiveWidth = qMin(effectiveWidth, maxWidth);
listWidget->setFixedWidth(effectiveWidth);
ConfigFile cfg;
cfg.restoreGeometry(this);
}
@ -128,20 +133,9 @@ SettingsDialog::~SettingsDialog()
delete _ui;
}
void SettingsDialog::addAccount(const QString &title, QWidget *widget)
{
_accountItem = new QListWidgetItem(title);
_accountItem->setSizeHint(QSize(0, 32));
_ui->labelWidget->addItem(_accountItem);
_ui->stack->addWidget(widget);
_accountSettings->slotSyncStateChange();
}
void SettingsDialog::setGeneralErrors(const QStringList &errors)
{
if( _accountSettings ) {
_accountSettings->setGeneralErrors(errors);
}
_accountSettings->setGeneralErrors(errors);
}
// close event is not being called here
@ -157,14 +151,16 @@ void SettingsDialog::accept() {
QDialog::accept();
}
void SettingsDialog::slotUpdateAccountIcon(const QIcon &icon)
void SettingsDialog::slotSwitchPage(QAction *action)
{
_accountItem->setIcon(icon);
_ui->stack->setCurrentWidget(_actions.value(action));
}
void SettingsDialog::showActivityPage()
{
_ui->labelWidget->setCurrentRow(_protocolIdx);
if (_protocolAction) {
slotSwitchPage(_protocolAction);
}
}

View file

View file

@ -19,8 +19,8 @@
#include "progressdispatcher.h"
class QAction;
class QStandardItemModel;
class QListWidgetItem;
namespace OCC {
@ -28,7 +28,6 @@ namespace Ui {
class SettingsDialog;
}
class AccountSettings;
class ProtocolWidget;
class Application;
class FolderMan;
class ownCloudGui;
@ -46,7 +45,7 @@ public:
public slots:
void showActivityPage();
void slotUpdateAccountIcon(const QIcon& icon);
void slotSwitchPage(QAction *action);
protected:
void reject() Q_DECL_OVERRIDE;
@ -55,12 +54,10 @@ protected:
private slots:
private:
Ui::SettingsDialog *_ui;
AccountSettings *_accountSettings;
QListWidgetItem *_accountItem;
ProtocolWidget *_protocolWidget;
int _protocolIdx;
Ui::SettingsDialog * const _ui;
QHash<QAction*, QWidget*> _actions;
AccountSettings * const _accountSettings;
QAction * _protocolAction;
};
}

View file

@ -14,26 +14,22 @@
<string>Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0" rowspan="2">
<widget class="QListWidget" name="labelWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QStackedWidget" name="stack"/>
</item>
<item row="1" column="1">
<item row="1" column="0">
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
@ -55,6 +51,9 @@
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QStackedWidget" name="stack"/>
</item>
</layout>
</widget>
<resources/>

View file

@ -63,8 +63,8 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent)
setWindowTitle(tr("%1").arg(Theme::instance()->appNameGUI()));
_accountSettings = new AccountSettings;
QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Undefined, true);
_accountIdx = addPreferencesPanel(icon, tr("Account"), _accountSettings);
QIcon accountIcon = (QLatin1String(":/mirall/resources/accounts.png"));
addPreferencesPanel(accountIcon, tr("Account"), _accountSettings);
QIcon protocolIcon(QLatin1String(":/mirall/resources/activity.png"));
_protocolWidget = new ProtocolWidget;
@ -97,9 +97,6 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent)
void SettingsDialogMac::slotSyncStateChange(const QString& alias)
{
FolderMan *folderMan = FolderMan::instance();
SyncResult state = folderMan->accountStatus(folderMan->map().values());
QIcon accountIcon = Theme::instance()->syncStateIcon(state.status());
setPreferencesPanelIcon(_accountIdx, accountIcon);
Folder *folder = folderMan->folder(alias);
if( folder ) {
@ -109,9 +106,7 @@ void SettingsDialogMac::slotSyncStateChange(const QString& alias)
void SettingsDialogMac::setGeneralErrors(const QStringList &errors)
{
if( _accountSettings ) {
_accountSettings->setGeneralErrors(errors);
}
_accountSettings->setGeneralErrors(errors);
}
void SettingsDialogMac::closeEvent(QCloseEvent *event)

View file

@ -49,7 +49,6 @@ private:
QListWidgetItem *_accountItem;
ProtocolWidget *_protocolWidget;
int _accountIdx;
int _protocolIdx;
};

View file

@ -94,6 +94,11 @@ SocketApi::SocketApi(QObject* parent)
runtimeDir = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
#else
runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
if (runtimeDir.isEmpty()) {
runtimeDir = QDir::tempPath() + QLatin1String("/runtime-")
+ QString::fromLocal8Bit(qgetenv("USER"));
QDir().mkdir(runtimeDir);
}
#endif
socketPath = runtimeDir + "/" + Theme::instance()->appName() + "/socket";
} else {

View file

@ -224,7 +224,7 @@ void OwncloudSetupPage::setErrorString( const QString& err )
_ui.errorLabel->setVisible(false);
} else {
if (_ui.leUrl->text().startsWith("https://")) {
QString msg = tr("Could not connect securely. Do you want to connect unencrypted instead (not recommended)?").arg(err);
QString msg = tr("Could not connect securely:\n\n%1\n\nDo you want to connect unencrypted instead (not recommended)?").arg(err);
QString title = tr("Connection failed");
if (QMessageBox::question(this, title, msg, QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
QUrl url(_ui.leUrl->text());

View file

@ -33,7 +33,6 @@ endif()
set(libsync_SRCS
account.cpp
authenticationdialog.cpp
bandwidthmanager.cpp
clientproxy.cpp
connectionvalidator.cpp
@ -53,6 +52,7 @@ set(libsync_SRCS
propagateupload.cpp
propagateremotedelete.cpp
propagateremotemove.cpp
propagateremotemkdir.cpp
quotainfo.cpp
syncengine.cpp
syncfilestatus.cpp
@ -82,6 +82,7 @@ else()
creds/shibboleth/shibbolethwebview.cpp
creds/shibboleth/shibbolethrefresher.cpp
creds/shibboleth/shibbolethuserjob.cpp
authenticationdialog.cpp
)
endif()

View file

@ -19,7 +19,10 @@
#include <QNetworkCookie>
#include <QNetworkCookieJar>
#ifndef TOKEN_AUTH_ONLY
#include "authenticationdialog.h"
#endif
#include "cookiejar.h"
#include "accessmanager.h"
#include "utility.h"
@ -87,6 +90,7 @@ void AccessManager::slotProxyAuthenticationRequired(const QNetworkProxy &proxy,
}
void AccessManager::slotAuthenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
{
#ifndef TOKEN_AUTH_ONLY
// do not handle 401 created by the networkjobs. We may want
// to eventually exempt some, but for now we need
// it only for other things, e.g. the browser. Would we handle
@ -106,6 +110,10 @@ void AccessManager::slotAuthenticationRequired(QNetworkReply *reply, QAuthentica
authenticator->setUser(dialog.user());
authenticator->setPassword(dialog.password());
}
#else
Q_UNUSED(reply) Q_UNUSED(authenticator)
Q_ASSERT(!"MirallAccessManager::slotAuthenticationRequired called");
#endif
}
} // namespace OCC

View file

@ -365,7 +365,8 @@ quint64 ConfigFile::forceSyncInterval(const QString& connection) const
QSettings settings(configFile(), QSettings::IniFormat);
settings.beginGroup( con );
quint64 interval = settings.value( QLatin1String(forceSyncIntervalC), 10 * pollInterval ).toULongLong();
quint64 defaultInterval = 2 * 60 * 60 * 1000ull; // 2h
quint64 interval = settings.value( QLatin1String(forceSyncIntervalC), defaultInterval ).toULongLong();
if( interval < pollInterval) {
qDebug() << "Force sync interval is less than the remote poll inteval, reverting to" << pollInterval;
interval = pollInterval;

View file

@ -91,27 +91,11 @@ QList<QNetworkCookie> CookieJar::cookiesForUrl(const QUrl &url) const
return cookies;
}
bool CookieJar::deleteCookie(const QNetworkCookie &delCookie)
{
QList<QNetworkCookie> cookies = allCookies();
bool removeSucceeded = false;
foreach(const QNetworkCookie &cookie, cookies) {
// ### cookies are not identical in attriutes, why?
if (cookie.name() == delCookie.name()) {
cookies.removeOne(cookie);
removeSucceeded = true;
}
}
setAllCookies(cookies);
return removeSucceeded;
}
void CookieJar::clearSessionCookies()
{
setAllCookies(removeExpired(allCookies()));
}
void CookieJar::save()
{
QFile file;

View file

@ -29,13 +29,11 @@ public:
bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) Q_DECL_OVERRIDE;
QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const Q_DECL_OVERRIDE;
bool deleteCookie(const QNetworkCookie & cookie)
#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
Q_DECL_OVERRIDE //that function is not virtual in Qt4
#endif
;
void clearSessionCookies();
using QNetworkCookieJar::setAllCookies;
using QNetworkCookieJar::allCookies;
signals:
void newCookiesForUrl(const QList<QNetworkCookie>& cookieList, const QUrl& url);
private:

View file

@ -241,7 +241,19 @@ void ShibbolethCredentials::persist(Account* account)
void ShibbolethCredentials::invalidateToken(Account *account)
{
CookieJar *jar = static_cast<CookieJar*>(account->networkAccessManager()->cookieJar());
jar->deleteCookie(_shibCookie);
// Remove the _shibCookie
auto cookies = jar->allCookies();
for (auto it = cookies.begin(); it != cookies.end(); ) {
if (it->name() == _shibCookie.name()) {
it = cookies.erase(it);
} else {
++it;
}
}
jar->setAllCookies(cookies);
// Clear all other temporary cookies
jar->clearSessionCookies();
removeShibCookie(account);
_shibCookie = QNetworkCookie();

View file

@ -497,7 +497,12 @@ void PropfindJob::start()
req.setRawHeader("Depth", "0");
QByteArray propStr;
foreach (const QByteArray &prop, properties) {
propStr += " <d:" + prop + " />\n";
if (prop.contains(':')) {
int colIdx = prop.lastIndexOf(":");
propStr += " <" + prop.mid(colIdx+1) + " xmlns=\"" + prop.left(colIdx) + "\" />\n";
} else {
propStr += " <d:" + prop + " />\n";
}
}
QByteArray xml = "<?xml version=\"1.0\" ?>\n"
"<d:propfind xmlns:d=\"DAV:\">\n"
@ -540,25 +545,23 @@ bool PropfindJob::finished()
while (!reader.atEnd()) {
QXmlStreamReader::TokenType type = reader.readNext();
if (type == QXmlStreamReader::StartElement &&
reader.namespaceUri() == QLatin1String("DAV:")) {
if (curElement.isEmpty()) {
curElement.push(reader.name().toString());
items.insert(reader.name().toString(), reader.text().toString());
if (type == QXmlStreamReader::StartElement) {
if (!curElement.isEmpty() && curElement.top() == QLatin1String("prop")) {
items.insert(reader.name().toString(), reader.readElementText());
}
curElement.push(reader.name().toString());
}
if (type == QXmlStreamReader::EndElement &&
reader.namespaceUri() == QLatin1String("DAV:")) {
if (type == QXmlStreamReader::EndElement) {
if(curElement.top() == reader.name()) {
curElement.pop();
}
}
}
emit result(items);
} else {
qDebug() << "Quota request *not* successful, http result code is" << http_result_code
<< (http_result_code == 302 ? reply()->header(QNetworkRequest::LocationHeader).toString() : QLatin1String(""));
emit finishedWithError();
}
return true;
}

View file

@ -158,6 +158,7 @@ public:
signals:
void result(const QVariantMap &values);
void finishedWithError();
private slots:
virtual bool finished() Q_DECL_OVERRIDE;

View file

@ -20,6 +20,7 @@
#include "propagateupload.h"
#include "propagateremotedelete.h"
#include "propagateremotemove.h"
#include "propagateremotemkdir.h"
#include "propagatorjobs.h"
#include "propagator_legacy.h"
#include "configfile.h"
@ -70,6 +71,7 @@ static bool blacklist(SyncJournalDb* journal, const SyncFileItem& item)
void PropagateItemJob::done(SyncFileItem::Status status, const QString &errorString)
{
_state = Finished;
if (_item._isRestoration) {
if( status == SyncFileItem::Success || status == SyncFileItem::Conflict) {
status = SyncFileItem::Restoration;
@ -308,10 +310,11 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
connect(_rootJob.data(), SIGNAL(completed(SyncFileItem)), this, SIGNAL(completed(SyncFileItem)));
connect(_rootJob.data(), SIGNAL(progress(SyncFileItem,quint64)), this, SIGNAL(progress(SyncFileItem,quint64)));
connect(_rootJob.data(), SIGNAL(finished(SyncFileItem::Status)), this, SLOT(emitFinished()));
connect(_rootJob.data(), SIGNAL(ready()), this, SLOT(scheduleNextJob()), Qt::QueuedConnection);
qDebug() << (useLegacyJobs() ? "Using legacy libneon/HTTP sequential code path" : "Using QNAM/HTTP parallel code path");
QMetaObject::invokeMethod(_rootJob.data(), "start", Qt::QueuedConnection);
QTimer::singleShot(0, this, SLOT(scheduleNextJob()));
}
bool OwncloudPropagator::isInSharedDirectory(const QString& file)
@ -343,21 +346,31 @@ bool OwncloudPropagator::useLegacyJobs()
return true;
}
env = qgetenv("OWNCLOUD_NEW_BANDWIDTH_LIMITING");
if (env=="true" || env =="1") {
qDebug() << "New Bandwidth Limiting Code ACTIVATED";
// Only certain Qt versions support this at the moment.
// They need those Change-Ids: Idb1c2d5a382a704d8cc08fe03c55c883bfc95aa7 Iefbcb1a21d8aedef1eb11761232dd16a049018dc
// FIXME We need to check the Qt version and then also return false here as soon
// as mirall ships with those Qt versions on Windows and OS X
return false;
}
if (_downloadLimit.fetchAndAddAcquire(0) != 0 || _uploadLimit.fetchAndAddAcquire(0) != 0) {
qDebug() << "Switching To Legacy Propagator Because Of Bandwidth Limit ACTIVATED";
// QNAM does not support bandwith limiting
// in most Qt versions.
// QNAM bandwith limiting only work with version of Qt greater or equal to 5.3.3
// (It needs Qt commits 097b641 and b99fa32)
#if QT_VERSION >= QT_VERSION_CHECK(5,3,3)
return false;
#elif QT_VERSION >= QT_VERSION_CHECK(5,0,0)
env = qgetenv("OWNCLOUD_NEW_BANDWIDTH_LIMITING");
if (env=="true" || env =="1") {
qDebug() << "New Bandwidth Limiting Code ACTIVATED";
return false;
}
// Do a runtime check.
// (Poor man's version comparison)
const char *v = qVersion(); // "x.y.z";
if (QLatin1String(v) >= QLatin1String("5.3.3")) {
return false;
} else {
qDebug() << "Use legacy jobs because qt version is only" << v << "while 5.3.3 is needed";
return true;
}
#else
qDebug() << "Use legacy jobs because of Qt4";
return true;
#endif
}
return false;
@ -435,52 +448,133 @@ QString OwncloudPropagator::getFilePath(const QString& tmp_file_name) const
return _localDir + tmp_file_name;
}
void OwncloudPropagator::scheduleNextJob()
{
if (this->_activeJobs < maximumActiveJob()) {
if (_rootJob->scheduleNextJob()) {
QTimer::singleShot(100, this, SLOT(scheduleNextJob()));
}
}
}
void OwncloudPropagator::addTouchedFile(const QString& fn)
{
QString file = QDir::cleanPath(fn);
QElapsedTimer timer;
timer.start();
QMutexLocker lock(&_touchedFilesMutex);
_touchedFiles.insert(file, timer);
}
qint64 OwncloudPropagator::timeSinceFileTouched(const QString& fn) const
{
QMutexLocker lock(&_touchedFilesMutex);
if (! _touchedFiles.contains(fn)) {
return -1;
}
return _touchedFiles[fn].elapsed();
}
// ================================================================================
void PropagateDirectory::start()
PropagatorJob::JobParallelism PropagateDirectory::parallelism()
{
_current = -1;
_hasError = SyncFileItem::NoStatus;
if (!_firstJob) {
slotSubJobReady();
} else {
startJob(_firstJob.data());
// If any of the non-finished sub jobs is not parallel, we have to wait
// FIXME! we should probably cache this result
if (_firstJob && _firstJob->_state != Finished) {
if (_firstJob->parallelism() != FullParallelism)
return WaitForFinished;
}
// FIXME: use the cached value of finished job
for (int i = 0; i < _subJobs.count(); ++i) {
if (_subJobs.at(i)->_state != Finished && _subJobs.at(i)->parallelism() != FullParallelism) {
return WaitForFinished;
}
}
return FullParallelism;
}
bool PropagateDirectory::scheduleNextJob()
{
if (_state == Finished) {
return false;
}
if (_state == NotYetStarted) {
_state = Running;
if (!_firstJob && _subJobs.isEmpty()) {
slotSubJobFinished(SyncFileItem::Success);
return true;
}
}
if (_firstJob && _firstJob->_state == NotYetStarted) {
return possiblyRunNextJob(_firstJob.data());
}
if (_firstJob && _firstJob->_state == Running) {
return false;
}
bool stopAtDirectory = false;
// FIXME: use the cached value of finished job
for (int i = 0; i < _subJobs.count(); ++i) {
if (_subJobs.at(i)->_state == Finished) {
continue;
}
if (stopAtDirectory && qobject_cast<PropagateDirectory*>(_subJobs.at(i))) {
return false;
}
if (possiblyRunNextJob(_subJobs.at(i))) {
return true;
}
Q_ASSERT(_subJobs.at(i)->_state == Running);
auto paral = _subJobs.at(i)->parallelism();
if (paral == WaitForFinished) {
return false;
}
if (paral == WaitForFinishedInParentDirectory) {
stopAtDirectory = true;
}
}
return false;
}
void PropagateDirectory::slotSubJobFinished(SyncFileItem::Status status)
{
if (status == SyncFileItem::FatalError ||
(_current == -1 && status != SyncFileItem::Success && status != SyncFileItem::Restoration)) {
(sender() == _firstJob.data() && status != SyncFileItem::Success && status != SyncFileItem::Restoration)) {
abort();
_state = Finished;
emit finished(status);
return;
} else if (status == SyncFileItem::NormalError || status == SyncFileItem::SoftError) {
_hasError = status;
}
_runningNow--;
slotSubJobReady();
}
void PropagateDirectory::slotSubJobReady()
{
if (_runningNow && _current == -1)
return; // Ignore the case when the _fistJob is ready and not yet finished
if (_runningNow && _current >= 0 && _current < _subJobs.count()) {
// there is a job running and the current one is not ready yet, we can't start new job
if (!_subJobs[_current]->_readySent || _propagator->_activeJobs >= _propagator->maximumActiveJob())
return;
int total = _subJobs.count();
if (!_firstJob) {
total--;
}
_current++;
if (_current < _subJobs.size() && !_propagator->_abortRequested.fetchAndAddRelaxed(0)) {
PropagatorJob *next = _subJobs.at(_current);
startJob(next);
return;
}
// We finished to processing all the jobs
emitReady();
if (!_runningNow) {
// check if we finished
if (_current >= total) {
if (!_item.isEmpty() && _hasError == SyncFileItem::NoStatus) {
if( !_item._renameTarget.isEmpty() ) {
_item._file = _item._renameTarget;
@ -497,7 +591,10 @@ void PropagateDirectory::slotSubJobReady()
_propagator->_journal->setFileRecord(record);
}
}
_state = Finished;
emit finished(_hasError == SyncFileItem::NoStatus ? SyncFileItem::Success : _hasError);
} else {
emit ready();
}
}

View file

@ -24,6 +24,7 @@
#include <QTimer>
#include <QPointer>
#include <QIODevice>
#include <QMutex>
#include "syncfileitem.h"
#include "syncjournaldb.h"
@ -41,23 +42,53 @@ class Account;
class SyncJournalDb;
class OwncloudPropagator;
/**
* @class PropagatorJob
* @brief the base class of propagator jobs
*
* This can either be a job, or a container for jobs.
* If it is a composite jobs, it then inherits from PropagateDirectory
*
*
*/
class PropagatorJob : public QObject {
Q_OBJECT
protected:
OwncloudPropagator *_propagator;
void emitReady() {
bool wasReady = _readySent;
_readySent = true;
if (!wasReady)
emit ready();
};
public:
bool _readySent;
explicit PropagatorJob(OwncloudPropagator* propagator) : _propagator(propagator), _readySent(false) {}
explicit PropagatorJob(OwncloudPropagator* propagator) : _propagator(propagator), _state(NotYetStarted) {}
enum JobState {
NotYetStarted,
Running,
Finished
};
JobState _state;
enum JobParallelism {
/** Jobs can be run in parallel to this job */
FullParallelism,
/** This job do not support parallelism, and no other job shall
be started until this one has finished */
WaitForFinished,
/** This job support paralelism with other jobs in the same directory, but it should
not be paralelized with jobs in other directories (typically a move operation) */
WaitForFinishedInParentDirectory
};
virtual JobParallelism parallelism() { return FullParallelism; }
public slots:
virtual void start() = 0;
virtual void abort() {}
/** Starts this job, or a new subjob
* returns true if a job was started.
*/
virtual bool scheduleNextJob() = 0;
signals:
/**
* Emitted when the job is fully finished
@ -70,9 +101,8 @@ signals:
void completed(const SyncFileItem &);
/**
* Emitted when all the sub-jobs have been scheduled and
* we are ready and more jobs might be started
* This signal is not always emitted.
* Emitted when all the sub-jobs have been finished and
* more jobs might be started (so scheduleNextJob can/must be called again)
*/
void ready();
@ -111,7 +141,8 @@ public:
_subJobs.append(subJob);
}
virtual void start() Q_DECL_OVERRIDE;
virtual bool scheduleNextJob() Q_DECL_OVERRIDE;
virtual JobParallelism parallelism() Q_DECL_OVERRIDE;
virtual void abort() Q_DECL_OVERRIDE {
if (_firstJob)
_firstJob->abort();
@ -120,23 +151,23 @@ public:
}
private slots:
void startJob(PropagatorJob *next) {
connect(next, SIGNAL(finished(SyncFileItem::Status)), this, SLOT(slotSubJobFinished(SyncFileItem::Status)), Qt::QueuedConnection);
connect(next, SIGNAL(completed(SyncFileItem)), this, SIGNAL(completed(SyncFileItem)));
connect(next, SIGNAL(progress(SyncFileItem,quint64)), this, SIGNAL(progress(SyncFileItem,quint64)));
connect(next, SIGNAL(ready()), this, SLOT(slotSubJobReady()));
_runningNow++;
QMetaObject::invokeMethod(next, "start", Qt::QueuedConnection);
bool possiblyRunNextJob(PropagatorJob *next) {
if (next->_state == NotYetStarted) {
connect(next, SIGNAL(finished(SyncFileItem::Status)), this, SLOT(slotSubJobFinished(SyncFileItem::Status)), Qt::QueuedConnection);
connect(next, SIGNAL(completed(SyncFileItem)), this, SIGNAL(completed(SyncFileItem)));
connect(next, SIGNAL(progress(SyncFileItem,quint64)), this, SIGNAL(progress(SyncFileItem,quint64)));
connect(next, SIGNAL(ready()), this, SIGNAL(ready()));
_runningNow++;
}
return next->scheduleNextJob();
}
void slotSubJobFinished(SyncFileItem::Status status);
void slotSubJobReady();
};
/*
* Abstract class to propagate a single item
* (Only used for neon job)
*/
class PropagateItemJob : public PropagatorJob {
Q_OBJECT
@ -169,6 +200,17 @@ public:
PropagateItemJob(OwncloudPropagator* propagator, const SyncFileItem &item)
: PropagatorJob(propagator), _item(item) {}
bool scheduleNextJob() Q_DECL_OVERRIDE {
if (_state != NotYetStarted) {
return false;
}
_state = Running;
QMetaObject::invokeMethod(this, "start"); // We could be in a different thread (neon jobs)
return true;
}
public slots:
virtual void start() = 0;
};
// Dummy job that just mark it as completed and ignored.
@ -183,44 +225,6 @@ public:
}
};
class BandwidthManager; // fwd
class UploadDevice : public QIODevice {
Q_OBJECT
public:
QPointer<QIODevice> _file;
qint64 _read;
qint64 _size;
qint64 _start;
BandwidthManager* _bandwidthManager;
qint64 _bandwidthQuota;
qint64 _readWithProgress;
UploadDevice(QIODevice *file, qint64 start, qint64 size, BandwidthManager *bwm);
~UploadDevice();
virtual qint64 writeData(const char* , qint64 );
virtual qint64 readData(char* data, qint64 maxlen);
virtual bool atEnd() const;
virtual qint64 size() const;
qint64 bytesAvailable() const;
virtual bool isSequential() const;
virtual bool seek ( qint64 pos );
void setBandwidthLimited(bool);
bool isBandwidthLimited() { return _bandwidthLimited; }
void setChoked(bool);
bool isChoked() { return _choked; }
void giveBandwidthQuota(qint64 bwq);
private:
bool _bandwidthLimited; // if _bandwidthQuota will be used
bool _choked; // if upload is paused (readData() will return 0)
protected slots:
void slotJobUploadProgress(qint64 sent, qint64 t);
};
//Q_DECLARE_METATYPE(UploadDevice);
//Q_DECLARE_METATYPE(QPointer<UploadDevice>);
class OwncloudPropagator : public QObject {
Q_OBJECT
@ -241,7 +245,6 @@ public:
SyncJournalDb * const _journal;
bool _finishedEmited; // used to ensure that finished is only emit once
BandwidthManager _bandwidthManager;
public:
OwncloudPropagator(ne_session_s *session, const QString &localDir, const QString &remoteDir, const QString &remoteFolder,
@ -262,6 +265,7 @@ public:
QAtomicInt _downloadLimit;
QAtomicInt _uploadLimit;
BandwidthManager _bandwidthManager;
QAtomicInt _abortRequested; // boolean set by the main thread to abort.
@ -289,6 +293,19 @@ public:
// timeout in seconds
static int httpTimeout();
/** Records that a file was touched by a job.
*
* Thread-safe.
*/
void addTouchedFile(const QString& fn);
/** Get the ms since a file was touched, or -1 if it wasn't.
*
* Thread-safe.
*/
qint64 timeSinceFileTouched(const QString& fn) const;
private slots:
/** Emit the finished signal and make sure it is only emit once */
@ -298,6 +315,8 @@ private slots:
_finishedEmited = true;
}
void scheduleNextJob();
signals:
void completed(const SyncFileItem &);
void progress(const SyncFileItem&, quint64 bytes);
@ -308,6 +327,11 @@ signals:
*/
void adjustTotalTransmissionSize( qint64 adjust );
private:
/** Stores the time since a job touched a file. */
QHash<QString, QElapsedTimer> _touchedFiles;
mutable QMutex _touchedFilesMutex;
};
// Job that wait for all the poll jobs to be completed

View file

@ -74,7 +74,6 @@ QIcon ownCloudTheme::applicationIcon( ) const
return themeIcon( QLatin1String("owncloud-icon") );
}
#endif
QVariant ownCloudTheme::customMedia(Theme::CustomMediaType type)
{
@ -89,6 +88,8 @@ QVariant ownCloudTheme::customMedia(Theme::CustomMediaType type)
}
}
#endif
QString ownCloudTheme::helpUrl() const
{
return QString::fromLatin1("http://doc.owncloud.org/desktop/%1.%2/").arg(MIRALL_VERSION_MAJOR).arg(MIRALL_VERSION_MINOR);

View file

@ -27,20 +27,22 @@ public:
QString configFileName() const Q_DECL_OVERRIDE;
QString about() const Q_DECL_OVERRIDE;
QPixmap splashScreen() const;
QIcon folderIcon( const QString& ) const;
#ifndef TOKEN_AUTH_ONLY
QIcon trayFolderIcon( const QString& ) const Q_DECL_OVERRIDE;
QIcon applicationIcon() const Q_DECL_OVERRIDE;
#endif
QString appName() const Q_DECL_OVERRIDE;
QString appNameGUI() const Q_DECL_OVERRIDE;
QVariant customMedia(CustomMediaType type) Q_DECL_OVERRIDE;
QString helpUrl() const Q_DECL_OVERRIDE;
#ifndef TOKEN_AUTH_ONLY
QVariant customMedia(CustomMediaType type) Q_DECL_OVERRIDE;
QColor wizardHeaderBackgroundColor() const Q_DECL_OVERRIDE;
QColor wizardHeaderTitleColor() const Q_DECL_OVERRIDE;
QPixmap wizardHeaderLogo() const Q_DECL_OVERRIDE;
#endif
private:

View file

@ -361,7 +361,6 @@ void PropagateDownloadFileQNAM::start()
connect(_job, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(slotDownloadProgress(qint64,qint64)));
_propagator->_activeJobs ++;
_job->start();
emitReady();
}
void PropagateDownloadFileQNAM::slotGetFinished()
@ -418,6 +417,21 @@ void PropagateDownloadFileQNAM::slotGetFinished()
_tmpFile.close();
_tmpFile.flush();
/* Check that the size of the GET reply matches the file size. There have been cases
* reported that if a server breaks behind a proxy, the GET is still a 200 but is
* truncated, as described here: https://github.com/owncloud/mirall/issues/2528
*/
const QByteArray sizeHeader("Content-Length");
quint64 bodySize = job->reply()->rawHeader(sizeHeader).toULongLong();
if(bodySize > 0 && bodySize != _tmpFile.size() - job->resumeStart() ) {
qDebug() << bodySize << _tmpFile.size() << job->resumeStart();
_propagator->_anotherSyncNeeded = true;
done(SyncFileItem::SoftError, tr("The file could not be downloaded completely."));
return;
}
downloadFinished();
}
@ -477,6 +491,7 @@ void PropagateDownloadFileQNAM::downloadFinished()
FileSystem::setFileHidden(_tmpFile.fileName(), false);
QString error;
_propagator->addTouchedFile(fn);
if (!FileSystem::renameReplace(_tmpFile.fileName(), fn, &error)) {
// If we moved away the original file due to a conflict but can't
// put the downloaded file in its place, we are in a bad spot:

View file

@ -54,9 +54,9 @@ public:
virtual void start() Q_DECL_OVERRIDE;
virtual bool finished() Q_DECL_OVERRIDE {
qDebug() << Q_FUNC_INFO << reply()->bytesAvailable() << _hasEmittedFinishedSignal;
// qDebug() << Q_FUNC_INFO << reply()->bytesAvailable() << _hasEmittedFinishedSignal;
if (reply()->bytesAvailable()) {
qDebug() << Q_FUNC_INFO << "Not all read yet because of bandwidth limits";
// qDebug() << Q_FUNC_INFO << "Not all read yet because of bandwidth limits";
return false;
} else {
if (_bandwidthManager) {

View file

@ -60,7 +60,6 @@ void PropagateRemoteDelete::start()
connect(_job, SIGNAL(finishedSignal()), this, SLOT(slotDeleteJobFinished()));
_propagator->_activeJobs ++;
_job->start();
emitReady();
}
void PropagateRemoteDelete::abort()

View file

@ -0,0 +1,116 @@
/*
* Copyright (C) by Olivier Goffart <ogoffart@owncloud.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*/
#include "propagateremotemkdir.h"
#include "owncloudpropagator_p.h"
#include "account.h"
#include "syncjournalfilerecord.h"
#include <QFile>
namespace Mirall {
void PropagateRemoteMkdir::start()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
return;
qDebug() << Q_FUNC_INFO << _item._file;
_job = new MkColJob(AccountManager::instance()->account(),
_propagator->_remoteFolder + _item._file,
this);
connect(_job, SIGNAL(finished(QNetworkReply::NetworkError)), this, SLOT(slotMkcolJobFinished()));
_propagator->_activeJobs++;
_job->start();
}
void PropagateRemoteMkdir::abort()
{
if (_job && _job->reply())
_job->reply()->abort();
}
void PropagateRemoteMkdir::slotMkcolJobFinished()
{
_propagator->_activeJobs--;
Q_ASSERT(_job);
qDebug() << Q_FUNC_INFO << _job->reply()->request().url() << "FINISHED WITH STATUS"
<< _job->reply()->error()
<< (_job->reply()->error() == QNetworkReply::NoError ? QLatin1String("") : _job->reply()->errorString());
QNetworkReply::NetworkError err = _job->reply()->error();
_item._httpErrorCode = _job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (_item._httpErrorCode == 405) {
// This happens when the directory already exist. Nothing to do.
} else if (err != QNetworkReply::NoError) {
SyncFileItem::Status status = classifyError(err, _item._httpErrorCode);
done(status, _job->reply()->errorString());
return;
} else if (_item._httpErrorCode != 201) {
// Normaly we expect "201 Created"
// If it is not the case, it might be because of a proxy or gateway intercepting the request, so we must
// throw an error.
done(SyncFileItem::NormalError, tr("Wrong HTTP code returned by server. Expected 201, but recieved \"%1 %2\".")
.arg(_item._httpErrorCode).arg(_job->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()));
return;
}
_item._requestDuration = _job->duration();
_item._responseTimeStamp = _job->responseTimestamp();
_item._fileId = _job->reply()->rawHeader("OC-FileId");
if (_item._fileId.isEmpty()) {
// Owncloud 7.0.0 and before did not have a header with the file id.
// (https://github.com/owncloud/core/issues/9000)
// So we must get the file id using a PROPFIND
// This is required so that we can detect moves even if the folder is renamed on the server
// while files are still uploading
_propagator->_activeJobs++;
auto propfindJob = new PropfindJob(_job->account(), _job->path(), this);
propfindJob->setProperties(QList<QByteArray>() << "getetag" << "http://owncloud.org/ns:id");
QObject::connect(propfindJob, SIGNAL(result(QVariantMap)), this, SLOT(propfindResult(QVariantMap)));
QObject::connect(propfindJob, SIGNAL(finishedWithError()), this, SLOT(propfindError()));
propfindJob->start();
_job = propfindJob;
return;
}
done(SyncFileItem::Success);
}
void PropagateRemoteMkdir::propfindResult(const QVariantMap &result)
{
_propagator->_activeJobs--;
if (result.contains("getetag")) {
_item._etag = result["getetag"].toByteArray();
}
if (result.contains("id")) {
_item._fileId = result["id"].toByteArray();
}
done(SyncFileItem::Success);
}
void PropagateRemoteMkdir::propfindError()
{
// ignore the PROPFIND error
_propagator->_activeJobs--;
done(SyncFileItem::Success);
}
}

View file

@ -0,0 +1,36 @@
/*
* Copyright (C) by Olivier Goffart <ogoffart@owncloud.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*/
#pragma once
#include "owncloudpropagator.h"
#include "networkjobs.h"
namespace Mirall {
class PropagateRemoteMkdir : public PropagateItemJob {
Q_OBJECT
QPointer<AbstractNetworkJob> _job;
friend class PropagateDirectory; // So it can access the _item;
public:
PropagateRemoteMkdir (OwncloudPropagator* propagator,const SyncFileItem& item)
: PropagateItemJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
void abort() Q_DECL_OVERRIDE;
private slots:
void slotMkcolJobFinished();
void propfindResult(const QVariantMap &);
void propfindError();
};
}

View file

@ -58,13 +58,18 @@ void PropagateRemoteMove::start()
qDebug() << Q_FUNC_INFO << _item._file << _item._renameTarget;
QString targetFile(_propagator->getFilePath(_item._renameTarget));
if (_item._file == _item._renameTarget) {
// The parents has been renamed already so there is nothing more to do.
finalize();
return;
} else if (AbstractNetworkJob::preOc7WasDetected && _item._file == QLatin1String("Shared") ) {
// Check if it is the toplevel Shared folder and do not propagate it.
if( QFile::rename( _propagator->_localDir + _item._renameTarget, _propagator->_localDir + QLatin1String("Shared")) ) {
QString originalFile(_propagator->getFilePath(QLatin1String("Shared")));
_propagator->addTouchedFile(originalFile);
_propagator->addTouchedFile(targetFile);
if( QFile::rename( targetFile, originalFile) ) {
done(SyncFileItem::NormalError, tr("This folder must not be renamed. It is renamed back to its original name."));
} else {
done(SyncFileItem::NormalError, tr("This folder must not be renamed. Please name it back to Shared."));
@ -78,7 +83,6 @@ void PropagateRemoteMove::start()
connect(_job, SIGNAL(finishedSignal()), this, SLOT(slotMoveJobFinished()));
_propagator->_activeJobs++;
_job->start();
emitReady();
}
}
@ -132,7 +136,7 @@ void PropagateRemoteMove::slotMoveJobFinished()
void PropagateRemoteMove::finalize()
{
_propagator->_journal->deleteFileRecord(_item._originalFile);
SyncJournalFileRecord record(_item, _propagator->_localDir + _item._renameTarget);
SyncJournalFileRecord record(_item, _propagator->getFilePath(_item._renameTarget));
record._path = _item._renameTarget;
_propagator->_journal->setFileRecord(record);

View file

@ -43,6 +43,7 @@ public:
: PropagateItemJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
void abort() Q_DECL_OVERRIDE;
JobParallelism parallelism() Q_DECL_OVERRIDE { return Mirall::PropagatorJob::WaitForFinishedInParentDirectory; }
private slots:
void slotMoveJobFinished();
void finalize();

View file

@ -14,6 +14,7 @@
#include "propagateupload.h"
#include "owncloudpropagator_p.h"
#include "propagator_legacy.h"
#include "networkjobs.h"
#include "account.h"
#include "syncjournaldb.h"
@ -152,7 +153,8 @@ void PropagateUploadFileQNAM::start()
_file = new QFile(_propagator->getFilePath(_item._file), this);
if (!_file->open(QIODevice::ReadOnly)) {
done(SyncFileItem::NormalError, _file->errorString());
// Soft error because this is likely caused by the user modifying his files while syncing
done(SyncFileItem::SoftError, _file->errorString());
delete _file;
return;
}
@ -199,7 +201,6 @@ UploadDevice::UploadDevice(QIODevice *file, qint64 start, qint64 size, Bandwidt
_readWithProgress(0),
_bandwidthLimited(false), _choked(false)
{
qDebug() << Q_FUNC_INFO << start << size << chunkSize();
_bandwidthManager->registerUploadDevice(this);
_file = QPointer<QIODevice>(file);
}
@ -216,7 +217,7 @@ qint64 UploadDevice::writeData(const char* , qint64 ) {
qint64 UploadDevice::readData(char* data, qint64 maxlen) {
if (_file.isNull()) {
qDebug() << Q_FUNC_INFO << "Upload file object deleted during upload";
qDebug() << "Upload file object deleted during upload";
close();
return -1;
}
@ -224,7 +225,6 @@ qint64 UploadDevice::readData(char* data, qint64 maxlen) {
//qDebug() << Q_FUNC_INFO << maxlen << _read << _size << _bandwidthQuota;
if (_size - _read <= 0) {
// at end
qDebug() << Q_FUNC_INFO << _read << _size << _bandwidthQuota << "at end";
_bandwidthManager->unregisterUploadDevice(this);
return -1;
}
@ -233,28 +233,21 @@ qint64 UploadDevice::readData(char* data, qint64 maxlen) {
return 0;
}
if (isChoked()) {
qDebug() << Q_FUNC_INFO << this << "Upload Choked";
return 0;
}
if (isBandwidthLimited()) {
qDebug() << Q_FUNC_INFO << "BW LIMITED" << maxlen << _bandwidthQuota
<< qMin(maxlen, _bandwidthQuota);
maxlen = qMin(maxlen, _bandwidthQuota);
if (maxlen <= 0) { // no quota
qDebug() << Q_FUNC_INFO << "no quota";
qDebug() << "no quota";
return 0;
}
_bandwidthQuota -= maxlen;
}
qDebug() << Q_FUNC_INFO << "reading limited=" << isBandwidthLimited()
<< "maxlen=" << maxlen << "quota=" << _bandwidthQuota;
qint64 ret = _file.data()->read(data, maxlen);
//qDebug() << Q_FUNC_INFO << "returning " << ret;
if (ret < 0)
return -1;
_read += ret;
//qDebug() << Q_FUNC_INFO << "returning2 " << ret << _read;
return ret;
}
@ -270,7 +263,7 @@ void UploadDevice::slotJobUploadProgress(qint64 sent, qint64 t)
bool UploadDevice::atEnd() const {
if (_file.isNull()) {
qDebug() << Q_FUNC_INFO << "Upload file object deleted during upload";
qDebug() << "Upload file object deleted during upload";
return true;
}
// qDebug() << this << Q_FUNC_INFO << _read << chunkSize()
@ -298,20 +291,17 @@ bool UploadDevice::isSequential() const{
bool UploadDevice::seek ( qint64 pos ) {
if (_file.isNull()) {
qDebug() << Q_FUNC_INFO << "Upload file object deleted during upload";
qDebug() << "Upload file object deleted during upload";
close();
return false;
}
qDebug() << this << Q_FUNC_INFO << pos << _read;
_read = pos;
return _file.data()->seek(pos + _start);
}
void UploadDevice::giveBandwidthQuota(qint64 bwq) {
// qDebug() << Q_FUNC_INFO << bwq;
if (!atEnd()) {
_bandwidthQuota = bwq;
// qDebug() << Q_FUNC_INFO << bwq << "emitting readyRead()" << _read << _readWithProgress;
QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection); // tell QNAM that we have quota
}
}
@ -343,6 +333,7 @@ void PropagateUploadFileQNAM::startNextChunk()
QMap<QByteArray, QByteArray> headers;
headers["OC-Total-Length"] = QByteArray::number(fileSize);
headers["OC-Async"] = "1";
headers["OC-Chunk-Size"]= QByteArray::number(quint64(chunkSize()));
headers["Content-Type"] = "application/octet-stream";
headers["X-OC-Mtime"] = QByteArray::number(qint64(_item._modtime));
if (!_item._etag.isEmpty() && _item._etag != "empty_etag" &&
@ -403,7 +394,7 @@ void PropagateUploadFileQNAM::startNextChunk()
startNextChunk();
}
if (!parallelChunkUpload || _chunkCount - _currentChunk <= 0) {
emitReady();
emit ready();
}
} else {
qDebug() << "ERR: Could not open upload file: " << device->errorString();
@ -456,6 +447,13 @@ void PropagateUploadFileQNAM::slotPutFinished()
_propagator->_anotherSyncNeeded = true;
}
foreach (auto job, _jobs) {
if (job->reply()) {
job->reply()->abort();
}
}
_finished = true;
done(classifyError(err, _item._httpErrorCode), errorString);
return;
}
@ -466,6 +464,7 @@ void PropagateUploadFileQNAM::slotPutFinished()
_finished = true;
QString path = QString::fromUtf8(job->reply()->rawHeader("OC-Finish-Poll"));
if (path.isEmpty()) {
_finished = true;
done(SyncFileItem::NormalError, tr("Poll URL missing"));
return;
}
@ -587,7 +586,7 @@ void PropagateUploadFileQNAM::finalize(const SyncFileItem &copy)
_propagator->_journal->setUploadInfo(_item._file, SyncJournalDb::UploadInfo());
_propagator->_journal->commit("upload file start");
qDebug() << Q_FUNC_INFO << "msec=" <<_duration.elapsed();
_finished = true;
done(SyncFileItem::Success);
}
@ -620,6 +619,7 @@ void PropagateUploadFileQNAM::startPollJob(const QString& path)
info._modtime = _item._modtime;
_propagator->_journal->setPollInfo(info);
_propagator->_journal->commit("add poll info");
_propagator->_activeJobs++;
job->start();
}
@ -628,7 +628,10 @@ void PropagateUploadFileQNAM::slotPollFinished()
PollJob *job = qobject_cast<PollJob *>(sender());
Q_ASSERT(job);
_propagator->_activeJobs--;
if (job->_item._status != SyncFileItem::Success) {
_finished = true;
done(job->_item._status, job->_item._errorString);
return;
}

View file

@ -21,30 +21,40 @@
#include <QDebug>
namespace OCC {
class BandwidthManager;
class ChunkBlock {
class UploadDevice : public QIODevice {
Q_OBJECT
public:
explicit ChunkBlock() : _state(NotTransfered) { }
enum State {
CHUNK_SUCCESS,
NotTransfered, /* never tried to transfer */
Transfered, /* transfer currently running */
TransferFailed, /* transfer tried but failed */
TransferSuccess, /* block transfer succeeded. */
Fail
};
QPointer<QIODevice> _file;
qint64 _read;
qint64 _size;
qint64 _start;
BandwidthManager* _bandwidthManager;
int _sequenceNo;
int64_t _start;
int64_t _size;
qint64 _bandwidthQuota;
qint64 _readWithProgress;
State _state;
int _httpResultCode;
QString _httpErrorMsg;
QString _etag;
QBuffer *_buffer;
UploadDevice(QIODevice *file, qint64 start, qint64 size, BandwidthManager *bwm);
~UploadDevice();
virtual qint64 writeData(const char* , qint64 );
virtual qint64 readData(char* data, qint64 maxlen);
virtual bool atEnd() const;
virtual qint64 size() const;
qint64 bytesAvailable() const;
virtual bool isSequential() const;
virtual bool seek ( qint64 pos );
void setBandwidthLimited(bool);
bool isBandwidthLimited() { return _bandwidthLimited; }
void setChoked(bool);
bool isChoked() { return _choked; }
void giveBandwidthQuota(qint64 bwq);
private:
bool _bandwidthLimited; // if _bandwidthQuota will be used
bool _choked; // if upload is paused (readData() will return 0)
protected slots:
void slotJobUploadProgress(qint64 sent, qint64 t);
};
class PUTFileJob : public AbstractNetworkJob {

View file

@ -56,6 +56,78 @@ static QByteArray get_etag_from_reply(ne_request *req)
return ret;
}
bool PropagateNeonJob::updateErrorFromSession(int neon_code, ne_request* req, int ignoreHttpCode)
{
if( neon_code != NE_OK ) {
qDebug("Neon error code was %d", neon_code);
}
QString errorString;
int httpStatusCode = 0;
switch(neon_code) {
case NE_OK: /* Success, but still the possiblity of problems */
if( req ) {
const ne_status *status = ne_get_status(req);
if (status) {
if ( status->klass == 2 || status->code == ignoreHttpCode) {
// Everything is ok, no error.
return false;
}
errorString = QString::fromUtf8( status->reason_phrase );
httpStatusCode = status->code;
_item._httpErrorCode = httpStatusCode;
}
} else {
errorString = QString::fromUtf8(ne_get_error(_propagator->_session));
httpStatusCode = errorString.mid(0, errorString.indexOf(QChar(' '))).toInt();
_item._httpErrorCode = httpStatusCode;
if ((httpStatusCode >= 200 && httpStatusCode < 300)
|| (httpStatusCode != 0 && httpStatusCode == ignoreHttpCode)) {
// No error
return false;
}
}
// FIXME: classify the error
done (SyncFileItem::NormalError, errorString);
return true;
case NE_ERROR: /* Generic error; use ne_get_error(session) for message */
errorString = QString::fromUtf8(ne_get_error(_propagator->_session));
// Check if we don't need to ignore that error.
httpStatusCode = errorString.mid(0, errorString.indexOf(QChar(' '))).toInt();
_item._httpErrorCode = httpStatusCode;
qDebug() << Q_FUNC_INFO << "NE_ERROR" << errorString << httpStatusCode << ignoreHttpCode;
if (ignoreHttpCode && httpStatusCode == ignoreHttpCode)
return false;
done(SyncFileItem::NormalError, errorString);
return true;
case NE_LOOKUP: /* Server or proxy hostname lookup failed */
case NE_AUTH: /* User authentication failed on server */
case NE_PROXYAUTH: /* User authentication failed on proxy */
case NE_CONNECT: /* Could not connect to server */
case NE_TIMEOUT: /* Connection timed out */
done(SyncFileItem::FatalError, QString::fromUtf8(ne_get_error(_propagator->_session)));
return true;
case NE_FAILED: /* The precondition failed */
case NE_RETRY: /* Retry request (ne_end_request ONLY) */
case NE_REDIRECT: /* See ne_redirect.h */
default:
done(SyncFileItem::SoftError, QString::fromUtf8(ne_get_error(_propagator->_session)));
return true;
}
return false;
}
void UpdateMTimeAndETagJob::start()
{
QScopedPointer<char, QScopedPointerPodDeleter> uri(
ne_path_escape((_propagator->_remoteDir + _item._file).toUtf8()));
if (!updateMTimeAndETag(uri.data(), _item._modtime))
return;
done(SyncFileItem::Success);
}
void PropagateUploadFileLegacy::start()
{
@ -640,6 +712,7 @@ void PropagateDownloadFileLegacy::start()
FileSystem::setFileHidden(tmpFile.fileName(), false);
QString error;
_propagator->addTouchedFile(fn);
if (!FileSystem::renameReplace(tmpFile.fileName(), fn, &error)) {
done(SyncFileItem::NormalError, error);
return;

View file

@ -16,9 +16,73 @@
#pragma once
#include "propagatorjobs.h"
#include <httpbf.h>
#include <neon/ne_compress.h>
struct hbf_transfer_s;
struct ne_session_s;
typedef struct ne_prop_result_set_s ne_prop_result_set;
namespace OCC {
/* Helper for QScopedPointer<>, to be used as the deleter.
* QScopePointer will call the right overload of cleanup for the pointer it holds
*/
struct ScopedPointerHelpers {
static inline void cleanup(hbf_transfer_t *pointer) { if (pointer) hbf_free_transfer(pointer); }
static inline void cleanup(ne_request *pointer) { if (pointer) ne_request_destroy(pointer); }
static inline void cleanup(ne_decompress *pointer) { if (pointer) ne_decompress_destroy(pointer); }
// static inline void cleanup(ne_propfind_handler *pointer) { if (pointer) ne_propfind_destroy(pointer); }
};
/*
* Abstract class for neon job. Lives in the neon thread
*/
class PropagateNeonJob : public PropagateItemJob {
Q_OBJECT
protected:
/* Issue a PROPPATCH and PROPFIND to update the mtime, and fetch the etag
* Return true in case of success, and false if the PROPFIND failed and the
* error has been reported
*/
bool updateMTimeAndETag(const char *uri, time_t);
/* fetch the error code and string from the session
in case of error, calls done with the error and returns true.
If the HTTP error code is ignoreHTTPError, the error is ignored
*/
bool updateErrorFromSession(int neon_code = 0, ne_request *req = 0, int ignoreHTTPError = 0);
/*
* to be called by the progress callback and will wait the amount of time needed.
*/
void limitBandwidth(qint64 progress, qint64 limit);
QElapsedTimer _lastTime;
qint64 _lastProgress;
int _httpStatusCode;
public:
PropagateNeonJob(OwncloudPropagator* propagator, const SyncFileItem &item)
: PropagateItemJob(propagator, item), _lastProgress(0), _httpStatusCode(0) {
moveToThread(propagator->_neonThread);
}
JobParallelism parallelism() Q_DECL_OVERRIDE { return WaitForFinished; }
};
class UpdateMTimeAndETagJob : public PropagateNeonJob {
Q_OBJECT
public:
UpdateMTimeAndETagJob (OwncloudPropagator* propagator, const SyncFileItem& item) : PropagateNeonJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
};
class PropagateUploadFileLegacy: public PropagateNeonJob {
Q_OBJECT
public:

View file

@ -35,15 +35,6 @@
#include <qstack.h>
#include <QCoreApplication>
#include <neon/ne_basic.h>
#include <neon/ne_socket.h>
#include <neon/ne_session.h>
#include <neon/ne_props.h>
#include <neon/ne_auth.h>
#include <neon/ne_dates.h>
#include <neon/ne_compress.h>
#include <neon/ne_redirect.h>
#include <time.h>
@ -135,99 +126,19 @@ void PropagateLocalMkdir::start()
done(SyncFileItem::Success);
}
/* The list of properties that is fetched in PropFind after a MKCOL */
static const ne_propname ls_props[] = {
{ "DAV:", "getetag"},
{ "http://owncloud.org/ns", "id"},
{ NULL, NULL }
};
/*
* Parse the PROPFIND result after a MKCOL
*/
void PropagateRemoteMkdir::propfind_results(void *userdata,
const ne_uri *uri,
const ne_prop_result_set *set)
{
PropagateRemoteMkdir *job = static_cast<PropagateRemoteMkdir *>(userdata);
job->_item._etag = parseEtag(ne_propset_value( set, &ls_props[0] ));
const char* fileId = ne_propset_value( set, &ls_props[1] );
if (fileId) {
job->_item._fileId = fileId;
qDebug() << "MKCOL: " << uri << " FileID set it to " << fileId;
// save the file id already so we can detect rename
SyncJournalFileRecord record(job->_item, job->_propagator->_localDir + job->_item._renameTarget);
job->_propagator->_journal->setFileRecord(record);
}
}
/*
* Called after the headers have been recieved, try to extract the fileId
*/
void PropagateRemoteMkdir::post_headers(ne_request* req, void* userdata, const ne_status* )
{
const char *header = ne_get_response_header(req, "OC-FileId");
if( header ) {
qDebug() << "MKCOL: " << static_cast<PropagateRemoteMkdir*>(userdata)->_item._file << " FileID from header:" << header;
static_cast<PropagateRemoteMkdir*>(userdata)->_item._fileId = header;
}
}
void PropagateRemoteMkdir::start()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
return;
QScopedPointer<char, QScopedPointerPodDeleter> uri(
ne_path_escape((_propagator->_remoteDir + _item._file).toUtf8()));
ne_hook_post_headers(_propagator->_session, post_headers, this);
int rc = ne_mkcol(_propagator->_session, uri.data());
ne_unhook_post_headers(_propagator->_session, post_headers, this);
/* Special for mkcol: it returns 405 if the directory already exists.
* Ignore that error */
// Wed, 15 Nov 1995 06:25:24 GMT
QDateTime dt = QDateTime::currentDateTimeUtc();
_item._responseTimeStamp = dt.toString("hh:mm:ss");
if( updateErrorFromSession( rc , 0, 405 ) ) {
return;
}
if (_item._fileId.isEmpty()) {
// Owncloud 7.0.0 and before did not have a header with the file id.
// (https://github.com/owncloud/core/issues/9000)
// So we must get the file id using a PROPFIND
// This is required so that wa can detect moves even if the folder is renamed on the server
// while files are still uploading
ne_propfind_handler *hdl = ne_propfind_create(_propagator->_session, uri.data(), 0);
ne_propfind_named(hdl, ls_props, propfind_results, this);
ne_propfind_destroy(hdl);
}
done(SyncFileItem::Success);
}
void PropagateLocalRename::start()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
return;
QString existingFile = _propagator->getFilePath(_item._file);
QString targetFile = _propagator->getFilePath(_item._renameTarget);
// if the file is a file underneath a moved dir, the _item.file is equal
// to _item.renameTarget and the file is not moved as a result.
if (_item._file != _item._renameTarget) {
emit progress(_item, 0);
qDebug() << "MOVE " << _propagator->_localDir + _item._file << " => " << _propagator->_localDir + _item._renameTarget;
QFile file(_propagator->_localDir + _item._file);
qDebug() << "MOVE " << existingFile << " => " << targetFile;
if (QString::compare(_item._file, _item._renameTarget, Qt::CaseInsensitive) != 0
&& _propagator->localFileNameClash(_item._renameTarget)) {
@ -240,7 +151,11 @@ void PropagateLocalRename::start()
.arg(QDir::toNativeSeparators(_item._file)).arg(QDir::toNativeSeparators(_item._renameTarget)) );
return;
}
if (!file.rename(_propagator->_localDir + _item._file, _propagator->_localDir + _item._renameTarget)) {
_propagator->addTouchedFile(existingFile);
_propagator->addTouchedFile(targetFile);
QFile file(existingFile);
if (!file.rename(targetFile)) {
done(SyncFileItem::NormalError, file.errorString());
return;
}
@ -251,7 +166,7 @@ void PropagateLocalRename::start()
// store the rename file name in the item.
_item._file = _item._renameTarget;
SyncJournalFileRecord record(_item, _propagator->_localDir + _item._renameTarget);
SyncJournalFileRecord record(_item, targetFile);
record._path = _item._renameTarget;
if (!_item._isDirectory) { // Directory are saved at the end
@ -263,79 +178,4 @@ void PropagateLocalRename::start()
done(SyncFileItem::Success);
}
bool PropagateNeonJob::updateErrorFromSession(int neon_code, ne_request* req, int ignoreHttpCode)
{
if( neon_code != NE_OK ) {
qDebug("Neon error code was %d", neon_code);
}
QString errorString;
int httpStatusCode = 0;
switch(neon_code) {
case NE_OK: /* Success, but still the possiblity of problems */
if( req ) {
const ne_status *status = ne_get_status(req);
if (status) {
if ( status->klass == 2 || status->code == ignoreHttpCode) {
// Everything is ok, no error.
return false;
}
errorString = QString::fromUtf8( status->reason_phrase );
httpStatusCode = status->code;
_item._httpErrorCode = httpStatusCode;
}
} else {
errorString = QString::fromUtf8(ne_get_error(_propagator->_session));
httpStatusCode = errorString.mid(0, errorString.indexOf(QChar(' '))).toInt();
_item._httpErrorCode = httpStatusCode;
if ((httpStatusCode >= 200 && httpStatusCode < 300)
|| (httpStatusCode != 0 && httpStatusCode == ignoreHttpCode)) {
// No error
return false;
}
}
// FIXME: classify the error
done (SyncFileItem::NormalError, errorString);
return true;
case NE_ERROR: /* Generic error; use ne_get_error(session) for message */
errorString = QString::fromUtf8(ne_get_error(_propagator->_session));
// Check if we don't need to ignore that error.
httpStatusCode = errorString.mid(0, errorString.indexOf(QChar(' '))).toInt();
_item._httpErrorCode = httpStatusCode;
qDebug() << Q_FUNC_INFO << "NE_ERROR" << errorString << httpStatusCode << ignoreHttpCode;
if (ignoreHttpCode && httpStatusCode == ignoreHttpCode)
return false;
done(SyncFileItem::NormalError, errorString);
return true;
case NE_LOOKUP: /* Server or proxy hostname lookup failed */
case NE_AUTH: /* User authentication failed on server */
case NE_PROXYAUTH: /* User authentication failed on proxy */
case NE_CONNECT: /* Could not connect to server */
case NE_TIMEOUT: /* Connection timed out */
done(SyncFileItem::FatalError, QString::fromUtf8(ne_get_error(_propagator->_session)));
return true;
case NE_FAILED: /* The precondition failed */
case NE_RETRY: /* Retry request (ne_end_request ONLY) */
case NE_REDIRECT: /* See ne_redirect.h */
default:
done(SyncFileItem::SoftError, QString::fromUtf8(ne_get_error(_propagator->_session)));
return true;
}
return false;
}
void UpdateMTimeAndETagJob::start()
{
QScopedPointer<char, QScopedPointerPodDeleter> uri(
ne_path_escape((_propagator->_remoteDir + _item._file).toUtf8()));
if (!updateMTimeAndETag(uri.data(), _item._modtime))
return;
done(SyncFileItem::Success);
}
}

View file

@ -17,59 +17,11 @@
#include "owncloudpropagator.h"
#include <httpbf.h>
#include <neon/ne_compress.h>
#include <QFile>
#include <qdebug.h>
namespace OCC {
/* Helper for QScopedPointer<>, to be used as the deleter.
* QScopePointer will call the right overload of cleanup for the pointer it holds
*/
struct ScopedPointerHelpers {
static inline void cleanup(hbf_transfer_t *pointer) { if (pointer) hbf_free_transfer(pointer); }
static inline void cleanup(ne_request *pointer) { if (pointer) ne_request_destroy(pointer); }
static inline void cleanup(ne_decompress *pointer) { if (pointer) ne_decompress_destroy(pointer); }
// static inline void cleanup(ne_propfind_handler *pointer) { if (pointer) ne_propfind_destroy(pointer); }
};
/*
* Abstract class for neon job. Lives in the neon thread
*/
class PropagateNeonJob : public PropagateItemJob {
Q_OBJECT
protected:
/* Issue a PROPPATCH and PROPFIND to update the mtime, and fetch the etag
* Return true in case of success, and false if the PROPFIND failed and the
* error has been reported
*/
bool updateMTimeAndETag(const char *uri, time_t);
/* fetch the error code and string from the session
in case of error, calls done with the error and returns true.
If the HTTP error code is ignoreHTTPError, the error is ignored
*/
bool updateErrorFromSession(int neon_code = 0, ne_request *req = 0, int ignoreHTTPError = 0);
/*
* to be called by the progress callback and will wait the amount of time needed.
*/
void limitBandwidth(qint64 progress, qint64 limit);
QElapsedTimer _lastTime;
qint64 _lastProgress;
int _httpStatusCode;
public:
PropagateNeonJob(OwncloudPropagator* propagator, const SyncFileItem &item)
: PropagateItemJob(propagator, item), _lastProgress(0), _httpStatusCode(0) {
moveToThread(propagator->_neonThread);
}
};
class PropagateLocalRemove : public PropagateItemJob {
Q_OBJECT
public:
@ -83,29 +35,12 @@ public:
void start() Q_DECL_OVERRIDE;
};
class PropagateRemoteMkdir : public PropagateNeonJob {
Q_OBJECT
public:
PropagateRemoteMkdir (OwncloudPropagator* propagator,const SyncFileItem& item) : PropagateNeonJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
private:
static void propfind_results(void *userdata, const ne_uri *uri, const ne_prop_result_set *set);
static void post_headers(ne_request *req, void *userdata, const ne_status *status);
friend class PropagateDirectory; // So it can access the _item;
};
class PropagateLocalRename : public PropagateItemJob {
Q_OBJECT
public:
PropagateLocalRename (OwncloudPropagator* propagator,const SyncFileItem& item) : PropagateItemJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
};
// To support older owncloud in the
class UpdateMTimeAndETagJob : public PropagateNeonJob{
Q_OBJECT
public:
UpdateMTimeAndETagJob (OwncloudPropagator* propagator, const SyncFileItem& item) : PropagateNeonJob(propagator, item) {}
void start() Q_DECL_OVERRIDE;
JobParallelism parallelism() Q_DECL_OVERRIDE { return WaitForFinishedInParentDirectory; }
};

View file

@ -181,7 +181,7 @@ QString SyncEngine::csyncErrorToString(CSYNC_STATUS err)
errStr = tr("Aborted by the user");
break;
case CSYNC_STATUS_SERVICE_UNAVAILABLE:
errStr = tr("The mounted directory is temporary not available on the server");
errStr = tr("The mounted directory is temporarily not available on the server");
break;
default:
errStr = tr("An internal error number %1 happened.").arg( (int) err );
@ -559,6 +559,14 @@ void SyncEngine::startSync()
qDebug() << "=====sync with existing DB";
}
qDebug() << "=====Using Qt" << qVersion();
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
qDebug() << "=====Using SSL library version"
<< QSslSocket::sslLibraryVersionString().toUtf8().data();
#endif
// Note that this seems to output the OpenSSL build version not runtime version:
qDebug() << "=====Using" << ne_version_string();
fileRecordCount = _journal->getFileRecordCount(); // this creates the DB if it does not exist yet
bool isUpdateFrom_1_5 = _journal->isUpdateFrom_1_5();
@ -712,9 +720,6 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
}
}
if (_needsUpdate)
emit(started());
ne_session_s *session = 0;
// that call to set property actually is a get which will return the session
csync_set_module_property(_csync_ctx, "get_dav_session", &session);
@ -735,8 +740,8 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
// do a database commit
_journal->commit("post treewalk");
_propagator.reset(new OwncloudPropagator (session, _localPath, _remoteUrl, _remotePath,
_journal, &_thread));
_propagator = QSharedPointer<OwncloudPropagator>(
new OwncloudPropagator (session, _localPath, _remoteUrl, _remotePath, _journal, &_thread));
connect(_propagator.data(), SIGNAL(completed(SyncFileItem)),
this, SLOT(slotJobCompleted(SyncFileItem)));
connect(_propagator.data(), SIGNAL(progress(SyncFileItem,quint64)),
@ -752,6 +757,10 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
deleteStaleBlacklistEntries();
_journal->commit("post stale entry removal");
// Emit the started signal only after the propagator has been set up.
if (_needsUpdate)
emit(started());
_propagator->start(_syncedItems);
}
@ -838,9 +847,11 @@ void SyncEngine::finalize()
qDebug() << "CSync run took " << _stopWatch.addLapTime(QLatin1String("Sync Finished"));
_stopWatch.stop();
_propagator.reset(0);
_syncRunning = false;
emit finished();
// Delete the propagator only after emitting the signal.
_propagator.clear();
}
void SyncEngine::slotProgress(const SyncFileItem& item, quint64 current)
@ -1126,6 +1137,16 @@ bool SyncEngine::estimateState(QString fn, csync_ftw_type_e t, SyncFileStatus* s
return false;
}
qint64 SyncEngine::timeSinceFileTouched(const QString& fn) const
{
// This copy is essential for thread safety.
QSharedPointer<OwncloudPropagator> prop = _propagator;
if (prop) {
return prop->timeSinceFileTouched(fn);
}
return -1;
}
void SyncEngine::abort()
{
csync_request_abort(_csync_ctx);

View file

@ -69,6 +69,12 @@ public:
bool estimateState(QString fn, csync_ftw_type_e t, SyncFileStatus* s);
/** Get the ms since a file was touched, or -1 if it wasn't.
*
* Thread-safe.
*/
qint64 timeSinceFileTouched(const QString& fn) const;
signals:
void csyncError( const QString& );
void csyncUnavailable();
@ -140,7 +146,7 @@ private:
QString _remoteUrl;
QString _remotePath;
SyncJournalDb *_journal;
QScopedPointer <OwncloudPropagator> _propagator;
QSharedPointer <OwncloudPropagator> _propagator;
QString _lastDeleted; // if the last item was a path and it has been deleted
QSet<QString> _seenFiles;
QThread _thread;

View file

@ -158,11 +158,6 @@ bool SyncJournalDb::checkConnect()
return sqlFail("Set PRAGMA case_sensitivity", pragma1);
}
// Hide 'em all!
FileSystem::setFileHidden(databaseFilePath(), true);
FileSystem::setFileHidden(databaseFilePath() + "-wal", true);
FileSystem::setFileHidden(databaseFilePath() + "-shm", true);
/* Because insert are so slow, e do everything in a transaction, and one need to call commit */
startTransaction();
@ -349,6 +344,11 @@ bool SyncJournalDb::checkConnect()
// don't start a new transaction now
commitInternal(QString("checkConnect End"), false);
// Hide 'em all!
FileSystem::setFileHidden(databaseFilePath(), true);
FileSystem::setFileHidden(databaseFilePath() + "-wal", true);
FileSystem::setFileHidden(databaseFilePath() + "-shm", true);
return rc;
}
@ -1164,8 +1164,9 @@ void SyncJournalDb::setPollInfo(const SyncJournalDb::PollInfo& info)
}
if (info._url.isEmpty()) {
qDebug() << "Deleting Poll job" << info._file;
SqlQuery query("DELETE FROM poll WHERE path=?", _db);
query.bindValue(0, info._file);
query.bindValue(1, info._file);
if( !query.exec() ) {
qDebug() << "SQL error in setPollInfo: "<< query.error();
} else {
@ -1173,9 +1174,9 @@ void SyncJournalDb::setPollInfo(const SyncJournalDb::PollInfo& info)
}
} else {
SqlQuery query("INSERT OR REPLACE INTO poll (path, modtime, pollpath) VALUES( ? , ? , ? )", _db);
query.bindValue(0, info._file);
query.bindValue(1, QString::number(info._modtime));
query.bindValue(2, info._url);
query.bindValue(1, info._file);
query.bindValue(2, QString::number(info._modtime));
query.bindValue(3, info._url);
if( !query.exec() ) {
qDebug() << "SQL error in setPollInfo: "<< query.error();
} else {

View file

@ -154,10 +154,12 @@ private:
QList<QString> _avoidReadFromDbOnNextSyncFilter;
};
bool operator==(const SyncJournalDb::DownloadInfo & lhs,
const SyncJournalDb::DownloadInfo & rhs);
bool operator==(const SyncJournalDb::UploadInfo & lhs,
const SyncJournalDb::UploadInfo & rhs);
bool OWNCLOUDSYNC_EXPORT
operator==(const SyncJournalDb::DownloadInfo & lhs,
const SyncJournalDb::DownloadInfo & rhs);
bool OWNCLOUDSYNC_EXPORT
operator==(const SyncJournalDb::UploadInfo & lhs,
const SyncJournalDb::UploadInfo & rhs);
} // namespace OCC
#endif // SYNCJOURNALDB_H

View file

@ -44,8 +44,9 @@ public:
int _mode;
};
bool operator==(const SyncJournalFileRecord & lhs,
const SyncJournalFileRecord & rhs);
bool OWNCLOUDSYNC_EXPORT
operator==(const SyncJournalFileRecord & lhs,
const SyncJournalFileRecord & rhs);
class SyncJournalBlacklistRecord
{

View file

@ -27,8 +27,8 @@ endif(UNIX AND NOT APPLE)
owncloud_add_test(CSyncSqlite "")
owncloud_add_test(NetrcParser ../src/cmd/netrcparser.cpp)
owncloud_add_test(OwnSql ../src/libsync/ownsql.cpp)
owncloud_add_test(SyncJournalDB ../src/libsync/syncjournaldb.cpp)
owncloud_add_test(OwnSql "")
owncloud_add_test(SyncJournalDB "")

View file

@ -10,7 +10,7 @@
#include <QtTest>
#include "folderwatcher_linux.h"
#include "folderwatcher.h"
#include "utility.h"
using namespace OCC;
@ -21,9 +21,12 @@ class TestFolderWatcher : public QObject
public slots:
void slotFolderChanged( const QString& path ) {
qDebug() << "COMPARE: " << path << _checkMark;
QVERIFY(_checkMark == path);
_checkMark.clear();
if (_skipNotifications.contains(path)) {
return;
}
if (_requiredNotifications.contains(path)) {
_receivedNotifications.insert(path);
}
}
void slotEnd() { // in case something goes wrong...
@ -36,7 +39,16 @@ private:
FolderWatcher *_watcher;
QEventLoop _loop;
QTimer _timer;
QString _checkMark;
QSet<QString> _requiredNotifications;
QSet<QString> _receivedNotifications;
QSet<QString> _skipNotifications;
void processAndWait()
{
_loop.processEvents();
Utility::usleep(200000);
_loop.processEvents();
}
private slots:
void initTestCase() {
@ -52,68 +64,105 @@ private slots:
rootDir.mkpath(_root + "/a2/b3/c3");
Utility::writeRandomFile( _root+"/a1/random.bin");
Utility::writeRandomFile( _root+"/a1/b2/todelete.bin");
Utility::writeRandomFile( _root+"/a2/movefile");
Utility::writeRandomFile( _root+"/a2/renamefile");
Utility::writeRandomFile( _root+"/a1/movefile");
_watcher = new FolderWatcher(_root);
QObject::connect(_watcher, SIGNAL(folderChanged(QString)), this, SLOT(slotFolderChanged(QString)));
_timer.singleShot(3000, this, SLOT(slotEnd()));
QObject::connect(_watcher, SIGNAL(pathChanged(QString)), this, SLOT(slotFolderChanged(QString)));
_timer.singleShot(5000, this, SLOT(slotEnd()));
}
void init()
{
_receivedNotifications.clear();
_requiredNotifications.clear();
_skipNotifications.clear();
}
void checkNotifications()
{
processAndWait();
QCOMPARE(_receivedNotifications, _requiredNotifications);
}
void testACreate() { // create a new file
QString file(_root + "/foo.txt");
QString cmd;
_checkMark = _root;
cmd = QString("echo \"xyz\" > %1/foo.txt").arg(_root);
_requiredNotifications.insert(file);
cmd = QString("echo \"xyz\" > %1").arg(file);
qDebug() << "Command: " << cmd;
system(cmd.toLocal8Bit());
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
checkNotifications();
}
void testATouch() { // touch an existing file.
QString file(_root + "/a1/random.bin");
_requiredNotifications.insert(file);
#ifdef Q_OS_WIN
Utility::writeRandomFile(QString("%1/a1/random.bin").arg(_root));
#else
QString cmd;
cmd = QString("/usr/bin/touch %1/a1/random.bin").arg(_root);
_checkMark = _root+"/a1";
cmd = QString("/usr/bin/touch %1").arg(file);
qDebug() << "Command: " << cmd;
system(cmd.toLocal8Bit());
#endif
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
checkNotifications();
}
void testCreateADir() {
_checkMark = _root+"/a1/b1";
QString file(_root+"/a1/b1/new_dir");
_requiredNotifications.insert(file);
//_skipNotifications.insert(_root + "/a1/b1/new_dir");
QDir dir;
dir.mkdir( _root + "/a1/b1/new_dir");
QVERIFY(QFile::exists(_root + "/a1/b1/new_dir"));
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
dir.mkdir(file);
QVERIFY(QFile::exists(file));
checkNotifications();
}
void testRemoveADir() {
_checkMark = _root+"/a1/b3";
QString file(_root+"/a1/b3/c3");
_requiredNotifications.insert(file);
QDir dir;
QVERIFY(dir.rmdir(_root+"/a1/b3/c3"));
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
QVERIFY(dir.rmdir(file));
checkNotifications();
}
void testRemoveAFile() {
_checkMark = _root+"/a1/b2";
QVERIFY(QFile::exists(_root+"/a1/b2/todelete.bin"));
QFile::remove(_root+"/a1/b2/todelete.bin");
QVERIFY(!QFile::exists(_root+"/a1/b2/todelete.bin"));
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
QString file(_root+"/a1/b2/todelete.bin");
_requiredNotifications.insert(file);
QVERIFY(QFile::exists(file));
QFile::remove(file);
QVERIFY(!QFile::exists(file));
checkNotifications();
}
void testRenameAFile() {
QString file1(_root+"/a2/renamefile");
QString file2(_root+"/a2/renamefile.renamed");
_requiredNotifications.insert(file1);
_requiredNotifications.insert(file2);
QVERIFY(QFile::exists(file1));
QFile::rename(file1, file2);
QVERIFY(QFile::exists(file2));
checkNotifications();
}
void testMoveAFile() {
_checkMark = _root+"/a2";
QVERIFY(QFile::exists(_root+"/a2/movefile"));
QFile::rename(_root+"/a2/movefile", _root+"/a2/movefile.renamed" );
QVERIFY(QFile::exists(_root+"/a2/movefile.renamed"));
_loop.processEvents();
QVERIFY(_checkMark.isEmpty()); // the slot clears the checkmark.
QString old_file(_root+"/a1/movefile");
QString new_file(_root+"/a2/movefile.renamed");
_requiredNotifications.insert(old_file);
_requiredNotifications.insert(new_file);
QVERIFY(QFile::exists(old_file));
QFile::rename(old_file, new_file);
QVERIFY(QFile::exists(new_file));
checkNotifications();
}
void cleanupTestCase() {

View file

@ -386,12 +386,12 @@ Temps restant total %5</translation>
<translation>Activitat de sincronització</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Això podria ser perquè la carpeta ha estat reconfigurada silenciosament, o que
Esteu segur que voleu executar aquesta operació?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Esborra tots els fitxers?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Esborra tots els fitxers</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Mantén els fitxers</translation>
</message>
@ -637,22 +637,22 @@ Esteu segur que voleu executar aquesta operació?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>No s&apos;ha rebut cap E-Tag del servidor, comproveu el Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Hem rebut un E-Tag diferent en la represa. Es comprovarà la pròxima vegada.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Temps de connexió excedit</translation>
</message>
@ -1113,8 +1113,12 @@ No és aconsellada usar-la.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>No s&apos;ha pogut connectar de forma segura. Voleu connectar sense encriptació (no recomanat)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1310,27 @@ No és aconsellada usar-la.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>L&apos;usuari ha aturat la sincronització.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>No s&apos;ha rebut cap E-Tag del servidor, comproveu el Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>hem rebut un E-Tag diferent en la represa. Es comprovarà la pròxima vegada.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>El fitxer %1 no es pot baixar perquè hi ha un xoc amb el nom d&apos;un fitxer local!</translation>
</message>
@ -1334,12 +1338,17 @@ No és aconsellada usar-la.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>El fitxer %1 no es pot baixar perquè hi ha un xoc amb el nom d&apos;un fitxer local!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1425,18 +1434,18 @@ No és aconsellada usar-la.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>El fitxer local ha canviat durant la sincronització, es sincronitzarà quan arribi complet</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>L&apos;usuari ha aturat la sincronització.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>El fitxer s&apos;ha editat localment però és part d&apos;una compartició només de lectura. S&apos;ha restaurat i la vostra edició és en el fitxer conflictiu.</translation>
</message>
@ -1444,23 +1453,23 @@ No és aconsellada usar-la.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>El fitxer s&apos;ha editat localment però és part d&apos;una compartició només de lectura. S&apos;ha restaurat i la vostra edició és en el fitxer en conflicte.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>El fitxer local s&apos;ha eliminat durant la sincronització.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>El fitxer local ha canviat durant la sincronització.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>El servidor no ha reconegut l&apos;últim fragment. (No hi havia e-Tag)</translation>
</message>
@ -1538,16 +1547,27 @@ No és aconsellada usar-la.</translation>
<translation>L&apos;estat de sincronització s&apos;ha copiat al porta-retalls.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Actualment no s&apos;ha ignorat cap fitxer a causa d&apos;errors anteriors.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1634,12 +1654,12 @@ No és aconsellada usar-la.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Error d&apos;accés</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Cal identificar-se com a usuari %1</translation>
</message>
@ -2047,69 +2067,69 @@ No és aconsellada usar-la.</translation>
<translation>El fitxer conté caràcters no vàlids que no es poden sincronitzar entre plataformes.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>No es pot inicialitzar un periòdic de sincronització</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>No es pot obrir el diari de sincronització</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>No es permet perquè no teniu permisos per afegir subcarpetes en aquesta carpeta</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>No es permet perquè no teniu permisos per afegir una carpeta inferior</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>No es permet perquè no teniu permisos per afegir fitxers en aquesta carpeta</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>No es permet pujar aquest fitxer perquè només és de lectura en el servidor, es restaura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>No es permet l&apos;eliminació, es restaura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Fitxers locals i carpeta compartida esborrats.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>No es permet moure&apos;l, l&apos;element es restaura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>No es permet moure perquè %1 només és de lectura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>el destí</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>l&apos;origen</translation>
</message>

View file

@ -198,7 +198,7 @@
<message>
<location filename="../src/mirall/accountsettings.cpp" line="608"/>
<source>Discovering &apos;%1&apos;</source>
<translation>Hledám &apos;%1&apos;</translation>
<translation>Prohledávám &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="648"/>
@ -386,12 +386,12 @@ Celkový zbývající čas %5</translation>
<translation>Průběh synchronizace</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Nezdařilo se přečtení systémového exclude souboru</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Toto může být způsobeno změnou v nastavení synchronizace složky nebo tím
Opravdu chcete provést tuto akci?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Odstranit všechny soubory?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Odstranit všechny soubory</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Ponechat soubory</translation>
</message>
@ -637,22 +637,22 @@ Opravdu chcete provést tuto akci?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ze serveru nebyl obdržen E-Tag, zkontrolujte proxy/bránu</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Obdrželi jsme jiný E-Tag pro pokračování. Zkusím znovu příště.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Server odpověděl chybným rozsahem obsahu</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Vypršel čas spojení</translation>
</message>
@ -1113,8 +1113,16 @@ Nedoporučuje se jí používat.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Nemohu se připojit zabezpečeně. Přejete si místo toho připojit nezabezpečeně (nedoporučuje se)? </translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Nelze se připojit zabezpečeně:
%1
Chcete se místo toho připojit nezabezpečeně (nedoporučuje se)?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1314,27 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Synchronizace zrušena uživatelem.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ze serveru nebyl obdržen E-Tag, zkontrolujte proxy/bránu</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Obdrželi jsme jiný E-Tag pro pokračování. Zkusím znovu příště.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Server odpověděl chybným rozsahem obsahu</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Soubor %1 nemohl být stažen z důvodu kolize názvu se souborem v místním systému!</translation>
</message>
@ -1334,12 +1342,17 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Soubor %1 nemohl být stažen z důvodu kolize názvu se souborem v místním systému!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>Soubor nemohl být kompletně stažen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Soubor %1 nemohl být uložen z důvodu kolize názvu se souborem v místním systému!</translation>
</message>
@ -1380,7 +1393,7 @@ Nedoporučuje se jí používat.</translation>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="79"/>
<source>Could not remove directory &apos;%1&apos;; </source>
<translation>Nezdařilo se odstranění adresáře &apos;%1&apos;;</translation>
<translation>Nepodařilo se odstranit adresář &apos;%1&apos;;</translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="94"/>
@ -1425,18 +1438,18 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Místní soubor byl změněn během synchronizace, bude sesynchronizován, jakmile bude kompletní</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Synchronizace zrušena uživatelem.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Soubor zde byl editován, ale je součástí sdílení pouze pro čtení. Původní soubor byl obnoven a editovaná verze je uložena v konfliktním souboru.</translation>
</message>
@ -1444,23 +1457,23 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Soubor zde byl editován, ale je součástí sdílení pouze pro čtení. Původní soubor byl obnoven a editovaná verze je uložena v konfliktním souboru.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Místní soubor byl odstraněn během synchronizace.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Místní soubor byl změněn během synchronizace.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Server nepotvrdil poslední část dat. (Nebyl nalezen e-tag)</translation>
</message>
@ -1538,18 +1551,32 @@ Nedoporučuje se jí používat.</translation>
<translation>Stav synchronizace byl zkopírován do schránky.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Nyní nejsou v seznamu ignorovaných žádné soubory kvůli předchozím chybám.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>V současné době nejsou na černé listině žádné soubory kvůli předchozím chybovým stavům a neprobíhá žádné stahování.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n soubor je ignorován kvůli předchozím chybovým hlášením.
Zkuste ho znovu synchronizovat.</numerusform><numerusform>%n soubory jsou ignorovány kvůli předchozím chybovým hlášením.
Zkuste je znovu synchronizovat.</numerusform><numerusform>%n souborů je ignorováno kvůli předchozím chybovým hlášením.
Zkuste je znovu synchronizovat.</numerusform></translation>
</source>
<translation><numerusform> %n soubor je ignorován kvůli předchozím chybovým hlášením.
</numerusform><numerusform>%n soubory jsou ignorovány kvůli předchozím chybovým hlášením.
</numerusform><numerusform>%n souborů je ignorováno kvůli předchozím chybovým hlášením.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n soubor je částečně stažený.
</numerusform><numerusform>%n soubory jsou částečně stažené.
</numerusform><numerusform>%n souborů je částečně staženo.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Zkuste je znovu synchronizovat.</translation>
</message>
</context>
<context>
@ -1562,7 +1589,7 @@ Zkuste je znovu synchronizovat.</numerusform></translation>
<message>
<location filename="../src/mirall/selectivesyncdialog.cpp" line="274"/>
<source>Unchecked folders will be &lt;b&gt;removed&lt;/b&gt; from your local file system and will not be synchronized to this computer anymore</source>
<translation>Neoznačené adresáře budou &lt;b&gt;odstraněny&lt;/b&gt; z lokálního souborového systému a nebudou již synchronizovány na tento počítač</translation>
<translation>Neoznačené adresáře budou &lt;b&gt;odstraněny&lt;/b&gt; z místního souborového systému a nebudou již synchronizovány na tento počítač</translation>
</message>
</context>
<context>
@ -1637,12 +1664,12 @@ Zkuste je znovu synchronizovat.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Chyba přihlášení</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Musíte se přihlásit jako uživatel %1</translation>
</message>
@ -2050,69 +2077,69 @@ Zkuste je znovu synchronizovat.</numerusform></translation>
<translation>Soubor obsahuje alespoň jeden neplatný znak, který narušuje synchronizaci v prostředí více platforem.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Nemohu inicializovat synchronizační žurnál.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Nelze otevřít synchronizační žurnál</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorováno podle nastavení &quot;vybrat co synchronizovat&quot;</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Není povoleno, protože nemáte oprávnění vytvářet podadresáře v tomto adresáři.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Není povoleno, protože nemáte oprávnění vytvořit rodičovský adresář</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Není povoleno, protože nemáte oprávnění přidávat soubory do tohoto adresáře</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Není povoleno nahrát tento soubor, protože je na serveru uložen pouze pro čtení, obnovuji</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Odstranění není povoleno, obnovuji</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Místní soubory a sdílený adresář byly odstraněny.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Přesun není povolen, položka obnovena</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Přesun není povolen, protože %1 je pouze pro čtení</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>cílové umístění</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>zdroj</translation>
</message>
@ -2248,7 +2275,7 @@ Zkuste je znovu synchronizovat.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="470"/>
<source>Discovering &apos;%1&apos;</source>
<translation>Hledám &apos;%1&apos;</translation>
<translation>Prohledávám &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="474"/>

View file

@ -387,12 +387,12 @@ Gesamtzeit übrig %5</translation>
<translation>Synchronisierungsaktivität</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Systemeigene Ausschlussdatei kann nicht gelesen werden</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -401,17 +401,17 @@ Vielleicht wurde der Ordner neu konfiguriert, oder alle Dateien wurden händisch
Sind Sie sicher, dass sie diese Operation durchführen wollen?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Alle Dateien löschen?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Lösche alle Dateien</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Dateien behalten</translation>
</message>
@ -461,7 +461,7 @@ Sind Sie sicher, dass sie diese Operation durchführen wollen?</translation>
<message>
<location filename="../src/mirall/folderman.cpp" line="890"/>
<source>Setup Error.</source>
<translation>Setup-Fehler.</translation>
<translation>Installationsfehler.</translation>
</message>
<message>
<location filename="../src/mirall/folderman.cpp" line="893"/>
@ -638,22 +638,22 @@ Sind Sie sicher, dass sie diese Operation durchführen wollen?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Kein E-Tag vom Server empfangen, bitte Proxy / Gateway überprüfen</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Es wurde ein unterschiedlicher E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Server hat falschen Bereich für den Inhalt zurück gegeben</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Zeitüberschreitung der Verbindung</translation>
</message>
@ -744,7 +744,7 @@ Aktivierte Elemente werden ebenfalls gelöscht, wenn diese das Löschen eines Ve
<message>
<location filename="../src/mirall/ignorelisteditor.cpp" line="97"/>
<source>Could not open file</source>
<translation>Konnte Datei nicht öffnen</translation>
<translation>Datei konnte nicht geöffnet werden</translation>
</message>
<message>
<location filename="../src/mirall/ignorelisteditor.cpp" line="98"/>
@ -840,7 +840,7 @@ Aktivierte Elemente werden ebenfalls gelöscht, wenn diese das Löschen eines Ve
<message>
<location filename="../src/mirall/logger.cpp" line="149"/>
<source>&lt;nobr&gt;File &apos;%1&apos;&lt;br/&gt;cannot be opened for writing.&lt;br/&gt;&lt;br/&gt;The log output can &lt;b&gt;not&lt;/b&gt; be saved!&lt;/nobr&gt;</source>
<translation>&lt;nobr&gt;Datei &apos;%1&apos;&lt;br/&gt;kann nicht zum Schreiben geöffnet werden.&lt;br/&gt;&lt;br/&gt;Die Protokolldatei kann &lt;b&gt;nicht&lt;/b&gt; gespeichert werden!&lt;/nobr&gt;</translation>
<translation>&lt;nobr&gt;Datei »%1«&lt;br/&gt;kann nicht zum Schreiben geöffnet werden.&lt;br/&gt;&lt;br/&gt;Die Protokolldatei kann &lt;b&gt;nicht&lt;/b&gt; gespeichert werden!&lt;/nobr&gt;</translation>
</message>
</context>
<context>
@ -1114,8 +1114,16 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Die Verbindung kann nicht sicher hergestellt werden. Möchten Sie stattdessen unverschlüsselt verbinden (nicht empfohlen)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Die Verbindung kann nicht sicher hergestellt werden:
%1
Möchten Sie stattdessen unverschlüsselt verbinden (nicht empfohlen)?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1252,7 +1260,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<message>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="374"/>
<source>Can&apos;t remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup.</source>
<translation>Kann den Ordner nicht entfernen und sichern, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner ode die Datei oder beenden Sie das Setup.</translation>
<translation>Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei oder beenden Sie die Installation.</translation>
</message>
</context>
<context>
@ -1307,27 +1315,27 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Synchronisation wurde durch den Nutzer abgebrochen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Kein E-Tag vom Server empfangen, bitte Proxy / Gateway überprüfen</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Es wurde ein unterschiedlicher E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Server hat falschen Bereich für den Inhalt zurück gegeben</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden!</translation>
</message>
@ -1335,12 +1343,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>Die Datei konnte nicht vollständig herunter geladen werden.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gespeichert geladen werden!</translation>
</message>
@ -1426,18 +1439,18 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Eine lokale Datei wurde während der Synchronisation geändert, synchronisieren Sie nochmals sobald die aktuelle Datei vollständig angekommen ist</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Synchronisation wurde durch den Nutzer abgebrochen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Die Datei wurde von einer Nur-Lese-Freigabe lokal bearbeitet. Die Datei wurde wiederhergestellt und Ihre Bearbeitung ist in der Konflikte-Datei.</translation>
</message>
@ -1445,23 +1458,23 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Die Datei wurde von einer Nur-Lese-Freigabe lokal bearbeitet. Die Datei wurde wiederhergestellt und Ihre Bearbeitung ist in der Konflikte-Datei.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Die lokale Datei wurde während der Synchronisation gelöscht.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Der Server hat den letzten Block nicht bestätigt. (Der E-Tag war nicht vorhanden)</translation>
</message>
@ -1539,17 +1552,28 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Der Synchronisationsstatus wurde in die Zwischenablage kopiert.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Aktuell werden keine Dateien, aufgrund vorheriger Fehler, ignoriert.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Aktuell werden keine Dateien, aufgrund vorheriger Fehler und keine laufenden Downloads, ignoriert.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n Datei wurde aufgrund eines vorherigen Fehlers ignoriert.
Versuchen Sie diese nochmals zu synchronisieren.</numerusform><numerusform>%n Dateien werden aufgrund vorheriger Fehler ignoriert.
Versuchen Sie diese nochmals zu synchronisieren.</numerusform></translation>
</source>
<translation><numerusform>%n Datei wird aufgrund vorheriger Fehler ignoriert.</numerusform><numerusform>%n Dateien werden aufgrund vorheriger Fehler ignoriert.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n Datei ist teilweise heruntergeladen.</numerusform><numerusform>%n Dateien sind teilweise heruntergeladen.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Versuchen, diese nochmals zu synchronisieren.</translation>
</message>
</context>
<context>
@ -1637,12 +1661,12 @@ Versuchen Sie diese nochmals zu synchronisieren.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Log-In Fehler</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Sie müssen sich als %1 einloggen</translation>
</message>
@ -2050,69 +2074,69 @@ Versuchen Sie diese nochmals zu synchronisieren.</numerusform></translation>
<translation>Die Datei beinhaltet ungültige Zeichen und kann nicht plattformübergreifend synchronisiert werden.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Synchronisationsbericht konnte nicht initialisiert werden.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Synchronisationsbericht kann nicht geöffnet werden</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Aufgrund der »Zu synchronisierende Elemente auswählen«-Sperrliste ignoriert</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Hauptordnern haben</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist, Wiederherstellung</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Löschen nicht erlaubt, Wiederherstellung</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Lokale Dateien und Freigabeordner wurden entfernt.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Verschieben nicht erlaubt, Element wiederhergestellt</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Verschieben nicht erlaubt, da %1 schreibgeschützt ist</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>Das Ziel</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>Die Quelle</translation>
</message>
@ -2183,7 +2207,7 @@ Versuchen Sie diese nochmals zu synchronisieren.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="340"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Ordner &apos;%1&apos; öffnen</translation>
<translation>Ordner »%1« öffnen</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="412"/>
@ -2641,7 +2665,7 @@ Versuchen Sie diese nochmals zu synchronisieren.</numerusform></translation>
<message>
<location filename="../src/mirall/theme.cpp" line="69"/>
<source>Setup Error</source>
<translation>Setup-Fehler</translation>
<translation>Installationsfehler</translation>
</message>
<message>
<location filename="../src/mirall/theme.cpp" line="72"/>

View file

@ -387,12 +387,12 @@ Total time left %5</source>
<translation>Δραστηριότητα Συγχρονισμού</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Αδυναμία ανάγνωσης αρχείου αποκλεισμού συστήματος</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -401,17 +401,17 @@ Are you sure you want to perform this operation?</source>
Είστε σίγουροι ότι θέλετε να εκτελέσετε αυτή τη λειτουργία;</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Αφαίρεση Όλων των Αρχείων;</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Αφαίρεση όλων των αρχείων</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Διατήρηση αρχείων</translation>
</message>
@ -638,22 +638,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Δεν ελήφθη E-Tag από το διακομιστή, ελέγξτε το διακομιστή μεσολάβησης/πύλη</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Ελήφθη διαφορετικό E-Tag για συνέχιση. Επανάληψη την επόμενη φορά.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Ο διακομιστής επέστρεψε εσφαλμένο πεδίο τιμών</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Λήξη Χρόνου Αναμονής Σύνδεσης</translation>
</message>
@ -1114,8 +1114,12 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Αδυναμία ασφαλούς σύνδεσης. Θα θέλατε να συνδεθείτε χωρίς κρυπτογράφηση παρ&apos;όλα αυτά (δεν προτείνεται);</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1307,27 +1311,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Ο συγχρονισμός ματαιώθηκε από τον χρήστη.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Δεν ελήφθη E-Tag από τον διακομιστή, ελέγξτε τον διακομιστή μεσολάβησης/πύλη</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Ελήφθη διαφορετικό E-Tag για συνέχιση. Επανάληψη την επόμενη φορά.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Ο διακομιστής επέστρεψε εσφαλμένο πεδίο τιμών</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να ληφθεί λόγω διένεξης με το όνομα ενός τοπικού αρχείου!</translation>
</message>
@ -1335,12 +1339,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να ληφθεί λόγω διένεξης με το όνομα ενός τοπικού αρχείου!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1376,12 +1385,12 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="68"/>
<source>Error removing &apos;%1&apos;: %2; </source>
<translation type="unfinished"/>
<translation>Σφάλμα αφαίρεσης &apos;%1&apos;: %2;</translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="79"/>
<source>Could not remove directory &apos;%1&apos;; </source>
<translation type="unfinished"/>
<translation>Αδυναμία αφαίρεσης καταλόγου &apos;%1&apos;;</translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="94"/>
@ -1426,18 +1435,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τη διάρκεια του συγχρονισμού, θα συγχρονιστεί και πάλι όταν φτάσει πλήρως</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Ο συγχρονισμός ματαιώθηκε από τον χρήστη.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Το αρχείο υπέστη επεξεργασία τοπικά αλλά είναι τμήμα ενός διαμοιρασμένου καταλόγου μόνο για ανάγνωση. Επαναφέρθηκε και το επεξεργασμένο βρίσκεται στο αρχείο συγκρούσεων.</translation>
</message>
@ -1445,23 +1454,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Το αρχείο υπέστη επεξεργασία τοπικά αλλά είναι τμήμα ενός διαμοιρασμένου καταλόγου μόνο για ανάγνωση. Επαναφέρθηκε και το επεξεργασμένο βρίσκεται στο αρχείο συγκρούσεων.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Το τοπικό αρχείο αφαιρέθηκε κατά το συγχρονισμό.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Ο διακομιστής δεν αναγνώρισε το τελευταίο τμήμα. (Δεν υπήρχε e-tag)</translation>
</message>
@ -1539,17 +1548,26 @@ It is not advisable to use it.</source>
<translation>Η κατάσταση συγχρονισμού αντιγράφηκε στο πρόχειρο.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Προς το παρόν κανένα αρχείο δεν θα αγνοηθεί λόγω προηγούμενων σφαλμάτων.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n αρχείο αγνοήθηκε λόγω προηγούμενων σφαλμάτων.
Προσπαθείστε να τα συγχρονίσετε ξανά.</numerusform><numerusform>%n αρχεία αγνοήθηκαν λόγω προηγούμενων σφαλμάτων.
Προσπαθείστε να τα συγχρονίσετε ξανά.</numerusform></translation>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Προσπάθεια για συγχρονισμό αυτών ξανά.</translation>
</message>
</context>
<context>
@ -1637,12 +1655,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Σφάλμα Σύνδεσης</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Πρέπει να εισέλθετε σαν χρήστης %1</translation>
</message>
@ -2050,69 +2068,69 @@ It is not advisable to use it.</source>
<translation>Το αρχείο περιέχει άκυρους χαρακτήρες που δεν μπορούν να συγχρονιστούν σε όλα τα συστήματα.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Αδυναμία προετοιμασίας αρχείου συγχρονισμού.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Αδυναμία ανοίγματος του αρχείου συγχρονισμού</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Αγνοήθηκε εξαιτίας της μαύρης λίστας &quot;διάλεξε τι να συγχρονιστεί&quot;</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υπο-καταλόγους σε αυτό τον κατάλογο</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε στο γονεϊκό κατάλογο</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Δεν επιτρέπεται επειδή δεν έχεται δικαιώματα να προσθέσετε αρχεία σε αυτόν τον κατάλογο</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>ο προορισμός</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>η προέλευση</translation>
</message>

View file

@ -387,29 +387,29 @@ Total time left %5</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder &apos;%1&apos;.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation type="unfinished"></translation>
</message>
@ -636,22 +636,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation type="unfinished"></translation>
</message>
@ -1108,7 +1108,11 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -1301,27 +1305,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
@ -1329,12 +1333,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
@ -1420,18 +1429,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"></translation>
</message>
@ -1439,23 +1448,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"></translation>
</message>
@ -1533,19 +1542,33 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1632,12 +1655,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"></translation>
</message>
@ -2043,69 +2066,69 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation type="unfinished"></translation>
</message>

View file

@ -386,12 +386,12 @@ Tiempo restante %5</translation>
<translation>Actividad en la Sincronización</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>No se pudo leer el archivo de exclusión del sistema</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Esto se puede deber a que la carpeta fue reconfigurada de forma silenciosa o a q
Está seguro de que desea realizar esta operación?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Eliminar todos los archivos?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Eliminar todos los archivos</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Conservar archivos</translation>
</message>
@ -637,22 +637,22 @@ Está seguro de que desea realizar esta operación?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>No se recibió ninguna e-tag del servidor, revisar el proxy/gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Se recibió una e-tag distinta para reanudar. Se intentará nuevamente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>El servidor devolvió un content-range erróneo</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Tiempo de espera de conexión agotado</translation>
</message>
@ -1113,8 +1113,16 @@ No se recomienda usarlo.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>No se pudo hacer una conexión segura. ¿Desea conectarse de forma insegura (no recomendado)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>No se pudo conectar cifrado:
%1
Desea conectar a cambio sin encriptación (no recomendado)?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1314,27 @@ No se recomienda usarlo.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>La sincronización ha sido Interrumpida por el usuario</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>No se recibió ninguna e-tag del servidor, revisar el proxy/gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Se recibió una e-tag distinta para reanudar. Se intentará nuevamente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>El servidor devolvió un content-range erróneo</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>¡El fichero %1 no puede ser descargado debido al nombre de la clase de un fichero local!</translation>
</message>
@ -1334,12 +1342,17 @@ No se recomienda usarlo.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>¡El fichero %1 no puede ser descargado debido al nombre de la clase de un fichero local!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>No se pudo descargar el archivo completamente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>¡ El fichero %1 no puede guardar debido a un conflicto con el nombre de otro fichero local !</translation>
</message>
@ -1425,18 +1438,18 @@ No se recomienda usarlo.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Fichero local modificado mientras se sincronizaba, sincronice otra vez cuando termine de editar</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>La sincronización ha sido Interrumpida por el usuario</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>El archivo fue modificado localmente, pero es parte de una carpeta compartida en modo de solo lectura. Ha sido recuperado y tu modificación está en el archivo de conflicto.</translation>
</message>
@ -1444,23 +1457,23 @@ No se recomienda usarlo.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>El archivo fue modificado localmente, pero es parte de una carpeta compartida en modo de solo lectura. Ha sido recuperado y tu modificación está en el archivo de conflicto.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>El archivo local fue eliminado durante la sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Un archivo local fue modificado durante la sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>El servidor no reconoció la última parte. (No había una e-tag presente.)</translation>
</message>
@ -1538,17 +1551,30 @@ No se recomienda usarlo.</translation>
<translation>El informe de sincronización fue copiado al portapapeles.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Actualmente no hay ficheros ignorados por errores previos.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Actualmente no hay archivos ignorados debido a errores previos y a que no hay descargas en progreso.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n archivo ha sido ignorado por causa de errores previos.
Intente volver a sincronizarlo.</numerusform><numerusform>%n archivos han sido ignorados por causa de errores previos.
Intente volver a sincronizarlos.</numerusform></translation>
</source>
<translation><numerusform>%n Archivos han sido ignorados debido a errores previos.
</numerusform><numerusform>%n Archivos han sido ignorados debido a errores previos.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n archivos han sido parcialmente descargados.
</numerusform><numerusform>%n archivos han sido parcialmente descargados.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Intentar sincronizar de nuevo</translation>
</message>
</context>
<context>
@ -1636,12 +1662,12 @@ No se recomienda usarlo.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Error al iniciar sesión</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Debe iniciar sesión como el usuario %1</translation>
</message>
@ -2049,69 +2075,69 @@ No se recomienda usarlo.</translation>
<translation>El fichero contiene caracteres inválidos que no pueden ser sincronizados con la plataforma.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>No se pudo inicializar un registro (journal) de sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>No es posible abrir el diario de sincronización</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorado por que se encuentra en la lista negra de &quot;elige que vas a sincronizar&quot;</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>No está permitido, porque no tiene permisos para añadir subcarpetas en este directorio.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>No está permitido porque no tiene permisos para añadir un directorio</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>No está permitido, porque no tiene permisos para crear archivos en este directorio</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>No está permitido borrar, restaurando.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Se eliminaron los archivos locales y la carpeta compartida.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>No está permitido mover, elemento restaurado.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>No está permitido mover, porque %1 es solo lectura.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>destino</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>origen</translation>
</message>
@ -2317,7 +2343,7 @@ No se recomienda usarlo.</translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="221"/>
<source>&amp;Start a clean sync (Erases the local folder!)</source>
<translation>&amp;Iniciar una sincronización limpia(Borra la carpeta local!)</translation>
<translation>&amp;Iniciar una sincronización limpia (borra la carpeta local)</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="256"/>

View file

@ -385,12 +385,12 @@ Total time left %5</source>
<translation>Actividad de Sync</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -399,17 +399,17 @@ Esto se puede deber a que el directorio fue reconfigurado de manera silenciosa o
¿Estás seguro de que querés realizar esta operación?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>¿Borrar todos los archivos?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Borrar todos los archivos</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Conservar archivos</translation>
</message>
@ -636,22 +636,22 @@ Esto se puede deber a que el directorio fue reconfigurado de manera silenciosa o
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation type="unfinished"/>
</message>
@ -1110,7 +1110,11 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
@ -1303,27 +1307,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Sincronizaciójn abortada por el usuario.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1331,12 +1335,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1422,18 +1431,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Los archivos locales han cambiado durante la sincronización, la primera vez ha funcionado completamente</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Sincronizaciójn abortada por el usuario.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
@ -1441,23 +1450,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"/>
</message>
@ -1535,16 +1544,27 @@ It is not advisable to use it.</source>
<translation>El estado de sincronización ha sido copiado al portapapeles</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Actualmente ningún archivo es ignorado por errores previos.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1631,12 +1651,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@ -2042,69 +2062,69 @@ It is not advisable to use it.</source>
<translation>El archivo contiene caracteres inválidos que no pueden ser sincronizados entre plataforma.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Imposible inicializar un diario de sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation type="unfinished"/>
</message>

View file

@ -386,12 +386,12 @@ Aega kokku jäänud %5</translation>
<translation>Sünkroniseerimise tegevus</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Süsteemi väljajätmiste faili lugemine ebaõnnestus</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ See võib olla põhjustatud kataloogi ümberseadistusest või on toimunud kõiki
Oled kindel, et soovid seda operatsiooni teostada?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Kustutada kõik failid?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Kustutada kõik failid</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Säilita failid</translation>
</message>
@ -637,22 +637,22 @@ Oled kindel, et soovid seda operatsiooni teostada?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ühtegi E-Silti ei saabunud serverist, kontrolli puhverserverit/lüüsi.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Saime jätkamiseks erineva E-Sildi. Proovin järgmine kord uuesti.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Server tagastas vale vahemiku</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Ühenduse aegumine</translation>
</message>
@ -1113,8 +1113,12 @@ Selle kasutamine pole soovitatav.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Ei suutnud turvaliselt ühenduda. Soovid minna üle krüpteerimata ühendusele (pole soovitatav)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1310,27 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Sünkroniseering katkestati kasutaja poolt.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ühtegi E-Silti ei saabunud serverist, kontrolli puhverserverit/lüüsi.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Saime jätkamiseks erineva E-Sildi. Proovin järgmine kord uuesti.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Server tagastas vale vahemiku</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Faili %1 ei saa alla laadida kuna on konflikt kohaliku faili nimega.</translation>
</message>
@ -1334,12 +1338,17 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Faili %1 ei saa alla laadida kuna on konflikt kohaliku faili nimega.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Faili %1 ei saa salvestada kuna on nime konflikt kohaliku failiga!</translation>
</message>
@ -1425,18 +1434,18 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Kohalik fail muutus sünkroniseerimise ajal, sünkroniseerin kuni ülekanne on täielik</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Sünkroniseering katkestati kasutaja poolt.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Faili on lokaalselt muudetud, kuid see on osa kirjutamisõiguseta jagamisest. See on taastatud ning sinu muudatus on konfliktses failis.</translation>
</message>
@ -1444,23 +1453,23 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Faili on lokaalselt muudetud, kuid see on osa kirjutamisõiguseta jagamisest. See on taastatud ning sinu muudatus on konfliktses failis.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Kohalik fail on eemaldatud sünkroniseeringu käigus.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Server ei tunnistanud viimast tükki. (E-silt puudus).</translation>
</message>
@ -1538,17 +1547,29 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Sünkroniseeringu staatus on kopeeritud lõikepuhvrisse.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Hetkel ei ignoreerita ühtegi faili eelnenud vigade tõttu.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Hetkel ei ignoreerita ühtegi faili eelnenud vigade tõttu ja ühtegi allalaadimist ei toimu</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n faili ignoreeriti eelnenud vigade tõttu.
Proovi uuesti sünkroniseerida.</numerusform><numerusform>%n faili ignoreeriti eelnenud vigade tõttu.
Proovi uuesti sünkroniseerida.</numerusform></translation>
</source>
<translation><numerusform>%n fail on ignoreeritud eelnenud vigade tõttu</numerusform><numerusform>%n faili on ignoreeritud eelnenud vigade tõttu
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n fail on osaliselt allalaaditud
</numerusform><numerusform>%n fail on osaliselt allalaaditud
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Proovi neid uuesti sünkroniseerida.</translation>
</message>
</context>
<context>
@ -1636,12 +1657,12 @@ Proovi uuesti sünkroniseerida.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Sisselogimise viga</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Pead sisse logima kui kasutaja %1</translation>
</message>
@ -2049,69 +2070,69 @@ Proovi uuesti sünkroniseerida.</numerusform></translation>
<translation>Fail sisaldab sobimatuid sümboleid, mida ei saa sünkroniseerida erinevate platvormide vahel.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ei suuda lähtestada sünkroniseeringu zurnaali.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Ei suuda avada sünkroniseeringu zurnaali</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>&quot;Vali, mida sünkroniseerida&quot; musta nimekirja tõttu vahele jäetud</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Pole lubatud, kuna sul puuduvad õigused lisada sellesse kataloogi lisada alam-kataloogi</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Pole lubatud, kuna sul puuduvad õigused lisada ülemkataloog</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Pole lubatud, kuna sul puuduvad õigused sellesse kataloogi faile lisada</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Pole lubatud üles laadida, kuna tegemist on ainult-loetava serveriga, taastan</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Eemaldamine pole lubatud, taastan</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Kohalikud failid ja jagatud kaustad eemaldatud.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Liigutamine pole lubatud, üksus taastatud</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Liigutamien pole võimalik kuna %1 on ainult lugemiseks</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>sihtkoht</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>allikas</translation>
</message>

View file

@ -386,12 +386,12 @@ Geratzen den denbora %5</translation>
<translation>Sinkronizazio Jarduerak</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Izan daiteke karpeta isilpean birkonfiguratu delako edo fitxategi guztiak eskuz
Ziur zaude eragiketa hau egin nahi duzula?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Ezabatu Fitxategi Guztiak?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Ezabatu fitxategi guztiak</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Mantendu fitxategiak</translation>
</message>
@ -637,22 +637,22 @@ Ziur zaude eragiketa hau egin nahi duzula?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ez da E-Tagik jaso zerbitzaritik, egiaztatu Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Konexioa denboraz kanpo</translation>
</message>
@ -1113,8 +1113,12 @@ Ez da gomendagarria erabltzea.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Ezin da modu seguruan konektatu. Nahi duzu enkriptatu gabe konektatu (ez da gomendagarria)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1310,27 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Sinkronizazioa erabiltzaileak bertan behera utzi du</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ez da E-Tagik jaso zerbitzaritik, egiaztatu Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1334,12 +1338,17 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1425,18 +1434,18 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Sinkronizazioa erabiltzaileak bertan behera utzi du</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
@ -1444,23 +1453,23 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Fitxategi lokala ezabatu da sinkronizazioan.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"/>
</message>
@ -1538,16 +1547,27 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Sinkronizazio egoera arbelera kopiatu da.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Oraintxe ez da fitxategirik baztertzen aurreko erroreak direla eta.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1634,12 +1654,12 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Errorea sartzean</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@ -2045,69 +2065,69 @@ Ez da gomendagarria erabltzea.</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ezin izan da sinkronizazio egunerokoa hasieratu.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Ezabatzeko baimenik gabe, berrezartzen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Mugitzea ez dago baimenduta, elementua berrezarri da</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Mugitzea ez dago baimenduta %1 irakurtzeko bakarrik delako</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>helburua</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>jatorria</translation>
</message>

View file

@ -385,29 +385,29 @@ Total time left %5</source>
<translation>فعالیت همگام سازی</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>نگه داشتن فایل ها</translation>
</message>
@ -634,22 +634,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>تایم اوت اتصال</translation>
</message>
@ -1106,7 +1106,11 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
@ -1299,27 +1303,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1327,12 +1331,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1418,18 +1427,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
@ -1437,23 +1446,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"/>
</message>
@ -1531,16 +1540,27 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1627,12 +1647,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@ -2038,69 +2058,69 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation type="unfinished"/>
</message>

View file

@ -121,7 +121,7 @@
<message>
<location filename="../src/mirall/accountsettings.ui" line="130"/>
<source>&lt;b&gt;Note:&lt;/b&gt; Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>&lt;b&gt;Huomio:&lt;/b&gt; Joillakin kansioilla, mukaan lukien verkon yli liitetyt tai jaetut kansiot, voivat olla erilaisten rajoitusten piirissä.</translation>
<translation>&lt;b&gt;Huomio:&lt;/b&gt; Jotkin kansiot, mukaan lukien verkon yli liitetyt tai jaetut kansiot, voivat olla eri rajoitusten piirissä.</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="171"/>
@ -216,7 +216,7 @@ Aikaa jäljellä yhteensä %5</translation>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="800"/>
<source>Connected to &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.</source>
<translation>Muodosta yhteys - &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.</translation>
<translation>Muodostetty yhteys kohteeseen &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="803"/>
@ -386,29 +386,29 @@ Aikaa jäljellä yhteensä %5</translation>
<translation>Synkronointiaktiviteetti</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Poistetaanko kaikki tiedostot?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Poista kaikki tiedostot</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Säilytä tiedostot</translation>
</message>
@ -487,7 +487,7 @@ Are you sure you want to perform this operation?</source>
<message>
<location filename="../src/mirall/folderstatusmodel.cpp" line="205"/>
<source>Syncing all files in your account with</source>
<translation type="unfinished"/>
<translation>Synkronoidaan kaikki tilisi tiedostot polkuun</translation>
</message>
<message>
<location filename="../src/mirall/folderstatusmodel.cpp" line="208"/>
@ -635,22 +635,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Yhteys aikakatkaistiin</translation>
</message>
@ -1062,7 +1062,7 @@ saattaa kysyä lisäoikeuksia toimenpiteen aikana.</translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.cpp" line="266"/>
<source>Update advanced setup</source>
<translation type="unfinished"/>
<translation>Lisäasetuksien päivitys</translation>
</message>
</context>
<context>
@ -1109,8 +1109,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Salattua yhteyttä ei voitu muodostaa. Haluatko sen muodostaa salaamattoman yhteyden? (ei suositeltu)</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1302,27 +1306,27 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Synkronointi peruttiin käyttäjän toimesta.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1330,12 +1334,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1345,7 +1354,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/mirall/owncloudpropagator.cpp" line="51"/>
<source>; Restoration Failed: </source>
<translation type="unfinished"/>
<translation>; Palauttaminen epäonnistui: </translation>
</message>
<message>
<location filename="../src/mirall/owncloudpropagator.cpp" line="185"/>
@ -1371,7 +1380,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="68"/>
<source>Error removing &apos;%1&apos;: %2; </source>
<translation type="unfinished"/>
<translation>Virhe poistaessa &apos;%1&apos;: %2; </translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="79"/>
@ -1421,18 +1430,18 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Synkronointi peruttiin käyttäjän toimesta.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
@ -1440,23 +1449,23 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Paikallinen tiedosto poistettiin synkronoinnin aikana.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Paikallinen tiedosto muuttui synkronoinnin aikana.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"/>
</message>
@ -1521,7 +1530,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="73"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"/>
<translation>Kopioi toimilista leikepöydälle.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="118"/>
@ -1534,16 +1543,27 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Synkronointitila on kopioitu leikepöydälle.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1555,7 +1575,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<message>
<location filename="../src/mirall/selectivesyncdialog.cpp" line="274"/>
<source>Unchecked folders will be &lt;b&gt;removed&lt;/b&gt; from your local file system and will not be synchronized to this computer anymore</source>
<translation type="unfinished"/>
<translation>Ilman valintaa olevat kansiot &lt;b&gt;poistetaan&lt;/b&gt; paikallisesta tiedostojärjestelmästä, eikä niitä synkronoida enää jatkossa tämän tietokoneen kanssa</translation>
</message>
</context>
<context>
@ -1630,12 +1650,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Kirjautumisvirhe</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Kirjaudu käyttäjänä %1</translation>
</message>
@ -2043,69 +2063,69 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Tiedosto sisältää virheellisiä merkkejä, joiden vuoksi sitä voi synkronoida eri käyttöjärjestelmien välillä.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Ei sallittu, koska sinulla ei ole oikeutta lisätä tiedostoja kyseiseen kansioon</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Poistaminen ei ole sallittua, palautetaan</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Paikalliset tiedostot ja jakokansio poistettu.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Siirtäminen ei ole sallittua, kohde palautettu</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Siirto ei ole sallittu, koska %1 on &quot;vain luku&quot;-tilassa</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>kohde</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>lähde</translation>
</message>

View file

@ -14,7 +14,7 @@
<message>
<location filename="../src/mirall/folderwizardsourcepage.ui" line="44"/>
<source>&amp;Choose...</source>
<translation>&amp;Choisir</translation>
<translation>&amp;Choisir...</translation>
</message>
<message>
<location filename="../src/mirall/folderwizardsourcepage.ui" line="55"/>
@ -37,7 +37,7 @@
<message>
<location filename="../src/mirall/folderwizardtargetpage.ui" line="140"/>
<source>Add Folder</source>
<translation>Ajouter le dossier</translation>
<translation>Ajouter un dossier</translation>
</message>
<message>
<location filename="../src/mirall/folderwizardtargetpage.ui" line="160"/>
@ -311,7 +311,7 @@ Temps restant total %5</translation>
<message>
<location filename="../src/mirall/folder.cpp" line="368"/>
<source>%1: %2</source>
<translation>%1: %2</translation>
<translation>%1 : %2</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="459"/>
@ -386,12 +386,12 @@ Temps restant total %5</translation>
<translation>Activité de synchronisation</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Impossible de lire le fichier d&apos;exclusion du système</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Cela est peut-être du à une reconfiguration silencieuse du dossier, ou parce q
Voulez-vous réellement effectuer cette opération ?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Supprimer tous les fichiers ?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Supprimer tous les fichiers</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Garder les fichiers</translation>
</message>
@ -455,7 +455,7 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<message>
<location filename="../src/mirall/folderman.cpp" line="887"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>La dernière synchronisation s&apos;est achevée avec succès mais avec des messages d&apos;avertissement sur des fichiers individuels.</translation>
<translation>La dernière synchronisation s&apos;est achevée avec succès mais avec des messages d&apos;avertissement à propos de certains fichiers.</translation>
</message>
<message>
<location filename="../src/mirall/folderman.cpp" line="890"/>
@ -494,7 +494,7 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<message>
<location filename="../src/mirall/folderstatusmodel.cpp" line="208"/>
<source>Remote path: %1</source>
<translation>Chemin distant: %1</translation>
<translation>Chemin distant : %1</translation>
</message>
</context>
<context>
@ -503,7 +503,7 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<location filename="../src/mirall/folderwizard.cpp" line="494"/>
<location filename="../src/mirall/folderwizard.cpp" line="496"/>
<source>Add Folder</source>
<translation>Ajouter le dossier</translation>
<translation>Ajouter un dossier</translation>
</message>
</context>
<context>
@ -614,7 +614,7 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<message>
<location filename="../src/mirall/folderwizard.cpp" line="398"/>
<source>You are already syncing all your files. Syncing another folder is &lt;b&gt;not&lt;/b&gt; supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
<translation>Vous êtes déjà en cours de synchronisation de tous vos fichiers. Synchroniser un autre dossier n&apos;est &lt;b&gt;pas&lt;/b&gt; possible actuellement. Si vous voulez synchroniser de multiples dossiers, veuillez supprimer la synchronisation en cours du dossier racine.</translation>
<translation>Vous sychronisez déjà tous vos fichiers. Synchroniser un autre dossier n&apos;est &lt;b&gt;pas&lt;/b&gt; possible actuellement. Si vous voulez synchroniser plusieurs dossiers, veuillez supprimer la synchronisation du dossier racine qui est configurée actuellement.</translation>
</message>
</context>
<context>
@ -637,22 +637,22 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Le serveur a retourné une gamme de contenu erronée</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Temps de connexion expiré</translation>
</message>
@ -711,7 +711,7 @@ Voulez-vous réellement effectuer cette opération ?</translation>
<message>
<location filename="../src/creds/httpcredentials.cpp" line="375"/>
<source>Please enter %1 password for user &apos;%2&apos;:</source>
<translation>Veuillez entrer %1 mot de passe pour l&apos;utilisateur &apos;%2&apos;:</translation>
<translation>Veuillez entrer le mot de passe %1 pour l&apos;utilisateur &apos;%2&apos; :</translation>
</message>
</context>
<context>
@ -1031,7 +1031,7 @@ peut demander des privilèges additionnels durant le processus.</translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.cpp" line="49"/>
<source>Connect to %1</source>
<translation>Connecter à %1</translation>
<translation>Connexion à %1</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.cpp" line="50"/>
@ -1074,7 +1074,7 @@ peut demander des privilèges additionnels durant le processus.</translation>
<message>
<location filename="../src/wizard/owncloudhttpcredspage.cpp" line="42"/>
<source>Connect to %1</source>
<translation>Connecter à %1</translation>
<translation>Connexion à %1</translation>
</message>
<message>
<location filename="../src/wizard/owncloudhttpcredspage.cpp" line="43"/>
@ -1084,7 +1084,7 @@ peut demander des privilèges additionnels durant le processus.</translation>
<message>
<location filename="../src/wizard/owncloudhttpcredspage.cpp" line="159"/>
<source>Update user credentials</source>
<translation>Mettre à jour les identifiants de connexion de l&apos;utilisateur</translation>
<translation>Modification des identifiants de connexion</translation>
</message>
</context>
<context>
@ -1092,7 +1092,7 @@ peut demander des privilèges additionnels durant le processus.</translation>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="45"/>
<source>Connect to %1</source>
<translation>Connecter à %1</translation>
<translation>Connexion à %1</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="46"/>
@ -1113,8 +1113,16 @@ Il est déconseillé de l&apos;utiliser.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Impossible de se connecter en toute sécurité. Voulez-vous vous connecter sans chiffrement à la place (non recommandé) ?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Impossible de se connecter en toute sécurité.
%1
Voulez-vous vous connecter sans chiffrement à la place (non recommandé) ?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1124,7 +1132,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="263"/>
<source>Update %1 server</source>
<translation>Mettre à jour le serveur %1</translation>
<translation>Modification de l&apos;adresse du serveur %1</translation>
</message>
</context>
<context>
@ -1148,7 +1156,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<message>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="162"/>
<source>&lt;font color=&quot;green&quot;&gt;Successfully connected to %1: %2 version %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;Connecté avec succès à %1: %2 version %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
<translation>&lt;font color=&quot;green&quot;&gt;Connecté avec succès à %1 : %2 version %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="231"/>
@ -1184,7 +1192,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="186"/>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="194"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Échec de la connexion à %1 pour %2:&lt;br/&gt;%3</translation>
<translation>Échec de la connexion à %1 pour %2 :&lt;br/&gt;%3</translation>
</message>
<message>
<location filename="../src/mirall/owncloudsetupwizard.cpp" line="280"/>
@ -1287,7 +1295,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<message>
<location filename="../src/wizard/owncloudwizardresultpage.cpp" line="77"/>
<source>Your entire account is synced to the local folder &lt;i&gt;%1&lt;/i&gt;</source>
<translation>Votre compte est synchronisé intégralement avec le répertoire local &lt;i&gt;%1&lt;/i&gt;</translation>
<translation>Votre compte est intégralement synchronisé avec le répertoire local &lt;i&gt;%1&lt;/i&gt;</translation>
</message>
<message>
<location filename="../src/wizard/owncloudwizardresultpage.cpp" line="80"/>
@ -1306,40 +1314,45 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>La synchronisation a é interrompue par l&apos;utilisateur.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Le serveur a retourné une gamme de contenu erronnée</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>File %1 ne peut pas être téléchargé en raison d&apos;un conflit sur le nom du fichier local. </translation>
<translation>Le fichier %1 ne peut pas être téléchargé en raison d&apos;un conflit sur le nom du fichier local. </translation>
</message>
</context>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>File %1 ne peut pas être téléchargé en raison d&apos;un conflit sur le nom du fichier local. </translation>
<translation>Le fichier %1 ne peut pas être téléchargé en raison d&apos;un conflit sur le nom du fichier local. </translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>Le fichier n&apos;a pas pu être téléchargé intégralement.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Le fichier %1 n&apos;a pas pu être sauvegardé en raison d&apos;un conflit sur le nom du fichier local !</translation>
</message>
@ -1425,18 +1438,18 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Fichier local modifié pendant la synchronisation, la synchronisation redémarrera lorsque ce sera terminé</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>La synchronisation a é interrompue par l&apos;utilisateur.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Le fichier a é modifié localement mais appartient à un partage en lecture seule. Il a é restauré et vos modifications sont présentes dans le fichiers de confit.</translation>
</message>
@ -1444,23 +1457,23 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Le fichier a é modifié localement mais appartient à un partage en lecture seule. Il a é restauré et vos modifications sont présentes dans le fichiers de confit.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Fichier local supprimé pendant la synchronisation.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Fichier local modifié pendant la synchronisation.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Le serveur n&apos;a pas acquitté le dernier morceau (aucun e-tag n&apos;était présent).</translation>
</message>
@ -1538,17 +1551,29 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>L&apos;état de synchronisation a é copié dans le presse-papier.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Actuellement aucun fichier n&apos;a é ignoré en raison d&apos;erreurs précédentes.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Actuellement aucun fichier n&apos;a é ignoré en raison d&apos;erreurs précédentes, et aucun téléchargement n&apos;est en cours.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n fichier a é ignoré à cause de précédentes erreurs.
Essayez de le synchroniser à nouveau.</numerusform><numerusform>%n fichiers ont é ignorés à cause de précédentes erreurs.
Essayez de les synchroniser à nouveau.</numerusform></translation>
</source>
<translation><numerusform>%n fichiers ont é ignorés à cause d&apos;erreurs précédentes.
</numerusform><numerusform>%n fichiers ont é ignorés à cause d&apos;erreurs précédentes.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n fichiers sont partiellement téléchargés.</numerusform><numerusform>%n fichiers sont partiellement téléchargés.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Essayez de les synchroniser à nouveau.</translation>
</message>
</context>
<context>
@ -1636,12 +1661,12 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Erreur de connexion</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Vous devez vous connecter en tant qu&apos;utilisateur %1</translation>
</message>
@ -2049,69 +2074,69 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<translation>Le fichier contient des caractères non valides qui ne peuvent être synchronisés entre plate-formes.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossible d&apos;initialiser un journal de synchronisation.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Impossible d&apos;ouvrir le journal de synchronisation</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignoré à cause de la liste noire du contenu à synchroniser.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Non autorisé car vous n&apos;avez pas la permission d&apos;ajouter des sous-dossiers dans ce dossier</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Non autorisé car vous n&apos;avez pas la permission d&apos;ajouter des dossiers parents</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Non autorisé car vous n&apos;avez pas la permission d&apos;ajouter des fichiers dans ce dossier</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Non autorisé à envoyer ce fichier car il est en lecture seule sur le serveur. Restauration</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Non autorisé à supprimer. Restauration</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Fichiers locaux et répertoire de partage supprimés.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Déplacement non autorisé, élément restauré</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Déplacement non autorisé car %1 est en mode lecture seule</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>la destination</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>la source</translation>
</message>
@ -2121,7 +2146,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/mirall/systray.cpp" line="49"/>
<source>%1: %2</source>
<translation>%1: %2</translation>
<translation>%1 : %2</translation>
</message>
</context>
<context>
@ -2192,7 +2217,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="414"/>
<source>Calculating quota...</source>
<translation>Calcul du quota en cours...</translation>
<translation>Calcul du quota...</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="416"/>
@ -2237,7 +2262,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="446"/>
<source>%1% of %2 in use</source>
<translation>%1% sur %2 utilisés</translation>
<translation>%1% de %2 utilisés</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="458"/>
@ -2302,7 +2327,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="103"/>
<source>Sync everything from server</source>
<translation>Synchroniser tout le contenu du serveur</translation>
<translation>Synchroniser tout le contenu de votre compte</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="122"/>
@ -2327,7 +2352,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="208"/>
<source>&amp;Keep local data</source>
<translation>&amp;Garder des données locales</translation>
<translation>&amp;Garder les données locales</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="218"/>
@ -2576,7 +2601,7 @@ Essayez de les synchroniser à nouveau.</numerusform></translation>
<message>
<location filename="../src/mirall/progressdispatcher.cpp" line="62"/>
<source>downloading</source>
<translation>téléchargement</translation>
<translation>téléchargement de</translation>
</message>
<message>
<location filename="../src/mirall/progressdispatcher.cpp" line="64"/>

View file

@ -106,7 +106,7 @@
<message>
<location filename="../src/mirall/accountsettings.ui" line="76"/>
<source>Choose What to Sync</source>
<translation type="unfinished"/>
<translation>Escolla qué sincronizar</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.ui" line="101"/>
@ -163,7 +163,7 @@
<message>
<location filename="../src/mirall/accountsettings.cpp" line="675"/>
<source>file %1 of %2</source>
<translation type="unfinished"/>
<translation>ficheiro %1 de %2</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="763"/>
@ -198,7 +198,7 @@
<message>
<location filename="../src/mirall/accountsettings.cpp" line="608"/>
<source>Discovering &apos;%1&apos;</source>
<translation type="unfinished"/>
<translation>Atopando &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/mirall/accountsettings.cpp" line="648"/>
@ -373,12 +373,12 @@ Tempo total restante %5</translation>
<location filename="../src/mirall/folder.cpp" line="494"/>
<source>%1 and %2 other files could not be synced due to errors. See the log for details.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"/>
<translation>%1 e %2 non se puideron sincronizar debido a erros. Vexa os detalles no rexistro.</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="496"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"/>
<translation>%1 non se puido sincronizar debe a un erro. Vexa os detalles no rexistro.</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="504"/>
@ -386,12 +386,12 @@ Tempo total restante %5</translation>
<translation>Actividade de sincronización</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
<translation>Non se puido ler o ficheiro de exclusión do sistema</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Isto podería ser debido a que o cartafol foi reconfigurado en silencio, ou a qu
Confirma que quere realizar esta operación?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Retirar todos os ficheiros?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Retirar todos os ficheiros</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Manter os ficheiros</translation>
</message>
@ -622,7 +622,7 @@ Confirma que quere realizar esta operación?</translation>
<message>
<location filename="../src/mirall/folderwizard.cpp" line="436"/>
<source>Choose What to Sync: You can optionally deselect subfolders you do not wish to synchronize.</source>
<translation type="unfinished"/>
<translation>Escolla qué sincronizar: Opcionalmente pode deselecionar subcartafoles que non desexe sincronizar.</translation>
</message>
</context>
<context>
@ -637,22 +637,22 @@ Confirma que quere realizar esta operación?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Non se recibiu a «E-Tag» do servidor, comprobe o proxy e/ou a pasarela</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Recibiuse unha «E-Tag» diferente para continuar. Tentándoo outra vez.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>O servidor devolveu un intervalo de contidos estragado</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Esgotouse o tempo de conexión</translation>
</message>
@ -1018,7 +1018,7 @@ actualización pode pedir privilexios adicionais durante o proceso.</translation
<message>
<location filename="../src/updater/ocupdater.cpp" line="89"/>
<source>Update status is unknown: Did not check for new updates.</source>
<translation type="unfinished"/>
<translation>O estado da actualización é descoñecido: non se comprobaron as actualizacións.</translation>
</message>
<message>
<location filename="../src/updater/ocupdater.cpp" line="93"/>
@ -1113,8 +1113,12 @@ Recomendámoslle que non o use.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Non é posíbel conectar de forma segura. Quere, aínda así, conectar sen cifrar (non recomendado)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1282,7 +1286,7 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/wizard/owncloudwizardresultpage.cpp" line="50"/>
<source>Open %1 in Browser</source>
<translation type="unfinished"/>
<translation>Abrir %1 no navegador</translation>
</message>
<message>
<location filename="../src/wizard/owncloudwizardresultpage.cpp" line="77"/>
@ -1306,27 +1310,27 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>A sincronización foi interrompida polo usuario.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Non se recibiu a «E-Tag» do servidor, comprobe o proxy e/ou a pasarela</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Recibiuse unha «E-Tag» diferente para continuar. Tentándoo outra vez.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>O servidor devolveu un intervalo de contidos estragado</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Non é posíbel descargar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local!</translation>
</message>
@ -1334,15 +1338,20 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Non é posíbel descargar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>O ficheiro %1 non se gardou debido a unha colisión co nome dun ficheiro local!</translation>
</message>
</context>
<context>
<name>Mirall::PropagateItemJob</name>
@ -1375,12 +1384,12 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="68"/>
<source>Error removing &apos;%1&apos;: %2; </source>
<translation type="unfinished"/>
<translation>Erro eliminando &apos;%1&apos;: %2;</translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="79"/>
<source>Could not remove directory &apos;%1&apos;; </source>
<translation type="unfinished"/>
<translation>Non se puido eliminar o directorio &apos;%1&apos;;</translation>
</message>
<message>
<location filename="../src/mirall/propagatorjobs.cpp" line="94"/>
@ -1425,18 +1434,18 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>O ficheiro local cambiou durante a sincronización, sincronizando unha vez quedou completado</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>A sincronización foi interrompida polo usuario.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>O ficheiro foi editado localmente mais é parte dunha compartición de lectura. O ficheiro foi restaurado e a súa edición atopase no ficheiro de conflitos.</translation>
</message>
@ -1444,23 +1453,23 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>O ficheiro foi editado localmente mais é parte dunha compartición de lectura. O ficheiro foi restaurado e a súa edición atopase no ficheiro de conflitos.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>O ficheiro local retirarase durante a sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>O ficheiro local cambiou durante a sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>O servidor non recoñeceu o último fragmento. (Non hai e-tag presente)</translation>
</message>
@ -1538,28 +1547,39 @@ Recomendámoslle que non o use.</translation>
<translation>O estado de sincronización foi copiado no portapapeis.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Actualmente non hai ficheiros ignorados por mor de erros anteriores.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
<message>
<location filename="../src/mirall/selectivesyncdialog.cpp" line="271"/>
<source>Choose What to Sync</source>
<translation type="unfinished"/>
<translation>Escolla qué sincronizar</translation>
</message>
<message>
<location filename="../src/mirall/selectivesyncdialog.cpp" line="274"/>
<source>Unchecked folders will be &lt;b&gt;removed&lt;/b&gt; from your local file system and will not be synchronized to this computer anymore</source>
<translation type="unfinished"/>
<translation>Os cartafoles non selecionados serán &lt;b&gt;eliminados&lt;/b&gt; do seu sistema de ficheiros local e non se voltarán a sincronizar con esta computadora</translation>
</message>
</context>
<context>
@ -1634,12 +1654,12 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Erro de acceso</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Ten que rexistrarse como usuario %1</translation>
</message>
@ -2014,7 +2034,7 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/mirall/syncengine.cpp" line="183"/>
<source>The mounted directory is temporary not available on the server</source>
<translation type="unfinished"/>
<translation>O directorio montado non está temporalmente dispoñible no servidor</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="186"/>
@ -2047,69 +2067,69 @@ Recomendámoslle que non o use.</translation>
<translation>O ficheiro conten caracteres incorrectos que non poden sincronizarse entre distintas plataformas.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Non é posíbel iniciar un rexistro de sincronización.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Non foi posíbel abrir o rexistro de sincronización</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
<translation>Ignorado debido a lista negra de &quot;escolla qué sincronizar&quot;</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Non está permitido xa que non ten permiso para engadir subdirectorios nese directorio</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Non está permitido xa que non ten permiso para engadir un directorio pai</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Non está permitido xa que non ten permiso para engadir ficheiros nese directorio</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Non está permitido o envío xa que o ficheiro é de lectura no servidor, restaurando</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Non está permitido retiralo, restaurando</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
<translation>Ficheiros locáis e cartafol compartido eliminados.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Nos está permitido movelo, elemento restaurado</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Bon está permitido movelo xa que %1 é de lectura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>o destino</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>a orixe</translation>
</message>
@ -2155,7 +2175,7 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="280"/>
<source>There are no sync folders configured.</source>
<translation type="unfinished"/>
<translation>Non existen cartafoles de sincronización configurados.</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="306"/>
@ -2245,7 +2265,7 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="470"/>
<source>Discovering &apos;%1&apos;</source>
<translation type="unfinished"/>
<translation>Atopando &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/mirall/owncloudgui.cpp" line="474"/>
@ -2273,7 +2293,7 @@ Recomendámoslle que non o use.</translation>
<message utf8="true">
<location filename="../src/mirall/owncloudtheme.cpp" line="48"/>
<source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz and others.&lt;br/&gt;Based on Mirall by Duncan Mac-Vicar P.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licensed under the GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud and the ownCloud Logo are registered trademarks of ownCloud, Inc. in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
<translation>&lt;p&gt;Versión %2. Para máis información visite &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e outros.&lt;br/&gt;Baseado en Mirall de Duncan Mac-Vicar P.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licenciado baixo a GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud e o Logo ownCloud son marcas rexistradas de ownCloud, Inc. nos Estados Unidos, outros países ou en ambos.&lt;/p&gt;</translation>
</message>
</context>
<context>
@ -2300,12 +2320,12 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="103"/>
<source>Sync everything from server</source>
<translation type="unfinished"/>
<translation>Sincronice todo o contido do servidor</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="122"/>
<source>Choose what to sync</source>
<translation type="unfinished"/>
<translation>Escolla qué sincronizar</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="178"/>
@ -2315,7 +2335,7 @@ Recomendámoslle que non o use.</translation>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="221"/>
<source>&amp;Start a clean sync (Erases the local folder!)</source>
<translation type="unfinished"/>
<translation>&amp;Iniciar unha nova sincronización (Elimina o cartafol local!)</translation>
</message>
<message>
<location filename="../src/wizard/owncloudadvancedsetuppage.ui" line="256"/>

View file

@ -385,29 +385,29 @@ Total time left %5</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>El legyen távolítva az összes fájl?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Összes fájl eltávolítása</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Fájlok megtartása</translation>
</message>
@ -634,22 +634,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation type="unfinished"/>
</message>
@ -1106,7 +1106,11 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
@ -1299,27 +1303,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1327,12 +1331,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1418,18 +1427,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
@ -1437,23 +1446,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation type="unfinished"/>
</message>
@ -1531,16 +1540,27 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1627,12 +1647,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@ -2038,69 +2058,69 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation type="unfinished"/>
</message>

View file

@ -386,12 +386,12 @@ Totale tempo rimanente %5</translation>
<translation>Sincronizza attività</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Impossibile leggere il file di esclusione di sistema</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Ciò potrebbe accadere in caso di riconfigurazione della cartella o di rimozione
Sei sicuro di voler eseguire questa operazione?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Vuoi rimuovere tutti i file?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Rimuovi tutti i file</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Mantieni i file</translation>
</message>
@ -637,22 +637,22 @@ Sei sicuro di voler eseguire questa operazione?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nessun e-tag ricevuto dal server, controlla il proxy/gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Abbiamo ricevuto un e-tag diverso per il recupero. Riprova più tardi.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Il server ha restituito un content-range errato</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Connessione scaduta</translation>
</message>
@ -1112,8 +1112,16 @@ Non è consigliabile utilizzarlo.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Impossibile connettersi in modo sicuro. Vuoi provare a connetterti senza cifratura (non consigliato)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Impossibile connettersi in modo sicuro:
%1
Vuoi invece connetterti senza cifratura (non consigliato)?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1305,27 +1313,27 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Sincronizzazione interrotta dall&apos;utente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nessun e-tag ricevuto dal server, controlla il proxy/gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Abbiamo ricevuto un e-tag diverso per il recupero. Riprova più tardi.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Il server ha restituito un content-range errato</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Il file %1 non può essere scaricato a causa di un conflitto con un file locale.</translation>
</message>
@ -1333,12 +1341,17 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Il file %1 non può essere scaricato a causa di un conflitto con un file locale.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>Il file non può essere scaricato completamente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Il file %1 non può essere salvato a causa di un conflitto con un file locale.</translation>
</message>
@ -1424,18 +1437,18 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Un file locale è cambiato durante la sincronizzazione, nuova sincronizzazione alla ricezione.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Sincronizzazione interrotta dall&apos;utente.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Il file è stato modificato localmente, ma è parte di una condivisione in sola lettura. È stato ripristinato e la tua modifica è nel file di conflitto.</translation>
</message>
@ -1443,23 +1456,23 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Il file è stato modificato localmente, ma è parte di una condivisione in sola lettura. È stato ripristinato e la tua modifica è nel file di conflitto.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Il file locale è stato rimosso durante la sincronizzazione.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Un file locale è cambiato durante la sincronizzazione.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Il server non ha riconosciuto l&apos;ultimo pezzo. (Non era presente alcun e-tag)</translation>
</message>
@ -1537,17 +1550,30 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Lo stato di sincronizzazione è stato copiato negli appunti.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Attualmente nessun file è ignorato a causa di errori precedenti.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Attualmente nessun file è ignorato a causa di errori precedenti e non ci sono scaricamenti in corso.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation><numerusform>%n file sono ignorati a causa di errori precedenti.
Prova a sincronizzare nuovamente.</numerusform><numerusform>%n file sono ignorati a causa di errori precedenti.
Prova a sincronizzare nuovamente.</numerusform></translation>
</numerusform><numerusform>%n file sono ignorati a causa di errori precedenti.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n file sono stati scaricati parzialmente.
</numerusform><numerusform>%n file sono stati scaricati parzialmente.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Prova a sincronizzarli nuovamente.</translation>
</message>
</context>
<context>
@ -1635,12 +1661,12 @@ Prova a sincronizzare nuovamente.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Errore di accesso</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Devi accedere con l&apos;utente %1</translation>
</message>
@ -2048,69 +2074,69 @@ Prova a sincronizzare nuovamente.</numerusform></translation>
<translation>Il file contiene caratteri non validi che non possono essere sincronizzati su diverse piattaforme.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossibile inizializzare il registro di sincronizzazione.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Impossibile aprire il registro di sincronizzazione</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorato in base alla lista nera per la scelta di cosa sincronizzare</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere sottocartelle in quella cartella</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere la cartella superiore</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere file in quella cartella</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Il caricamento di questo file non è consentito poiché è in sola lettura sul server, ripristino</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Rimozione non consentita, ripristino</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>I file locali e la cartella condivisa sono stati rimossi.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Spostamento non consentito, elemento ripristinato</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Spostamento non consentito poiché %1 è in sola lettura</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>la destinazione</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>l&apos;origine</translation>
</message>

View file

@ -386,12 +386,12 @@ Total time left %5</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Are you sure you want to perform this operation?</source>
</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation></translation>
</message>
@ -637,22 +637,22 @@ Are you sure you want to perform this operation?</source>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>E-Tagを受信できません/</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation> E-Tagを受信しました</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>content-rangeを返しました</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation></translation>
</message>
@ -1111,8 +1111,16 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>()</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>:
%1
()</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1304,27 +1312,27 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>E-Tagを受信できません/</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation> E-Tagを受信しました</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>content-rangeを返しました</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation> %1 </translation>
</message>
@ -1332,12 +1340,17 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>%1 </translation>
</message>
@ -1423,18 +1436,18 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation></translation>
</message>
@ -1442,23 +1455,23 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>(e-tag )</translation>
</message>
@ -1536,16 +1549,28 @@ It is not advisable to use it.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation></translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%n個のファイルが無視されました
</numerusform></translation>
</source>
<translation><numerusform>%n個のファイルが無視されました
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%nファイルのダウンロードが不完全です
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation></translation>
</message>
</context>
<context>
@ -1633,12 +1658,12 @@ It is not advisable to use it.</source>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation></translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation> %1 </translation>
</message>
@ -2046,69 +2071,69 @@ It is not advisable to use it.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>&quot;&quot; </translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation></translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation></translation>
</message>

View file

@ -386,12 +386,12 @@ Totaal resterende tijd %5</translation>
<translation>Synchronisatie-activiteit</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Kon het systeem-uitsluitingsbestand niet lezen</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Dit kan komen doordat de map ongemerkt opnieuw geconfigureerd is of doordat alle
Weet u zeker dat u deze bewerking wilt uitvoeren?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Verwijder alle bestanden?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Verwijder alle bestanden</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Bewaar bestanden</translation>
</message>
@ -637,22 +637,22 @@ Weet u zeker dat u deze bewerking wilt uitvoeren?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Geen E-Tag ontvangen van de server, controleer Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Server retourneerde verkeerde content-bandbreedte</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Verbindingstime-out</translation>
</message>
@ -1113,8 +1113,16 @@ We adviseren deze site niet te gebruiken.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Kon geen beveiligde verbinding maken. Wilt u een onversleutelde verbinding maken (niet aan te raden)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Kon geen beveiligde verbinding maken:
%1
Wilt u een onversleutelde verbinding maken (niet aanbevolen)?</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1314,27 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Synchronisatie afgebroken door gebruiker.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Geen E-Tag ontvangen van de server, controleer Proxy/Gateway</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Server retourneerde verkeerde content-bandbreedte</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Bestand %1 kan niet worden gedownload omdat de naam conflicteert met een lokaal bestand</translation>
</message>
@ -1334,12 +1342,17 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Bestand %1 kan niet worden gedownload omdat de naam conflicteert met een lokaal bestand</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation>Het bestand kon niet volledig worden gedownload.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Bestand %1 kan niet worden opgeslagen wegens een lokaal bestandsnaam conflict!</translation>
</message>
@ -1425,18 +1438,18 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Een lokaal bestand is gewijzigd tijdens het synchroniseren, wordt gesynchroniseerd als het volledig is aangekomen.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Synchronisatie afgebroken door gebruiker.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Het bestand is lokaal bewerkt, maar hoort bij een alleen-lezen share. Het originele bestand is teruggezet en uw bewerking staat in het conflicten bestand.</translation>
</message>
@ -1444,23 +1457,23 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Het bestand is lokaal bewerkt, maar hoort bij een alleen-lezen share. Het originele bestand is teruggezet en uw bewerking staat in het conflicten bestand.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Het lokale bestand werd verwijderd tijdens sync.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Lokaal bestand gewijzigd bij sync.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig)</translation>
</message>
@ -1538,17 +1551,29 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Het synchronisatie overzicht is gekopieerd naar het klembord.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Er zijn nu geen bestanden genegeerd vanwege eerdere fouten.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation>Er worden op dit moment geen bestanden genegeerd vanwege eerdere fouten er zijn geen downloads bezig.</translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
<translation><numerusform>%1 bestand genegeerd vanwege eerdere fouten.
Probeer opnieuw te synchroniseren.</numerusform><numerusform>%1 bestanden zijn genegeerd vanwege eerdere fouten.
Probeer opnieuw te synchroniseren.</numerusform></translation>
</source>
<translation><numerusform>%n bestand genegeerd wegens eerdere fouten.</numerusform><numerusform>%n bestanden genegeerd wegens eerdere fouten.
</numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation><numerusform>%n bestand gedeeltelijk gedownload.
</numerusform><numerusform>%n bestanden gedeeltelijk gedownload.
</numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation>Probeer deze opnieuw te synchen.</translation>
</message>
</context>
<context>
@ -1636,12 +1661,12 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Inlogfout</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>U moet inloggen als gebruiker %1</translation>
</message>
@ -2041,7 +2066,7 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<message>
<location filename="../src/mirall/syncengine.cpp" line="367"/>
<source>File is listed on the ignore list.</source>
<translation>De file is opgenomen op de negeerlijst.</translation>
<translation>Het bestand is opgenomen op de negeerlijst.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="370"/>
@ -2049,69 +2074,69 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<translation>Bestand bevat ongeldige karakters die niet tussen platformen gesynchroniseerd kunnen worden.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Niet in staat om een synchornisatie journaal te starten.</translation>
<translation>Niet in staat om een synchronisatie transactielog te starten.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Kan het sync journal niet openen</translation>
<translation>Kan het sync transactielog niet openen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Genegeerd vanwege de &quot;kies wat te synchen&quot; zwarte lijst</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Niet toegestaan, omdat u geen rechten hebt om sub-directories aan te maken in die directory</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Niet toegestaan, omdat u geen rechten hebt om een bovenliggende directories toe te voegen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Niet toegestaan, omdat u geen rechten hebt om bestanden in die directory toe te voegen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Niet toegestaan te verwijderen, herstellen</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation>Lokale bestanden en share-map verwijderd. </translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Verplaatsen niet toegestaan, object hersteld</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Verplaatsen niet toegestaan omdat %1 alleen-lezen is</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>bestemming</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>bron</translation>
</message>
@ -2380,7 +2405,7 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudsetuppage.ui" line="20"/>
<source>Server &amp;address:</source>
<translation>Server adres:</translation>
<translation>Server &amp;adres:</translation>
</message>
<message>
<location filename="../src/mirall/owncloudsetuppage.ui" line="36"/>
@ -2429,7 +2454,7 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudsetuppage.ui" line="120"/>
<source>&amp;Do not store password on local machine</source>
<translation>&amp;Geen wachtwoorden opslaan op de lokale machine.</translation>
<translation>&amp;Sla geen wachtwoorden op op de lokale machine.</translation>
</message>
<message>
<location filename="../src/mirall/owncloudsetuppage.ui" line="140"/>
@ -2439,12 +2464,12 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<message>
<location filename="../src/mirall/owncloudsetuppage.ui" line="147"/>
<source>Enter the url of the ownCloud you want to connect to (without http or https).</source>
<translation>Voer de url in van de ownCloud-server waarmee u wilt verbinden (met http of https).</translation>
<translation>Voer de URL in van de server waarmee u wilt verbinden (zonder http of https).</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetupnocredspage.ui" line="83"/>
<source>Server &amp;Address</source>
<translation>Server&amp;adres</translation>
<translation>Server &amp;adres</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetupnocredspage.ui" line="99"/>
@ -2560,7 +2585,7 @@ Probeer opnieuw te synchroniseren.</numerusform></translation>
<message>
<location filename="../src/mirall/progressdispatcher.cpp" line="44"/>
<source>Filesystem access error</source>
<translation>Bestandssysteem toegangsfout</translation>
<translation>Toegangsfout van het bestandssysteem</translation>
</message>
<message>
<location filename="../src/mirall/progressdispatcher.cpp" line="46"/>

View file

@ -386,12 +386,12 @@ Pozostało czasu %5</translation>
<translation>Aktywności synchronizacji</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="721"/>
<location filename="../src/mirall/folder.cpp" line="743"/>
<source>Could not read system exclude file</source>
<translation>Nie można przeczytać pliku wyłączeń</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="941"/>
<location filename="../src/mirall/folder.cpp" line="963"/>
<source>This sync would remove all the files in the sync folder '%1'.
This might be because the folder was silently reconfigured, or that all the file were manually removed.
Are you sure you want to perform this operation?</source>
@ -400,17 +400,17 @@ Mogło się tak zdarzyć z powodu niezauważonej rekonfiguracji folderu, lub te
Czy jesteś pewien/pewna, że chcesz wykonać operację?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="945"/>
<location filename="../src/mirall/folder.cpp" line="967"/>
<source>Remove All Files?</source>
<translation>Usunąć wszystkie pliki?</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="947"/>
<location filename="../src/mirall/folder.cpp" line="969"/>
<source>Remove all files</source>
<translation>Usuń wszystkie pliki</translation>
</message>
<message>
<location filename="../src/mirall/folder.cpp" line="948"/>
<location filename="../src/mirall/folder.cpp" line="970"/>
<source>Keep files</source>
<translation>Pozostaw pliki</translation>
</message>
@ -637,22 +637,22 @@ Czy jesteś pewien/pewna, że chcesz wykonać tę operację?</translation>
<context>
<name>Mirall::GETFileJob</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="506"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="507"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nie otrzymano E-Tag z serwera, sprawdź Proxy/Bramę</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="513"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="514"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Otrzymaliśmy inny E-Tag wznowienia. Spróbuje ponownie następnym razem.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="540"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="541"/>
<source>Server returned wrong content-range</source>
<translation>Serwer zwrócił błędną zakres zawartości</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="579"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="580"/>
<source>Connection Timeout</source>
<translation>Limit czasu połączenia</translation>
</message>
@ -1113,8 +1113,12 @@ Niezalecane jest jego użycie.</translation>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="227"/>
<source>Could not connect securely. Do you want to connect unencrypted instead (not recommended)?</source>
<translation>Nie udało się połączyć bezpiecznie. Czy chcesz nawiązać połączenie nieszyfrowane (niezalecane)?</translation>
<source>Could not connect securely:
%1
Do you want to connect unencrypted instead (not recommended)?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/wizard/owncloudsetuppage.cpp" line="228"/>
@ -1306,27 +1310,27 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>Mirall::PropagateDownloadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="357"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="363"/>
<source>Sync was aborted by user.</source>
<translation>Synchronizacja anulowane przez użytkownika.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="410"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nie otrzymano E-Tag z serwera, sprawdź Proxy/Bramę</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="416"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="422"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Otrzymaliśmy inny E-Tag wznowienia. Spróbuje ponownie następnym razem.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="438"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="444"/>
<source>Server returned wrong content-range</source>
<translation>Serwer zwrócił błędną zakres zawartości</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="489"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="495"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Nie można pobrać pliku %1 ze względu na konflikt nazwy pliku lokalnego!</translation>
</message>
@ -1334,12 +1338,17 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>Mirall::PropagateDownloadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="593"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="594"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Nie można pobrać pliku %1 ze względu na konflikt nazwy pliku lokalnego!</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="777"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="757"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="793"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
@ -1425,18 +1434,18 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>Mirall::PropagateUploadFileLegacy</name>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="165"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="224"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="171"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="230"/>
<source>Local file changed during sync, syncing once it arrived completely</source>
<translation>Lokalny plik zmienił się podczas synchronizacji, synchronizuję ponownie ponieważ dotarł w całości.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="168"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<source>Sync was aborted by user.</source>
<translation>Synchronizacja anulowane przez użytkownika.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_legacy.cpp" line="174"/>
<location filename="../src/mirall/propagator_legacy.cpp" line="180"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Plik był edytowany lokalnie ale jest częścią udziału z prawem tylko do odczytu. Został przywrócony i Twoja edycja jest w pliku konfliktu</translation>
</message>
@ -1444,23 +1453,23 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>Mirall::PropagateUploadFileQNAM</name>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="296"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="297"/>
<source>The file was edited locally but is part of a read only share. It is restored and your edit is in the conflict file.</source>
<translation>Plik był edytowany lokalnie ale jest częścią udziału z prawem tylko do odczytu. Został przywrócony i Twoja edycja jest w pliku konfliktu</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="327"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="328"/>
<source>The local file was removed during sync.</source>
<translation>Pliki lokalny został usunięty podczas synchronizacji.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="130"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="340"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="341"/>
<source>Local file changed during sync.</source>
<translation>Lokalny plik zmienił się podczas synchronizacji.</translation>
</message>
<message>
<location filename="../src/mirall/propagator_qnam.cpp" line="350"/>
<location filename="../src/mirall/propagator_qnam.cpp" line="351"/>
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
<translation>Serwer nie potwierdził ostatniego łańcucha danych. (Nie było żadnego e-tag-u)</translation>
</message>
@ -1538,16 +1547,27 @@ Niezalecane jest jego użycie.</translation>
<translation>Status synchronizacji został skopiowany do schowka.</translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="255"/>
<source>Currently no files are ignored because of previous errors.</source>
<translation>Obecnie nie ma plików, które ignorowane z powodu wcześniejszych błędów.</translation>
<location filename="../src/mirall/protocolwidget.cpp" line="262"/>
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="257"/>
<location filename="../src/mirall/protocolwidget.cpp" line="265"/>
<source>%n files are ignored because of previous errors.
Try to sync these again.</source>
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
<location filename="../src/mirall/protocolwidget.cpp" line="266"/>
<source>%n files are partially downloaded.
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
<location filename="../src/mirall/protocolwidget.cpp" line="267"/>
<source>Try to sync these again.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Mirall::SelectiveSyncDialog</name>
@ -1634,12 +1654,12 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>Mirall::ShibbolethCredentials</name>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>Login Error</source>
<translation>Błąd logowania</translation>
</message>
<message>
<location filename="../src/creds/shibbolethcredentials.cpp" line="285"/>
<location filename="../src/creds/shibbolethcredentials.cpp" line="297"/>
<source>You must sign in as user %1</source>
<translation>Musisz zalogować się jako użytkownik %1</translation>
</message>
@ -2047,69 +2067,69 @@ Niezalecane jest jego użycie.</translation>
<translation>Plik zawiera nieprawidłowe znaki, które nie mogą być synchronizowane wieloplatformowo.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="547"/>
<location filename="../src/mirall/syncengine.cpp" line="560"/>
<source>Unable to initialize a sync journal.</source>
<translation>Nie można zainicjować synchronizacji dziennika.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="628"/>
<location filename="../src/mirall/syncengine.cpp" line="641"/>
<source>Cannot open the sync journal</source>
<translation>Nie można otworzyć dziennika synchronizacji</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="860"/>
<location filename="../src/mirall/syncengine.cpp" line="867"/>
<location filename="../src/mirall/syncengine.cpp" line="873"/>
<location filename="../src/mirall/syncengine.cpp" line="880"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="885"/>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<source>Not allowed because you don&apos;t have permission to add sub-directories in that directory</source>
<translation>Nie masz uprawnień do dodawania podkatalogów w tym katalogu.</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="891"/>
<location filename="../src/mirall/syncengine.cpp" line="904"/>
<source>Not allowed because you don&apos;t have permission to add parent directory</source>
<translation>Nie masz uprawnień by dodać katalog nadrzędny</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="898"/>
<location filename="../src/mirall/syncengine.cpp" line="911"/>
<source>Not allowed because you don&apos;t have permission to add files in that directory</source>
<translation>Nie masz uprawnień by dodać pliki w tym katalogu</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="918"/>
<location filename="../src/mirall/syncengine.cpp" line="931"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Wgrywanie niedozwolone, ponieważ plik jest tylko do odczytu na serwerze, przywracanie</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="935"/>
<location filename="../src/mirall/syncengine.cpp" line="955"/>
<location filename="../src/mirall/syncengine.cpp" line="948"/>
<location filename="../src/mirall/syncengine.cpp" line="968"/>
<source>Not allowed to remove, restoring</source>
<translation>Brak uprawnień by usunąć, przywracanie</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="970"/>
<location filename="../src/mirall/syncengine.cpp" line="983"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1025"/>
<location filename="../src/mirall/syncengine.cpp" line="1038"/>
<source>Move not allowed, item restored</source>
<translation>Przenoszenie niedozwolone, obiekt przywrócony</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1034"/>
<location filename="../src/mirall/syncengine.cpp" line="1047"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Przenoszenie niedozwolone, ponieważ %1 jest tylko do odczytu</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the destination</source>
<translation>docelowy</translation>
</message>
<message>
<location filename="../src/mirall/syncengine.cpp" line="1035"/>
<location filename="../src/mirall/syncengine.cpp" line="1048"/>
<source>the source</source>
<translation>źródło</translation>
</message>

Some files were not shown because too many files have changed in this diff Show more