Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt16
-rw-r--r--ChangeLog35
-rw-r--r--Jenkinsfile58
-rw-r--r--README.md2
-rwxr-xr-xadmin/osx/macdeployqt.py3
-rw-r--r--admin/win/nsi/l10n/Basque.nsh4
-rw-r--r--admin/win/nsi/l10n/Catalan.nsh4
-rw-r--r--admin/win/nsi/l10n/Dutch.nsh2
-rw-r--r--admin/win/nsi/l10n/Japanese.nsh2
-rw-r--r--admin/win/nsi/l10n/Portuguese.nsh2
-rw-r--r--admin/win/nsi/l10n/Slovak.nsh4
-rw-r--r--admin/win/nsi/l10n/Spanish.nsh2
-rw-r--r--admin/win/nsi/l10n/languages.nsh10
-rw-r--r--admin/win/nsi/qt.conf7
m---------binary0
-rw-r--r--cmake/modules/DefineCMakeDefaults.cmake2
-rw-r--r--cmake/modules/DefineCompilerFlags.cmake2
-rw-r--r--cmake/modules/DefineInstallationPaths.cmake2
-rw-r--r--cmake/modules/DefinePlatformDefaults.cmake2
-rw-r--r--cmake/modules/FindCMocka.cmake2
-rw-r--r--cmake/modules/FindINotify.cmake2
-rw-r--r--cmake/modules/FindPackageVersionCheck.cmake2
-rw-r--r--cmake/modules/FindPdfLatex.cmake2
-rw-r--r--cmake/modules/FindQt5Keychain.cmake2
-rw-r--r--cmake/modules/FindQtKeychain.cmake2
-rw-r--r--cmake/modules/FindSphinx.cmake2
-rw-r--r--cmake/modules/MacroCopyFile.cmake2
-rw-r--r--cmake/modules/NSIS.template.in3
-rw-r--r--cmake/modules/QtVersionAbstraction.cmake12
-rw-r--r--cmake/modules/UseDoxygen.cmake2
-rw-r--r--cmake/modules/Warnings.cmake34
-rw-r--r--config.h.in2
-rw-r--r--csync/CMakeLists.txt2
-rw-r--r--csync/ConfigureChecks.cmake4
-rw-r--r--csync/src/CMakeLists.txt13
-rw-r--r--csync/src/csync.c13
-rw-r--r--csync/src/csync.h97
-rw-r--r--csync/src/csync_exclude.c12
-rw-r--r--csync/src/csync_exclude.h10
-rw-r--r--csync/src/csync_log.c43
-rw-r--r--csync/src/csync_misc.c1
-rw-r--r--csync/src/csync_misc.h2
-rw-r--r--csync/src/csync_private.h6
-rw-r--r--csync/src/csync_reconcile.c75
-rw-r--r--csync/src/csync_reconcile.h2
-rw-r--r--csync/src/csync_rename.cc5
-rw-r--r--csync/src/csync_rename.h10
-rw-r--r--csync/src/csync_statedb.c11
-rw-r--r--csync/src/csync_time.c22
-rw-r--r--csync/src/csync_time.h1
-rw-r--r--csync/src/csync_update.c136
-rw-r--r--csync/src/csync_util.c1
-rw-r--r--csync/src/csync_util.h6
-rw-r--r--csync/src/std/CMakeLists.txt6
-rw-r--r--csync/src/std/asprintf.c90
-rw-r--r--csync/src/std/asprintf.h60
-rw-r--r--csync/src/std/c_private.h13
-rw-r--r--csync/src/std/c_time.c4
-rw-r--r--csync/src/std/c_time.h1
-rw-r--r--csync/src/vio/csync_vio_local.h10
-rw-r--r--csync/src/vio/csync_vio_local_win.c24
-rw-r--r--csync/tests/csync_tests/check_csync_commit.c13
-rw-r--r--csync/tests/csync_tests/check_csync_create.c2
-rw-r--r--csync/tests/csync_tests/check_csync_exclude.c24
-rw-r--r--csync/tests/csync_tests/check_csync_init.c13
-rw-r--r--csync/tests/csync_tests/check_csync_log.c9
-rw-r--r--csync/tests/csync_tests/check_csync_statedb_load.c3
-rw-r--r--csync/tests/csync_tests/check_csync_statedb_query.c8
-rw-r--r--csync/tests/csync_tests/check_csync_update.c10
-rw-r--r--csync/tests/ownCloud/ownCloud/Test.pm2
-rwxr-xr-xcsync/tests/ownCloud/t7.pl31
-rwxr-xr-xcsync/tests/ownCloud/t_recall.pl10
-rw-r--r--csync/tests/std_tests/check_std_c_time.c1
-rw-r--r--csync/tests/vio_tests/check_vio.c3
-rw-r--r--csync/tests/vio_tests/check_vio_ext.c3
-rw-r--r--doc/architecture.rst6
-rw-r--r--doc/building.rst21
-rw-r--r--doc/conffile.rst2
-rw-r--r--doc/dev/sync-algorithm.md84
-rw-r--r--doc/introduction.rst2
-rwxr-xr-xdoc/scripts/htmlhelp.sh3
-rw-r--r--issue_template.md14
-rw-r--r--mirall.desktop.in475
-rw-r--r--shell_integration/dolphin/ownclouddolphinpluginhelper.cpp6
-rw-r--r--shell_integration/nautilus/CMakeLists.txt13
-rwxr-xr-xshell_integration/nautilus/createcajaplugin.sh7
-rw-r--r--shell_integration/nautilus/syncstate.py105
-rw-r--r--shell_integration/windows/OCContextMenu/OCClientInterface.h4
-rw-r--r--shell_integration/windows/OCContextMenu/OCContextMenu.rcbin4660 -> 4772 bytes
-rw-r--r--shell_integration/windows/OCContextMenu/OCContextMenu.vcxproj28
-rw-r--r--shell_integration/windows/OCOverlays/OCOverlay.cpp12
-rw-r--r--shell_integration/windows/OCOverlays/OCOverlay.rcbin5672 -> 5784 bytes
-rw-r--r--shell_integration/windows/OCOverlays/OCOverlays.vcxproj28
-rw-r--r--shell_integration/windows/OCUtil/CommunicationSocket.cpp2
-rw-r--r--shell_integration/windows/OCUtil/OCUtil.vcxproj9
-rw-r--r--shell_integration/windows/OCUtil/RemotePathChecker.cpp2
-rw-r--r--shell_integration/windows/OCUtil/RemotePathChecker.h2
-rw-r--r--shell_integration/windows/OCUtil/StringUtil.cpp2
-rw-r--r--shell_integration/windows/OCUtil/StringUtil.h2
-rw-r--r--shell_integration/windows/OCUtil/Version.h11
-rw-r--r--src/3rdparty/QProgressIndicator/LICENSE186
-rw-r--r--src/3rdparty/QProgressIndicator/QProgressIndicator.cpp43
-rw-r--r--src/3rdparty/QProgressIndicator/QProgressIndicator.h51
-rw-r--r--src/3rdparty/QProgressIndicator/README.md2
-rw-r--r--src/3rdparty/sqlite3/sqlite3.c6405
-rw-r--r--src/3rdparty/sqlite3/sqlite3.h688
-rw-r--r--src/cmd/cmd.cpp38
-rw-r--r--src/cmd/simplesslerrorhandler.cpp3
-rw-r--r--src/cmd/simplesslerrorhandler.h3
-rw-r--r--src/gui/CMakeLists.txt25
-rw-r--r--src/gui/accountmanager.cpp42
-rw-r--r--src/gui/accountmanager.h3
-rw-r--r--src/gui/accountsettings.cpp29
-rw-r--r--src/gui/accountsettings.h4
-rw-r--r--src/gui/accountsettings.ui127
-rw-r--r--src/gui/accountstate.cpp5
-rw-r--r--src/gui/accountstate.h3
-rw-r--r--src/gui/activitydata.cpp3
-rw-r--r--src/gui/activitydata.h3
-rw-r--r--src/gui/activitylistmodel.cpp3
-rw-r--r--src/gui/activitylistmodel.h3
-rw-r--r--src/gui/activitywidget.cpp5
-rw-r--r--src/gui/activitywidget.h3
-rw-r--r--src/gui/addcertificatedialog.cpp3
-rw-r--r--src/gui/addcertificatedialog.h3
-rw-r--r--src/gui/application.cpp22
-rw-r--r--src/gui/authenticationdialog.cpp3
-rw-r--r--src/gui/authenticationdialog.h3
-rw-r--r--src/gui/cocoainitializer.h3
-rw-r--r--src/gui/cocoainitializer_mac.mm3
-rw-r--r--src/gui/creds/credentialsfactory.cpp7
-rw-r--r--src/gui/creds/credentialsfactory.h3
-rw-r--r--src/gui/creds/shibboleth/shibbolethwebview.cpp18
-rw-r--r--src/gui/creds/shibboleth/shibbolethwebview.h3
-rw-r--r--src/gui/creds/shibbolethcredentials.cpp26
-rw-r--r--src/gui/creds/shibbolethcredentials.h4
-rw-r--r--src/gui/folder.cpp118
-rw-r--r--src/gui/folder.h22
-rw-r--r--src/gui/folderman.cpp143
-rw-r--r--src/gui/folderman.h133
-rw-r--r--src/gui/folderstatusdelegate.cpp4
-rw-r--r--src/gui/folderstatusmodel.cpp169
-rw-r--r--src/gui/folderstatusmodel.h3
-rw-r--r--src/gui/folderwatcher.cpp3
-rw-r--r--src/gui/folderwatcher.h3
-rw-r--r--src/gui/folderwatcher_linux.cpp3
-rw-r--r--src/gui/folderwatcher_linux.h3
-rw-r--r--src/gui/folderwatcher_mac.cpp3
-rw-r--r--src/gui/folderwatcher_mac.h3
-rw-r--r--src/gui/folderwatcher_qt.cpp3
-rw-r--r--src/gui/folderwatcher_qt.h3
-rw-r--r--src/gui/folderwatcher_win.cpp3
-rw-r--r--src/gui/folderwatcher_win.h3
-rw-r--r--src/gui/generalsettings.cpp3
-rw-r--r--src/gui/generalsettings.h3
-rw-r--r--src/gui/ignorelisteditor.cpp5
-rw-r--r--src/gui/ignorelisteditor.h3
-rw-r--r--src/gui/lockwatcher.cpp6
-rw-r--r--src/gui/lockwatcher.h3
-rw-r--r--src/gui/main.cpp2
-rw-r--r--src/gui/manifest-mingw.rc3
-rw-r--r--src/gui/networksettings.cpp3
-rw-r--r--src/gui/networksettings.h3
-rw-r--r--src/gui/notificationconfirmjob.cpp3
-rw-r--r--src/gui/notificationconfirmjob.h3
-rw-r--r--src/gui/notificationwidget.cpp3
-rw-r--r--src/gui/notificationwidget.h3
-rw-r--r--src/gui/ocsjob.cpp32
-rw-r--r--src/gui/ocsjob.h3
-rw-r--r--src/gui/ocsshareejob.cpp3
-rw-r--r--src/gui/ocsshareejob.h3
-rw-r--r--src/gui/ocssharejob.cpp3
-rw-r--r--src/gui/ocssharejob.h5
-rw-r--r--src/gui/openfilemanager.cpp3
-rw-r--r--src/gui/openfilemanager.h3
-rw-r--r--src/gui/owncloud.exe.manifest-mingw10
-rw-r--r--src/gui/owncloudgui.cpp288
-rw-r--r--src/gui/owncloudgui.h19
-rw-r--r--src/gui/owncloudsetupwizard.cpp45
-rw-r--r--src/gui/owncloudsetupwizard.h2
-rw-r--r--src/gui/protocolwidget.cpp5
-rw-r--r--src/gui/protocolwidget.h3
-rw-r--r--src/gui/proxyauthdialog.cpp3
-rw-r--r--src/gui/proxyauthdialog.h3
-rw-r--r--src/gui/proxyauthhandler.cpp3
-rw-r--r--src/gui/proxyauthhandler.h3
-rw-r--r--src/gui/quotainfo.cpp3
-rw-r--r--src/gui/quotainfo.h3
-rw-r--r--src/gui/selectivesyncdialog.cpp2
-rw-r--r--src/gui/servernotificationhandler.cpp3
-rw-r--r--src/gui/servernotificationhandler.h3
-rw-r--r--src/gui/settingsdialog.cpp3
-rw-r--r--src/gui/settingsdialog.h3
-rw-r--r--src/gui/settingsdialogmac.cpp3
-rw-r--r--src/gui/settingsdialogmac.h3
-rw-r--r--src/gui/sharedialog.cpp4
-rw-r--r--src/gui/sharedialog.h3
-rw-r--r--src/gui/sharee.cpp3
-rw-r--r--src/gui/sharee.h3
-rw-r--r--src/gui/sharelinkwidget.cpp29
-rw-r--r--src/gui/sharelinkwidget.h3
-rw-r--r--src/gui/sharemanager.cpp (renamed from src/gui/share.cpp)23
-rw-r--r--src/gui/sharemanager.h (renamed from src/gui/share.h)14
-rw-r--r--src/gui/sharepermissions.h3
-rw-r--r--src/gui/shareusergroupwidget.cpp17
-rw-r--r--src/gui/shareusergroupwidget.h3
-rw-r--r--src/gui/socketapi.cpp2
-rw-r--r--src/gui/sslbutton.cpp3
-rw-r--r--src/gui/sslbutton.h3
-rw-r--r--src/gui/synclogdialog.cpp3
-rw-r--r--src/gui/synclogdialog.h3
-rw-r--r--src/gui/syncrunfilelog.cpp12
-rw-r--r--src/gui/syncrunfilelog.h3
-rw-r--r--src/gui/thumbnailjob.cpp3
-rw-r--r--src/gui/thumbnailjob.h3
-rw-r--r--src/gui/tooltipupdater.cpp3
-rw-r--r--src/gui/tooltipupdater.h3
-rw-r--r--src/gui/updater/sparkleupdater.h3
-rw-r--r--src/gui/updater/sparkleupdater_mac.mm3
-rw-r--r--src/gui/updater/updater.cpp3
-rw-r--r--src/gui/updater/updater.h3
-rw-r--r--src/gui/wizard/abstractcredswizardpage.cpp3
-rw-r--r--src/gui/wizard/abstractcredswizardpage.h3
-rw-r--r--src/gui/wizard/owncloudadvancedsetuppage.ui6
-rw-r--r--src/gui/wizard/owncloudconnectionmethoddialog.cpp3
-rw-r--r--src/gui/wizard/owncloudconnectionmethoddialog.h3
-rw-r--r--src/gui/wizard/owncloudhttpcredspage.cpp16
-rw-r--r--src/gui/wizard/owncloudhttpcredspage.h3
-rw-r--r--src/gui/wizard/owncloudshibbolethcredspage.cpp3
-rw-r--r--src/gui/wizard/owncloudshibbolethcredspage.h3
-rw-r--r--src/gui/wizard/owncloudwizard.cpp23
-rw-r--r--src/gui/wizard/owncloudwizard.h4
-rw-r--r--src/libsync/CMakeLists.txt3
-rw-r--r--src/libsync/abstractnetworkjob.cpp2
-rw-r--r--src/libsync/accessmanager.cpp7
-rw-r--r--src/libsync/accessmanager.h3
-rw-r--r--src/libsync/account.cpp100
-rw-r--r--src/libsync/account.h79
-rw-r--r--src/libsync/accountfwd.h3
-rw-r--r--src/libsync/capabilities.cpp12
-rw-r--r--src/libsync/capabilities.h4
-rw-r--r--src/libsync/clientproxy.cpp4
-rw-r--r--src/libsync/clientproxy.h5
-rw-r--r--src/libsync/configfile.cpp7
-rw-r--r--src/libsync/connectionvalidator.cpp25
-rw-r--r--src/libsync/connectionvalidator.h17
-rw-r--r--src/libsync/cookiejar.cpp3
-rw-r--r--src/libsync/cookiejar.h3
-rw-r--r--src/libsync/creds/abstractcredentials.cpp3
-rw-r--r--src/libsync/creds/abstractcredentials.h4
-rw-r--r--src/libsync/creds/dummycredentials.cpp10
-rw-r--r--src/libsync/creds/dummycredentials.h4
-rw-r--r--src/libsync/creds/httpcredentials.cpp21
-rw-r--r--src/libsync/creds/httpcredentials.h1
-rw-r--r--src/libsync/creds/tokencredentials.cpp11
-rw-r--r--src/libsync/creds/tokencredentials.h1
-rw-r--r--src/libsync/discoveryphase.cpp55
-rw-r--r--src/libsync/discoveryphase.h16
-rw-r--r--src/libsync/excludedfiles.cpp28
-rw-r--r--src/libsync/excludedfiles.h7
-rw-r--r--src/libsync/filesystem.cpp6
-rw-r--r--src/libsync/filesystem.h3
-rw-r--r--src/libsync/networkjobs.cpp23
-rw-r--r--src/libsync/networkjobs.h6
-rw-r--r--src/libsync/owncloudpropagator.cpp77
-rw-r--r--src/libsync/owncloudpropagator.h27
-rw-r--r--src/libsync/owncloudtheme.cpp13
-rw-r--r--src/libsync/ownsql.cpp22
-rw-r--r--src/libsync/ownsql.h3
-rw-r--r--src/libsync/progressdispatcher.cpp47
-rw-r--r--src/libsync/progressdispatcher.h19
-rw-r--r--src/libsync/propagatedownload.cpp78
-rw-r--r--src/libsync/propagatedownload.h6
-rw-r--r--src/libsync/propagateremotedelete.cpp5
-rw-r--r--src/libsync/propagateremotedelete.h2
-rw-r--r--src/libsync/propagateremotemove.cpp52
-rw-r--r--src/libsync/propagateremotemove.h10
-rw-r--r--src/libsync/propagateupload.cpp464
-rw-r--r--src/libsync/propagateupload.h166
-rw-r--r--src/libsync/propagateuploadng.cpp489
-rw-r--r--src/libsync/propagateuploadv1.cpp375
-rw-r--r--src/libsync/propagatorjobs.cpp10
-rw-r--r--src/libsync/syncengine.cpp175
-rw-r--r--src/libsync/syncengine.h8
-rw-r--r--src/libsync/syncfileitem.h6
-rw-r--r--src/libsync/syncfilestatus.cpp7
-rw-r--r--src/libsync/syncfilestatus.h19
-rw-r--r--src/libsync/syncfilestatustracker.cpp141
-rw-r--r--src/libsync/syncfilestatustracker.h13
-rw-r--r--src/libsync/syncjournaldb.cpp210
-rw-r--r--src/libsync/syncjournaldb.h15
-rw-r--r--src/libsync/syncjournalfilerecord.cpp3
-rw-r--r--src/libsync/syncjournalfilerecord.h3
-rw-r--r--src/libsync/theme.cpp31
-rw-r--r--src/libsync/theme.h8
-rw-r--r--src/libsync/utility.cpp76
-rw-r--r--src/libsync/utility.h17
-rw-r--r--src/libsync/utility_mac.cpp3
-rw-r--r--src/libsync/utility_unix.cpp3
-rw-r--r--src/libsync/utility_win.cpp3
-rw-r--r--test/CMakeLists.txt7
-rw-r--r--test/manual/favlink/main.cpp3
-rw-r--r--test/mockserver/httpserver.cpp3
-rw-r--r--test/mockserver/httpserver.h3
-rw-r--r--test/mockserver/main.cpp3
-rwxr-xr-xtest/scripts/torture_create_files.pl3
-rwxr-xr-xtest/scripts/torture_gen_layout.pl3
-rw-r--r--test/syncenginetestutils.h870
-rw-r--r--test/testchecksumvalidator.cpp8
-rw-r--r--test/testchunkingng.cpp78
-rw-r--r--test/testconcaturl.cpp2
-rw-r--r--test/testfolderman.cpp3
-rw-r--r--test/testfolderwatcher.cpp8
-rw-r--r--test/testsyncengine.cpp219
-rw-r--r--test/testsyncfilestatustracker.cpp404
-rw-r--r--test/testutility.cpp10
-rw-r--r--test/testxmlparse.cpp8
-rw-r--r--translations/client_ca.ts1111
-rw-r--r--translations/client_cs.ts1073
-rw-r--r--translations/client_de.ts1071
-rw-r--r--translations/client_el.ts1159
-rw-r--r--translations/client_en.ts1057
-rw-r--r--translations/client_es.ts1079
-rw-r--r--translations/client_es_AR.ts1057
-rw-r--r--translations/client_et.ts1059
-rw-r--r--translations/client_eu.ts1067
-rw-r--r--translations/client_fa.ts1059
-rw-r--r--translations/client_fi.ts1071
-rw-r--r--translations/client_fr.ts1075
-rw-r--r--translations/client_gl.ts1069
-rw-r--r--translations/client_hu.ts1067
-rw-r--r--translations/client_it.ts1071
-rw-r--r--translations/client_ja.ts1103
-rw-r--r--translations/client_nb_NO.ts1159
-rw-r--r--translations/client_nl.ts1073
-rw-r--r--translations/client_pl.ts1143
-rw-r--r--translations/client_pt.ts1081
-rw-r--r--translations/client_pt_BR.ts1087
-rw-r--r--translations/client_ru.ts1081
-rw-r--r--translations/client_sk.ts1197
-rw-r--r--translations/client_sl.ts1158
-rw-r--r--translations/client_sr.ts1069
-rw-r--r--translations/client_sv.ts1077
-rw-r--r--translations/client_th.ts1185
-rw-r--r--translations/client_tr.ts1142
-rw-r--r--translations/client_uk.ts1069
-rw-r--r--translations/client_zh_CN.ts1104
-rw-r--r--translations/client_zh_TW.ts1069
348 files changed, 29083 insertions, 20595 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e3eb08bd3..a5eb52bab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 2.6)
cmake_policy(VERSION 2.8.0)
+if(POLICY CMP0020)
+ cmake_policy(SET CMP0020 NEW)
+endif()
project(client)
@@ -57,7 +60,7 @@ endif()
include(GNUInstallDirs)
include(DefineInstallationPaths)
-
+include(GenerateExportHeader)
include(GetGitRevisionDescription)
@@ -136,6 +139,13 @@ if(OWNCLOUD_RESTORE_RENAME)
add_definitions(-DOWNCLOUD_RESTORE_RENAME=1)
endif()
+# Disable shibboleth.
+# So the client can be built without QtWebKit
+option(NO_SHIBBOLETH "Build without Shibboleth support. Allow to build the client without QtWebKit" OFF)
+if(NO_SHIBBOLETH)
+ message("Compiling without shibboleth")
+ add_definitions(-DNO_SHIBBOLETH=1)
+endif()
if(APPLE)
set( SOCKETAPI_TEAM_IDENTIFIER_PREFIX "" CACHE STRING "SocketApi prefix (including a following dot) that must match the codesign key's TeamIdentifier/Organizational Unit" )
@@ -159,6 +169,9 @@ find_package(SQLite3 3.8.0 REQUIRED)
# On some OS, we want to use our own, not the system sqlite
if (USE_OUR_OWN_SQLITE3)
include_directories(BEFORE ${SQLITE3_INCLUDE_DIR})
+ if (WIN32)
+ add_definitions(-DSQLITE_API=__declspec\(dllimport\))
+ endif()
endif()
find_package(ZLIB)
@@ -173,6 +186,7 @@ add_definitions(-DUNICODE)
add_definitions(-D_UNICODE)
if( WIN32 )
add_definitions( -D__USE_MINGW_ANSI_STDIO=1 )
+add_definitions( -DNOMINMAX )
endif( WIN32 )
# Handle Translations, pick all client_* files from trans directory.
diff --git a/ChangeLog b/ChangeLog
index da1676c76..30848411c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,39 @@
ChangeLog
=========
-version 2.2.1 (release 2016-05-xx)
+
+version 2.2.4 (release 2016-09-27)
+* Dolphin Plugin: Use the Application name for the socket path (#5172)
+* SyncEngine: Fix renaming of folder when file are changed (#5195)
+* Selective Sync: Fix HTTP request loop and show error in view (#5154)
+* ConnectionValidator: properly handle error in status.php request (#5188)
+* Discovery: Set thread priority to low (#5017)
+* ExcludeFiles: Fix when the folder casing is not the same in the settings and in the FS
+* ShareLink: Ensure the password line edit is enabled (#5117)
+
+version 2.2.3 (release 2016-08-08)
+* SyncEngine: Fix detection of backup (#5104)
+* Fix bug with overriding URL in config (#5016)
+* Sharing: Fix bug with file names containing percent encodes (#5042, #5043)
+* Sharing: Permissions for federated shares on servers >=9.1 (#4996, #5001)
+* Overlays: Fix issues with file name casing on OS X and Windows
+* Windows: Skip symlinks and junctions again (#5019)
+* Only accept notification API Capability if endpoint is OCS-enabled (#5034)
+* Fix windows HiDPI (#4994)
+* SocketAPI: Use different pipe name to avoid unusual delay (#4977)
+* Tray: Add minimal mode as workaround and testing tool for Linux issues (#4985, #4990)
+* owncloudcmd: Fix --exclude regression #4979
+* Small memleak: Use the full file stat destructors (#4992)
+* Fix small QAction memleak (#5008)
+* Fix crash on shutting down during propagation (#4979)
+* Decrease memory usage during sync #4979
+* Setup csync logging earlier to get all log output (#4991)
+* Enable Shibboleth debug view with OWNCLOUD_SHIBBOLETH_DEBUG env
+
+version 2.2.2 (release 2016-06-21)
+* Excludes: Don't redundantly add the same exclude files (memleak) (#4967, #4988)
+* Excludes: Only log if the pattern was really logged. (#4989)
+
+version 2.2.1 (release 2016-06-06)
* Fix out of memory error when too many uploads happen (#4611)
* Fix display errors in progress display (#4803 #4856)
* LockWatcher: Remember to upload files after they become unlocked (#4865)
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..4809b440b
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,58 @@
+#!groovy
+
+node('CLIENT') {
+ stage 'Checkout'
+ checkout scm
+ sh '''git submodule update --init'''
+
+ stage 'Qt4'
+ sh '''rm -rf build
+ mkdir build
+ cd build
+ cmake -DUNIT_TESTING=1 -DBUILD_WITH_QT4=ON ..
+ make
+ ctest --output-on-failure'''
+
+ stage 'Qt4 - clang'
+ sh '''rm -rf build
+ mkdir build
+ cd build
+ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DUNIT_TESTING=1 -DBUILD_WITH_QT4=ON ..
+ make
+ ctest --output-on-failure'''
+
+ stage 'Qt5'
+ sh '''rm -rf build
+ mkdir build
+ cd build
+ cmake -DUNIT_TESTING=1 -DBUILD_WITH_QT4=OFF ..
+ make
+ ctest --output-on-failure'''
+
+ stage 'Qt5 - clang'
+ sh '''rm -rf build
+ mkdir build
+ cd build
+ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DUNIT_TESTING=1 -DBUILD_WITH_QT4=OFF ..
+ make
+ ctest --output-on-failure'''
+
+
+ stage 'Win32'
+ def win32 = docker.image('deepdiver/docker-owncloud-client-win32:latest')
+ win32.pull() // make sure we have the latest available from Docker Hub
+ win32.inside {
+ sh '''
+ rm -rf build-win32
+ mkdir build-win32
+ cd build-win32
+ ../admin/win/download_runtimes.sh
+ cmake .. -DCMAKE_TOOLCHAIN_FILE=../admin/win/Toolchain-mingw32-openSUSE.cmake -DWITH_CRASHREPORTER=ON
+ make -j4
+ make package
+ ctest .
+ '''
+ }
+}
+
+
diff --git a/README.md b/README.md
index cd568062c..f66160698 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ https://github.com/owncloud/client.
## Building the source code
-[Building the Client](http://doc.owncloud.org/desktop/2.0/building.html)
+[Building the Client](http://doc.owncloud.org/desktop/2.2/building.html)
in the ownCloud Desktop Client manual.
## Maintainers and Contributors
diff --git a/admin/osx/macdeployqt.py b/admin/osx/macdeployqt.py
index aab039388..6c1d241db 100755
--- a/admin/osx/macdeployqt.py
+++ b/admin/osx/macdeployqt.py
@@ -5,7 +5,8 @@
#
# ownCloud 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; version 2 of the License.
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
#
# ownCLoud is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
diff --git a/admin/win/nsi/l10n/Basque.nsh b/admin/win/nsi/l10n/Basque.nsh
index 89d75037a..0e02160d6 100644
--- a/admin/win/nsi/l10n/Basque.nsh
+++ b/admin/win/nsi/l10n/Basque.nsh
@@ -33,11 +33,11 @@ StrCpy $UNINSTALL_MESSAGEBOX "Ez dirudi ${APPLICATION_NAME} '$INSTDIR'.$ direkto
StrCpy $UNINSTALL_ABORT "Desinstalazioak erabiltzaileak bertan behera utzi du"
StrCpy $INIT_NO_QUICK_LAUNCH "Abiarazle Bizkorreko Lasterbidea (E/E)"
StrCpy $INIT_NO_DESKTOP "Mahaigaineko Lasterbidea (dagoena berridazten du)"
+StrCpy $UAC_ERROR_ELEVATE "Ezin izan da goratu, errorea:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Instalatzaileak administratzaile baimenak behar ditu, saiatu berriro"
StrCpy $INIT_INSTALLER_RUNNING "Instalatzailea dagoeneko martxan da."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Desinstalatzaile honek administratzaile baimenak behar ditu, saiatu berriro"
+StrCpy $UAC_ERROR_LOGON_SERVICE "Saioa hasteko zerbitzua ez dago martxan, bertan behera uzten!"
StrCpy $INIT_UNINSTALLER_RUNNING "Desinstalatzailea dagoeneko martxan da."
StrCpy $SectionGroup_Shortcuts "Lasterbideak"
StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
-StrCpy $UAC_ERROR_ELEVATE "Unable to elevate, error:"
-StrCpy $UAC_ERROR_LOGON_SERVICE "Logon service is not running, aborting!"
diff --git a/admin/win/nsi/l10n/Catalan.nsh b/admin/win/nsi/l10n/Catalan.nsh
index ecf87a34f..0c795f3df 100644
--- a/admin/win/nsi/l10n/Catalan.nsh
+++ b/admin/win/nsi/l10n/Catalan.nsh
@@ -9,6 +9,7 @@ StrCpy $PageReinstall_NEW_Field_3 "No instal·lar"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "Ja instal·lat"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Trieu la manera com voleu instal·lar ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Una versió més recent de ${APPLICATION_NAME} ja està instal.lada!! No es recomana instal.lar una versió més antiga. Si realment voleu instal.lar una versió més antiga, és millor primer desinstal.lar la versió actual. Seleccioni l'operació que desitjeu realitzar i feu clic a Següent per a continuar."
+StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} ja està instal·lat.$\n$\nSeleccioneu la operació que voleu fer i feu clic a Següent per continuar."
StrCpy $PageReinstall_SAME_Field_2 "Afegir/Reinstal.lar components"
StrCpy $PageReinstall_SAME_Field_3 "Desinstal.lar ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstal.lar ${APPLICATION_NAME}"
@@ -37,7 +38,6 @@ StrCpy $UAC_ERROR_ELEVATE "No es pot elevar, error:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Aquest instal·lador requereix accés d'administrador, intenteu-ho de nou"
StrCpy $INIT_INSTALLER_RUNNING "L'instal·lador ja s'està executant."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Aquest desinstal·lador requereix accés d'administrador, intenteu-ho de nou."
+StrCpy $UAC_ERROR_LOGON_SERVICE "El servei de inici de sessió no s'està executant, s'està abortant!"
StrCpy $INIT_UNINSTALLER_RUNNING "El desinstal·lador ja s'està executant."
StrCpy $SectionGroup_Shortcuts "Dreceres"
-StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
-StrCpy $UAC_ERROR_LOGON_SERVICE "Logon service is not running, aborting!"
diff --git a/admin/win/nsi/l10n/Dutch.nsh b/admin/win/nsi/l10n/Dutch.nsh
index e5bf94e2e..82f66b949 100644
--- a/admin/win/nsi/l10n/Dutch.nsh
+++ b/admin/win/nsi/l10n/Dutch.nsh
@@ -1,5 +1,5 @@
# Auto-generated - do not modify
-StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Toon opmerkingen bij deze uitgave"
+StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Toon opmerkingen bij deze versie"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Gevonden ${APPLICATION_EXECUTABLE} proces(sen) moet worden gestopt.$\nWilt u dat het installatieprogramma dat voor u doet?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Stoppen ${APPLICATION_EXECUTABLE} processen."
StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Het te stoppen proces is niet gevonden!"
diff --git a/admin/win/nsi/l10n/Japanese.nsh b/admin/win/nsi/l10n/Japanese.nsh
index 15b1030a4..52ae4c717 100644
--- a/admin/win/nsi/l10n/Japanese.nsh
+++ b/admin/win/nsi/l10n/Japanese.nsh
@@ -9,7 +9,7 @@ StrCpy $PageReinstall_NEW_Field_3 "ACXg[Ȃ"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "CXg["
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "${APPLICATION_NAME} ̃CXg[@I"
StrCpy $PageReinstall_OLD_Field_1 "${APPLICATION_NAME} ̍ŐVo[WłɃCXg[Ă܂B$\no[W̃CXg[͂߂܂Bo[W̃CXg[{ɕKvȏꍇ́A܂ŐVo[WACXg[ĂAo[WCXg[ĂB$\nIy[VIAւNbNB"
-StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ́A${VERSION} ɃCXg[Ă܂B$\n$\nsIAւNbNB"
+StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ́A${VERSION} łɃCXg[Ă܂B$\n$\nsIāAւNbNĂB"
StrCpy $PageReinstall_SAME_Field_2 "lj/ăCXg[R|[lg"
StrCpy $PageReinstall_SAME_Field_3 "${APPLICATION_NAME} ACXg["
StrCpy $UNINSTALLER_APPDATA_TITLE "${APPLICATION_NAME} ACXg["
diff --git a/admin/win/nsi/l10n/Portuguese.nsh b/admin/win/nsi/l10n/Portuguese.nsh
index e81e535fa..d85652bc4 100644
--- a/admin/win/nsi/l10n/Portuguese.nsh
+++ b/admin/win/nsi/l10n/Portuguese.nsh
@@ -2,7 +2,7 @@
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar notas de lançamento"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "Encontrados ${APPLICATION_EXECUTABLE} processo(s) em execução que precisa(m) de ser interrompido(s).$\nDeseja que o instalador o(s) termine por si?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "A terminar os processos de ${APPLICATION_EXECUTABLE}."
-StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Não foi encontrado nenhum processo para terminar!"
+StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Não foi encontrado o processo para terminar!"
StrCpy $PageReinstall_NEW_Field_1 "Está instalada no sistema uma versão antiga de ${APPLICATION_NAME}. É recomendado que desinstale a versão atual antes de instalar a mais recente. Selecione a operação que deseja executar e clique em $\"Seguinte$\" para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "Não desinstale"
diff --git a/admin/win/nsi/l10n/Slovak.nsh b/admin/win/nsi/l10n/Slovak.nsh
index 3abf2b249..16dcc2abd 100644
--- a/admin/win/nsi/l10n/Slovak.nsh
+++ b/admin/win/nsi/l10n/Slovak.nsh
@@ -9,6 +9,7 @@ StrCpy $PageReinstall_NEW_Field_3 "Neodintalova"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE "U je naintalovan"
StrCpy $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE "Vyberte si, ako chcete naintalova ${APPLICATION_NAME}."
StrCpy $PageReinstall_OLD_Field_1 "Novia verzia ${APPLICATION_NAME} je u naintalovan! Neodporam vm naintalova stariu verziu. Ak naozaj chcete naintalova tto stariu verziu, je lepie najprv odintalova aktulnu verziu. Vyberte operciu, ktor chcete vykona, a kliknite na tlaidlo alej pre pokraovanie."
+StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} je u naintalovan.$\n$\nVyberte operciu, ktor chcete vykona, a kliknite na tlaidlo alej pre pokraovanie."
StrCpy $PageReinstall_SAME_Field_2 "Prida/Preintalova komponenty"
StrCpy $PageReinstall_SAME_Field_3 "Odintalova ${APPLICATION_NAME}"
StrCpy $UNINSTALLER_APPDATA_TITLE "Odintalova ${APPLICATION_NAME}"
@@ -37,7 +38,6 @@ StrCpy $UAC_ERROR_ELEVATE "Nemono povi, chyba:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Tento intaltor vyaduje admin prstup, skste to znova"
StrCpy $INIT_INSTALLER_RUNNING "Intaltor je u spusten."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Tento odintaltor vyaduje admin prstup, skste to znova"
+StrCpy $UAC_ERROR_LOGON_SERVICE "Prihlasovacia sluba nebe! Preruuje sa."
StrCpy $INIT_UNINSTALLER_RUNNING "Odintaltor je u spusten."
StrCpy $SectionGroup_Shortcuts "Zstupcovia"
-StrCpy $PageReinstall_SAME_Field_1 "${APPLICATION_NAME} ${VERSION} is already installed.$\r$\nSelect the operation you want to perform and click Next to continue."
-StrCpy $UAC_ERROR_LOGON_SERVICE "Logon service is not running, aborting!"
diff --git a/admin/win/nsi/l10n/Spanish.nsh b/admin/win/nsi/l10n/Spanish.nsh
index dc96524be..2848e68c8 100644
--- a/admin/win/nsi/l10n/Spanish.nsh
+++ b/admin/win/nsi/l10n/Spanish.nsh
@@ -2,7 +2,7 @@
StrCpy $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING "Mostrar las notas de la versin"
StrCpy $ConfirmEndProcess_MESSAGEBOX_TEXT "El/los proceso/s ${APPLICATION_EXECUTABLE} debe/n ser detenidos.$\nQuiere que el instalador lo haga por usted?"
StrCpy $ConfirmEndProcess_KILLING_PROCESSES_TEXT "Deteniendo el/los proceso/s ${APPLICATION_EXECUTABLE}."
-StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Proceso para finalizar no encontrado!"
+StrCpy $ConfirmEndProcess_KILL_NOT_FOUND_TEXT "Proceso a finalizar no encontrado!"
StrCpy $PageReinstall_NEW_Field_1 "Una versin anterior de ${APPLICATION_NAME} se encuentra instalada en el sistema. Se recomienda de instalar la versin actual antes de instalar la nueva. Seleccione la operacion deseada y haga click en Siguiente para continuar."
StrCpy $PageReinstall_NEW_Field_2 "Desinstalar antes de instalar"
StrCpy $PageReinstall_NEW_Field_3 "No desinstalar"
diff --git a/admin/win/nsi/l10n/languages.nsh b/admin/win/nsi/l10n/languages.nsh
index 116cbcc2f..e008ac759 100644
--- a/admin/win/nsi/l10n/languages.nsh
+++ b/admin/win/nsi/l10n/languages.nsh
@@ -2,27 +2,27 @@
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro MUI_LANGUAGE "Estonian"
!insertmacro MUI_LANGUAGE "Turkish"
+!insertmacro MUI_LANGUAGE "PortugueseBR"
!insertmacro MUI_LANGUAGE "Slovenian"
!insertmacro MUI_LANGUAGE "SpanishInternational"
!insertmacro MUI_LANGUAGE "Dutch"
+!insertmacro MUI_LANGUAGE "Norwegian"
!insertmacro MUI_LANGUAGE "Hungarian"
!insertmacro MUI_LANGUAGE "Ukrainian"
!insertmacro MUI_LANGUAGE "French"
-!insertmacro MUI_LANGUAGE "Norwegian"
+!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Thai"
!insertmacro MUI_LANGUAGE "Finnish"
!insertmacro MUI_LANGUAGE "Basque"
!insertmacro MUI_LANGUAGE "Greek"
!insertmacro MUI_LANGUAGE "SimpChinese"
-!insertmacro MUI_LANGUAGE "PortugueseBR"
-!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro MUI_LANGUAGE "Italian"
!insertmacro MUI_LANGUAGE "Portuguese"
-!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "Czech"
!insertmacro MUI_LANGUAGE "Japanese"
!insertmacro MUI_LANGUAGE "Galician"
-!insertmacro MUI_LANGUAGE "Czech"
+!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "Slovak"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "Polish"
diff --git a/admin/win/nsi/qt.conf b/admin/win/nsi/qt.conf
new file mode 100644
index 000000000..799e1d89c
--- /dev/null
+++ b/admin/win/nsi/qt.conf
@@ -0,0 +1,7 @@
+[Paths]
+Prefix = .
+Plugins = .
+Binaries = .
+Imports = .
+Qml2Imports = .
+LibraryExecutables = .
diff --git a/binary b/binary
-Subproject d27d472817c88448800b24b07ebc6eb18f25d81
+Subproject 0d89ac776654472a19c099bdfe410d3a2d93049
diff --git a/cmake/modules/DefineCMakeDefaults.cmake b/cmake/modules/DefineCMakeDefaults.cmake
index ff6a99270..483722fdc 100644
--- a/cmake/modules/DefineCMakeDefaults.cmake
+++ b/cmake/modules/DefineCMakeDefaults.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/DefineCompilerFlags.cmake b/cmake/modules/DefineCompilerFlags.cmake
index 83333509f..c8e831caa 100644
--- a/cmake/modules/DefineCompilerFlags.cmake
+++ b/cmake/modules/DefineCompilerFlags.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/DefineInstallationPaths.cmake b/cmake/modules/DefineInstallationPaths.cmake
index fafad83c1..b1fb47d59 100644
--- a/cmake/modules/DefineInstallationPaths.cmake
+++ b/cmake/modules/DefineInstallationPaths.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/DefinePlatformDefaults.cmake b/cmake/modules/DefinePlatformDefaults.cmake
index e89e4db7e..91f659215 100644
--- a/cmake/modules/DefinePlatformDefaults.cmake
+++ b/cmake/modules/DefinePlatformDefaults.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindCMocka.cmake b/cmake/modules/FindCMocka.cmake
index 2dd9fc5f8..65a13a76d 100644
--- a/cmake/modules/FindCMocka.cmake
+++ b/cmake/modules/FindCMocka.cmake
@@ -32,7 +32,7 @@ find_library(CMOCKA_LIBRARY
NAMES
cmocka
PATHS
- ${CMOCKA_ROOT_DIR}/include
+ ${CMOCKA_ROOT_DIR}/lib
)
if (CMOCKA_LIBRARY)
diff --git a/cmake/modules/FindINotify.cmake b/cmake/modules/FindINotify.cmake
index d57a49fa7..736e3dce4 100644
--- a/cmake/modules/FindINotify.cmake
+++ b/cmake/modules/FindINotify.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindPackageVersionCheck.cmake b/cmake/modules/FindPackageVersionCheck.cmake
index 48eb223ef..7c026f362 100644
--- a/cmake/modules/FindPackageVersionCheck.cmake
+++ b/cmake/modules/FindPackageVersionCheck.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindPdfLatex.cmake b/cmake/modules/FindPdfLatex.cmake
index 259a5baba..82fb8c659 100644
--- a/cmake/modules/FindPdfLatex.cmake
+++ b/cmake/modules/FindPdfLatex.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindQt5Keychain.cmake b/cmake/modules/FindQt5Keychain.cmake
index 3156cc76b..809b9d659 100644
--- a/cmake/modules/FindQt5Keychain.cmake
+++ b/cmake/modules/FindQt5Keychain.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindQtKeychain.cmake b/cmake/modules/FindQtKeychain.cmake
index 15d38740a..6ef1cf7eb 100644
--- a/cmake/modules/FindQtKeychain.cmake
+++ b/cmake/modules/FindQtKeychain.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/FindSphinx.cmake b/cmake/modules/FindSphinx.cmake
index cde31fe22..953f626a5 100644
--- a/cmake/modules/FindSphinx.cmake
+++ b/cmake/modules/FindSphinx.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/MacroCopyFile.cmake b/cmake/modules/MacroCopyFile.cmake
index 8bdc52feb..210c7a427 100644
--- a/cmake/modules/MacroCopyFile.cmake
+++ b/cmake/modules/MacroCopyFile.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in
index c28d846fc..19a0cc305 100644
--- a/cmake/modules/NSIS.template.in
+++ b/cmake/modules/NSIS.template.in
@@ -411,6 +411,9 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
File "@CPACK_RESOURCE_FILE_LICENSE@"
;File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt
+ ;Qt config:
+ File "${NSI_PATH}\qt.conf"
+
;Qt stuff:
File "${QT_DLL_PATH}\Qt5Core.dll"
File "${QT_DLL_PATH}\Qt5Gui.dll"
diff --git a/cmake/modules/QtVersionAbstraction.cmake b/cmake/modules/QtVersionAbstraction.cmake
index 4d7bc4ebe..5bd853c84 100644
--- a/cmake/modules/QtVersionAbstraction.cmake
+++ b/cmake/modules/QtVersionAbstraction.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
@@ -22,12 +22,18 @@ if( Qt5Core_FOUND )
find_package(Qt5Test REQUIRED)
endif()
if(NOT TOKEN_AUTH_ONLY)
- find_package(Qt5WebKitWidgets REQUIRED)
- find_package(Qt5WebKit REQUIRED)
find_package(Qt5Widgets REQUIRED)
if(APPLE)
find_package(Qt5MacExtras REQUIRED)
endif(APPLE)
+
+ if(NOT NO_SHIBBOLETH)
+ find_package(Qt5WebKitWidgets)
+ find_package(Qt5WebKit)
+ if(NOT Qt5WebKitWidgets_FOUND)
+ message(FATAL_ERROR "Qt5WebKit required for Shibboleth. Use -DNO_SHIBBOLETH=1 to disable it.")
+ endif()
+ endif()
endif()
else( Qt5Core_FOUND )
diff --git a/cmake/modules/UseDoxygen.cmake b/cmake/modules/UseDoxygen.cmake
index ed1188ce0..86622f61c 100644
--- a/cmake/modules/UseDoxygen.cmake
+++ b/cmake/modules/UseDoxygen.cmake
@@ -1,4 +1,4 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
diff --git a/cmake/modules/Warnings.cmake b/cmake/modules/Warnings.cmake
index 51c7d8aa0..1ee7a9ea7 100644
--- a/cmake/modules/Warnings.cmake
+++ b/cmake/modules/Warnings.cmake
@@ -1,22 +1,24 @@
-# (c) 2014 Copyright ownCloud, Inc.
+# (c) 2014 Copyright ownCloud GmbH
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING* file.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-long-long")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-if(CMAKE_COMPILER_IS_GNUCXX)
- execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
- OUTPUT_VARIABLE GCC_VERSION)
- if(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
- else(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
+ OUTPUT_VARIABLE GCC_VERSION)
+ if(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
+ else(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
+ endif(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
- endif(GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
-else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
-endif(CMAKE_COMPILER_IS_GNUCXX)
+ endif()
-if(DEFINED MIRALL_FATAL_WARNINGS)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
-endif(DEFINED MIRALL_FATAL_WARNINGS)
+ if(DEFINED MIRALL_FATAL_WARNINGS)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+ endif(DEFINED MIRALL_FATAL_WARNINGS)
+endif()
diff --git a/config.h.in b/config.h.in
index 06a0a62c0..1e8f8ecdc 100644
--- a/config.h.in
+++ b/config.h.in
@@ -23,4 +23,6 @@
#cmakedefine SYSCONFDIR "@SYSCONFDIR@"
#cmakedefine SHAREDIR "@SHAREDIR@"
+#cmakedefine WITH_UNIT_TESTING 1
+
#endif
diff --git a/csync/CMakeLists.txt b/csync/CMakeLists.txt
index 114f6f030..d34926c59 100644
--- a/csync/CMakeLists.txt
+++ b/csync/CMakeLists.txt
@@ -41,6 +41,8 @@ endif (MEM_NULL_TESTS)
add_subdirectory(src)
if (UNIT_TESTING)
+ set(WITH_UNIT_TESTING ON)
+
find_package(CMocka)
if (CMOCKA_FOUND)
include(AddCMockaTest)
diff --git a/csync/ConfigureChecks.cmake b/csync/ConfigureChecks.cmake
index 94f612999..6d64d5a63 100644
--- a/csync/ConfigureChecks.cmake
+++ b/csync/ConfigureChecks.cmake
@@ -62,8 +62,4 @@ if (WIN32)
check_function_exists(__mingw_asprintf HAVE___MINGW_ASPRINTF)
endif(WIN32)
-if (UNIT_TESTING)
- set(WITH_UNIT_TESTING ON)
-endif (UNIT_TESTING)
-
set(CSYNC_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} CACHE INTERNAL "csync required system libraries")
diff --git a/csync/src/CMakeLists.txt b/csync/src/CMakeLists.txt
index 6f5fc6095..cb07377e9 100644
--- a/csync/src/CMakeLists.txt
+++ b/csync/src/CMakeLists.txt
@@ -81,6 +81,13 @@ set(csync_HDRS
# Statically include sqlite
if (USE_OUR_OWN_SQLITE3)
list(APPEND csync_SRCS ${SQLITE3_SOURCE})
+ if (WIN32)
+ # We want to export sqlite symbols from the ocsync DLL without
+ # having to patch both sqlite3.h and the amalgation sqlite3.c,
+ # so do the import/export magic manually through the build system.
+ remove_definitions(-DSQLITE_API=__declspec\(dllimport\))
+ add_definitions(-DSQLITE_API=__declspec\(dllexport\))
+ endif()
endif()
include_directories(
@@ -91,6 +98,12 @@ include_directories(
add_library(${CSYNC_LIBRARY} SHARED ${csync_SRCS})
#add_library(${CSYNC_LIBRARY}_static STATIC ${csync_SRCS})
+generate_export_header( ${CSYNC_LIBRARY}
+ BASE_NAME ${CSYNC_LIBRARY}
+ EXPORT_MACRO_NAME OCSYNC_EXPORT
+ EXPORT_FILE_NAME ocsynclib.h
+)
+
target_link_libraries(${CSYNC_LIBRARY} ${CSYNC_LINK_LIBRARIES})
#target_link_libraries(${CSYNC_LIBRARY}_static ${CSYNC_LINK_LIBRARIES})
diff --git a/csync/src/csync.c b/csync/src/csync.c
index 2f936608e..3aa2bc48c 100644
--- a/csync/src/csync.c
+++ b/csync/src/csync.c
@@ -30,7 +30,6 @@
#include <stdio.h>
#include <string.h>
#include <time.h>
-#include <unistd.h>
#include <sys/types.h>
#include <stdbool.h>
@@ -90,7 +89,7 @@ static int _data_cmp(const void *key, const void *data) {
return 0;
}
-void csync_create(CSYNC **csync, const char *local, const char *remote) {
+void csync_create(CSYNC **csync, const char *local) {
CSYNC *ctx;
size_t len = 0;
@@ -104,12 +103,6 @@ void csync_create(CSYNC **csync, const char *local, const char *remote) {
ctx->local.uri = c_strndup(local, len);
- /* remove trailing slashes */
- len = strlen(remote);
- while(len > 0 && remote[len - 1] == '/') --len;
-
- ctx->remote.uri = c_strndup(remote, len);
-
ctx->status_code = CSYNC_STATUS_OK;
ctx->current_fs = NULL;
@@ -195,7 +188,7 @@ int csync_update(CSYNC *ctx) {
ctx->current = REMOTE_REPLICA;
ctx->replica = ctx->remote.type;
- rc = csync_ftw(ctx, ctx->remote.uri, csync_walker, MAX_DEPTH);
+ rc = csync_ftw(ctx, "", csync_walker, MAX_DEPTH);
if (rc < 0) {
if(ctx->status_code == CSYNC_STATUS_OK) {
ctx->status_code = csync_errno_to_status(errno, CSYNC_STATUS_UPDATE_ERROR);
@@ -382,7 +375,6 @@ static int _csync_treewalk_visitor(void *obj, void *data) {
trav.inode = cur->inode;
trav.error_status = cur->error_status;
- trav.should_update_metadata = cur->should_update_metadata;
trav.has_ignored_files = cur->has_ignored_files;
trav.checksum = cur->checksum;
trav.checksumTypeId = cur->checksumTypeId;
@@ -576,7 +568,6 @@ int csync_destroy(CSYNC *ctx) {
SAFE_FREE(ctx->statedb.file);
SAFE_FREE(ctx->local.uri);
- SAFE_FREE(ctx->remote.uri);
SAFE_FREE(ctx->error_string);
#ifdef WITH_ICONV
diff --git a/csync/src/csync.h b/csync/src/csync.h
index 608d0e3a5..9bf21b7db 100644
--- a/csync/src/csync.h
+++ b/csync/src/csync.h
@@ -33,10 +33,10 @@
#define _CSYNC_H
#include "std/c_private.h"
+#include "ocsynclib.h"
#include <sys/stat.h>
#include <stdbool.h>
#include <stdint.h>
-#include <unistd.h>
#include <sys/types.h>
#include <config_csync.h>
@@ -125,20 +125,22 @@ typedef enum csync_status_codes_e CSYNC_STATUS;
* the csync state of a file.
*/
enum csync_instructions_e {
- CSYNC_INSTRUCTION_NONE = 0x00000000, /* Nothing to do (UPDATE|RECONCILE) */
- CSYNC_INSTRUCTION_EVAL = 0x00000001, /* There was changed compared to the DB (UPDATE) */
- CSYNC_INSTRUCTION_REMOVE = 0x00000002, /* The file need to be removed (RECONCILE) */
- CSYNC_INSTRUCTION_RENAME = 0x00000004, /* The file need to be renamed (RECONCILE) */
- CSYNC_INSTRUCTION_EVAL_RENAME= 0x00000800, /* The file is new, it is the destination of a rename (UPDATE) */
- CSYNC_INSTRUCTION_NEW = 0x00000008, /* The file is new compared to the db (UPDATE) */
- CSYNC_INSTRUCTION_CONFLICT = 0x00000010, /* The file need to be downloaded because it is a conflict (RECONCILE) */
- CSYNC_INSTRUCTION_IGNORE = 0x00000020, /* The file is ignored (UPDATE|RECONCILE) */
- CSYNC_INSTRUCTION_SYNC = 0x00000040, /* The file need to be pushed to the other remote (RECONCILE) */
- CSYNC_INSTRUCTION_STAT_ERROR = 0x00000080,
- CSYNC_INSTRUCTION_ERROR = 0x00000100,
- CSYNC_INSTRUCTION_TYPE_CHANGE = 0x0000200, /* Like NEW, but deletes the old entity first (RECONCILE)
- Used when the type of something changes from directory to file
- or back. */
+ CSYNC_INSTRUCTION_NONE = 0x00000000, /* Nothing to do (UPDATE|RECONCILE) */
+ CSYNC_INSTRUCTION_EVAL = 0x00000001, /* There was changed compared to the DB (UPDATE) */
+ CSYNC_INSTRUCTION_REMOVE = 0x00000002, /* The file need to be removed (RECONCILE) */
+ CSYNC_INSTRUCTION_RENAME = 0x00000004, /* The file need to be renamed (RECONCILE) */
+ CSYNC_INSTRUCTION_EVAL_RENAME = 0x00000800, /* The file is new, it is the destination of a rename (UPDATE) */
+ CSYNC_INSTRUCTION_NEW = 0x00000008, /* The file is new compared to the db (UPDATE) */
+ CSYNC_INSTRUCTION_CONFLICT = 0x00000010, /* The file need to be downloaded because it is a conflict (RECONCILE) */
+ CSYNC_INSTRUCTION_IGNORE = 0x00000020, /* The file is ignored (UPDATE|RECONCILE) */
+ CSYNC_INSTRUCTION_SYNC = 0x00000040, /* The file need to be pushed to the other remote (RECONCILE) */
+ CSYNC_INSTRUCTION_STAT_ERROR = 0x00000080,
+ CSYNC_INSTRUCTION_ERROR = 0x00000100,
+ CSYNC_INSTRUCTION_TYPE_CHANGE = 0x00000200, /* Like NEW, but deletes the old entity first (RECONCILE)
+ Used when the type of something changes from directory to file
+ or back. */
+ CSYNC_INSTRUCTION_UPDATE_METADATA = 0x00000400, /* If the etag has been updated and need to be writen to the db,
+ but without any propagation (UPDATE|RECONCILE) */
};
enum csync_ftw_type_e {
@@ -227,14 +229,14 @@ struct csync_vio_file_stat_s {
char *original_name; // only set if locale conversion fails
};
-csync_vio_file_stat_t *csync_vio_file_stat_new(void);
-csync_vio_file_stat_t *csync_vio_file_stat_copy(csync_vio_file_stat_t *file_stat);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_file_stat_new(void);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_file_stat_copy(csync_vio_file_stat_t *file_stat);
-void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
+void OCSYNC_EXPORT csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
-void csync_vio_file_stat_set_file_id( csync_vio_file_stat_t* dst, const char* src );
+void OCSYNC_EXPORT csync_vio_file_stat_set_file_id( csync_vio_file_stat_t* dst, const char* src );
-void csync_vio_set_file_id(char* dst, const char *src );
+void OCSYNC_EXPORT csync_vio_set_file_id(char* dst, const char *src );
/**
@@ -254,9 +256,6 @@ struct csync_tree_walk_file_s {
enum csync_ftw_type_e type;
enum csync_instructions_e instruction;
- /* For directories: If the etag has been updated and need to be writen on the db */
- int should_update_metadata;
-
/* For directories: Does it have children that were ignored (hidden or ignore pattern) */
int has_ignored_files;
@@ -318,7 +317,7 @@ typedef const char* (*csync_checksum_hook) (
*
* @param csync The context variable to allocate.
*/
-void csync_create(CSYNC **csync, const char *local, const char *remote);
+void OCSYNC_EXPORT csync_create(CSYNC **csync, const char *local);
/**
* @brief Initialize the file synchronizer.
@@ -327,7 +326,7 @@ void csync_create(CSYNC **csync, const char *local, const char *remote);
*
* @param ctx The context to initialize.
*/
-void csync_init(CSYNC *ctx, const char *db_file);
+void OCSYNC_EXPORT csync_init(CSYNC *ctx, const char *db_file);
/**
* @brief Update detection
@@ -336,7 +335,7 @@ void csync_init(CSYNC *ctx, const char *db_file);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_update(CSYNC *ctx);
+int OCSYNC_EXPORT csync_update(CSYNC *ctx);
/**
* @brief Reconciliation
@@ -345,7 +344,7 @@ int csync_update(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_reconcile(CSYNC *ctx);
+int OCSYNC_EXPORT csync_reconcile(CSYNC *ctx);
/**
* @brief Re-initializes the csync context
@@ -354,7 +353,7 @@ int csync_reconcile(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_commit(CSYNC *ctx);
+int OCSYNC_EXPORT csync_commit(CSYNC *ctx);
/**
* @brief Destroy the csync context
@@ -365,7 +364,7 @@ int csync_commit(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_destroy(CSYNC *ctx);
+int OCSYNC_EXPORT csync_destroy(CSYNC *ctx);
/**
* @brief Get the userdata saved in the context.
@@ -387,7 +386,7 @@ void *csync_get_userdata(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_userdata(CSYNC *ctx, void *userdata);
+int OCSYNC_EXPORT csync_set_userdata(CSYNC *ctx, void *userdata);
/**
* @brief Get the authentication callback set.
@@ -397,7 +396,7 @@ int csync_set_userdata(CSYNC *ctx, void *userdata);
* @return The authentication callback set or NULL if an error
* occurred.
*/
-csync_auth_callback csync_get_auth_callback(CSYNC *ctx);
+csync_auth_callback OCSYNC_EXPORT csync_get_auth_callback(CSYNC *ctx);
/**
* @brief Set the authentication callback.
@@ -408,7 +407,7 @@ csync_auth_callback csync_get_auth_callback(CSYNC *ctx);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
+int OCSYNC_EXPORT csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
/**
* @brief Set the log level.
@@ -417,14 +416,14 @@ int csync_set_auth_callback(CSYNC *ctx, csync_auth_callback cb);
*
* @return 0 on success, < 0 if an error occurred.
*/
-int csync_set_log_level(int level);
+int OCSYNC_EXPORT csync_set_log_level(int level);
/**
* @brief Get the log verbosity
*
* @return The log verbosity, -1 on error.
*/
-int csync_get_log_level(void);
+int OCSYNC_EXPORT csync_get_log_level(void);
/**
* @brief Get the logging callback set.
@@ -432,7 +431,7 @@ int csync_get_log_level(void);
* @return The logging callback set or NULL if an error
* occurred.
*/
-csync_log_callback csync_get_log_callback(void);
+csync_log_callback OCSYNC_EXPORT csync_get_log_callback(void);
/**
* @brief Set the logging callback.
@@ -441,14 +440,14 @@ csync_log_callback csync_get_log_callback(void);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_log_callback(csync_log_callback cb);
+int OCSYNC_EXPORT csync_set_log_callback(csync_log_callback cb);
/**
* @brief get the userdata set for the logging callback.
*
* @return The userdata or NULL.
*/
-void *csync_get_log_userdata(void);
+void OCSYNC_EXPORT *csync_get_log_userdata(void);
/**
* @brief Set the userdata passed to the logging callback.
@@ -457,13 +456,13 @@ void *csync_get_log_userdata(void);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_set_log_userdata(void *data);
+int OCSYNC_EXPORT csync_set_log_userdata(void *data);
/* Used for special modes or debugging */
-CSYNC_STATUS csync_get_status(CSYNC *ctx);
+CSYNC_STATUS OCSYNC_EXPORT csync_get_status(CSYNC *ctx);
/* Used for special modes or debugging */
-int csync_set_status(CSYNC *ctx, int status);
+int OCSYNC_EXPORT csync_set_status(CSYNC *ctx, int status);
typedef int csync_treewalk_visit_func(TREE_WALK_FILE* ,void*);
@@ -476,7 +475,7 @@ typedef int csync_treewalk_visit_func(TREE_WALK_FILE* ,void*);
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
+int OCSYNC_EXPORT csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
/**
* @brief Walk the remote file tree and call a visitor function for each file.
@@ -487,7 +486,7 @@ int csync_walk_local_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int fi
*
* @return 0 on success, less than 0 if an error occurred.
*/
-int csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
+int OCSYNC_EXPORT csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int filter);
/**
* @brief Get the csync status string.
@@ -496,7 +495,7 @@ int csync_walk_remote_tree(CSYNC *ctx, csync_treewalk_visit_func *visitor, int f
*
* @return A const pointer to a string with more precise status info.
*/
-const char *csync_get_status_string(CSYNC *ctx);
+const char OCSYNC_EXPORT *csync_get_status_string(CSYNC *ctx);
#ifdef WITH_ICONV
/**
@@ -506,7 +505,7 @@ const char *csync_get_status_string(CSYNC *ctx);
*
* @return 0 on success, or an iconv error number.
*/
-int csync_set_iconv_codec(const char *from);
+int OCSYNC_EXPORT csync_set_iconv_codec(const char *from);
#endif
/**
@@ -514,24 +513,24 @@ int csync_set_iconv_codec(const char *from);
*
* @param ctx The csync context.
*/
-void csync_request_abort(CSYNC *ctx);
+void OCSYNC_EXPORT csync_request_abort(CSYNC *ctx);
/**
* @brief Clears the abort flag. Can be called from another thread.
*
* @param ctx The csync context.
*/
-void csync_resume(CSYNC *ctx);
+void OCSYNC_EXPORT csync_resume(CSYNC *ctx);
/**
* @brief Checks for the abort flag, to be used from the modules.
*
* @param ctx The csync context.
*/
-int csync_abort_requested(CSYNC *ctx);
+int OCSYNC_EXPORT csync_abort_requested(CSYNC *ctx);
-char *csync_normalize_etag(const char *);
-time_t oc_httpdate_parse( const char *date );
+char OCSYNC_EXPORT *csync_normalize_etag(const char *);
+time_t OCSYNC_EXPORT oc_httpdate_parse( const char *date );
#ifdef __cplusplus
}
diff --git a/csync/src/csync_exclude.c b/csync/src/csync_exclude.c
index ff98748f1..a598893e5 100644
--- a/csync/src/csync_exclude.c
+++ b/csync/src/csync_exclude.c
@@ -28,7 +28,6 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <unistd.h>
#include "c_lib.h"
#include "c_private.h"
@@ -37,10 +36,16 @@
#include "csync_exclude.h"
#include "csync_misc.h"
+#ifdef _WIN32
+#include <io.h>
+#else
+#include <unistd.h>
+#endif
+
#define CSYNC_LOG_CATEGORY_NAME "csync.exclude"
#include "csync_log.h"
-#ifndef NDEBUG
+#ifndef WITH_UNIT_TESTING
static
#endif
int _csync_exclude_add(c_strlist_t **inList, const char *string) {
@@ -251,10 +256,11 @@ static CSYNC_EXCLUDE_TYPE _csync_excluded_common(c_strlist_t *excludes, const ch
if (blen > 1) {
if (bname[blen-1]== ' ') {
match = CSYNC_FILE_EXCLUDE_TRAILING_SPACE;
+ goto out;
} else if (bname[blen-1]== '.' ) {
match = CSYNC_FILE_EXCLUDE_INVALID_CHAR;
+ goto out;
}
- goto out;
}
if (csync_is_windows_reserved_word(bname)) {
diff --git a/csync/src/csync_exclude.h b/csync/src/csync_exclude.h
index ba2b1d321..f9f26547d 100644
--- a/csync/src/csync_exclude.h
+++ b/csync/src/csync_exclude.h
@@ -21,6 +21,8 @@
#ifndef _CSYNC_EXCLUDE_H
#define _CSYNC_EXCLUDE_H
+#include "ocsynclib.h"
+
enum csync_exclude_type_e {
CSYNC_NOT_EXCLUDED = 0,
CSYNC_FILE_SILENTLY_EXCLUDED,
@@ -34,8 +36,8 @@ enum csync_exclude_type_e {
};
typedef enum csync_exclude_type_e CSYNC_EXCLUDE_TYPE;
-#ifdef NDEBUG
-int _csync_exclude_add(c_strlist_t **inList, const char *string);
+#ifdef WITH_UNIT_TESTING
+int OCSYNC_EXPORT _csync_exclude_add(c_strlist_t **inList, const char *string);
#endif
/**
@@ -46,7 +48,7 @@ int _csync_exclude_add(c_strlist_t **inList, const char *string);
*
* @return 0 on success, -1 if an error occurred with errno set.
*/
-int csync_exclude_load(const char *fname, c_strlist_t **list);
+int OCSYNC_EXPORT csync_exclude_load(const char *fname, c_strlist_t **list);
/**
* @brief Check if the given path should be excluded in a traversal situation.
@@ -72,7 +74,7 @@ CSYNC_EXCLUDE_TYPE csync_excluded_traversal(c_strlist_t *excludes, const char *p
* @param filetype
* @return
*/
-CSYNC_EXCLUDE_TYPE csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype);
+CSYNC_EXCLUDE_TYPE OCSYNC_EXPORT csync_excluded_no_ctx(c_strlist_t *excludes, const char *path, int filetype);
#endif /* _CSYNC_EXCLUDE_H */
/**
diff --git a/csync/src/csync_log.c b/csync/src/csync_log.c
index d5f34aa12..159ce2a83 100644
--- a/csync/src/csync_log.c
+++ b/csync/src/csync_log.c
@@ -23,12 +23,6 @@
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
-#ifndef _WIN32
-#include <sys/time.h>
-#else
-#include <sys/utime.h>
-#endif
-#include <time.h>
#include "csync_private.h"
#include "csync_log.h"
@@ -37,46 +31,11 @@ CSYNC_THREAD int csync_log_level;
CSYNC_THREAD csync_log_callback csync_log_cb;
CSYNC_THREAD void *csync_log_userdata;
-static int current_timestring(int hires, char *buf, size_t len)
-{
- char tbuf[64];
- struct timeval tv;
- struct tm *tm;
- time_t t;
-
- gettimeofday(&tv, NULL);
- t = (time_t) tv.tv_sec;
-
- tm = localtime(&t);
- if (tm == NULL) {
- return -1;
- }
-
- if (hires) {
- strftime(tbuf, sizeof(tbuf) - 1, "%Y/%m/%d %H:%M:%S", tm);
- snprintf(buf, len, "%s.%06ld", tbuf, (long) tv.tv_usec);
- } else {
- strftime(tbuf, sizeof(tbuf) - 1, "%Y/%m/%d %H:%M:%S", tm);
- snprintf(buf, len, "%s", tbuf);
- }
-
- return 0;
-}
-
static void csync_log_stderr(int verbosity,
const char *function,
const char *buffer)
{
- char date[64] = {0};
- int rc;
-
- rc = current_timestring(1, date, sizeof(date));
- if (rc == 0) {
- fprintf(stderr, "[%s, %d] %s:", date+5, verbosity, function);
- } else {
- fprintf(stderr, "[%d] %s", verbosity, function);
- }
-
+ fprintf(stderr, "[%d] %s", verbosity, function);
fprintf(stderr, " %s\n", buffer);
}
static void csync_log_function(int verbosity,
diff --git a/csync/src/csync_misc.c b/csync/src/csync_misc.c
index a93d42213..d23236113 100644
--- a/csync/src/csync_misc.c
+++ b/csync/src/csync_misc.c
@@ -39,7 +39,6 @@
# include <shlobj.h>
#else /* _WIN32 */
# include <pwd.h>
-# include <unistd.h>
#endif /* _WIN32 */
#include "c_lib.h"
diff --git a/csync/src/csync_misc.h b/csync/src/csync_misc.h
index 783ef4dd5..6b9f98418 100644
--- a/csync/src/csync_misc.h
+++ b/csync/src/csync_misc.h
@@ -36,7 +36,7 @@
#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
#endif
-int csync_fnmatch(__const char *__pattern, __const char *__name, int __flags);
+int csync_fnmatch(const char *pattern, const char *name, int flags);
/**
* @brief csync_errno_to_status - errno to csync status code
diff --git a/csync/src/csync_private.h b/csync/src/csync_private.h
index 779587033..a28eb8210 100644
--- a/csync/src/csync_private.h
+++ b/csync/src/csync_private.h
@@ -126,7 +126,6 @@ struct csync_s {
} local;
struct {
- char *uri;
c_rbtree_t *tree;
enum csync_replica_e type;
int read_from_db;
@@ -186,8 +185,6 @@ struct csync_file_stat_s {
mode_t mode; /* u32 */
unsigned int type : 4;
unsigned int child_modified : 1;
- unsigned int should_update_metadata : 1; /*specify that the etag, or the remote perm or fileid has
- changed and need to be updated on the db even for INSTRUCTION_NONE */
unsigned int has_ignored_files : 1; /* specify that a directory, or child directory contains ignored files */
char *destpath; /* for renames */
@@ -226,9 +223,6 @@ struct _csync_treewalk_context_s
};
typedef struct _csync_treewalk_context_s _csync_treewalk_context;
-
-time_t oc_httpdate_parse( const char *date );
-
void set_errno_from_http_errcode( int err );
/**
diff --git a/csync/src/csync_reconcile.c b/csync/src/csync_reconcile.c
index ab25b1c87..d336acd66 100644
--- a/csync/src/csync_reconcile.c
+++ b/csync/src/csync_reconcile.c
@@ -20,6 +20,7 @@
#include "config_csync.h"
+#include <assert.h>
#include "csync_private.h"
#include "csync_reconcile.h"
#include "csync_util.h"
@@ -64,7 +65,21 @@ static c_rbnode_t *_csync_check_ignored(c_rbtree_t *tree, const char *path, int
}
}
-/*
+/**
+ * The main function in the reconcile pass.
+ *
+ * It's called for each entry in the local and remote rbtrees by
+ * csync_reconcile()
+ *
+ * Before the reconcile phase the trees already know about changes
+ * relative to the sync journal. This function's job is to spot conflicts
+ * between local and remote changes and adjust the nodes accordingly.
+ *
+ * See doc/dev/sync-algorithm.md for an overview.
+ *
+ *
+ * Older detail comment:
+ *
* We merge replicas at the file level. The merged replica contains the
* superset of files that are on the local machine and server copies of
* the replica. In the case where the same file is in both the local
@@ -130,6 +145,7 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
break;
/* file has been removed on the opposite replica */
case CSYNC_INSTRUCTION_NONE:
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
if (cur->has_ignored_files) {
/* Do not remove a directory that has ignored files */
break;
@@ -181,13 +197,8 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
if(!other) {
cur->instruction = CSYNC_INSTRUCTION_NEW;
- if (cur->type == CSYNC_FTW_TYPE_DIR) {
- // For new directories we always want to update the etag once
- // the directory has been propagated. Otherwise the directory
- // could appear locally without being added to the database.
- cur->should_update_metadata = true;
- }
} else if (other->instruction == CSYNC_INSTRUCTION_NONE
+ || other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA
|| cur->type == CSYNC_FTW_TYPE_DIR) {
other->instruction = CSYNC_INSTRUCTION_RENAME;
other->destpath = c_strdup( cur->path );
@@ -195,7 +206,6 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
csync_vio_set_file_id( other->file_id, cur->file_id );
}
other->inode = cur->inode;
- other->should_update_metadata = true;
cur->instruction = CSYNC_INSTRUCTION_NONE;
} else if (other->instruction == CSYNC_INSTRUCTION_REMOVE) {
other->instruction = CSYNC_INSTRUCTION_RENAME;
@@ -205,12 +215,12 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
csync_vio_set_file_id( other->file_id, cur->file_id );
}
other->inode = cur->inode;
- other->should_update_metadata = true;
cur->instruction = CSYNC_INSTRUCTION_NONE;
} else if (other->instruction == CSYNC_INSTRUCTION_NEW) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "OOOO=> NEW detected in other tree!");
cur->instruction = CSYNC_INSTRUCTION_CONFLICT;
} else {
+ assert(other->type != CSYNC_FTW_TYPE_DIR);
cur->instruction = CSYNC_INSTRUCTION_NONE;
other->instruction = CSYNC_INSTRUCTION_SYNC;
}
@@ -222,13 +232,19 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
break;
}
} else {
- bool is_equal_files = false;
+ bool is_conflict = true;
/*
* file found on the other replica
*/
other = (csync_file_stat_t *) node->data;
switch (cur->instruction) {
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
+ if (other->instruction == CSYNC_INSTRUCTION_UPDATE_METADATA && ctx->current == LOCAL_REPLICA) {
+ // Remote wins, the SyncEngine will pick relevant local metadata since the remote tree is walked last.
+ cur->instruction = CSYNC_INSTRUCTION_NONE;
+ }
+ break;
case CSYNC_INSTRUCTION_EVAL_RENAME:
/* If the file already exist on the other side, we have a conflict.
Abort the rename and consider it is a new file. */
@@ -253,42 +269,39 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
case CSYNC_INSTRUCTION_EVAL:
if (other->type == CSYNC_FTW_TYPE_DIR &&
cur->type == CSYNC_FTW_TYPE_DIR) {
- is_equal_files = (other->modtime == cur->modtime);
+ // Folders of the same path are always considered equals
+ is_conflict = false;
} else {
- is_equal_files = ((other->size == cur->size) && (other->modtime == cur->modtime));
+ is_conflict = ((other->size != cur->size) || (other->modtime != cur->modtime));
// FIXME: do a binary comparision of the file here because of the following
// edge case:
// The files could still have different content, even though the mtime
// and size are the same.
}
- if (is_equal_files) {
- /* The files are considered equal. */
- cur->instruction = CSYNC_INSTRUCTION_NONE;
+ if (ctx->current == REMOTE_REPLICA) {
+ // If the files are considered equal, only update the DB with the etag from remote
+ cur->instruction = is_conflict ? CSYNC_INSTRUCTION_CONFLICT : CSYNC_INSTRUCTION_UPDATE_METADATA;
other->instruction = CSYNC_INSTRUCTION_NONE;
-
- /* update DB with new etag from remote */
- if (ctx->current == LOCAL_REPLICA) {
- other->should_update_metadata = true;
- } else {
- cur->should_update_metadata = true;
- }
- } else if(ctx->current == REMOTE_REPLICA) {
- cur->instruction = CSYNC_INSTRUCTION_CONFLICT;
- other->instruction = CSYNC_INSTRUCTION_NONE;
} else {
- cur->instruction = CSYNC_INSTRUCTION_NONE;
- other->instruction = CSYNC_INSTRUCTION_CONFLICT;
+ cur->instruction = CSYNC_INSTRUCTION_NONE;
+ other->instruction = is_conflict ? CSYNC_INSTRUCTION_CONFLICT : CSYNC_INSTRUCTION_UPDATE_METADATA;
}
break;
/* file on the other replica has not been modified */
case CSYNC_INSTRUCTION_NONE:
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
if (cur->type != other->type) {
// If the type of the entity changed, it's like NEW, but
// needs to delete the other entity first.
cur->instruction = CSYNC_INSTRUCTION_TYPE_CHANGE;
+ other->instruction = CSYNC_INSTRUCTION_NONE;
+ } else if (cur->type == CSYNC_FTW_TYPE_DIR) {
+ cur->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
+ other->instruction = CSYNC_INSTRUCTION_NONE;
} else {
cur->instruction = CSYNC_INSTRUCTION_SYNC;
+ other->instruction = CSYNC_INSTRUCTION_NONE;
}
break;
case CSYNC_INSTRUCTION_IGNORE:
@@ -310,7 +323,7 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
if(cur->type == CSYNC_FTW_TYPE_DIR)
{
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE,
- "%-20s %s dir: %s",
+ "%-30s %s dir: %s",
csync_instruction_str(cur->instruction),
repo,
cur->path);
@@ -318,7 +331,7 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
else
{
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE,
- "%-20s %s file: %s",
+ "%-30s %s file: %s",
csync_instruction_str(cur->instruction),
repo,
cur->path);
@@ -329,7 +342,7 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
if(cur->type == CSYNC_FTW_TYPE_DIR)
{
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG,
- "%-20s %s dir: %s",
+ "%-30s %s dir: %s",
csync_instruction_str(cur->instruction),
repo,
cur->path);
@@ -337,7 +350,7 @@ static int _csync_merge_algorithm_visitor(void *obj, void *data) {
else
{
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG,
- "%-20s %s file: %s",
+ "%-30s %s file: %s",
csync_instruction_str(cur->instruction),
repo,
cur->path);
diff --git a/csync/src/csync_reconcile.h b/csync/src/csync_reconcile.h
index 207727f45..f333adba6 100644
--- a/csync/src/csync_reconcile.h
+++ b/csync/src/csync_reconcile.h
@@ -50,7 +50,7 @@
*
* @todo Add an argument to set the algorithm to use.
*/
-int csync_reconcile_updates(CSYNC *ctx);
+int OCSYNC_EXPORT csync_reconcile_updates(CSYNC *ctx);
/**
* }@
diff --git a/csync/src/csync_rename.cc b/csync/src/csync_rename.cc
index f7c77a4ea..5cc43ce22 100644
--- a/csync/src/csync_rename.cc
+++ b/csync/src/csync_rename.cc
@@ -20,6 +20,7 @@
extern "C" {
#include "csync_private.h"
+#include "csync_rename.h"
}
#include <map>
@@ -93,5 +94,9 @@ char* csync_rename_adjust_path_source(CSYNC* ctx, const char* path)
return c_strdup(path);
}
+bool csync_rename_count(CSYNC *ctx) {
+ csync_rename_s* d = csync_rename_s::get(ctx);
+ return d->folder_renamed_from.size();
+}
}
diff --git a/csync/src/csync_rename.h b/csync/src/csync_rename.h
index a4f50a0ac..53968324c 100644
--- a/csync/src/csync_rename.h
+++ b/csync/src/csync_rename.h
@@ -27,11 +27,13 @@ extern "C" {
#endif
/* Return the final destination path of a given patch in case of renames */
-char *csync_rename_adjust_path(CSYNC *ctx, const char *path);
+char OCSYNC_EXPORT *csync_rename_adjust_path(CSYNC *ctx, const char *path);
/* Return the source of a given path in case of renames */
-char *csync_rename_adjust_path_source(CSYNC *ctx, const char *path);
-void csync_rename_destroy(CSYNC *ctx);
-void csync_rename_record(CSYNC *ctx, const char *from, const char *to);
+char OCSYNC_EXPORT *csync_rename_adjust_path_source(CSYNC *ctx, const char *path);
+void OCSYNC_EXPORT csync_rename_destroy(CSYNC *ctx);
+void OCSYNC_EXPORT csync_rename_record(CSYNC *ctx, const char *from, const char *to);
+/* Return the amount of renamed item recorded */
+bool OCSYNC_EXPORT csync_rename_count(CSYNC *ctx);
#ifdef __cplusplus
}
diff --git a/csync/src/csync_statedb.c b/csync/src/csync_statedb.c
index 519a45748..95b8e78e6 100644
--- a/csync/src/csync_statedb.c
+++ b/csync/src/csync_statedb.c
@@ -27,7 +27,6 @@
#include <sqlite3.h>
#include <stdio.h>
-#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -53,7 +52,7 @@
#define sqlite_open(A, B) sqlite3_open_v2(A,B, SQLITE_OPEN_READONLY+SQLITE_OPEN_NOMUTEX, NULL)
-#define SQLTM_TIME 150000
+#define SQLTM_TIME 150
#define SQLTM_COUNT 10
#define SQLITE_BUSY_HANDLED(F) if(1) { \
@@ -61,7 +60,7 @@
do { rc = F ; \
if( (rc == SQLITE_BUSY) || (rc == SQLITE_LOCKED) ) { \
n++; \
- usleep(SQLTM_TIME); \
+ csync_sleep(SQLTM_TIME); \
} \
}while( (n < SQLTM_COUNT) && ((rc == SQLITE_BUSY) || (rc == SQLITE_LOCKED))); \
}
@@ -519,8 +518,7 @@ c_strlist_t *csync_statedb_query(sqlite3 *db,
/* compile SQL program into a virtual machine, reattempteing if busy */
do {
if (busy_count) {
- /* sleep 100 msec */
- usleep(100000);
+ csync_sleep(100);
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "sqlite3_prepare: BUSY counter: %zu", busy_count);
}
err = sqlite3_prepare(db, statement, -1, &stmt, &tail);
@@ -547,8 +545,7 @@ c_strlist_t *csync_statedb_query(sqlite3 *db,
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "Busy counter has reached its maximum. Aborting this sql statement");
break;
}
- /* sleep 100 msec */
- usleep(100000);
+ csync_sleep(100);
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "sqlite3_step: BUSY counter: %zu", busy_count);
continue;
}
diff --git a/csync/src/csync_time.c b/csync/src/csync_time.c
index 48e33c190..85bdd5ff4 100644
--- a/csync/src/csync_time.c
+++ b/csync/src/csync_time.c
@@ -31,6 +31,11 @@
#include "csync_time.h"
#include "vio/csync_vio.h"
+#ifndef _WIN32
+#include <unistd.h>
+#include <sys/time.h>
+#endif
+
#define CSYNC_LOG_CATEGORY_NAME "csync.time"
#include "csync_log.h"
@@ -45,7 +50,13 @@
int csync_gettime(struct timespec *tp)
{
-#ifdef HAVE_CLOCK_GETTIME
+#if defined(_WIN32)
+ __int64 wintime;
+ GetSystemTimeAsFileTime((FILETIME*)&wintime);
+ wintime -= 116444736000000000ll; //1jan1601 to 1jan1970
+ tp->tv_sec = wintime / 10000000ll; //seconds
+ tp->tv_nsec = wintime % 10000000ll * 100; //nano-seconds
+#elif defined(HAVE_CLOCK_GETTIME)
return clock_gettime(CSYNC_CLOCK, tp);
#else
struct timeval tv;
@@ -62,4 +73,11 @@ int csync_gettime(struct timespec *tp)
#undef CSYNC_CLOCK
-/* vim: set ts=8 sw=2 et cindent: */
+void csync_sleep(unsigned int msecs)
+{
+#if defined(_WIN32)
+ Sleep(msecs);
+#else
+ usleep(msecs * 1000);
+#endif
+}
diff --git a/csync/src/csync_time.h b/csync/src/csync_time.h
index fe91baba5..1492bef8d 100644
--- a/csync/src/csync_time.h
+++ b/csync/src/csync_time.h
@@ -26,5 +26,6 @@
#include "csync_private.h"
int csync_gettime(struct timespec *tp);
+void csync_sleep(unsigned int msecs);
#endif /* _CSYNC_TIME_H */
diff --git a/csync/src/csync_update.c b/csync/src/csync_update.c
index 585a26672..2ac248d15 100644
--- a/csync/src/csync_update.c
+++ b/csync/src/csync_update.c
@@ -56,26 +56,13 @@ static uint64_t _hash_of_file(CSYNC *ctx, const char *file) {
if( ctx && file ) {
path = file;
- switch (ctx->current) {
- case LOCAL_REPLICA:
+ if (ctx->current == LOCAL_REPLICA) {
if (strlen(path) <= strlen(ctx->local.uri)) {
return 0;
}
path += strlen(ctx->local.uri) + 1;
- break;
- case REMOTE_REPLICA:
- if (strlen(path) <= strlen(ctx->remote.uri)) {
- return 0;
- }
- path += strlen(ctx->remote.uri) + 1;
- break;
- default:
- path = NULL;
- return 0;
- break;
}
len = strlen(path);
-
h = c_jhash64((uint8_t *) path, len, 0);
}
return h;
@@ -158,7 +145,19 @@ static bool _csync_mtime_equal(time_t a, time_t b)
return false;
}
-
+/**
+ * The main function of the discovery/update pass.
+ *
+ * It's called (indirectly) by csync_update(), once for each entity in the
+ * local filesystem and once for each entity in the server data.
+ *
+ * It has two main jobs:
+ * - figure out whether anything happened compared to the sync journal
+ * and set (primarily) the instruction flag accordingly
+ * - build the ctx->local.tree / ctx->remote.tree
+ *
+ * See doc/dev/sync-algorithm.md for an overview.
+ */
static int _csync_detect_update(CSYNC *ctx, const char *file,
const csync_vio_file_stat_t *fs, const int type) {
uint64_t h = 0;
@@ -176,25 +175,12 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
}
path = file;
- switch (ctx->current) {
- case LOCAL_REPLICA:
+ if (ctx->current == LOCAL_REPLICA) {
if (strlen(path) <= strlen(ctx->local.uri)) {
ctx->status_code = CSYNC_STATUS_PARAM_ERROR;
return -1;
}
path += strlen(ctx->local.uri) + 1;
- break;
- case REMOTE_REPLICA:
- if (strlen(path) <= strlen(ctx->remote.uri)) {
- ctx->status_code = CSYNC_STATUS_PARAM_ERROR;
- return -1;
- }
- path += strlen(ctx->remote.uri) + 1;
- break;
- default:
- path = NULL;
- ctx->status_code = CSYNC_STATUS_PARAM_ERROR;
- return -1;
}
len = strlen(path);
@@ -314,8 +300,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
}
if (checksumIdentical) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "NOTE: Checksums are identical, file did not actually change: %s", path);
- st->instruction = CSYNC_INSTRUCTION_NONE;
- st->should_update_metadata = true;
+ st->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
goto out;
}
}
@@ -341,18 +326,19 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Reading from database: %s", path);
ctx->remote.read_from_db = true;
}
- if (metadata_differ) {
- /* file id or permissions has changed. Which means we need to update them in the DB. */
- CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Need to update metadata for: %s", path);
- st->should_update_metadata = true;
- }
/* If it was remembered in the db that the remote dir has ignored files, store
* that so that the reconciler can make advantage of.
*/
if( ctx->current == REMOTE_REPLICA ) {
st->has_ignored_files = tmp->has_ignored_files;
}
- st->instruction = CSYNC_INSTRUCTION_NONE;
+ if (metadata_differ) {
+ /* file id or permissions has changed. Which means we need to update them in the DB. */
+ CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Need to update metadata for: %s", path);
+ st->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
+ } else {
+ st->instruction = CSYNC_INSTRUCTION_NONE;
+ }
} else {
enum csync_vio_file_type_e tmp_vio_type = CSYNC_VIO_FILE_TYPE_UNKNOWN;
@@ -488,7 +474,9 @@ out:
}
}
}
- if (st->instruction != CSYNC_INSTRUCTION_NONE && st->instruction != CSYNC_INSTRUCTION_IGNORE
+ if (st->instruction != CSYNC_INSTRUCTION_NONE
+ && st->instruction != CSYNC_INSTRUCTION_IGNORE
+ && st->instruction != CSYNC_INSTRUCTION_UPDATE_METADATA
&& type != CSYNC_FTW_TYPE_DIR) {
st->child_modified = 1;
}
@@ -615,16 +603,7 @@ int csync_walker(CSYNC *ctx, const char *file, const csync_vio_file_stat_t *fs,
static bool fill_tree_from_db(CSYNC *ctx, const char *uri)
{
- const char *path = NULL;
-
- if( strlen(uri) < strlen(ctx->remote.uri)+1) {
- CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "name does not contain remote uri!");
- return false;
- }
-
- path = uri + strlen(ctx->remote.uri)+1;
-
- if( csync_statedb_get_below_path(ctx, path) < 0 ) {
+ if( csync_statedb_get_below_path(ctx, uri) < 0 ) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "StateDB could not be read!");
return false;
}
@@ -666,12 +645,6 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
bool do_read_from_db = (ctx->current == REMOTE_REPLICA && ctx->remote.read_from_db);
- if (uri[0] == '\0') {
- errno = ENOENT;
- ctx->status_code = CSYNC_STATUS_PARAM_ERROR;
- goto error;
- }
-
read_from_db = ctx->remote.read_from_db;
// if the etag of this dir is still the same, its content is restored from the
@@ -685,16 +658,7 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
goto done;
}
- const char *uri_for_vio = uri;
- if (ctx->current == REMOTE_REPLICA) {
- uri_for_vio += strlen(ctx->remote.uri);
- if (strlen(uri_for_vio) > 0 && uri_for_vio[0] == '/') {
- uri_for_vio++; // cut leading slash
- }
- CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "URI without fuzz for %s is \"%s\"", uri, uri_for_vio);
- }
-
- if ((dh = csync_vio_opendir(ctx, uri_for_vio)) == NULL) {
+ if ((dh = csync_vio_opendir(ctx, uri)) == NULL) {
if (ctx->abort) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "Aborted!");
ctx->status_code = CSYNC_STATUS_ABORTED;
@@ -740,7 +704,6 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
}
while ((dirent = csync_vio_readdir(ctx, dh))) {
- size_t ulen = 0;
int flen;
int flag;
@@ -766,30 +729,16 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
continue;
}
- flen = asprintf(&filename, "%s/%s", uri, d_name);
- if (flen < 0) {
- csync_vio_file_stat_destroy(dirent);
- dirent = NULL;
- ctx->status_code = CSYNC_STATUS_MEMORY_ERROR;
- goto error;
- }
-
- /* Create relative path */
- switch (ctx->current) {
- case LOCAL_REPLICA:
- ulen = strlen(ctx->local.uri) + 1;
- break;
- case REMOTE_REPLICA:
- ulen = strlen(ctx->remote.uri) + 1;
- break;
- default:
- break;
+ if (uri[0] == '\0') {
+ filename = c_strdup(d_name);
+ flen = strlen(d_name);
+ } else {
+ flen = asprintf(&filename, "%s/%s", uri, d_name);
}
-
- if (((size_t)flen) < ulen) {
+ if (flen < 0 || !filename) {
csync_vio_file_stat_destroy(dirent);
dirent = NULL;
- ctx->status_code = CSYNC_STATUS_UNSUCCESSFUL;
+ ctx->status_code = CSYNC_STATUS_MEMORY_ERROR;
goto error;
}
@@ -859,10 +808,11 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
if (ctx->current_fs && !ctx->current_fs->child_modified
&& ctx->current_fs->instruction == CSYNC_INSTRUCTION_EVAL) {
- ctx->current_fs->instruction = CSYNC_INSTRUCTION_NONE;
- if (ctx->current == REMOTE_REPLICA) {
- ctx->current_fs->should_update_metadata = true;
- }
+ if (ctx->current == REMOTE_REPLICA) {
+ ctx->current_fs->instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
+ } else {
+ ctx->current_fs->instruction = CSYNC_INSTRUCTION_NONE;
+ }
}
if (ctx->current_fs && previous_fs && ctx->current_fs->has_ignored_files) {
@@ -876,12 +826,6 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
previous_fs->child_modified = ctx->current_fs->child_modified;
}
- if (flag == CSYNC_FTW_FLAG_DIR && ctx->current_fs
- && (ctx->current_fs->instruction == CSYNC_INSTRUCTION_EVAL ||
- ctx->current_fs->instruction == CSYNC_INSTRUCTION_NEW)) {
- ctx->current_fs->should_update_metadata = true;
- }
-
ctx->current_fs = previous_fs;
ctx->remote.read_from_db = read_from_db;
SAFE_FREE(filename);
diff --git a/csync/src/csync_util.c b/csync/src/csync_util.c
index b1746b17b..1bc09c35c 100644
--- a/csync/src/csync_util.c
+++ b/csync/src/csync_util.c
@@ -56,6 +56,7 @@ static const _instr_code_struct _instr[] =
{ "INSTRUCTION_STAT_ERR", CSYNC_INSTRUCTION_STAT_ERROR },
{ "INSTRUCTION_ERROR", CSYNC_INSTRUCTION_ERROR },
{ "INSTRUCTION_TYPE_CHANGE", CSYNC_INSTRUCTION_TYPE_CHANGE },
+ { "INSTRUCTION_UPDATE_METADATA", CSYNC_INSTRUCTION_UPDATE_METADATA },
{ NULL, CSYNC_INSTRUCTION_ERROR }
};
diff --git a/csync/src/csync_util.h b/csync/src/csync_util.h
index f8d02df7e..f65ada592 100644
--- a/csync/src/csync_util.h
+++ b/csync/src/csync_util.h
@@ -26,9 +26,9 @@
#include "csync_private.h"
-const char *csync_instruction_str(enum csync_instructions_e instr);
+const char OCSYNC_EXPORT *csync_instruction_str(enum csync_instructions_e instr);
-void csync_memstat_check(void);
+void OCSYNC_EXPORT csync_memstat_check(void);
-bool csync_file_locked_or_open( const char *dir, const char *fname);
+bool OCSYNC_EXPORT csync_file_locked_or_open( const char *dir, const char *fname);
#endif /* _CSYNC_UTIL_H */
diff --git a/csync/src/std/CMakeLists.txt b/csync/src/std/CMakeLists.txt
index 88456f354..91b8843a8 100644
--- a/csync/src/std/CMakeLists.txt
+++ b/csync/src/std/CMakeLists.txt
@@ -26,6 +26,12 @@ set(cstdlib_SRCS
c_time.c
)
+if(NOT HAVE_ASPRINTF AND NOT HAVE___MINGW_ASPRINTF)
+ list(APPEND cstdlib_SRCS
+ asprintf.c
+ )
+endif()
+
include_directories(
${CSTDLIB_PUBLIC_INCLUDE_DIRS}
${CSTDLIB_PRIVATE_INCLUDE_DIRS}
diff --git a/csync/src/std/asprintf.c b/csync/src/std/asprintf.c
new file mode 100644
index 000000000..8738df973
--- /dev/null
+++ b/csync/src/std/asprintf.c
@@ -0,0 +1,90 @@
+/*
+ https://raw.githubusercontent.com/littlstar/asprintf.c/20ce5207a4ecb24017b5a17e6cd7d006e3047146/asprintf.c
+
+ The MIT License (MIT)
+
+ Copyright (c) 2014 Little Star Media, Inc.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+*/
+
+/**
+ * `asprintf.c' - asprintf
+ *
+ * copyright (c) 2014 joseph werle <joseph.werle@gmail.com>
+ */
+
+#ifndef HAVE_ASPRINTF
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "asprintf.h"
+
+int
+asprintf (char **str, const char *fmt, ...) {
+ int size = 0;
+ va_list args;
+
+ // init variadic argumens
+ va_start(args, fmt);
+
+ // format and get size
+ size = vasprintf(str, fmt, args);
+
+ // toss args
+ va_end(args);
+
+ return size;
+}
+
+int
+vasprintf (char **str, const char *fmt, va_list args) {
+ int size = 0;
+ va_list tmpa;
+
+ // copy
+ va_copy(tmpa, args);
+
+ // apply variadic arguments to
+ // sprintf with format to get size
+ size = vsnprintf(NULL, size, fmt, tmpa);
+
+ // toss args
+ va_end(tmpa);
+
+ // return -1 to be compliant if
+ // size is less than 0
+ if (size < 0) { return -1; }
+
+ // alloc with size plus 1 for `\0'
+ *str = (char *) malloc(size + 1);
+
+ // return -1 to be compliant
+ // if pointer is `NULL'
+ if (NULL == *str) { return -1; }
+
+ // format string with original
+ // variadic arguments and set new size
+ size = vsprintf(*str, fmt, args);
+ return size;
+}
+
+#endif
diff --git a/csync/src/std/asprintf.h b/csync/src/std/asprintf.h
new file mode 100644
index 000000000..d6dd2e859
--- /dev/null
+++ b/csync/src/std/asprintf.h
@@ -0,0 +1,60 @@
+/*
+ https://raw.githubusercontent.com/littlstar/asprintf.c/20ce5207a4ecb24017b5a17e6cd7d006e3047146/asprintf.h
+
+ The MIT License (MIT)
+
+ Copyright (c) 2014 Little Star Media, Inc.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+*/
+
+/**
+ * `asprintf.h' - asprintf.c
+ *
+ * copyright (c) 2014 joseph werle <joseph.werle@gmail.com>
+ */
+
+#ifndef HAVE_ASPRINTF
+#ifndef ASPRINTF_H
+#define ASPRINTF_H 1
+
+#include <stdarg.h>
+
+/**
+ * Sets `char **' pointer to be a buffer
+ * large enough to hold the formatted string
+ * accepting a `va_list' args of variadic
+ * arguments.
+ */
+
+int
+vasprintf (char **, const char *, va_list);
+
+/**
+ * Sets `char **' pointer to be a buffer
+ * large enough to hold the formatted
+ * string accepting `n' arguments of
+ * variadic arguments.
+ */
+
+int
+asprintf (char **, const char *, ...);
+
+#endif
+#endif
diff --git a/csync/src/std/c_private.h b/csync/src/std/c_private.h
index a761506c5..09c1ea36b 100644
--- a/csync/src/std/c_private.h
+++ b/csync/src/std/c_private.h
@@ -31,14 +31,17 @@
#include <sys/stat.h>
#ifdef _WIN32
+#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <wchar.h>
+#else
+#include <unistd.h>
#endif
#include <errno.h>
-#ifdef _WIN32
+#ifdef __MINGW32__
#define EDQUOT 0
#define ENODATA 0
#ifndef S_IRGRP
@@ -65,6 +68,8 @@
#define nlink_t int
#define getuid() 0
#define geteuid() 0
+#elif defined(_WIN32)
+#define mode_t int
#else
#include <fcntl.h>
#endif
@@ -89,8 +94,12 @@ typedef struct stat csync_stat_t;
#define ENODATA EBADF
#endif
-#if !defined(HAVE_ASPRINTF) && defined(HAVE___MINGW_ASPRINTF)
+#if !defined(HAVE_ASPRINTF)
+#if defined(HAVE___MINGW_ASPRINTF)
#define asprintf __mingw_asprintf
+#else
+#include "asprintf.h"
+#endif
#endif
#ifndef HAVE_STRERROR_R
diff --git a/csync/src/std/c_time.c b/csync/src/std/c_time.c
index 561cd4763..ad43fed02 100644
--- a/csync/src/std/c_time.c
+++ b/csync/src/std/c_time.c
@@ -25,6 +25,10 @@
#include "c_path.h"
#include "c_time.h"
+#ifndef _WIN32
+#include <sys/time.h>
+#endif
+
struct timespec c_tspecdiff(struct timespec time1, struct timespec time0) {
struct timespec ret;
int xsec = 0;
diff --git a/csync/src/std/c_time.h b/csync/src/std/c_time.h
index a5718c1c9..aa8ef2f16 100644
--- a/csync/src/std/c_time.h
+++ b/csync/src/std/c_time.h
@@ -22,7 +22,6 @@
#define _C_TIME_H
#include <time.h>
-#include <sys/time.h>
/**
* @brief Calculate time difference
diff --git a/csync/src/vio/csync_vio_local.h b/csync/src/vio/csync_vio_local.h
index dcd12ad6f..294383121 100644
--- a/csync/src/vio/csync_vio_local.h
+++ b/csync/src/vio/csync_vio_local.h
@@ -21,12 +21,10 @@
#ifndef _CSYNC_VIO_LOCAL_H
#define _CSYNC_VIO_LOCAL_H
-#include <sys/time.h>
+csync_vio_handle_t OCSYNC_EXPORT *csync_vio_local_opendir(const char *name);
+int OCSYNC_EXPORT csync_vio_local_closedir(csync_vio_handle_t *dhandle);
+csync_vio_file_stat_t OCSYNC_EXPORT *csync_vio_local_readdir(csync_vio_handle_t *dhandle);
-csync_vio_handle_t *csync_vio_local_opendir(const char *name);
-int csync_vio_local_closedir(csync_vio_handle_t *dhandle);
-csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle);
-
-int csync_vio_local_stat(const char *uri, csync_vio_file_stat_t *buf);
+int OCSYNC_EXPORT csync_vio_local_stat(const char *uri, csync_vio_file_stat_t *buf);
#endif /* _CSYNC_VIO_LOCAL_H */
diff --git a/csync/src/vio/csync_vio_local_win.c b/csync/src/vio/csync_vio_local_win.c
index f842a61f5..fc4eea512 100644
--- a/csync/src/vio/csync_vio_local_win.c
+++ b/csync/src/vio/csync_vio_local_win.c
@@ -23,7 +23,6 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <dirent.h>
#include <stdio.h>
#include "windows.h"
@@ -167,16 +166,20 @@ csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle) {
}
file_stat->name = c_utf8_from_locale(handle->ffd.cFileName);
+ file_stat->flags = CSYNC_VIO_FILE_FLAGS_NONE;
file_stat->fields |= CSYNC_VIO_FILE_STAT_FIELDS_TYPE;
- if ( (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
- && (handle->ffd.dwReserved0 & IO_REPARSE_TAG_SYMLINK)
- // The SIS or DEDUP flag points to a MS deduplication feature of
- // certain file storage products. It is not a normal symlink
- // that should be ignored.
- && (! (handle->ffd.dwReserved0 & IO_REPARSE_TAG_SIS))
- && (! (handle->ffd.dwReserved0 & IO_REPARSE_TAG_DEDUP)) ) {
- file_stat->flags = CSYNC_VIO_FILE_FLAGS_SYMLINK;
- file_stat->type = CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK;
+ if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
+ // Detect symlinks, and treat junctions as symlinks too.
+ if (handle->ffd.dwReserved0 == IO_REPARSE_TAG_SYMLINK
+ || handle->ffd.dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT) {
+ file_stat->flags |= CSYNC_VIO_FILE_FLAGS_SYMLINK;
+ file_stat->type = CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK;
+ } else {
+ // The SIS and DEDUP reparse points should be treated as
+ // regular files. We don't know about the other ones yet,
+ // but will also treat them normally for now.
+ file_stat->type = CSYNC_VIO_FILE_TYPE_REGULAR;
+ }
} else if (handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_DEVICE
|| handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_OFFLINE
|| handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY) {
@@ -187,7 +190,6 @@ csync_vio_file_stat_t *csync_vio_local_readdir(csync_vio_handle_t *dhandle) {
file_stat->type = CSYNC_VIO_FILE_TYPE_REGULAR;
}
- file_stat->flags = CSYNC_VIO_FILE_FLAGS_NONE;
/* Check for the hidden flag */
if( handle->ffd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN ) {
file_stat->flags |= CSYNC_VIO_FILE_FLAGS_HIDDEN;
diff --git a/csync/tests/csync_tests/check_csync_commit.c b/csync/tests/csync_tests/check_csync_commit.c
index 7461232b3..16c89bf9e 100644
--- a/csync/tests/csync_tests/check_csync_commit.c
+++ b/csync/tests/csync_tests/check_csync_commit.c
@@ -30,10 +30,7 @@ static int setup(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
*state = csync;
@@ -47,10 +44,7 @@ static int setup_module(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
- csync_create(&csync, "/tmp/check_csync1", "dummy://foo/bar");
+ csync_create(&csync, "/tmp/check_csync1");
csync_init(csync, "foo");
*state = csync;
@@ -70,9 +64,6 @@ static int teardown(void **state) {
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
*state = NULL;
return 0;
diff --git a/csync/tests/csync_tests/check_csync_create.c b/csync/tests/csync_tests/check_csync_create.c
index 5452e7702..082ef26b8 100644
--- a/csync/tests/csync_tests/check_csync_create.c
+++ b/csync/tests/csync_tests/check_csync_create.c
@@ -42,7 +42,7 @@ static void check_csync_create(void **state)
(void) state; /* unused */
- csync_create(&csync, "/tmp/csync1", "/tmp/csync2");
+ csync_create(&csync, "/tmp/csync1");
rc = csync_destroy(csync);
assert_int_equal(rc, 0);
diff --git a/csync/tests/csync_tests/check_csync_exclude.c b/csync/tests/csync_tests/check_csync_exclude.c
index 2c24a3aff..5d5d0a82a 100644
--- a/csync/tests/csync_tests/check_csync_exclude.c
+++ b/csync/tests/csync_tests/check_csync_exclude.c
@@ -20,6 +20,7 @@
#include "config_csync.h"
#include <string.h>
#include <time.h>
+#include <sys/time.h>
#include "torture.h"
@@ -31,7 +32,7 @@
static int setup(void **state) {
CSYNC *csync;
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
*state = csync;
return 0;
@@ -41,7 +42,7 @@ static int setup_init(void **state) {
CSYNC *csync;
int rc;
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
rc = csync_exclude_load(EXCLUDE_LIST_FILE, &(csync->excludes));
assert_int_equal(rc, 0);
@@ -193,6 +194,20 @@ static void check_csync_excluded(void **state)
rc = csync_excluded_no_ctx(csync->excludes, "latex/songbook/my_manuscript.tex.tmp", CSYNC_FTW_TYPE_FILE);
assert_int_equal(rc, CSYNC_FILE_EXCLUDE_LIST);
+
+#ifdef _WIN32
+ rc = csync_excluded_no_ctx(csync->excludes, "file_trailing_space ", CSYNC_FTW_TYPE_FILE);
+ assert_int_equal(rc, CSYNC_FILE_EXCLUDE_TRAILING_SPACE);
+
+ rc = csync_excluded_no_ctx(csync->excludes, "file_trailing_dot.", CSYNC_FTW_TYPE_FILE);
+ assert_int_equal(rc, CSYNC_FILE_EXCLUDE_INVALID_CHAR);
+
+ rc = csync_excluded_no_ctx(csync->excludes, "AUX", CSYNC_FTW_TYPE_FILE);
+ assert_int_equal(rc, CSYNC_FILE_EXCLUDE_INVALID_CHAR);
+
+ rc = csync_excluded_no_ctx(csync->excludes, "file_invalid_char<", CSYNC_FTW_TYPE_FILE);
+ assert_int_equal(rc, CSYNC_FILE_EXCLUDE_INVALID_CHAR);
+#endif
}
static void check_csync_excluded_traversal(void **state)
@@ -319,13 +334,14 @@ static void check_csync_excluded_performance(void **state)
const int N = 10000;
int totalRc = 0;
+ int i = 0;
// Being able to use QElapsedTimer for measurement would be nice...
{
struct timeval before, after;
gettimeofday(&before, 0);
- for (int i = 0; i < N; ++i) {
+ for (i = 0; i < N; ++i) {
totalRc += csync_excluded_no_ctx(csync->excludes, "/this/is/quite/a/long/path/with/many/components", CSYNC_FTW_TYPE_DIR);
totalRc += csync_excluded_no_ctx(csync->excludes, "/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/29", CSYNC_FTW_TYPE_FILE);
}
@@ -343,7 +359,7 @@ static void check_csync_excluded_performance(void **state)
struct timeval before, after;
gettimeofday(&before, 0);
- for (int i = 0; i < N; ++i) {
+ for (i = 0; i < N; ++i) {
totalRc += csync_excluded_traversal(csync->excludes, "/this/is/quite/a/long/path/with/many/components", CSYNC_FTW_TYPE_DIR);
totalRc += csync_excluded_traversal(csync->excludes, "/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/29", CSYNC_FTW_TYPE_FILE);
}
diff --git a/csync/tests/csync_tests/check_csync_init.c b/csync/tests/csync_tests/check_csync_init.c
index aef472abf..41876d638 100644
--- a/csync/tests/csync_tests/check_csync_init.c
+++ b/csync/tests/csync_tests/check_csync_init.c
@@ -30,10 +30,7 @@ static int setup(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
*state = csync;
return 0;
@@ -46,10 +43,7 @@ static int setup_module(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
- csync_create(&csync, "/tmp/check_csync1", "dummy://foo/bar");
+ csync_create(&csync, "/tmp/check_csync1");
*state = csync;
return 0;
@@ -67,9 +61,6 @@ static int teardown(void **state) {
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
*state = NULL;
return 0;
diff --git a/csync/tests/csync_tests/check_csync_log.c b/csync/tests/csync_tests/check_csync_log.c
index 0047b6120..a4abfa9b4 100644
--- a/csync/tests/csync_tests/check_csync_log.c
+++ b/csync/tests/csync_tests/check_csync_log.c
@@ -19,7 +19,6 @@
*/
#include <sys/types.h>
#include <sys/stat.h>
-#include <unistd.h>
#include "torture.h"
@@ -34,10 +33,7 @@ static int setup(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
*state = csync;
@@ -56,9 +52,6 @@ static int teardown(void **state) {
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
-
*state = NULL;
return 0;
diff --git a/csync/tests/csync_tests/check_csync_statedb_load.c b/csync/tests/csync_tests/check_csync_statedb_load.c
index bd5899e91..c4b34b500 100644
--- a/csync/tests/csync_tests/check_csync_statedb_load.c
+++ b/csync/tests/csync_tests/check_csync_statedb_load.c
@@ -18,7 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <string.h>
-#include <unistd.h>
#include "torture.h"
@@ -37,7 +36,7 @@ static int setup(void **state) {
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
csync->statedb.file = c_strdup( TESTDB );
*state = csync;
diff --git a/csync/tests/csync_tests/check_csync_statedb_query.c b/csync/tests/csync_tests/check_csync_statedb_query.c
index 9493b7e08..603195e8c 100644
--- a/csync/tests/csync_tests/check_csync_statedb_query.c
+++ b/csync/tests/csync_tests/check_csync_statedb_query.c
@@ -34,15 +34,11 @@ static int setup(void **state)
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
rc = system("mkdir -p /tmp/check_csync");
assert_int_equal(rc, 0);
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
csync_init(csync, TESTDB);
sqlite3 *db = NULL;
@@ -110,8 +106,6 @@ static int teardown(void **state) {
assert_int_equal(rc, 0);
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
*state = NULL;
diff --git a/csync/tests/csync_tests/check_csync_update.c b/csync/tests/csync_tests/check_csync_update.c
index 07b16369e..6bd731947 100644
--- a/csync/tests/csync_tests/check_csync_update.c
+++ b/csync/tests/csync_tests/check_csync_update.c
@@ -91,9 +91,7 @@ static int setup(void **state)
assert_int_equal(rc, 0);
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
- csync_create(&csync, "/tmp/check_csync1", "/tmp/check_csync2");
+ csync_create(&csync, "/tmp/check_csync1");
csync_init(csync, TESTDB);
/* Create a new db with metadata */
@@ -124,9 +122,7 @@ static int setup_ftw(void **state)
assert_int_equal(rc, 0);
rc = system("mkdir -p /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("mkdir -p /tmp/check_csync2");
- assert_int_equal(rc, 0);
- csync_create(&csync, "/tmp", "/tmp");
+ csync_create(&csync, "/tmp");
csync_init(csync, TESTDB);
sqlite3 *db = NULL;
@@ -168,8 +164,6 @@ static int teardown_rm(void **state) {
assert_int_equal(rc, 0);
rc = system("rm -rf /tmp/check_csync1");
assert_int_equal(rc, 0);
- rc = system("rm -rf /tmp/check_csync2");
- assert_int_equal(rc, 0);
return 0;
}
diff --git a/csync/tests/ownCloud/ownCloud/Test.pm b/csync/tests/ownCloud/ownCloud/Test.pm
index 76c9a08f8..691b276d4 100644
--- a/csync/tests/ownCloud/ownCloud/Test.pm
+++ b/csync/tests/ownCloud/ownCloud/Test.pm
@@ -520,7 +520,7 @@ sub put_to_dir( $$;$ )
$targetUrl = $optionsRef->{url};
}
}
- $d->open($dir);
+ $d->open($targetUrl . $dir);
my $filename = $file;
$filename =~ s/^.*\///;
diff --git a/csync/tests/ownCloud/t7.pl b/csync/tests/ownCloud/t7.pl
index 19db53716..ba4d70e80 100755
--- a/csync/tests/ownCloud/t7.pl
+++ b/csync/tests/ownCloud/t7.pl
@@ -232,6 +232,37 @@ assertLocalAndRemoteDir( '', 0);
system("sqlite3 " . localDir().'.csync_journal.db .dump');
+#######################################################################
+printInfo( "multiple restores of a file create different conflict files" );
+
+system("sleep 1"); #make sure changes have different mtime
+
+system("echo 'modified_1' > ". localDir() . "readonlyDirectory_PERM_M_/canotBeModified_PERM_DVN_.data");
+
+#do the sync
+csync();
+assertCsyncJournalOk(localDir());
+
+system("sleep 1"); #make sure changes have different mtime
+
+system("echo 'modified_2' > ". localDir() . "readonlyDirectory_PERM_M_/canotBeModified_PERM_DVN_.data");
+
+#do the sync
+csync();
+assertCsyncJournalOk(localDir());
+
+# there should be two conflict files
+# TODO check that the conflict file has the right content
+my @conflicts = glob(localDir().'readonlyDirectory_PERM_M_/canotBeModified_PERM_DVN__conflict-*.data' );
+assert( scalar @conflicts == 2 );
+# remove the conflicts for the next assertLocalAndRemoteDir
+system("rm " . localDir().'readonlyDirectory_PERM_M_/canotBeModified_PERM_DVN__conflict-*.data' );
+
+### Both side should still be the same
+assertLocalAndRemoteDir( '', 0);
+
+
+
cleanup();
diff --git a/csync/tests/ownCloud/t_recall.pl b/csync/tests/ownCloud/t_recall.pl
index 008cad8fd..de0e17069 100755
--- a/csync/tests/ownCloud/t_recall.pl
+++ b/csync/tests/ownCloud/t_recall.pl
@@ -56,6 +56,8 @@ assertLocalAndRemoteDir( '', 0);
printInfo( "Testing with a .sys.admin#recall#" );
system("echo 'dir/file2.dat' > ". $tmpdir . ".sys.admin\#recall\#");
system("echo 'dir/file3.dat' >> ". $tmpdir . ".sys.admin\#recall\#");
+system("echo 'nonexistant' >> ". $tmpdir . ".sys.admin\#recall\#");
+system("echo '/tmp/t_recall/file4.dat' >> ". $tmpdir . ".sys.admin\#recall\#");
glob_put( "$tmpdir/.sys.admin\#recall\#", "" );
csync();
@@ -64,6 +66,14 @@ csync();
assert( -e glob(localDir().'dir/file2_.sys.admin#recall#-*.dat' ) );
assert( -e glob(localDir().'dir/file3_.sys.admin#recall#-*.dat' ) );
+# verify that the original files still exist
+assert( -e glob(localDir().'dir/file2.dat' ) );
+assert( -e glob(localDir().'dir/file3.dat' ) );
+
+assert( !-e glob(localDir().'nonexistant*' ) );
+assert( !-e glob('/tmp/t_recall/file4_.sys.admin#recall#-*.dat' ) );
+assert( -e glob('/tmp/t_recall/file4.dat' ) );
+
#Remove the recall file
unlink(localDir() . ".sys.admin#recall#");
diff --git a/csync/tests/std_tests/check_std_c_time.c b/csync/tests/std_tests/check_std_c_time.c
index 01580083b..df1abbe05 100644
--- a/csync/tests/std_tests/check_std_c_time.c
+++ b/csync/tests/std_tests/check_std_c_time.c
@@ -18,7 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <string.h>
-#include <unistd.h>
#include "torture.h"
diff --git a/csync/tests/vio_tests/check_vio.c b/csync/tests/vio_tests/check_vio.c
index 745e5f3b1..6d4afd7ef 100644
--- a/csync/tests/vio_tests/check_vio.c
+++ b/csync/tests/vio_tests/check_vio.c
@@ -22,7 +22,6 @@
#include <fcntl.h>
#include <string.h>
#include <errno.h>
-#include <unistd.h>
#include "torture.h"
@@ -49,7 +48,7 @@ static void setup(void **state)
rc = system("rm -rf /tmp/csync_test");
assert_int_equal(rc, 0);
- csync_create(&csync, "/tmp/csync1", "/tmp/csync2");
+ csync_create(&csync, "/tmp/csync1");
csync->replica = LOCAL_REPLICA;
diff --git a/csync/tests/vio_tests/check_vio_ext.c b/csync/tests/vio_tests/check_vio_ext.c
index 7d6663aad..f91328767 100644
--- a/csync/tests/vio_tests/check_vio_ext.c
+++ b/csync/tests/vio_tests/check_vio_ext.c
@@ -22,7 +22,6 @@
#include <fcntl.h>
#include <string.h>
#include <errno.h>
-#include <unistd.h>
#include <stdio.h>
#include "torture.h"
@@ -97,7 +96,7 @@ static void setup_testenv(void **state) {
statevar *mystate = malloc( sizeof(statevar) );
mystate->result = NULL;
- csync_create(&(mystate->csync), "/tmp/csync1", "/tmp/csync2");
+ csync_create(&(mystate->csync), "/tmp/csync1");
mystate->csync->replica = LOCAL_REPLICA;
diff --git a/doc/architecture.rst b/doc/architecture.rst
index 73b06276d..cf9730287 100644
--- a/doc/architecture.rst
+++ b/doc/architecture.rst
@@ -200,12 +200,6 @@ the database by comparing the files and their modification times. This process
ensures that both server and client are synchronized using the appropriate NTP
time before restarting the client following a database removal.
-Pressing ``F5`` while in the Account Settings Dialog enables you to "reset" the
-journal. This function can be used to recreate the journal database.
-
-.. note:: We recommend that you use this function only when advised to do so by
- ownCloud support staff.
-
Custom WebDAV Properties
------------------------
diff --git a/doc/building.rst b/doc/building.rst
index 833d0f994..61d1896e2 100644
--- a/doc/building.rst
+++ b/doc/building.rst
@@ -42,7 +42,8 @@ repositories`_ to see all the Linux client repos.
echo 'deb-src
http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud-client.list
-2. Install the dependencies using the following commands for your specific Linux distribution:
+2. Install the dependencies using the following commands for your specific Linux
+distribution. Make sure the repositories for source packages are enabled.
* Debian/Ubuntu: ``apt-get update; apt-get build-dep owncloud-client``
* openSUSE/SLES: ``zypper ref; zypper si -d owncloud-client``
@@ -65,11 +66,18 @@ recipes.
To set up your build environment for development using HomeBrew_:
-1. Add the ownCloud repository using the following command::
+1. Install Xcode
+2. Install Xcode command line tools::
+ xcode-select --install
+
+3. Install homebrew::
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+
+4. Add the ownCloud repository using the following command::
brew tap owncloud/owncloud
-2. Install any missing dependencies::
+5. Install any missing dependencies::
brew install $(brew deps owncloud-client)
@@ -79,6 +87,9 @@ To set up your build environment for development using HomeBrew_:
Where ``x.z`` is the current version of Qt 5 that brew has installed
on your machine.
+4. Install qtkeychain from here: git clone https://github.com/frankosterfeld/qtkeychain.git
+ make sure you make the same install prefix as later while building the client e.g. -
+ ``DCMAKE_INSTALL_PREFIX=/Path/to/client-install``
5. For compilation of the client, follow the :ref:`generic-build-instructions`.
@@ -233,6 +244,10 @@ To build the most up-to-date version of the client:
.. note:: On Mac OS X, you need to specify ``-DCMAKE_INSTALL_PREFIX=target``,
where ``target`` is a private location, i.e. in parallel to your build
dir by specifying ``../install``.
+
+ ..note:: qtkeychain must be compiled with the same prefix e.g CMAKE_INSTALL_PREFIX=/Users/path/to/client/install/
+
+ .. note:: Example:: cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5 -DCMAKE_INSTALL_PREFIX=/Users/path/to/client/install/ -D_OPENSSL_LIBDIR=/usr/local/opt/openssl/lib/ -D_OPENSSL_INCLUDEDIR=/usr/local/opt/openssl/include/ -DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/ -DNO_SHIBBOLETH=1
4. Call ``make``.
diff --git a/doc/conffile.rst b/doc/conffile.rst
index ecb1ab811..99922a2c5 100644
--- a/doc/conffile.rst
+++ b/doc/conffile.rst
@@ -7,7 +7,7 @@ On Microsoft Windows systems:
``%LOCALAPPDATA%\ownCloud\owncloud.cfg``
On MAC OS X systems:
- ``$HOME/Library/Application Support/ownCloud``
+ ``$HOME/Library/Application Support/ownCloud/owncloud.cfg``
The configuration file contains settings using the Microsoft Windows .ini file
diff --git a/doc/dev/sync-algorithm.md b/doc/dev/sync-algorithm.md
new file mode 100644
index 000000000..f16b0385b
--- /dev/null
+++ b/doc/dev/sync-algorithm.md
@@ -0,0 +1,84 @@
+Sync Algorithm
+==============
+
+Overview
+--------
+
+This is a technical description of the synchronization (sync) algorithm used by the ownCloud client.
+
+The sync algorithm is the thing that looks at the local and remote file system trees and the sync journal and decides which steps need to be taken to bring the two trees into synchronization. It's different from the propagator, whose job it is to actually execute these steps.
+
+
+Definitions
+-----------
+
+ - local tree: The files and directories on the local file system that shall be kept in sync with the remote tree.
+ - remote tree: The files and directories on the ownCloud server that shall be kept in sync with the local tree.
+ - sync journal (journal): A snapshot of file and directory metadata that the sync algorithm uses as a baseline to detect local or remote changes. Typically stored in a database.
+ - file and directory metadata:
+ - mtimes
+ - sizes
+ - inodes (journal and local only): Representation of filesystem object. Useful for rename detection.
+ - etags (journal and remote only): The server assigns a new etag when a file or directory changes.
+ - checksums (journal and remote only): Checksum algorithm applied to a file's contents.
+ - permissions (journal and remote only)
+
+
+Phases
+------
+
+### Discovery (aka Update)
+
+The discovery phase collects file and directory metadata from the local and remote trees, detecting differences between each tree and the journal.
+
+Afterwards, we have two trees that tell us what happened relative to the journal. But there may still be conflicts if something happened to an entity both locally and on the remote.
+
+ - Input: file system, server data, journal
+ - Output: two c_rbtree_t*, representing the local and remote trees
+
+ - Note on remote discovery: Since a change to a file on the server causes the etags of all parent folders to change, folders with an unchanged etag can be read from the journal directly and don't need to be walked into.
+
+ - Details
+ - csync_update() uses csync_ftw() on the local and remote trees, one after the other.
+ - csync_ftw() iterates through the entities in a tree and calls csync_walker() for each.
+ - csync_walker() calls _csync_detect_update() on each.
+ - _csync_detect_update() compares the item to its journal entry (if any) to detect new, changed or renamed files. This is the main function of this pass.
+
+
+
+### Reconcile
+
+The reconcile phase compares and adjusts the local and remote trees (in both directions), detecting conflicts.
+
+Afterwards, there are still two trees, but conflicts are marked in them.
+
+ - Input: c_rbtree_t* for the local and remote trees, journal (for some rename-related queries)
+ - Output: changes c_rbtree_t* in-place
+
+ - Details
+ - csync_reconcile() runs csync_reconcile_updates() for the local and remote trees, one after the other.
+ - csync_reconcile_updates() uses c_rbtree_walk() to iterate through the entries, calling _csync_merge_algorithm_visitor() for each.
+ - _csync_merge_algorithm_visitor() checks whether the other tree also has an entry for that node and merges the actions, detecting conflicts. This is the main function of this pass.
+
+
+### Post-Reconcile
+
+The post-reconcile phase merges the two trees into one set of SyncFileItems.
+
+Afterwards, there is a list of items that can tell the propagator what needs to be done.
+
+ - Input: c_rbtree_t* for the local and remote trees
+ - Output: QMap<QString, SyncFileItemPtr>
+
+ - Note that some "propagations", specifically cheap metadata-only updates, are already done at this stage.
+
+ - Details
+ - csync_walk_local_tree() and csync_walk_remote_tree() are called.
+ - They use _csync_walk_tree() to run SyncEngine::treewalkFile() on each entry.
+ - treewalkFile() creates and fills SyncFileItems for each entry, ensuring that each file only has a single instance. This is the main function of this pass.
+
+
+See Also
+--------
+
+An overview of the propagation steps is still missing. The sync protocol is documented at https://github.com/cernbox/smashbox/blob/master/protocol/protocol.md.
diff --git a/doc/introduction.rst b/doc/introduction.rst
index 7e7348bbf..83783b36b 100644
--- a/doc/introduction.rst
+++ b/doc/introduction.rst
@@ -12,7 +12,7 @@ Desktop Sync client enables you to:
Your files are always automatically synchronized between your ownCloud server
and local PC.
-Because of various technical issues, desktop sync clients older than 1.7 will
+Because of various technical issues, desktop sync clients older than 2.2.1 will
not allowed to connect and sync with the ownCloud 8.1+ server. It is highly
recommended to keep your client updated.
diff --git a/doc/scripts/htmlhelp.sh b/doc/scripts/htmlhelp.sh
index b2cba7d87..cfe919594 100755
--- a/doc/scripts/htmlhelp.sh
+++ b/doc/scripts/htmlhelp.sh
@@ -4,7 +4,8 @@
#
# 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; version 2 of the License.
+# 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
diff --git a/issue_template.md b/issue_template.md
index 051231186..3747d5917 100644
--- a/issue_template.md
+++ b/issue_template.md
@@ -1,3 +1,11 @@
+<!---
+Please try to only report a bug if it happens with the latest version
+The latest version can be seen by checking the ChangeLog: https://owncloud.org/changelog/desktop/
+
+For support try: https://central.owncloud.org/c/help/desktop-file-sync
+--->
+
+
### Expected behaviour
Tell us what should happen
@@ -20,7 +28,7 @@ PHP version:
ownCloud version:
-Storage backend:
+Storage backend (external storage):
### Client configuration
Client version:
@@ -38,11 +46,11 @@ logs.
```Template for output < 10 lines```
-1. Output of `owncloud --logwindow` or `owncloud --logfile log.txt`
+1. Client logfile: 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/2.2/troubleshooting.html#client-logfile )
2. Web server error log:
-3. ownCloud log (data/owncloud.log):
+3. Server logfile: ownCloud log (data/owncloud.log):
diff --git a/mirall.desktop.in b/mirall.desktop.in
index 159d0f530..dd825b453 100644
--- a/mirall.desktop.in
+++ b/mirall.desktop.in
@@ -101,6 +101,420 @@ X-GNOME-Autostart-Delay=3
# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+
+
+# Translations
+Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
+GenericName[oc]=Dorsièr de Sincronizacion
+Name[oc]=@APPLICATION_NAME@ sincronizacion del client
Icon[oc]=@APPLICATION_EXECUTABLE@
Comment[ar]=@APPLICATION_NAME@ زبون مزامنة مكتبي
GenericName[ar]=مزامنة المجلد
@@ -119,9 +533,11 @@ GenericName[de]=Ordner-Synchronisation
Name[de]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
Icon[de]=@APPLICATION_EXECUTABLE@
Comment[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
-GenericName[ja_JP]=フォルダ同期
+GenericName[ja_JP]=フォルダー同期
Name[ja_JP]=@APPLICATION_NAME@ デスクトップ同期クライアント
Icon[ja_JP]=@APPLICATION_EXECUTABLE@
+GenericName[el]=Συγχρονισμός φακέλου
+Icon[el]=@APPLICATION_EXECUTABLE@
Comment[en_GB]=@APPLICATION_NAME@ desktop synchronisation client
GenericName[en_GB]=Folder Sync
Name[en_GB]=@APPLICATION_NAME@ desktop sync client
@@ -134,10 +550,10 @@ Comment[de_DE]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
GenericName[de_DE]=Ordner-Synchronisation
Name[de_DE]=@APPLICATION_NAME@ Desktop-Synchronisationsclient
Icon[de_DE]=@APPLICATION_EXECUTABLE@
-Comment[bg_BG]=@APPLICATION_NAME@ клиент за десктоп синхронизация
-GenericName[bg_BG]=Синхронизиране на папката
-Name[bg_BG]=@APPLICATION_NAME@ клиент десктоп синхронизация
-Icon[bg_BG]=@APPLICATION_EXECUTABLE@
+Comment[pl]=@APPLICATION_NAME@ klient synchronizacji dla komputerów stacjonarnych
+GenericName[pl]=Folder Synchronizacji
+Name[pl]=@APPLICATION_NAME@ klient synchronizacji dla komputerów stacjonarnych
+Icon[pl]=@APPLICATION_EXECUTABLE@
Comment[fr]=@APPLICATION_NAME@ synchronisation du client
GenericName[fr]=Dossier de Synchronisation
Name[fr]=@APPLICATION_NAME@ synchronisation du client
@@ -169,7 +585,14 @@ Comment[nl]=@APPLICATION_NAME@ desktop synchronisatie client
GenericName[nl]=Mappen sync
Name[nl]=@APPLICATION_NAME@ desktop sync client
Icon[nl]=@APPLICATION_EXECUTABLE@
-Icon[pl]=@APPLICATION_EXECUTABLE@
+Comment[et_EE]=@APPLICATION_NAME@ sünkroonimise klient töölauale
+GenericName[et_EE]=Kaustade sünkroonimine
+Name[et_EE]=@APPLICATION_NAME@ sünkroonimise klient töölauale
+Icon[et_EE]=@APPLICATION_EXECUTABLE@
+Comment[bg_BG]=@APPLICATION_NAME@ клиент за десктоп синхронизация
+GenericName[bg_BG]=Синхронизиране на папката
+Name[bg_BG]=@APPLICATION_NAME@ клиент десктоп синхронизация
+Icon[bg_BG]=@APPLICATION_EXECUTABLE@
Comment[pt_BR]=@APPLICATION_NAME@ cliente de sincronização do computador
GenericName[pt_BR]=Sincronização de Pasta
Name[pt_BR]=@APPLICATION_NAME@ cliente de sincronização de desktop
@@ -178,10 +601,10 @@ Comment[cs_CZ]=@APPLICATION_NAME@ počítačový synchronizační klient
GenericName[cs_CZ]=Synchronizace adresáře
Name[cs_CZ]=@APPLICATION_NAME@ počítačový synchronizační klient
Icon[cs_CZ]=@APPLICATION_EXECUTABLE@
-Comment[ru]=Настольный клиент синхронизации @НАЗВАНИЕ_ПРИЛОЖЕНИЯ@
-GenericName[ru]=Синхронизация папки
-Name[ru]=Настольный клиент синхронизации @НАЗВАНИЕ_ПРИЛОЖЕНИЯ@
-Icon[ru]=@ВЫПОЛНЯЕМОЕ_ПРИЛОЖЕНИЕ@
+Comment[ru]=Настольный клиент синхронизации @APPLICATION_NAME@
+GenericName[ru]=Синхронизация каталогов
+Name[ru]=Настольный клиент синхронизации @APPLICATION_NAME@
+Icon[ru]=@APPLICATION_EXECUTABLE@
Comment[sl]=@APPLICATION_NAME@ ‒ Program za usklajevanje datotek z namizjem
GenericName[sl]=Usklajevanje map
Name[sl]=@APPLICATION_NAME@ ‒ Program za usklajevanje datotek z namizjem
@@ -190,13 +613,17 @@ Comment[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
GenericName[sq]=Njëkohësim Dosjesh
Name[sq]=Klient njëkohësimesh @APPLICATION_NAME@ për desktop
Icon[sq]=@APPLICATION_EXECUTABLE@
+Comment[fi_FI]=@APPLICATION_NAME@ työpöytäsynkronointisovellus
+GenericName[fi_FI]=Kansion synkronointi
+Name[fi_FI]=@APPLICATION_NAME@ työpöytäsynkronointisovellus
+Icon[fi_FI]=@APPLICATION_EXECUTABLE@
Comment[sv]=@APPLICATION_NAME@ desktop synkroniseringsklient
GenericName[sv]=Mappsynk
Name[sv]=@APPLICATION_NAME@ desktop synk-klient
Icon[sv]=@APPLICATION_EXECUTABLE@
-Comment[tr]=@APPLICATION_NAME@ masaüstü senkronizasyon istemcisi
-GenericName[tr]=Dosya Senkronizasyonu
-Name[tr]=@APPLICATION_NAME@ masaüstü senkronizasyon istemcisi
+Comment[tr]=@APPLICATION_NAME@ masaüstü eşitleme istemcisi
+GenericName[tr]=Dosya Eşitleme
+Name[tr]=@APPLICATION_NAME@ masaüstü eşitleme istemcisi
Icon[tr]=@APPLICATION_EXECUTABLE@
Comment[uk]=Настільний клієнт синхронізації @APPLICATION_NAME@
GenericName[uk]=Синхронізація теки
@@ -211,15 +638,29 @@ GenericName[zh_CN]=文件夹同步
Name[zh_CN]=@APPLICATION_NAME@ 桌面同步客户端
Icon[zh_CN]=@APPLICATION_EXECUTABLE@
GenericName[zh_TW]=資料夾同步
+Comment[lt_LT]=@APPLICATION_NAME@ darbalaukio sinchronizavimo programa
+GenericName[lt_LT]=Katalogo sinchnorizacija
+Name[lt_LT]=@APPLICATION_NAME@ darbalaukio programa
+Icon[lt_LT]=@APPLICATION_EXECUTABLE@
+Comment[th_TH]=@APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
+GenericName[th_TH]=ประสานข้อมูลโฟลเดอร์
+Name[th_TH]= @APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
+Icon[th_TH]=@APPLICATION_EXECUTABLE@
+GenericName[es_MX]=Sincronización de Carpetas
+Comment[nb_NO]=@APPLICATION_NAME@ skrivebordssynkroniseringsklient
+GenericName[nb_NO]=Mappesynkronisering
+Name[nb_NO]=@APPLICATION_NAME@ skrivebordssynkroniseringsklient
+Icon[nb_NO]=@APPLICATION_EXECUTABLE@
+Comment[nn_NO]=@APPLICATION_NAME@ klient for å synkronisera frå skrivebord
+GenericName[nn_NO]=Mappe synkronisering
+Name[nn_NO]=@APPLICATION_NAME@ klient for å synkronisera frå skrivebord
+Icon[nn_NO]=@APPLICATION_EXECUTABLE@
Comment[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização para PC
GenericName[pt_PT]=Sincronizar Pasta
Name[pt_PT]=@APPLICATION_NAME@ - Cliente de Sincronização para PC
Icon[pt_PT]=@APPLICATION_EXECUTABLE@
+Icon[km]=@APPLICATION_EXECUTABLE@
Comment[lb]=@APPLICATION_NAME@ Desktop Synchronisatioun Client
GenericName[lb]=Dossier Dync
Name[lb]=@APPLICATION_NAME@ Desktop Sync Client
Icon[lb]=@APPLICATION_EXECUTABLE@
-Comment[th_TH]=@APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
-GenericName[th_TH]=ประสานข้อมูลโฟลเดอร์
-Name[th_TH]= @APPLICATION_NAME@ ไคลเอนต์ประสานข้อมูลเดสก์ท็อป
-Icon[th_TH]=@APPLICATION_EXECUTABLE@
diff --git a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
index 027e0e68e..68c2a9c29 100644
--- a/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
+++ b/shell_integration/dolphin/ownclouddolphinpluginhelper.cpp
@@ -21,6 +21,7 @@
#include <qcoreevent.h>
#include <QFile>
#include "ownclouddolphinpluginhelper.h"
+#include "config.h"
OwncloudDolphinPluginHelper* OwncloudDolphinPluginHelper::instance()
{
@@ -67,7 +68,10 @@ void OwncloudDolphinPluginHelper::tryConnect()
return;
}
QString runtimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
- QString socketPath = runtimeDir + QLatin1String("/ownCloud/socket");
+ runtimeDir.append( QChar('/'));
+ runtimeDir.append( QLatin1String(APPLICATION_SHORTNAME) );
+
+ const QString socketPath = runtimeDir + QLatin1String("/socket");
_socket.connectToServer(socketPath);
}
diff --git a/shell_integration/nautilus/CMakeLists.txt b/shell_integration/nautilus/CMakeLists.txt
index 6c1e9f73b..21f557d2f 100644
--- a/shell_integration/nautilus/CMakeLists.txt
+++ b/shell_integration/nautilus/CMakeLists.txt
@@ -4,6 +4,7 @@ if( UNIX AND NOT APPLE )
configure_file(syncstate.py syncstate.py COPYONLY)
configure_file(syncstate.py syncstate_nemo.py COPYONLY)
+ configure_file(syncstate.py syncstate_caja.py COPYONLY)
# Call the setupappname.sh script to set the custom app name.
set (cmd "${CMAKE_CURRENT_SOURCE_DIR}/setappname.sh")
@@ -18,9 +19,17 @@ if( UNIX AND NOT APPLE )
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
ERROR_VARIABLE errors OUTPUT_VARIABLE out)
+ # Create a caja plugin script from the nautilus one.
+ # cajacmd copies the syncstate.py and performs string replacement.
+ set (cajacmd "${CMAKE_CURRENT_SOURCE_DIR}/createcajaplugin.sh")
+ execute_process(COMMAND ${cajacmd}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ ERROR_VARIABLE errors OUTPUT_VARIABLE out)
+
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate.py DESTINATION ${DATADIR}/nautilus-python/extensions)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate_nemo.py DESTINATION ${DATADIR}/nemo-python/extensions RENAME syncstate.py)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate.py DESTINATION ${DATADIR}/nautilus-python/extensions RENAME syncstate-${APPLICATION_SHORTNAME}.py)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate_nemo.py DESTINATION ${DATADIR}/nemo-python/extensions RENAME syncstate-${APPLICATION_SHORTNAME}.py)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syncstate_caja.py DESTINATION ${DATADIR}/caja-python/extensions RENAME syncstate-${APPLICATION_SHORTNAME}.py)
diff --git a/shell_integration/nautilus/createcajaplugin.sh b/shell_integration/nautilus/createcajaplugin.sh
new file mode 100755
index 000000000..860850d1a
--- /dev/null
+++ b/shell_integration/nautilus/createcajaplugin.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# this script creates a plugin for caja, just by replacing
+# all occurences of Nautilus with Caja (case sensitive).
+
+sed -i.org -e 's/Nautilus/Caja/g' syncstate_caja.py
+sed -i.org -e 's/nautilus/caja/g' syncstate_caja.py
diff --git a/shell_integration/nautilus/syncstate.py b/shell_integration/nautilus/syncstate.py
index f4e790836..7fb35b80c 100644
--- a/shell_integration/nautilus/syncstate.py
+++ b/shell_integration/nautilus/syncstate.py
@@ -18,6 +18,7 @@
import os
import urllib
import socket
+import tempfile
from gi.repository import GObject, Nautilus
@@ -43,7 +44,7 @@ def get_runtime_dir():
try:
return os.environ['XDG_RUNTIME_DIR']
except KeyError:
- fallback = '/tmp/runtime-' + os.environ['USER']
+ fallback = os.path.join(tempfile.gettempdir(), 'runtime-' + os.environ['USER'])
return fallback
@@ -86,22 +87,17 @@ class SocketConnect(GObject.GObject):
def _connectToSocketServer(self):
try:
self._sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- postfix = "/" + appname + "/socket" # Should use os.path.join instead
- sock_file = get_runtime_dir() + postfix
- print ("Socket: " + 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)
- print("Socket watch id: " + str(self._watch_id))
- return False # Don't run again
- except Exception as e:
- print("Could not connect to unix socket. " + str(e))
- else:
- print("Sock-File not valid: " + sock_file)
+ sock_file = os.path.join(get_runtime_dir(), appname, "socket")
+ try:
+ print("Socket File: " + sock_file)
+ self._sock.connect(sock_file) # fails if sock_file doesn't exist
+ 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)
+ print("Socket watch id: " + str(self._watch_id))
+ return False # Don't run again
+ except Exception as e:
+ print("Could not connect to unix socket. " + str(e))
except Exception as e: # Bad habbit
print("Connect could not be established, try again later.")
self._sock.close()
@@ -157,32 +153,65 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
GObject.GObject.__init__(self)
+ def check_registered_paths(self, filename):
+ topLevelFolder = False
+ internalFile = False
+ for reg_path in socketConnect.registered_paths:
+ if filename == reg_path:
+ topLevelFolder = True
+ break
+ if filename.startswith(reg_path):
+ internalFile = True
+ # you can't have a registered path below another so it is save to break here
+ break
+ return (topLevelFolder, internalFile)
+
def get_file_items(self, window, files):
+ # Show the menu extension to share a file or folder
+ #
+ # Show if file is OK.
+ # Ignore top level folders.
+ # Also show extension for folders
+ # if there is a OK or SYNC underneath.
+ # This is only
+
if len(files) != 1:
return
file = files[0]
items = []
- # Internal or external file?!
- syncedFile = False
- for reg_path in socketConnect.registered_paths:
- topLevelFolder = False
- filename = get_local_path(file.get_uri())
- # Check if its a folder (ends with an /), if yes add a "/"
- # otherwise it will not find the entry in the table
- if os.path.isdir(filename + "/"):
- filename += "/"
- # Check if toplevel folder, we need to ignore those as they cannot be shared
- if filename == reg_path:
- topLevelFolder=True
- # Only show the menu extension if the file is synced and the sync
- # status is ok. Not for ignored files etc.
- # ignore top level folders
- if filename.startswith(reg_path) and topLevelFolder == False and socketConnect.nautilusVFSFile_table[filename]['state'].startswith('OK'):
- syncedFile = True
-
- # If it is neither in a synced folder or is a directory
- if not syncedFile:
+ filename = get_local_path(file.get_uri())
+ # Check if its a folder (ends with an /), if yes add a "/"
+ # otherwise it will not find the entry in the table
+ isDir = os.path.isdir(filename + os.sep)
+ if isDir:
+ filename += os.sep
+
+ # Check if toplevel folder, we need to ignore those as they cannot be shared
+ topLevelFolder, internalFile = self.check_registered_paths(filename)
+ if topLevelFolder or not internalFile:
+ return items
+
+ entry = socketConnect.nautilusVFSFile_table.get(filename)
+ if not entry:
+ return items
+
+ shareable = False
+ state = entry['state']
+ state_ok = state.startswith('OK')
+ state_sync = state.startswith('SYNC')
+ if state_ok:
+ shareable = True
+ elif state_sync and isDir:
+ # some file below is OK or SYNC
+ for key, value in socketConnect.nautilusVFSFile_table.items():
+ if key != filename and key.startswith(filename):
+ state = value['state']
+ if state.startswith('OK') or state.startswith('SYNC'):
+ shareable = True
+ break
+
+ if not shareable:
return items
# Create a menu item
@@ -303,7 +332,7 @@ class SyncStateExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.Info
filename = get_local_path(item.get_uri())
if item.is_directory():
- filename += '/'
+ filename += os.sep
inScope = False
for reg_path in socketConnect.registered_paths:
diff --git a/shell_integration/windows/OCContextMenu/OCClientInterface.h b/shell_integration/windows/OCContextMenu/OCClientInterface.h
index 16608e276..f7725fd67 100644
--- a/shell_integration/windows/OCContextMenu/OCClientInterface.h
+++ b/shell_integration/windows/OCContextMenu/OCClientInterface.h
@@ -1,5 +1,5 @@
/**
-* Copyright (c) 2015 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2015 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
@@ -12,7 +12,7 @@
*/
/**
-* Copyright (c) 2014 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2014 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
diff --git a/shell_integration/windows/OCContextMenu/OCContextMenu.rc b/shell_integration/windows/OCContextMenu/OCContextMenu.rc
index 9ad518061..5025d081f 100644
--- a/shell_integration/windows/OCContextMenu/OCContextMenu.rc
+++ b/shell_integration/windows/OCContextMenu/OCContextMenu.rc
Binary files differ
diff --git a/shell_integration/windows/OCContextMenu/OCContextMenu.vcxproj b/shell_integration/windows/OCContextMenu/OCContextMenu.vcxproj
index 023d2d0ca..74830e71b 100644
--- a/shell_integration/windows/OCContextMenu/OCContextMenu.vcxproj
+++ b/shell_integration/windows/OCContextMenu/OCContextMenu.vcxproj
@@ -59,22 +59,22 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x86</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x64</TargetName>
</PropertyGroup>
@@ -89,10 +89,13 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</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>
<ModuleDefinitionFile>OCContextMenu.def</ModuleDefinitionFile>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -108,14 +111,17 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</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>
<ModuleDefinitionFile>OCContextMenu.def</ModuleDefinitionFile>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Link>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>OCContextMenu.def</ModuleDefinitionFile>
<AdditionalDependencies>OCUtil_x64.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>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -127,6 +133,9 @@
<Optimization>Disabled</Optimization>
<PrecompiledHeader />
</ClCompile>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
@@ -134,12 +143,15 @@
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x64.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>
<ModuleDefinitionFile>OCContextMenu.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
diff --git a/shell_integration/windows/OCOverlays/OCOverlay.cpp b/shell_integration/windows/OCOverlays/OCOverlay.cpp
index d8de36cf4..a5b6938fc 100644
--- a/shell_integration/windows/OCOverlays/OCOverlay.cpp
+++ b/shell_integration/windows/OCOverlays/OCOverlay.cpp
@@ -110,17 +110,17 @@ IFACEMETHODIMP OCOverlay::GetPriority(int *pPriority)
// we order this in terms of likelyhood
switch (_state) {
case State_OK:
- *pPriority = 0;
+ *pPriority = 0; break;
case State_OKShared:
- *pPriority = 1;
+ *pPriority = 1; break;
case State_Warning:
- *pPriority = 2;
+ *pPriority = 2; break;
case State_Sync:
- *pPriority = 3;
+ *pPriority = 3; break;
case State_Error:
- *pPriority = 4;
+ *pPriority = 4; break;
default:
- *pPriority = 5;
+ *pPriority = 5; break;
}
return S_OK;
diff --git a/shell_integration/windows/OCOverlays/OCOverlay.rc b/shell_integration/windows/OCOverlays/OCOverlay.rc
index 71d453fc6..4e6dd6ac7 100644
--- a/shell_integration/windows/OCOverlays/OCOverlay.rc
+++ b/shell_integration/windows/OCOverlays/OCOverlay.rc
Binary files differ
diff --git a/shell_integration/windows/OCOverlays/OCOverlays.vcxproj b/shell_integration/windows/OCOverlays/OCOverlays.vcxproj
index 0ce4c6144..432831fce 100644
--- a/shell_integration/windows/OCOverlays/OCOverlays.vcxproj
+++ b/shell_integration/windows/OCOverlays/OCOverlays.vcxproj
@@ -66,25 +66,25 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x86</TargetName>
<TargetExt>.dll</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x64</TargetName>
<TargetExt>.dll</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x86</TargetName>
<TargetExt>.dll</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x64</TargetName>
<TargetExt>.dll</TargetExt>
@@ -99,11 +99,14 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>OCOverlays.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
@@ -114,11 +117,14 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>OCOverlays.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -133,11 +139,14 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>OCOverlays.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
@@ -152,11 +161,14 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>OCUtil_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>OCOverlays.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
</Link>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\OCUtil</AdditionalIncludeDirectories>
+ </ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="DllMain.cpp" />
diff --git a/shell_integration/windows/OCUtil/CommunicationSocket.cpp b/shell_integration/windows/OCUtil/CommunicationSocket.cpp
index e37487b91..5b419f705 100644
--- a/shell_integration/windows/OCUtil/CommunicationSocket.cpp
+++ b/shell_integration/windows/OCUtil/CommunicationSocket.cpp
@@ -45,7 +45,7 @@ std::wstring getUserName() {
std::wstring CommunicationSocket::DefaultPipePath()
{
auto pipename = std::wstring(L"\\\\.\\pipe\\");
- pipename += L"ownCloud\\";
+ pipename += L"ownCloud-";
pipename += getUserName();
return pipename;
}
diff --git a/shell_integration/windows/OCUtil/OCUtil.vcxproj b/shell_integration/windows/OCUtil/OCUtil.vcxproj
index 014a85601..4ea28d6b3 100644
--- a/shell_integration/windows/OCUtil/OCUtil.vcxproj
+++ b/shell_integration/windows/OCUtil/OCUtil.vcxproj
@@ -67,26 +67,26 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetExt>.dll</TargetExt>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x86</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetExt>.dll</TargetExt>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
<TargetName>$(ProjectName)_x64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TargetName>$(ProjectName)_x64</TargetName>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<TargetExt>.dll</TargetExt>
<TargetName>$(ProjectName)_x86</TargetName>
<IntDir>$(Configuration)\$(Platform)\</IntDir>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\</OutDir>
+ <OutDir>$(SolutionDir)..\..\binary\shell_integration\windows\$(Configuration)\$(Platform)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@@ -155,6 +155,7 @@
<ClInclude Include="CommunicationSocket.h" />
<ClInclude Include="FileUtil.h" />
<ClInclude Include="RegistryUtil.h" />
+ <ClInclude Include="Version.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="CommunicationSocket.cpp" />
diff --git a/shell_integration/windows/OCUtil/RemotePathChecker.cpp b/shell_integration/windows/OCUtil/RemotePathChecker.cpp
index b0b4df088..d831182c8 100644
--- a/shell_integration/windows/OCUtil/RemotePathChecker.cpp
+++ b/shell_integration/windows/OCUtil/RemotePathChecker.cpp
@@ -1,5 +1,5 @@
/**
-* Copyright (c) 2014 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2014 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
diff --git a/shell_integration/windows/OCUtil/RemotePathChecker.h b/shell_integration/windows/OCUtil/RemotePathChecker.h
index 96b5494b6..fdafafb75 100644
--- a/shell_integration/windows/OCUtil/RemotePathChecker.h
+++ b/shell_integration/windows/OCUtil/RemotePathChecker.h
@@ -1,5 +1,5 @@
/**
-* Copyright (c) 2014 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2014 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
diff --git a/shell_integration/windows/OCUtil/StringUtil.cpp b/shell_integration/windows/OCUtil/StringUtil.cpp
index 031b450e5..5fe8f4e88 100644
--- a/shell_integration/windows/OCUtil/StringUtil.cpp
+++ b/shell_integration/windows/OCUtil/StringUtil.cpp
@@ -1,5 +1,5 @@
/**
-* Copyright (c) 2014 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2014 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
diff --git a/shell_integration/windows/OCUtil/StringUtil.h b/shell_integration/windows/OCUtil/StringUtil.h
index d64eda7e5..65d322fcc 100644
--- a/shell_integration/windows/OCUtil/StringUtil.h
+++ b/shell_integration/windows/OCUtil/StringUtil.h
@@ -1,5 +1,5 @@
/**
-* Copyright (c) 2014 ownCloud, Inc. All rights reserved.
+* Copyright (c) 2014 ownCloud GmbH. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
diff --git a/shell_integration/windows/OCUtil/Version.h b/shell_integration/windows/OCUtil/Version.h
new file mode 100644
index 000000000..0197a47ad
--- /dev/null
+++ b/shell_integration/windows/OCUtil/Version.h
@@ -0,0 +1,11 @@
+#pragma once
+
+// This is the number that will end up in the version window of the DLLs.
+// Increment this version before committing a new build if you are today's shell_integration build master.
+#define OCEXT_BUILD_NUM 43
+
+#define STRINGIZE2(s) #s
+#define STRINGIZE(s) STRINGIZE2(s)
+
+#define OCEXT_VERSION 1,0,0,OCEXT_BUILD_NUM
+#define OCEXT_VERSION_STRING STRINGIZE(OCEXT_VERSION)
diff --git a/src/3rdparty/QProgressIndicator/LICENSE b/src/3rdparty/QProgressIndicator/LICENSE
index 65c5ca88a..3a66b5627 100644
--- a/src/3rdparty/QProgressIndicator/LICENSE
+++ b/src/3rdparty/QProgressIndicator/LICENSE
@@ -1,165 +1,21 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
+The MIT License (MIT)
+
+Copyright (c) 2011 Morgan Leborgne
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/3rdparty/QProgressIndicator/QProgressIndicator.cpp b/src/3rdparty/QProgressIndicator/QProgressIndicator.cpp
index 425dc579f..ec2a6fe84 100644
--- a/src/3rdparty/QProgressIndicator/QProgressIndicator.cpp
+++ b/src/3rdparty/QProgressIndicator/QProgressIndicator.cpp
@@ -1,24 +1,27 @@
/*
-*
-* This file is part of QProgressIndicator,
-* an open-source recent files menu widget
-*
-* Copyright (C) 2009 - 2010 Morgan Leborgne
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with QRecentFilesMenu. If not, see <http://www.gnu.org/licenses/>.
-*
-*/
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2011 Morgan Leborgne
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
#include "QProgressIndicator.h"
#include <QPainter>
diff --git a/src/3rdparty/QProgressIndicator/QProgressIndicator.h b/src/3rdparty/QProgressIndicator/QProgressIndicator.h
index ec81fb72b..a6178080e 100644
--- a/src/3rdparty/QProgressIndicator/QProgressIndicator.h
+++ b/src/3rdparty/QProgressIndicator/QProgressIndicator.h
@@ -1,24 +1,27 @@
/*
-*
-* This file is part of QProgressIndicator,
-* an open-source recent files menu widget
-*
-* Copyright (C) 2009 - 2010 Morgan Leborgne
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with QRecentFilesMenu. If not, see <http://www.gnu.org/licenses/>.
-*
-*/
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2011 Morgan Leborgne
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
#ifndef QPROGRESSINDICATOR_H
#define QPROGRESSINDICATOR_H
@@ -64,8 +67,8 @@ public:
*/
const QColor & color() const { return m_color; }
- virtual QSize sizeHint() const Q_DECL_OVERRIDE;
- int heightForWidth(int w) const Q_DECL_OVERRIDE;
+ virtual QSize sizeHint() const;
+ int heightForWidth(int w) const;
public slots:
/*! Starts the spin animation.
\sa stopAnimation isAnimated
@@ -95,8 +98,8 @@ public slots:
*/
void setColor(const QColor & color);
protected:
- virtual void timerEvent(QTimerEvent * event) Q_DECL_OVERRIDE;
- virtual void paintEvent(QPaintEvent * event) Q_DECL_OVERRIDE;
+ virtual void timerEvent(QTimerEvent * event);
+ virtual void paintEvent(QPaintEvent * event);
private:
int m_angle;
int m_timerId;
diff --git a/src/3rdparty/QProgressIndicator/README.md b/src/3rdparty/QProgressIndicator/README.md
index 4b34a3553..6c034a7df 100644
--- a/src/3rdparty/QProgressIndicator/README.md
+++ b/src/3rdparty/QProgressIndicator/README.md
@@ -11,4 +11,4 @@ Qt 4.4.x.
## License
-LGPL
+MIT
diff --git a/src/3rdparty/sqlite3/sqlite3.c b/src/3rdparty/sqlite3/sqlite3.c
index e19867890..9e962ce13 100644
--- a/src/3rdparty/sqlite3/sqlite3.c
+++ b/src/3rdparty/sqlite3/sqlite3.c
@@ -1,6 +1,6 @@
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
-** version 3.13.0. By combining all the individual C code files into this
+** version 3.14.2. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements
@@ -9,7 +9,7 @@
**
** This file is all you need to compile SQLite. To use SQLite in other
** programs, you need this file and the "sqlite3.h" header file that defines
-** the programming interface to the SQLite library. (If you do not have
+** the programming interface to the SQLite library. (If you do not have
** the "sqlite3.h" header file at hand, you will find a copy embedded within
** the text of this file. Search for "Begin file sqlite3.h" to find the start
** of the embedded sqlite3.h header file.) Additional code files may be needed
@@ -37,8 +37,8 @@
** Internal interface definitions for SQLite.
**
*/
-#ifndef _SQLITEINT_H_
-#define _SQLITEINT_H_
+#ifndef SQLITEINT_H
+#define SQLITEINT_H
/* Special Comments:
**
@@ -68,6 +68,14 @@
*/
/*
+** Make sure the Tcl calling convention macro is defined. This macro is
+** only used by test code and Tcl integration code.
+*/
+#ifndef SQLITE_TCLAPI
+# define SQLITE_TCLAPI
+#endif
+
+/*
** Make sure that rand_s() is available on Windows systems with MSVC 2005
** or higher.
*/
@@ -97,8 +105,8 @@
**
** This file contains code that is specific to MSVC.
*/
-#ifndef _MSVC_H_
-#define _MSVC_H_
+#ifndef SQLITE_MSVC_H
+#define SQLITE_MSVC_H
#if defined(_MSC_VER)
#pragma warning(disable : 4054)
@@ -118,7 +126,7 @@
#pragma warning(disable : 4706)
#endif /* defined(_MSC_VER) */
-#endif /* _MSVC_H_ */
+#endif /* SQLITE_MSVC_H */
/************** End of msvc.h ************************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -282,8 +290,8 @@
** the version number) and changes its name to "sqlite3.h" as
** part of the build process.
*/
-#ifndef _SQLITE3_H_
-#define _SQLITE3_H_
+#ifndef SQLITE3_H
+#define SQLITE3_H
#include <stdarg.h> /* Needed for the definition of va_list */
/*
@@ -306,8 +314,17 @@ extern "C" {
#ifndef SQLITE_CDECL
# define SQLITE_CDECL
#endif
+#ifndef SQLITE_APICALL
+# define SQLITE_APICALL
+#endif
#ifndef SQLITE_STDCALL
-# define SQLITE_STDCALL
+# define SQLITE_STDCALL SQLITE_APICALL
+#endif
+#ifndef SQLITE_CALLBACK
+# define SQLITE_CALLBACK
+#endif
+#ifndef SQLITE_SYSAPI
+# define SQLITE_SYSAPI
#endif
/*
@@ -363,9 +380,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.13.0"
-#define SQLITE_VERSION_NUMBER 3013000
-#define SQLITE_SOURCE_ID "2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2"
+#define SQLITE_VERSION "3.14.2"
+#define SQLITE_VERSION_NUMBER 3014002
+#define SQLITE_SOURCE_ID "2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -398,9 +415,9 @@ extern "C" {
** See also: [sqlite_version()] and [sqlite_source_id()].
*/
SQLITE_API const char sqlite3_version[] = SQLITE_VERSION;
-SQLITE_API const char *SQLITE_STDCALL sqlite3_libversion(void);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sourceid(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_libversion_number(void);
+SQLITE_API const char *sqlite3_libversion(void);
+SQLITE_API const char *sqlite3_sourceid(void);
+SQLITE_API int sqlite3_libversion_number(void);
/*
** CAPI3REF: Run-Time Library Compilation Options Diagnostics
@@ -425,8 +442,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_libversion_number(void);
** [sqlite_compileoption_get()] and the [compile_options pragma].
*/
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
-SQLITE_API int SQLITE_STDCALL sqlite3_compileoption_used(const char *zOptName);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N);
+SQLITE_API int sqlite3_compileoption_used(const char *zOptName);
+SQLITE_API const char *sqlite3_compileoption_get(int N);
#endif
/*
@@ -465,7 +482,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N);
**
** See the [threading mode] documentation for additional information.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_threadsafe(void);
+SQLITE_API int sqlite3_threadsafe(void);
/*
** CAPI3REF: Database Connection Handle
@@ -562,8 +579,8 @@ typedef sqlite_uint64 sqlite3_uint64;
** ^Calling sqlite3_close() or sqlite3_close_v2() with a NULL pointer
** argument is a harmless no-op.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_close(sqlite3*);
-SQLITE_API int SQLITE_STDCALL sqlite3_close_v2(sqlite3*);
+SQLITE_API int sqlite3_close(sqlite3*);
+SQLITE_API int sqlite3_close_v2(sqlite3*);
/*
** The type for a callback function.
@@ -634,7 +651,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
** </ul>
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_exec(
+SQLITE_API int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
@@ -758,6 +775,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_exec(
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
+#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
/*
** CAPI3REF: Flags For File Open Operations
@@ -1288,6 +1306,16 @@ struct sqlite3_io_methods {
typedef struct sqlite3_mutex sqlite3_mutex;
/*
+** CAPI3REF: Loadable Extension Thunk
+**
+** A pointer to the opaque sqlite3_api_routines structure is passed as
+** the third parameter to entry points of [loadable extensions]. This
+** structure must be typedefed in order to work around compiler warnings
+** on some platforms.
+*/
+typedef struct sqlite3_api_routines sqlite3_api_routines;
+
+/*
** CAPI3REF: OS Interface Object
**
** An instance of the sqlite3_vfs object defines the interface between
@@ -1622,10 +1650,10 @@ struct sqlite3_vfs {
** must return [SQLITE_OK] on success and some other [error code] upon
** failure.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
+SQLITE_API int sqlite3_initialize(void);
+SQLITE_API int sqlite3_shutdown(void);
+SQLITE_API int sqlite3_os_init(void);
+SQLITE_API int sqlite3_os_end(void);
/*
** CAPI3REF: Configuring The SQLite Library
@@ -1658,7 +1686,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
** ^If the option is unknown or SQLite is unable to set the option
** then this routine returns a non-zero [error code].
*/
-SQLITE_API int SQLITE_CDECL sqlite3_config(int, ...);
+SQLITE_API int sqlite3_config(int, ...);
/*
** CAPI3REF: Configure database connections
@@ -1677,7 +1705,7 @@ SQLITE_API int SQLITE_CDECL sqlite3_config(int, ...);
** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
** the call is considered successful.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_db_config(sqlite3*, int op, ...);
+SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...);
/*
** CAPI3REF: Memory Allocation Routines
@@ -2191,7 +2219,7 @@ struct sqlite3_mem_methods {
** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
** There should be two additional arguments.
** When the first argument to this interface is 1, then only the C-API is
-** enabled and the SQL function remains disabled. If the first argment to
+** enabled and the SQL function remains disabled. If the first argument to
** this interface is 0, then both the C-API and the SQL function are disabled.
** If the first argument is -1, then no changes are made to state of either the
** C-API or the SQL function.
@@ -2218,7 +2246,7 @@ struct sqlite3_mem_methods {
** [extended result codes] feature of SQLite. ^The extended result
** codes are disabled by default for historical compatibility.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3*, int onoff);
+SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
/*
** CAPI3REF: Last Insert Rowid
@@ -2270,7 +2298,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3*, int onoff)
** unpredictable and might not equal either the old or the new
** last insert [rowid].
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
/*
** CAPI3REF: Count The Number Of Rows Modified
@@ -2323,7 +2351,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3*);
** while [sqlite3_changes()] is running then the value returned
** is unpredictable and not meaningful.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3*);
+SQLITE_API int sqlite3_changes(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
@@ -2347,7 +2375,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3*);
** while [sqlite3_total_changes()] is running then the value
** returned is unpredictable and not meaningful.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_total_changes(sqlite3*);
+SQLITE_API int sqlite3_total_changes(sqlite3*);
/*
** CAPI3REF: Interrupt A Long-Running Query
@@ -2387,7 +2415,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_total_changes(sqlite3*);
** If the database connection closes while [sqlite3_interrupt()]
** is running then bad things will likely happen.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_interrupt(sqlite3*);
+SQLITE_API void sqlite3_interrupt(sqlite3*);
/*
** CAPI3REF: Determine If An SQL Statement Is Complete
@@ -2422,8 +2450,8 @@ SQLITE_API void SQLITE_STDCALL sqlite3_interrupt(sqlite3*);
** The input to [sqlite3_complete16()] must be a zero-terminated
** UTF-16 string in native byte order.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_complete(const char *sql);
-SQLITE_API int SQLITE_STDCALL sqlite3_complete16(const void *sql);
+SQLITE_API int sqlite3_complete(const char *sql);
+SQLITE_API int sqlite3_complete16(const void *sql);
/*
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
@@ -2484,7 +2512,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_complete16(const void *sql);
** A busy handler must not close the database connection
** or [prepared statement] that invoked the busy handler.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
+SQLITE_API int sqlite3_busy_handler(sqlite3*,int(*)(void*,int),void*);
/*
** CAPI3REF: Set A Busy Timeout
@@ -2507,7 +2535,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(sqlite3*, int(*)(void*,int),
**
** See also: [PRAGMA busy_timeout]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3*, int ms);
+SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
/*
** CAPI3REF: Convenience Routines For Running Queries
@@ -2582,7 +2610,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3*, int ms);
** reflected in subsequent calls to [sqlite3_errcode()] or
** [sqlite3_errmsg()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
+SQLITE_API int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
@@ -2590,7 +2618,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
-SQLITE_API void SQLITE_STDCALL sqlite3_free_table(char **result);
+SQLITE_API void sqlite3_free_table(char **result);
/*
** CAPI3REF: Formatted String Printing Functions
@@ -2696,10 +2724,10 @@ SQLITE_API void SQLITE_STDCALL sqlite3_free_table(char **result);
** addition that after the string has been read and copied into
** the result, [sqlite3_free()] is called on the input string.)^
*/
-SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...);
-SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list);
-SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...);
-SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
+SQLITE_API char *sqlite3_mprintf(const char*,...);
+SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
+SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
+SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
/*
** CAPI3REF: Memory Allocation Subsystem
@@ -2789,12 +2817,12 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list
** a block of memory after it has been released using
** [sqlite3_free()] or [sqlite3_realloc()].
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc(int);
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc64(sqlite3_uint64);
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc(void*, int);
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc64(void*, sqlite3_uint64);
-SQLITE_API void SQLITE_STDCALL sqlite3_free(void*);
-SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void*);
+SQLITE_API void *sqlite3_malloc(int);
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
+SQLITE_API void *sqlite3_realloc(void*, int);
+SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
+SQLITE_API void sqlite3_free(void*);
+SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
/*
** CAPI3REF: Memory Allocator Statistics
@@ -2819,8 +2847,8 @@ SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void*);
** by [sqlite3_memory_highwater(1)] is the high-water mark
** prior to the reset.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_used(void);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_highwater(int resetFlag);
+SQLITE_API sqlite3_int64 sqlite3_memory_used(void);
+SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
/*
** CAPI3REF: Pseudo-Random Number Generator
@@ -2843,7 +2871,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_highwater(int resetFlag);
** internally and without recourse to the [sqlite3_vfs] xRandomness
** method.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_randomness(int N, void *P);
+SQLITE_API void sqlite3_randomness(int N, void *P);
/*
** CAPI3REF: Compile-Time Authorization Callbacks
@@ -2926,7 +2954,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_randomness(int N, void *P);
** as stated in the previous paragraph, sqlite3_step() invokes
** sqlite3_prepare_v2() to reprepare a statement after a schema change.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
+SQLITE_API int sqlite3_set_authorizer(
sqlite3*,
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pUserData
@@ -3006,6 +3034,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
** CAPI3REF: Tracing And Profiling Functions
** METHOD: sqlite3
**
+** These routines are deprecated. Use the [sqlite3_trace_v2()] interface
+** instead of the routines described here.
+**
** These routines register callback functions that can be used for
** tracing and profiling the execution of SQL statements.
**
@@ -3031,11 +3062,105 @@ SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
** sqlite3_profile() function is considered experimental and is
** subject to change in future versions of SQLite.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
-SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_profile(sqlite3*,
+SQLITE_API SQLITE_DEPRECATED void *sqlite3_trace(sqlite3*,
+ void(*xTrace)(void*,const char*), void*);
+SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
/*
+** CAPI3REF: SQL Trace Event Codes
+** KEYWORDS: SQLITE_TRACE
+**
+** These constants identify classes of events that can be monitored
+** using the [sqlite3_trace_v2()] tracing logic. The third argument
+** to [sqlite3_trace_v2()] is an OR-ed combination of one or more of
+** the following constants. ^The first argument to the trace callback
+** is one of the following constants.
+**
+** New tracing constants may be added in future releases.
+**
+** ^A trace callback has four arguments: xCallback(T,C,P,X).
+** ^The T argument is one of the integer type codes above.
+** ^The C argument is a copy of the context pointer passed in as the
+** fourth argument to [sqlite3_trace_v2()].
+** The P and X arguments are pointers whose meanings depend on T.
+**
+** <dl>
+** [[SQLITE_TRACE_STMT]] <dt>SQLITE_TRACE_STMT</dt>
+** <dd>^An SQLITE_TRACE_STMT callback is invoked when a prepared statement
+** first begins running and possibly at other times during the
+** execution of the prepared statement, such as at the start of each
+** trigger subprogram. ^The P argument is a pointer to the
+** [prepared statement]. ^The X argument is a pointer to a string which
+** is the unexpanded SQL text of the prepared statement or an SQL comment
+** that indicates the invocation of a trigger. ^The callback can compute
+** the same text that would have been returned by the legacy [sqlite3_trace()]
+** interface by using the X argument when X begins with "--" and invoking
+** [sqlite3_expanded_sql(P)] otherwise.
+**
+** [[SQLITE_TRACE_PROFILE]] <dt>SQLITE_TRACE_PROFILE</dt>
+** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
+** information as is provided by the [sqlite3_profile()] callback.
+** ^The P argument is a pointer to the [prepared statement] and the
+** X argument points to a 64-bit integer which is the estimated of
+** the number of nanosecond that the prepared statement took to run.
+** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
+**
+** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
+** <dd>^An SQLITE_TRACE_ROW callback is invoked whenever a prepared
+** statement generates a single row of result.
+** ^The P argument is a pointer to the [prepared statement] and the
+** X argument is unused.
+**
+** [[SQLITE_TRACE_CLOSE]] <dt>SQLITE_TRACE_CLOSE</dt>
+** <dd>^An SQLITE_TRACE_CLOSE callback is invoked when a database
+** connection closes.
+** ^The P argument is a pointer to the [database connection] object
+** and the X argument is unused.
+** </dl>
+*/
+#define SQLITE_TRACE_STMT 0x01
+#define SQLITE_TRACE_PROFILE 0x02
+#define SQLITE_TRACE_ROW 0x04
+#define SQLITE_TRACE_CLOSE 0x08
+
+/*
+** CAPI3REF: SQL Trace Hook
+** METHOD: sqlite3
+**
+** ^The sqlite3_trace_v2(D,M,X,P) interface registers a trace callback
+** function X against [database connection] D, using property mask M
+** and context pointer P. ^If the X callback is
+** NULL or if the M mask is zero, then tracing is disabled. The
+** M argument should be the bitwise OR-ed combination of
+** zero or more [SQLITE_TRACE] constants.
+**
+** ^Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
+** (cancels) any prior calls to sqlite3_trace() or sqlite3_trace_v2().
+**
+** ^The X callback is invoked whenever any of the events identified by
+** mask M occur. ^The integer return value from the callback is currently
+** ignored, though this may change in future releases. Callback
+** implementations should return zero to ensure future compatibility.
+**
+** ^A trace callback is invoked with four arguments: callback(T,C,P,X).
+** ^The T argument is one of the [SQLITE_TRACE]
+** constants to indicate why the callback was invoked.
+** ^The C argument is a copy of the context pointer.
+** The P and X arguments are pointers whose meanings depend on T.
+**
+** The sqlite3_trace_v2() interface is intended to replace the legacy
+** interfaces [sqlite3_trace()] and [sqlite3_profile()], both of which
+** are deprecated.
+*/
+SQLITE_API int sqlite3_trace_v2(
+ sqlite3*,
+ unsigned uMask,
+ int(*xCallback)(unsigned,void*,void*,void*),
+ void *pCtx
+);
+
+/*
** CAPI3REF: Query Progress Callbacks
** METHOD: sqlite3
**
@@ -3067,7 +3192,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_profile(sqlite3*,
** database connections for the meaning of "modify" in this paragraph.
**
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
+SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
/*
** CAPI3REF: Opening A New Database Connection
@@ -3296,15 +3421,15 @@ SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(sqlite3*, int, int(*)(vo
**
** See also: [sqlite3_temp_directory]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_open(
+SQLITE_API int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_open16(
+SQLITE_API int sqlite3_open16(
const void *filename, /* Database filename (UTF-16) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
+SQLITE_API int sqlite3_open_v2(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb, /* OUT: SQLite db handle */
int flags, /* Flags */
@@ -3350,9 +3475,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
** VFS method, then the behavior of this routine is undefined and probably
** undesirable.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_uri_parameter(const char *zFilename, const char *zParam);
-SQLITE_API int SQLITE_STDCALL sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
+SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
+SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
+SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
/*
@@ -3396,11 +3521,11 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_uri_int64(const char*, const cha
** was invoked incorrectly by the application. In that case, the
** error code and message may or may not be set.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db);
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
+SQLITE_API int sqlite3_errcode(sqlite3 *db);
+SQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
+SQLITE_API const char *sqlite3_errmsg(sqlite3*);
+SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
+SQLITE_API const char *sqlite3_errstr(int);
/*
** CAPI3REF: Prepared Statement Object
@@ -3468,7 +3593,7 @@ typedef struct sqlite3_stmt sqlite3_stmt;
**
** New run-time limit categories may be added in future releases.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_limit(sqlite3*, int id, int newVal);
+SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
/*
** CAPI3REF: Run-Time Limit Categories
@@ -3620,28 +3745,28 @@ SQLITE_API int SQLITE_STDCALL sqlite3_limit(sqlite3*, int id, int newVal);
** </li>
** </ol>
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare(
+SQLITE_API int sqlite3_prepare(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare_v2(
+SQLITE_API int sqlite3_prepare_v2(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16(
+SQLITE_API int sqlite3_prepare16(
sqlite3 *db, /* Database handle */
const void *zSql, /* SQL statement, UTF-16 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const void **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16_v2(
+SQLITE_API int sqlite3_prepare16_v2(
sqlite3 *db, /* Database handle */
const void *zSql, /* SQL statement, UTF-16 encoded */
int nByte, /* Maximum length of zSql in bytes. */
@@ -3653,11 +3778,35 @@ SQLITE_API int SQLITE_STDCALL sqlite3_prepare16_v2(
** CAPI3REF: Retrieving Statement SQL
** METHOD: sqlite3_stmt
**
-** ^This interface can be used to retrieve a saved copy of the original
-** SQL text used to create a [prepared statement] if that statement was
-** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
+** ^The sqlite3_sql(P) interface returns a pointer to a copy of the UTF-8
+** SQL text used to create [prepared statement] P if P was
+** created by either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
+** ^The sqlite3_expanded_sql(P) interface returns a pointer to a UTF-8
+** string containing the SQL text of prepared statement P with
+** [bound parameters] expanded.
+**
+** ^(For example, if a prepared statement is created using the SQL
+** text "SELECT $abc,:xyz" and if parameter $abc is bound to integer 2345
+** and parameter :xyz is unbound, then sqlite3_sql() will return
+** the original string, "SELECT $abc,:xyz" but sqlite3_expanded_sql()
+** will return "SELECT 2345,NULL".)^
+**
+** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
+** is available to hold the result, or if the result would exceed the
+** the maximum string length determined by the [SQLITE_LIMIT_LENGTH].
+**
+** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
+** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
+** option causes sqlite3_expanded_sql() to always return NULL.
+**
+** ^The string returned by sqlite3_sql(P) is managed by SQLite and is
+** automatically freed when the prepared statement is finalized.
+** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
+** is obtained from [sqlite3_malloc()] and must be free by the application
+** by passing it to [sqlite3_free()].
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sql(sqlite3_stmt *pStmt);
+SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
+SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Determine If An SQL Statement Writes The Database
@@ -3689,7 +3838,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_sql(sqlite3_stmt *pStmt);
** change the configuration of a database connection, they do not make
** changes to the content of the database files on disk.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
@@ -3710,7 +3859,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
** for example, in diagnostic routines to search for prepared
** statements that are holding a transaction open.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_busy(sqlite3_stmt*);
+SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt*);
/*
** CAPI3REF: Dynamically Typed Value Object
@@ -3874,20 +4023,20 @@ typedef struct sqlite3_context sqlite3_context;
** See also: [sqlite3_bind_parameter_count()],
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
+SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_double(sqlite3_stmt*, int, double);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int(sqlite3_stmt*, int, int);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_null(sqlite3_stmt*, int);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
+SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
+SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
+SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
+SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
+SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
+SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
+SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
void(*)(void*), unsigned char encoding);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
+SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
+SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
+SQLITE_API int sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
/*
** CAPI3REF: Number Of SQL Parameters
@@ -3908,7 +4057,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite
** [sqlite3_bind_parameter_name()], and
** [sqlite3_bind_parameter_index()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt*);
+SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*);
/*
** CAPI3REF: Name Of A Host Parameter
@@ -3936,7 +4085,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt*);
** [sqlite3_bind_parameter_count()], and
** [sqlite3_bind_parameter_index()].
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_bind_parameter_name(sqlite3_stmt*, int);
+SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
/*
** CAPI3REF: Index Of A Parameter With A Given Name
@@ -3953,7 +4102,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_bind_parameter_name(sqlite3_stmt*,
** [sqlite3_bind_parameter_count()], and
** [sqlite3_bind_parameter_name()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
+SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
/*
** CAPI3REF: Reset All Bindings On A Prepared Statement
@@ -3963,7 +4112,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_index(sqlite3_stmt*, const
** the [sqlite3_bind_blob | bindings] on a [prepared statement].
** ^Use this routine to reset all host parameters to NULL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt*);
+SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*);
/*
** CAPI3REF: Number Of Columns In A Result Set
@@ -3975,7 +4124,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt*);
**
** See also: [sqlite3_data_count()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Column Names In A Result Set
@@ -4004,8 +4153,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt);
** then the name of the column is unspecified and may change from
** one release of SQLite to the next.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_name(sqlite3_stmt*, int N);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt*, int N);
+SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N);
+SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
/*
** CAPI3REF: Source Of Data In A Query Result
@@ -4053,12 +4202,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt*, int N
** for the same [prepared statement] and result column
** at the same time then the results are undefined.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
/*
** CAPI3REF: Declared Datatype Of A Query Result
@@ -4090,8 +4239,8 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*
** is associated with individual values, not with the containers
** used to hold those values.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_decltype(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
/*
** CAPI3REF: Evaluate An SQL Statement
@@ -4171,7 +4320,7 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt*,in
** then the more specific [error codes] are returned directly
** by sqlite3_step(). The use of the "v2" interface is recommended.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt*);
+SQLITE_API int sqlite3_step(sqlite3_stmt*);
/*
** CAPI3REF: Number of columns in a result set
@@ -4192,7 +4341,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt*);
**
** See also: [sqlite3_column_count()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_data_count(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Fundamental Datatypes
@@ -4382,16 +4531,16 @@ SQLITE_API int SQLITE_STDCALL sqlite3_data_count(sqlite3_stmt *pStmt);
** pointer. Subsequent calls to [sqlite3_errcode()] will return
** [SQLITE_NOMEM].)^
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_blob(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
-SQLITE_API double SQLITE_STDCALL sqlite3_column_double(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_int(sqlite3_stmt*, int iCol);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_column_int64(sqlite3_stmt*, int iCol);
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_column_text(sqlite3_stmt*, int iCol);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_text16(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_type(sqlite3_stmt*, int iCol);
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt*, int iCol);
+SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
+SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol);
+SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
+SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
+SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
+SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
/*
** CAPI3REF: Destroy A Prepared Statement Object
@@ -4419,7 +4568,7 @@ SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt*, int
** statement after it has been finalized can result in undefined and
** undesirable behavior such as segfaults and heap corruption.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Reset A Prepared Statement Object
@@ -4446,7 +4595,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt);
** ^The [sqlite3_reset(S)] interface does not change the values
** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Create Or Redefine SQL Functions
@@ -4546,7 +4695,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt);
** close the database connection nor finalize or reset the prepared
** statement in which the function is running.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
+SQLITE_API int sqlite3_create_function(
sqlite3 *db,
const char *zFunctionName,
int nArg,
@@ -4556,7 +4705,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
+SQLITE_API int sqlite3_create_function16(
sqlite3 *db,
const void *zFunctionName,
int nArg,
@@ -4566,7 +4715,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
+SQLITE_API int sqlite3_create_function_v2(
sqlite3 *db,
const char *zFunctionName,
int nArg,
@@ -4612,12 +4761,12 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
** these functions, we will not explain what they do.
*/
#ifndef SQLITE_OMIT_DEPRECATED
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_aggregate_count(sqlite3_context*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_expired(sqlite3_stmt*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_global_recover(void);
-SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_thread_cleanup(void);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
+SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void);
+SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
void*,sqlite3_int64);
#endif
@@ -4667,18 +4816,18 @@ SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_memory_alarm(void(*)(voi
** These routines must be called from the same thread as
** the SQL function that supplied the [sqlite3_value*] parameters.
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_blob(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes16(sqlite3_value*);
-SQLITE_API double SQLITE_STDCALL sqlite3_value_double(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_int(sqlite3_value*);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_value_int64(sqlite3_value*);
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_value_text(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16le(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16be(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_type(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_numeric_type(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
+SQLITE_API double sqlite3_value_double(sqlite3_value*);
+SQLITE_API int sqlite3_value_int(sqlite3_value*);
+SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
+SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
+SQLITE_API int sqlite3_value_type(sqlite3_value*);
+SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
/*
** CAPI3REF: Finding The Subtype Of SQL Values
@@ -4694,7 +4843,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_value_numeric_type(sqlite3_value*);
** from the result of one [application-defined SQL function] into the
** input of another.
*/
-SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value*);
+SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
/*
** CAPI3REF: Copy And Free SQL Values
@@ -4710,8 +4859,8 @@ SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value*);
** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
** then sqlite3_value_free(V) is a harmless no-op.
*/
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value*);
-SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
+SQLITE_API sqlite3_value *sqlite3_value_dup(const sqlite3_value*);
+SQLITE_API void sqlite3_value_free(sqlite3_value*);
/*
** CAPI3REF: Obtain Aggregate Function Context
@@ -4756,7 +4905,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
** This routine must be called from the same thread in which
** the aggregate SQL function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context*, int nBytes);
+SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
/*
** CAPI3REF: User Data For Functions
@@ -4771,7 +4920,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context*, int
** This routine must be called from the same thread in which
** the application-defined function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context*);
+SQLITE_API void *sqlite3_user_data(sqlite3_context*);
/*
** CAPI3REF: Database Connection For Functions
@@ -4783,7 +4932,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context*);
** and [sqlite3_create_function16()] routines that originally
** registered the application defined function.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
+SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
/*
** CAPI3REF: Function Auxiliary Data
@@ -4815,12 +4964,13 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
** SQLite will invoke the destructor function X with parameter P exactly
** once, when the metadata is discarded.
** SQLite is free to discard the metadata at any time, including: <ul>
-** <li> when the corresponding function parameter changes, or
-** <li> when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
-** SQL statement, or
-** <li> when sqlite3_set_auxdata() is invoked again on the same parameter, or
-** <li> during the original sqlite3_set_auxdata() call when a memory
-** allocation error occurs. </ul>)^
+** <li> ^(when the corresponding function parameter changes)^, or
+** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
+** SQL statement)^, or
+** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
+** parameter)^, or
+** <li> ^(during the original sqlite3_set_auxdata() call when a memory
+** allocation error occurs.)^ </ul>
**
** Note the last bullet in particular. The destructor X in
** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
@@ -4836,8 +4986,8 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
** These routines must be called from the same thread in which
** the SQL function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_get_auxdata(sqlite3_context*, int N);
-SQLITE_API void SQLITE_STDCALL sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
+SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
+SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
/*
@@ -4973,27 +5123,27 @@ typedef void (*sqlite3_destructor_type)(void*);
** than the one containing the application-defined function that received
** the [sqlite3_context] pointer, the results are undefined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob64(sqlite3_context*,const void*,
+SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
sqlite3_uint64,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_double(sqlite3_context*, double);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error(sqlite3_context*, const char*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error16(sqlite3_context*, const void*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_toobig(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_nomem(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_code(sqlite3_context*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int(sqlite3_context*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_null(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
+SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
+SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
+SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*);
+SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*);
+SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int);
+SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
+SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
+SQLITE_API void sqlite3_result_null(sqlite3_context*);
+SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
void(*)(void*), unsigned char encoding);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_value(sqlite3_context*, sqlite3_value*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_zeroblob(sqlite3_context*, int n);
-SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
+SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
+SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
+SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
+SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
+SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
/*
@@ -5008,7 +5158,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context*, sqlite
** The number of subtype bytes preserved by SQLite might increase
** in future releases of SQLite.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_result_subtype(sqlite3_context*,unsigned int);
+SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
/*
** CAPI3REF: Define New Collating Sequences
@@ -5090,14 +5240,14 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_subtype(sqlite3_context*,unsigned
**
** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation(
+SQLITE_API int sqlite3_create_collation(
sqlite3*,
const char *zName,
int eTextRep,
void *pArg,
int(*xCompare)(void*,int,const void*,int,const void*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
+SQLITE_API int sqlite3_create_collation_v2(
sqlite3*,
const char *zName,
int eTextRep,
@@ -5105,7 +5255,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
int(*xCompare)(void*,int,const void*,int,const void*),
void(*xDestroy)(void*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
+SQLITE_API int sqlite3_create_collation16(
sqlite3*,
const void *zName,
int eTextRep,
@@ -5140,12 +5290,12 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
** [sqlite3_create_collation_v2()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed(
+SQLITE_API int sqlite3_collation_needed(
sqlite3*,
void*,
void(*)(void*,sqlite3*,int eTextRep,const char*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
+SQLITE_API int sqlite3_collation_needed16(
sqlite3*,
void*,
void(*)(void*,sqlite3*,int eTextRep,const void*)
@@ -5159,11 +5309,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
** The code to implement this API is not available in the public release
** of SQLite.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_key(
+SQLITE_API int sqlite3_key(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The key */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_key_v2(
+SQLITE_API int sqlite3_key_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The key */
@@ -5177,11 +5327,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_key_v2(
** The code to implement this API is not available in the public release
** of SQLite.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rekey(
+SQLITE_API int sqlite3_rekey(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The new key */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_rekey_v2(
+SQLITE_API int sqlite3_rekey_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The new key */
@@ -5191,7 +5341,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_rekey_v2(
** Specify the activation key for a SEE database. Unless
** activated, none of the SEE routines will work.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_activate_see(
+SQLITE_API void sqlite3_activate_see(
const char *zPassPhrase /* Activation phrase */
);
#endif
@@ -5201,7 +5351,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_activate_see(
** Specify the activation key for a CEROD database. Unless
** activated, none of the CEROD routines will work.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_activate_cerod(
+SQLITE_API void sqlite3_activate_cerod(
const char *zPassPhrase /* Activation phrase */
);
#endif
@@ -5223,7 +5373,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_activate_cerod(
** all, then the behavior of sqlite3_sleep() may deviate from the description
** in the previous paragraphs.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_sleep(int);
+SQLITE_API int sqlite3_sleep(int);
/*
** CAPI3REF: Name Of The Folder Holding Temporary Files
@@ -5342,7 +5492,7 @@ SQLITE_API char *sqlite3_data_directory;
** connection while this routine is running, then the return value
** is undefined.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_autocommit(sqlite3*);
+SQLITE_API int sqlite3_get_autocommit(sqlite3*);
/*
** CAPI3REF: Find The Database Handle Of A Prepared Statement
@@ -5355,7 +5505,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_get_autocommit(sqlite3*);
** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
** create the statement in the first place.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt*);
+SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
/*
** CAPI3REF: Return The Filename For A Database Connection
@@ -5372,7 +5522,7 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt*);
** will be an absolute pathname, even if the filename used
** to open the database originally was a URI or relative pathname.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const char *zDbName);
+SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName);
/*
** CAPI3REF: Determine if a database is read-only
@@ -5382,7 +5532,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const cha
** of connection D is read-only, 0 if it is read/write, or -1 if N is not
** the name of a database on connection D.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
+SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
/*
** CAPI3REF: Find the next prepared statement
@@ -5398,7 +5548,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbNa
** [sqlite3_next_stmt(D,S)] must refer to an open database
** connection and in particular must not be a NULL pointer.
*/
-SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
+SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
/*
** CAPI3REF: Commit And Rollback Notification Callbacks
@@ -5447,8 +5597,8 @@ SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_
**
** See also the [sqlite3_update_hook()] interface.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
-SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
+SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
+SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
/*
** CAPI3REF: Data Change Notification Callbacks
@@ -5499,7 +5649,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(sqlite3*, void(*)(void *),
** See also the [sqlite3_commit_hook()], [sqlite3_rollback_hook()],
** and [sqlite3_preupdate_hook()] interfaces.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
+SQLITE_API void *sqlite3_update_hook(
sqlite3*,
void(*)(void *,int ,char const *,char const *,sqlite3_int64),
void*
@@ -5539,7 +5689,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
**
** See Also: [SQLite Shared-Cache Mode]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_shared_cache(int);
+SQLITE_API int sqlite3_enable_shared_cache(int);
/*
** CAPI3REF: Attempt To Free Heap Memory
@@ -5555,7 +5705,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_shared_cache(int);
**
** See also: [sqlite3_db_release_memory()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_release_memory(int);
+SQLITE_API int sqlite3_release_memory(int);
/*
** CAPI3REF: Free Memory Used By A Database Connection
@@ -5569,7 +5719,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_release_memory(int);
**
** See also: [sqlite3_release_memory()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3*);
+SQLITE_API int sqlite3_db_release_memory(sqlite3*);
/*
** CAPI3REF: Impose A Limit On Heap Size
@@ -5621,7 +5771,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3*);
** The circumstances under which SQLite will enforce the soft heap limit may
** changes in future releases of SQLite.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64 N);
+SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
/*
** CAPI3REF: Deprecated Soft Heap Limit Interface
@@ -5632,7 +5782,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64
** only. All new applications should use the
** [sqlite3_soft_heap_limit64()] interface rather than this one.
*/
-SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
+SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
/*
@@ -5647,7 +5797,7 @@ SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
** column exists. ^The sqlite3_table_column_metadata() interface returns
** SQLITE_ERROR and if the specified column does not exist.
** ^If the column-name parameter to sqlite3_table_column_metadata() is a
-** NULL pointer, then this routine simply checks for the existance of the
+** NULL pointer, then this routine simply checks for the existence of the
** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
** does not.
**
@@ -5702,7 +5852,7 @@ SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
** parsed, if that has not already been done, and returns an error if
** any errors are encountered while loading the schema.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_table_column_metadata(
+SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
const char *zDbName, /* Database name or NULL */
const char *zTableName, /* Table name */
@@ -5758,7 +5908,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_table_column_metadata(
**
** See also the [load_extension() SQL function].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
+SQLITE_API int sqlite3_load_extension(
sqlite3 *db, /* Load the extension into this database connection */
const char *zFile, /* Name of the shared library containing extension */
const char *zProc, /* Entry point. Derived from zFile if 0 */
@@ -5781,8 +5931,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
**
** ^This interface enables or disables both the C-API
** [sqlite3_load_extension()] and the SQL function [load_extension()].
-** Use [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],..)
-** to enable or disable only the C-API.
+** ^(Use [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],..)
+** to enable or disable only the C-API.)^
**
** <b>Security warning:</b> It is recommended that extension loading
** be disabled using the [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method
@@ -5790,7 +5940,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
** remains disabled. This will prevent SQL injections from giving attackers
** access to extension loading capabilities.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int onoff);
+SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
/*
** CAPI3REF: Automatically Load Statically Linked Extensions
@@ -5802,7 +5952,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int ono
**
** ^(Even though the function prototype shows that xEntryPoint() takes
** no arguments and returns void, SQLite invokes xEntryPoint() with three
-** arguments and expects and integer result as if the signature of the
+** arguments and expects an integer result as if the signature of the
** entry point where as follows:
**
** <blockquote><pre>
@@ -5828,7 +5978,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int ono
** See also: [sqlite3_reset_auto_extension()]
** and [sqlite3_cancel_auto_extension()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xEntryPoint)(void));
+SQLITE_API int sqlite3_auto_extension(void(*xEntryPoint)(void));
/*
** CAPI3REF: Cancel Automatic Extension Loading
@@ -5840,7 +5990,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xEntryPoint)(void));
** unregistered and it returns 0 if X was not on the list of initialization
** routines.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xEntryPoint)(void));
+SQLITE_API int sqlite3_cancel_auto_extension(void(*xEntryPoint)(void));
/*
** CAPI3REF: Reset Automatic Extension Loading
@@ -5848,7 +5998,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xEntryPoint)(
** ^This interface disables all automatic extensions previously
** registered using [sqlite3_auto_extension()].
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_reset_auto_extension(void);
+SQLITE_API void sqlite3_reset_auto_extension(void);
/*
** The interface to the virtual-table mechanism is currently considered
@@ -6093,13 +6243,13 @@ struct sqlite3_index_info {
** interface is equivalent to sqlite3_create_module_v2() with a NULL
** destructor.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module(
+SQLITE_API int sqlite3_create_module(
sqlite3 *db, /* SQLite connection to register module with */
const char *zName, /* Name of the module */
const sqlite3_module *p, /* Methods for the module */
void *pClientData /* Client data for xCreate/xConnect */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module_v2(
+SQLITE_API int sqlite3_create_module_v2(
sqlite3 *db, /* SQLite connection to register module with */
const char *zName, /* Name of the module */
const sqlite3_module *p, /* Methods for the module */
@@ -6162,7 +6312,7 @@ struct sqlite3_vtab_cursor {
** to declare the format (the names and datatypes of the columns) of
** the virtual tables they implement.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3*, const char *zSQL);
+SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
/*
** CAPI3REF: Overload A Function For A Virtual Table
@@ -6181,7 +6331,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3*, const char *zSQL);
** purpose is to be a placeholder function that can be overloaded
** by a [virtual table].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
+SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
/*
** The interface to the virtual-table mechanism defined above (back up
@@ -6280,7 +6430,7 @@ typedef struct sqlite3_blob sqlite3_blob;
** To avoid a resource leak, every open [BLOB handle] should eventually
** be released by a call to [sqlite3_blob_close()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_open(
+SQLITE_API int sqlite3_blob_open(
sqlite3*,
const char *zDb,
const char *zTable,
@@ -6313,7 +6463,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_open(
**
** ^This function sets the database handle error code and message.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
+SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
/*
** CAPI3REF: Close A BLOB Handle
@@ -6336,7 +6486,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64)
** is passed a valid open blob handle, the values returned by the
** sqlite3_errcode() and sqlite3_errmsg() functions are set before returning.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_close(sqlite3_blob *);
+SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
/*
** CAPI3REF: Return The Size Of An Open BLOB
@@ -6352,7 +6502,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_close(sqlite3_blob *);
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
** to this routine results in undefined and probably undesirable behavior.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *);
+SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *);
/*
** CAPI3REF: Read Data From A BLOB Incrementally
@@ -6381,7 +6531,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *);
**
** See also: [sqlite3_blob_write()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
+SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
/*
** CAPI3REF: Write Data Into A BLOB Incrementally
@@ -6423,7 +6573,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_read(sqlite3_blob *, void *Z, int N,
**
** See also: [sqlite3_blob_read()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
+SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
/*
** CAPI3REF: Virtual File System Objects
@@ -6454,9 +6604,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *, const void *z,
** ^(If the default VFS is unregistered, another VFS is chosen as
** the default. The choice for the new VFS is arbitrary.)^
*/
-SQLITE_API sqlite3_vfs *SQLITE_STDCALL sqlite3_vfs_find(const char *zVfsName);
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_unregister(sqlite3_vfs*);
+SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
+SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
+SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
/*
** CAPI3REF: Mutexes
@@ -6572,11 +6722,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vfs_unregister(sqlite3_vfs*);
**
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*);
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
+SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int);
+SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*);
+SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*);
+SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
/*
** CAPI3REF: Mutex Methods Object
@@ -6686,8 +6836,8 @@ struct sqlite3_mutex_methods {
** interface should also return 1 when given a NULL pointer.
*/
#ifndef NDEBUG
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_held(sqlite3_mutex*);
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_notheld(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
#endif
/*
@@ -6727,7 +6877,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_mutex_notheld(sqlite3_mutex*);
** ^If the [threading mode] is Single-thread or Multi-thread then this
** routine returns a NULL pointer.
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3*);
+SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
/*
** CAPI3REF: Low-Level Control Of Database Files
@@ -6762,7 +6912,7 @@ SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3*);
**
** See also: [SQLITE_FCNTL_LOCKSTATE]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
+SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
/*
** CAPI3REF: Testing Interface
@@ -6781,7 +6931,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3*, const char *zDbName
** Unlike most of the SQLite API, this function is not guaranteed to
** operate consistently from one release to the next.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...);
+SQLITE_API int sqlite3_test_control(int op, ...);
/*
** CAPI3REF: Testing Interface Operation Codes
@@ -6844,8 +6994,8 @@ SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...);
**
** See also: [sqlite3_db_status()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
-SQLITE_API int SQLITE_STDCALL sqlite3_status64(
+SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
+SQLITE_API int sqlite3_status64(
int op,
sqlite3_int64 *pCurrent,
sqlite3_int64 *pHighwater,
@@ -6970,7 +7120,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_status64(
**
** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
+SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
/*
** CAPI3REF: Status Parameters for database connections
@@ -7016,6 +7166,18 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
** memory used by all pager caches associated with the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
**
+** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
+** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
+** <dd>This parameter is similar to DBSTATUS_CACHE_USED, except that if a
+** pager cache is shared between two or more connections the bytes of heap
+** memory used by that pager cache is divided evenly between the attached
+** connections.)^ In other words, if none of the pager caches associated
+** with the database connection are shared, this request returns the same
+** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are
+** shared, the value returned by this call will be smaller than that returned
+** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
+** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.
+**
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
** <dd>This parameter returns the approximate number of bytes of heap
** memory used to store the schema for all databases associated
@@ -7073,7 +7235,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
#define SQLITE_DBSTATUS_CACHE_MISS 8
#define SQLITE_DBSTATUS_CACHE_WRITE 9
#define SQLITE_DBSTATUS_DEFERRED_FKS 10
-#define SQLITE_DBSTATUS_MAX 10 /* Largest defined DBSTATUS */
+#define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
+#define SQLITE_DBSTATUS_MAX 11 /* Largest defined DBSTATUS */
/*
@@ -7100,7 +7263,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
**
** See also: [sqlite3_status()] and [sqlite3_db_status()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
+SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
/*
** CAPI3REF: Status Parameters for prepared statements
@@ -7569,16 +7732,16 @@ typedef struct sqlite3_backup sqlite3_backup;
** same time as another thread is invoking sqlite3_backup_step() it is
** possible that they return invalid values.
*/
-SQLITE_API sqlite3_backup *SQLITE_STDCALL sqlite3_backup_init(
+SQLITE_API sqlite3_backup *sqlite3_backup_init(
sqlite3 *pDest, /* Destination database handle */
const char *zDestName, /* Destination database name */
sqlite3 *pSource, /* Source database handle */
const char *zSourceName /* Source database name */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_step(sqlite3_backup *p, int nPage);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_finish(sqlite3_backup *p);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_remaining(sqlite3_backup *p);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_pagecount(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage);
+SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
/*
** CAPI3REF: Unlock Notification
@@ -7695,7 +7858,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_backup_pagecount(sqlite3_backup *p);
** the special "DROP TABLE/INDEX" case, the extended error code is just
** SQLITE_LOCKED.)^
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_unlock_notify(
+SQLITE_API int sqlite3_unlock_notify(
sqlite3 *pBlocked, /* Waiting connection */
void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */
void *pNotifyArg /* Argument to pass to xNotify */
@@ -7710,8 +7873,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_unlock_notify(
** strings in a case-independent fashion, using the same definition of "case
** independence" that SQLite uses internally when comparing identifiers.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stricmp(const char *, const char *);
-SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *, const char *, int);
+SQLITE_API int sqlite3_stricmp(const char *, const char *);
+SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
/*
** CAPI3REF: String Globbing
@@ -7728,7 +7891,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *, const char *, int);
**
** See also: [sqlite3_strlike()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zStr);
+SQLITE_API int sqlite3_strglob(const char *zGlob, const char *zStr);
/*
** CAPI3REF: String LIKE Matching
@@ -7751,7 +7914,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zSt
**
** See also: [sqlite3_strglob()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
+SQLITE_API int sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
/*
** CAPI3REF: Error Logging Interface
@@ -7774,7 +7937,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zGlob, const char *zSt
** a few hundred characters, it will be truncated to the length of the
** buffer.
*/
-SQLITE_API void SQLITE_CDECL sqlite3_log(int iErrCode, const char *zFormat, ...);
+SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
/*
** CAPI3REF: Write-Ahead Log Commit Hook
@@ -7810,7 +7973,7 @@ SQLITE_API void SQLITE_CDECL sqlite3_log(int iErrCode, const char *zFormat, ...)
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
** overwrite any prior [sqlite3_wal_hook()] settings.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
+SQLITE_API void *sqlite3_wal_hook(
sqlite3*,
int(*)(void *,sqlite3*,const char*,int),
void*
@@ -7845,7 +8008,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
** is only necessary if the default setting is found to be suboptimal
** for a particular application.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
+SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
/*
** CAPI3REF: Checkpoint a database
@@ -7867,7 +8030,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
** start a callback but which do not need the full power (and corresponding
** complication) of [sqlite3_wal_checkpoint_v2()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
+SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
/*
** CAPI3REF: Checkpoint a database
@@ -7961,7 +8124,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint(sqlite3 *db, const char *zD
** ^The [PRAGMA wal_checkpoint] command can be used to invoke this interface
** from SQL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
+SQLITE_API int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
const char *zDb, /* Name of attached database (or NULL) */
int eMode, /* SQLITE_CHECKPOINT_* value */
@@ -7997,7 +8160,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
** this function. (See [SQLITE_VTAB_CONSTRAINT_SUPPORT].) Further options
** may be added in the future.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_vtab_config(sqlite3*, int op, ...);
+SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
/*
** CAPI3REF: Virtual Table Configuration Options
@@ -8050,7 +8213,7 @@ SQLITE_API int SQLITE_CDECL sqlite3_vtab_config(sqlite3*, int op, ...);
** of the SQL statement that triggered the call to the [xUpdate] method of the
** [virtual table].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *);
+SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
/*
** CAPI3REF: Conflict resolution modes
@@ -8155,7 +8318,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *);
**
** See also: [sqlite3_stmt_scanstatus_reset()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
+SQLITE_API int sqlite3_stmt_scanstatus(
sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
int idx, /* Index of loop to report on */
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
@@ -8171,7 +8334,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
** This API is only available if the library is built with pre-processor
** symbol [SQLITE_ENABLE_STMT_SCANSTATUS] defined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
+SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
/*
** CAPI3REF: Flush caches to disk mid-transaction
@@ -8203,7 +8366,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
** ^This function does not set the database handle error code or message
** returned by the [sqlite3_errcode()] and [sqlite3_errmsg()] functions.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
+SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
/*
** CAPI3REF: The pre-update hook.
@@ -8229,7 +8392,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
** ^The second parameter to the preupdate callback is a pointer to
** the [database connection] that registered the preupdate hook.
** ^The third parameter to the preupdate callback is one of the constants
-** [SQLITE_INSERT], [SQLITE_DELETE], or [SQLITE_UPDATE] to indentify the
+** [SQLITE_INSERT], [SQLITE_DELETE], or [SQLITE_UPDATE] to identify the
** kind of update operation that is about to occur.
** ^(The fourth parameter to the preupdate callback is the name of the
** database within the database connection that is being modified. This
@@ -8283,7 +8446,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
**
** See also: [sqlite3_update_hook()]
*/
-SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_preupdate_hook(
+SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_preupdate_hook(
sqlite3 *db,
void(*xPreUpdate)(
void *pCtx, /* Copy of third arg to preupdate_hook() */
@@ -8296,10 +8459,10 @@ SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_preupdate_hook(
),
void*
);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_old(sqlite3 *, int, sqlite3_value **);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_count(sqlite3 *);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_depth(sqlite3 *);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_old(sqlite3 *, int, sqlite3_value **);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_count(sqlite3 *);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_depth(sqlite3 *);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
/*
** CAPI3REF: Low-level system error code
@@ -8311,7 +8474,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3
** called to get back the underlying "errno" that caused the problem, such
** as ENOSPC, EAUTH, EISDIR, and so forth.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_system_errno(sqlite3*);
+SQLITE_API int sqlite3_system_errno(sqlite3*);
/*
** CAPI3REF: Database Snapshot
@@ -8361,7 +8524,7 @@ typedef struct sqlite3_snapshot sqlite3_snapshot;
** The [sqlite3_snapshot_get()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_get(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot **ppSnapshot
@@ -8399,7 +8562,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_get(
** The [sqlite3_snapshot_open()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_open(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot *pSnapshot
@@ -8416,7 +8579,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_open(
** The [sqlite3_snapshot_free()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3_snapshot*);
+SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
/*
** CAPI3REF: Compare the ages of two snapshot handles.
@@ -8440,7 +8603,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3
** snapshot than P2, zero if the two handles refer to the same database
** snapshot, and a positive value if P1 is a newer snapshot than P2.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_cmp(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
sqlite3_snapshot *p1,
sqlite3_snapshot *p2
);
@@ -8456,7 +8619,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_cmp(
#if 0
} /* End of the 'extern "C"' block */
#endif
-#endif /* _SQLITE3_H_ */
+#endif /* SQLITE3_H */
/******** Begin file sqlite3rtree.h *********/
/*
@@ -8498,7 +8661,7 @@ typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info;
**
** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...)
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_geometry_callback(
+SQLITE_API int sqlite3_rtree_geometry_callback(
sqlite3 *db,
const char *zGeom,
int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*),
@@ -8524,7 +8687,7 @@ struct sqlite3_rtree_geometry {
**
** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...)
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_query_callback(
+SQLITE_API int sqlite3_rtree_query_callback(
sqlite3 *db,
const char *zQueryFunc,
int (*xQueryFunc)(sqlite3_rtree_query_info*),
@@ -10176,7 +10339,7 @@ struct Fts5ExtensionApi {
** behaviour. The structure methods are expected to function as follows:
**
** xCreate:
-** This function is used to allocate and inititalize a tokenizer instance.
+** This function is used to allocate and initialize a tokenizer instance.
** A tokenizer instance is required to actually tokenize text.
**
** The first argument passed to this function is a copy of the (void*)
@@ -10436,7 +10599,6 @@ struct fts5_api {
#endif /* _FTS5_H */
-
/******** End of fts5.h *********/
/************** End of sqlite3.h *********************************************/
@@ -10734,7 +10896,7 @@ struct fts5_api {
** the SQLITE_DISABLE_INTRINSIC define.
*/
#if !defined(SQLITE_DISABLE_INTRINSIC)
-# if defined(_MSC_VER) && _MSC_VER>=1300
+# if defined(_MSC_VER) && _MSC_VER>=1400
# if !defined(_WIN32_WCE)
# include <intrin.h>
# pragma intrinsic(_byteswap_ushort)
@@ -11011,8 +11173,8 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
** This is the header file for the generic hash-table implementation
** used in SQLite.
*/
-#ifndef _SQLITE_HASH_H_
-#define _SQLITE_HASH_H_
+#ifndef SQLITE_HASH_H
+#define SQLITE_HASH_H
/* Forward declarations of structures. */
typedef struct Hash Hash;
@@ -11092,7 +11254,7 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
*/
/* #define sqliteHashCount(H) ((H)->count) // NOT USED */
-#endif /* _SQLITE_HASH_H_ */
+#endif /* SQLITE_HASH_H */
/************** End of hash.h ************************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -11740,8 +11902,8 @@ struct BusyHandler {
#define SQLITE_WSD const
#define GLOBAL(t,v) (*(t*)sqlite3_wsd_find((void*)&(v), sizeof(v)))
#define sqlite3GlobalConfig GLOBAL(struct Sqlite3Config, sqlite3Config)
-SQLITE_API int SQLITE_STDCALL sqlite3_wsd_init(int N, int J);
-SQLITE_API void *SQLITE_STDCALL sqlite3_wsd_find(void *K, int L);
+SQLITE_API int sqlite3_wsd_init(int N, int J);
+SQLITE_API void *sqlite3_wsd_find(void *K, int L);
#else
#define SQLITE_WSD
#define GLOBAL(t,v) v
@@ -11840,8 +12002,8 @@ typedef struct With With;
** subsystem. See comments in the source code for a detailed description
** of what each interface routine does.
*/
-#ifndef _BTREE_H_
-#define _BTREE_H_
+#ifndef SQLITE_BTREE_H
+#define SQLITE_BTREE_H
/* TODO: This definition is just included so other modules compile. It
** needs to be revisited.
@@ -11866,6 +12028,7 @@ typedef struct With With;
typedef struct Btree Btree;
typedef struct BtCursor BtCursor;
typedef struct BtShared BtShared;
+typedef struct BtreePayload BtreePayload;
SQLITE_PRIVATE int sqlite3BtreeOpen(
@@ -12077,19 +12240,43 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor*, u8 flags);
#define BTREE_SAVEPOSITION 0x02 /* Leave cursor pointing at NEXT or PREV */
#define BTREE_AUXDELETE 0x04 /* not the primary delete operation */
-SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const void *pKey, i64 nKey,
- const void *pData, int nData,
- int nZero, int bias, int seekResult);
+/* An instance of the BtreePayload object describes the content of a single
+** entry in either an index or table btree.
+**
+** Index btrees (used for indexes and also WITHOUT ROWID tables) contain
+** an arbitrary key and no data. These btrees have pKey,nKey set to their
+** key and pData,nData,nZero set to zero.
+**
+** Table btrees (used for rowid tables) contain an integer rowid used as
+** the key and passed in the nKey field. The pKey field is zero.
+** pData,nData hold the content of the new entry. nZero extra zero bytes
+** are appended to the end of the content when constructing the entry.
+**
+** This object is used to pass information into sqlite3BtreeInsert(). The
+** same information used to be passed as five separate parameters. But placing
+** the information into this object helps to keep the interface more
+** organized and understandable, and it also helps the resulting code to
+** run a little faster by using fewer registers for parameter passing.
+*/
+struct BtreePayload {
+ const void *pKey; /* Key content for indexes. NULL for tables */
+ sqlite3_int64 nKey; /* Size of pKey for indexes. PRIMARY KEY for tabs */
+ const void *pData; /* Data for tables. NULL for indexes */
+ int nData; /* Size of pData. 0 if none. */
+ int nZero; /* Extra zero data appended after pData,nData */
+};
+
+SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload,
+ int bias, int seekResult);
SQLITE_PRIVATE int sqlite3BtreeFirst(BtCursor*, int *pRes);
SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor*, int *pRes);
SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor*, int *pRes);
SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor*, int *pRes);
-SQLITE_PRIVATE int sqlite3BtreeKeySize(BtCursor*, i64 *pSize);
+SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreeKey(BtCursor*, u32 offset, u32 amt, void*);
-SQLITE_PRIVATE const void *sqlite3BtreeKeyFetch(BtCursor*, u32 *pAmt);
-SQLITE_PRIVATE const void *sqlite3BtreeDataFetch(BtCursor*, u32 *pAmt);
-SQLITE_PRIVATE int sqlite3BtreeDataSize(BtCursor*, u32 *pSize);
+SQLITE_PRIVATE const void *sqlite3BtreePayloadFetch(BtCursor*, u32 *pAmt);
+SQLITE_PRIVATE u32 sqlite3BtreePayloadSize(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreeData(BtCursor*, u32 offset, u32 amt, void*);
SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(Btree*, int *aRoot, int nRoot, int, int*);
@@ -12130,11 +12317,13 @@ SQLITE_PRIVATE void sqlite3BtreeEnter(Btree*);
SQLITE_PRIVATE void sqlite3BtreeEnterAll(sqlite3*);
SQLITE_PRIVATE int sqlite3BtreeSharable(Btree*);
SQLITE_PRIVATE void sqlite3BtreeEnterCursor(BtCursor*);
+SQLITE_PRIVATE int sqlite3BtreeConnectionCount(Btree*);
#else
# define sqlite3BtreeEnter(X)
# define sqlite3BtreeEnterAll(X)
# define sqlite3BtreeSharable(X) 0
# define sqlite3BtreeEnterCursor(X)
+# define sqlite3BtreeConnectionCount(X) 1
#endif
#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE
@@ -12159,7 +12348,7 @@ SQLITE_PRIVATE int sqlite3SchemaMutexHeld(sqlite3*,int,Schema*);
#endif
-#endif /* _BTREE_H_ */
+#endif /* SQLITE_BTREE_H */
/************** End of btree.h ***********************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -12182,8 +12371,8 @@ SQLITE_PRIVATE int sqlite3SchemaMutexHeld(sqlite3*,int,Schema*);
** or VDBE. The VDBE implements an abstract machine that runs a
** simple program to access and modify the underlying database.
*/
-#ifndef _SQLITE_VDBE_H_
-#define _SQLITE_VDBE_H_
+#ifndef SQLITE_VDBE_H
+#define SQLITE_VDBE_H
/* #include <stdio.h> */
/*
@@ -12368,17 +12557,17 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_NoConflict 29 /* synopsis: key=r[P3@P4] */
#define OP_NotFound 30 /* synopsis: key=r[P3@P4] */
#define OP_Found 31 /* synopsis: key=r[P3@P4] */
-#define OP_NotExists 32 /* synopsis: intkey=r[P3] */
-#define OP_Last 33
+#define OP_SeekRowid 32 /* synopsis: intkey=r[P3] */
+#define OP_NotExists 33 /* synopsis: intkey=r[P3] */
#define OP_IsNull 34 /* same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
#define OP_NotNull 35 /* same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
-#define OP_Ne 36 /* same as TK_NE, synopsis: if r[P1]!=r[P3] goto P2 */
-#define OP_Eq 37 /* same as TK_EQ, synopsis: if r[P1]==r[P3] goto P2 */
-#define OP_Gt 38 /* same as TK_GT, synopsis: if r[P1]>r[P3] goto P2 */
-#define OP_Le 39 /* same as TK_LE, synopsis: if r[P1]<=r[P3] goto P2 */
-#define OP_Lt 40 /* same as TK_LT, synopsis: if r[P1]<r[P3] goto P2 */
-#define OP_Ge 41 /* same as TK_GE, synopsis: if r[P1]>=r[P3] goto P2 */
-#define OP_SorterSort 42
+#define OP_Ne 36 /* same as TK_NE, synopsis: IF r[P3]!=r[P1] */
+#define OP_Eq 37 /* same as TK_EQ, synopsis: IF r[P3]==r[P1] */
+#define OP_Gt 38 /* same as TK_GT, synopsis: IF r[P3]>r[P1] */
+#define OP_Le 39 /* same as TK_LE, synopsis: IF r[P3]<=r[P1] */
+#define OP_Lt 40 /* same as TK_LT, synopsis: IF r[P3]<r[P1] */
+#define OP_Ge 41 /* same as TK_GE, synopsis: IF r[P3]>=r[P1] */
+#define OP_Last 42
#define OP_BitAnd 43 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
#define OP_BitOr 44 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
#define OP_ShiftLeft 45 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
@@ -12389,114 +12578,115 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Divide 50 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
#define OP_Remainder 51 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
#define OP_Concat 52 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
-#define OP_Sort 53
+#define OP_SorterSort 53
#define OP_BitNot 54 /* same as TK_BITNOT, synopsis: r[P1]= ~r[P1] */
-#define OP_Rewind 55
-#define OP_IdxLE 56 /* synopsis: key=r[P3@P4] */
-#define OP_IdxGT 57 /* synopsis: key=r[P3@P4] */
-#define OP_IdxLT 58 /* synopsis: key=r[P3@P4] */
-#define OP_IdxGE 59 /* synopsis: key=r[P3@P4] */
-#define OP_RowSetRead 60 /* synopsis: r[P3]=rowset(P1) */
-#define OP_RowSetTest 61 /* synopsis: if r[P3] in rowset(P1) goto P2 */
-#define OP_Program 62
-#define OP_FkIfZero 63 /* synopsis: if fkctr[P1]==0 goto P2 */
-#define OP_IfPos 64 /* synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
-#define OP_IfNotZero 65 /* synopsis: if r[P1]!=0 then r[P1]-=P3, goto P2 */
-#define OP_DecrJumpZero 66 /* synopsis: if (--r[P1])==0 goto P2 */
-#define OP_IncrVacuum 67
-#define OP_VNext 68
-#define OP_Init 69 /* synopsis: Start at P2 */
-#define OP_Return 70
-#define OP_EndCoroutine 71
-#define OP_HaltIfNull 72 /* synopsis: if r[P3]=null halt */
-#define OP_Halt 73
-#define OP_Integer 74 /* synopsis: r[P2]=P1 */
-#define OP_Int64 75 /* synopsis: r[P2]=P4 */
-#define OP_String 76 /* synopsis: r[P2]='P4' (len=P1) */
-#define OP_Null 77 /* synopsis: r[P2..P3]=NULL */
-#define OP_SoftNull 78 /* synopsis: r[P1]=NULL */
-#define OP_Blob 79 /* synopsis: r[P2]=P4 (len=P1) */
-#define OP_Variable 80 /* synopsis: r[P2]=parameter(P1,P4) */
-#define OP_Move 81 /* synopsis: r[P2@P3]=r[P1@P3] */
-#define OP_Copy 82 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
-#define OP_SCopy 83 /* synopsis: r[P2]=r[P1] */
-#define OP_IntCopy 84 /* synopsis: r[P2]=r[P1] */
-#define OP_ResultRow 85 /* synopsis: output=r[P1@P2] */
-#define OP_CollSeq 86
-#define OP_Function0 87 /* synopsis: r[P3]=func(r[P2@P5]) */
-#define OP_Function 88 /* synopsis: r[P3]=func(r[P2@P5]) */
-#define OP_AddImm 89 /* synopsis: r[P1]=r[P1]+P2 */
-#define OP_RealAffinity 90
-#define OP_Cast 91 /* synopsis: affinity(r[P1]) */
-#define OP_Permutation 92
-#define OP_Compare 93 /* synopsis: r[P1@P3] <-> r[P2@P3] */
-#define OP_Column 94 /* synopsis: r[P3]=PX */
-#define OP_Affinity 95 /* synopsis: affinity(r[P1@P2]) */
-#define OP_MakeRecord 96 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
+#define OP_Sort 55
+#define OP_Rewind 56
+#define OP_IdxLE 57 /* synopsis: key=r[P3@P4] */
+#define OP_IdxGT 58 /* synopsis: key=r[P3@P4] */
+#define OP_IdxLT 59 /* synopsis: key=r[P3@P4] */
+#define OP_IdxGE 60 /* synopsis: key=r[P3@P4] */
+#define OP_RowSetRead 61 /* synopsis: r[P3]=rowset(P1) */
+#define OP_RowSetTest 62 /* synopsis: if r[P3] in rowset(P1) goto P2 */
+#define OP_Program 63
+#define OP_FkIfZero 64 /* synopsis: if fkctr[P1]==0 goto P2 */
+#define OP_IfPos 65 /* synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
+#define OP_IfNotZero 66 /* synopsis: if r[P1]!=0 then r[P1]-=P3, goto P2 */
+#define OP_DecrJumpZero 67 /* synopsis: if (--r[P1])==0 goto P2 */
+#define OP_IncrVacuum 68
+#define OP_VNext 69
+#define OP_Init 70 /* synopsis: Start at P2 */
+#define OP_Return 71
+#define OP_EndCoroutine 72
+#define OP_HaltIfNull 73 /* synopsis: if r[P3]=null halt */
+#define OP_Halt 74
+#define OP_Integer 75 /* synopsis: r[P2]=P1 */
+#define OP_Int64 76 /* synopsis: r[P2]=P4 */
+#define OP_String 77 /* synopsis: r[P2]='P4' (len=P1) */
+#define OP_Null 78 /* synopsis: r[P2..P3]=NULL */
+#define OP_SoftNull 79 /* synopsis: r[P1]=NULL */
+#define OP_Blob 80 /* synopsis: r[P2]=P4 (len=P1) */
+#define OP_Variable 81 /* synopsis: r[P2]=parameter(P1,P4) */
+#define OP_Move 82 /* synopsis: r[P2@P3]=r[P1@P3] */
+#define OP_Copy 83 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
+#define OP_SCopy 84 /* synopsis: r[P2]=r[P1] */
+#define OP_IntCopy 85 /* synopsis: r[P2]=r[P1] */
+#define OP_ResultRow 86 /* synopsis: output=r[P1@P2] */
+#define OP_CollSeq 87
+#define OP_Function0 88 /* synopsis: r[P3]=func(r[P2@P5]) */
+#define OP_Function 89 /* synopsis: r[P3]=func(r[P2@P5]) */
+#define OP_AddImm 90 /* synopsis: r[P1]=r[P1]+P2 */
+#define OP_RealAffinity 91
+#define OP_Cast 92 /* synopsis: affinity(r[P1]) */
+#define OP_Permutation 93
+#define OP_Compare 94 /* synopsis: r[P1@P3] <-> r[P2@P3] */
+#define OP_Column 95 /* synopsis: r[P3]=PX */
+#define OP_Affinity 96 /* synopsis: affinity(r[P1@P2]) */
#define OP_String8 97 /* same as TK_STRING, synopsis: r[P2]='P4' */
-#define OP_Count 98 /* synopsis: r[P2]=count() */
-#define OP_ReadCookie 99
-#define OP_SetCookie 100
-#define OP_ReopenIdx 101 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenRead 102 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenWrite 103 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenAutoindex 104 /* synopsis: nColumn=P2 */
-#define OP_OpenEphemeral 105 /* synopsis: nColumn=P2 */
-#define OP_SorterOpen 106
-#define OP_SequenceTest 107 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
-#define OP_OpenPseudo 108 /* synopsis: P3 columns in r[P2] */
-#define OP_Close 109
-#define OP_ColumnsUsed 110
-#define OP_Sequence 111 /* synopsis: r[P2]=cursor[P1].ctr++ */
-#define OP_NewRowid 112 /* synopsis: r[P2]=rowid */
-#define OP_Insert 113 /* synopsis: intkey=r[P3] data=r[P2] */
-#define OP_InsertInt 114 /* synopsis: intkey=P3 data=r[P2] */
-#define OP_Delete 115
-#define OP_ResetCount 116
-#define OP_SorterCompare 117 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
-#define OP_SorterData 118 /* synopsis: r[P2]=data */
-#define OP_RowKey 119 /* synopsis: r[P2]=key */
-#define OP_RowData 120 /* synopsis: r[P2]=data */
-#define OP_Rowid 121 /* synopsis: r[P2]=rowid */
-#define OP_NullRow 122
-#define OP_SorterInsert 123
-#define OP_IdxInsert 124 /* synopsis: key=r[P2] */
-#define OP_IdxDelete 125 /* synopsis: key=r[P2@P3] */
-#define OP_Seek 126 /* synopsis: Move P3 to P1.rowid */
-#define OP_IdxRowid 127 /* synopsis: r[P2]=rowid */
-#define OP_Destroy 128
-#define OP_Clear 129
-#define OP_ResetSorter 130
-#define OP_CreateIndex 131 /* synopsis: r[P2]=root iDb=P1 */
-#define OP_CreateTable 132 /* synopsis: r[P2]=root iDb=P1 */
+#define OP_MakeRecord 98 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
+#define OP_Count 99 /* synopsis: r[P2]=count() */
+#define OP_ReadCookie 100
+#define OP_SetCookie 101
+#define OP_ReopenIdx 102 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenRead 103 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenWrite 104 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenAutoindex 105 /* synopsis: nColumn=P2 */
+#define OP_OpenEphemeral 106 /* synopsis: nColumn=P2 */
+#define OP_SorterOpen 107
+#define OP_SequenceTest 108 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
+#define OP_OpenPseudo 109 /* synopsis: P3 columns in r[P2] */
+#define OP_Close 110
+#define OP_ColumnsUsed 111
+#define OP_Sequence 112 /* synopsis: r[P2]=cursor[P1].ctr++ */
+#define OP_NewRowid 113 /* synopsis: r[P2]=rowid */
+#define OP_Insert 114 /* synopsis: intkey=r[P3] data=r[P2] */
+#define OP_InsertInt 115 /* synopsis: intkey=P3 data=r[P2] */
+#define OP_Delete 116
+#define OP_ResetCount 117
+#define OP_SorterCompare 118 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
+#define OP_SorterData 119 /* synopsis: r[P2]=data */
+#define OP_RowKey 120 /* synopsis: r[P2]=key */
+#define OP_RowData 121 /* synopsis: r[P2]=data */
+#define OP_Rowid 122 /* synopsis: r[P2]=rowid */
+#define OP_NullRow 123
+#define OP_SorterInsert 124
+#define OP_IdxInsert 125 /* synopsis: key=r[P2] */
+#define OP_IdxDelete 126 /* synopsis: key=r[P2@P3] */
+#define OP_Seek 127 /* synopsis: Move P3 to P1.rowid */
+#define OP_IdxRowid 128 /* synopsis: r[P2]=rowid */
+#define OP_Destroy 129
+#define OP_Clear 130
+#define OP_ResetSorter 131
+#define OP_CreateIndex 132 /* synopsis: r[P2]=root iDb=P1 */
#define OP_Real 133 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
-#define OP_ParseSchema 134
-#define OP_LoadAnalysis 135
-#define OP_DropTable 136
-#define OP_DropIndex 137
-#define OP_DropTrigger 138
-#define OP_IntegrityCk 139
-#define OP_RowSetAdd 140 /* synopsis: rowset(P1)=r[P2] */
-#define OP_Param 141
-#define OP_FkCounter 142 /* synopsis: fkctr[P1]+=P2 */
-#define OP_MemMax 143 /* synopsis: r[P1]=max(r[P1],r[P2]) */
-#define OP_OffsetLimit 144 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
-#define OP_AggStep0 145 /* synopsis: accum=r[P3] step(r[P2@P5]) */
-#define OP_AggStep 146 /* synopsis: accum=r[P3] step(r[P2@P5]) */
-#define OP_AggFinal 147 /* synopsis: accum=r[P1] N=P2 */
-#define OP_Expire 148
-#define OP_TableLock 149 /* synopsis: iDb=P1 root=P2 write=P3 */
-#define OP_VBegin 150
-#define OP_VCreate 151
-#define OP_VDestroy 152
-#define OP_VOpen 153
-#define OP_VColumn 154 /* synopsis: r[P3]=vcolumn(P2) */
-#define OP_VRename 155
-#define OP_Pagecount 156
-#define OP_MaxPgcnt 157
-#define OP_CursorHint 158
-#define OP_Noop 159
-#define OP_Explain 160
+#define OP_CreateTable 134 /* synopsis: r[P2]=root iDb=P1 */
+#define OP_ParseSchema 135
+#define OP_LoadAnalysis 136
+#define OP_DropTable 137
+#define OP_DropIndex 138
+#define OP_DropTrigger 139
+#define OP_IntegrityCk 140
+#define OP_RowSetAdd 141 /* synopsis: rowset(P1)=r[P2] */
+#define OP_Param 142
+#define OP_FkCounter 143 /* synopsis: fkctr[P1]+=P2 */
+#define OP_MemMax 144 /* synopsis: r[P1]=max(r[P1],r[P2]) */
+#define OP_OffsetLimit 145 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
+#define OP_AggStep0 146 /* synopsis: accum=r[P3] step(r[P2@P5]) */
+#define OP_AggStep 147 /* synopsis: accum=r[P3] step(r[P2@P5]) */
+#define OP_AggFinal 148 /* synopsis: accum=r[P1] N=P2 */
+#define OP_Expire 149
+#define OP_TableLock 150 /* synopsis: iDb=P1 root=P2 write=P3 */
+#define OP_VBegin 151
+#define OP_VCreate 152
+#define OP_VDestroy 153
+#define OP_VOpen 154
+#define OP_VColumn 155 /* synopsis: r[P3]=vcolumn(P2) */
+#define OP_VRename 156
+#define OP_Pagecount 157
+#define OP_MaxPgcnt 158
+#define OP_CursorHint 159
+#define OP_Noop 160
+#define OP_Explain 161
/* Properties such as "out2" or "jump" that are specified in
** comments following the "case" for each opcode in the vdbe.c
@@ -12513,23 +12703,23 @@ typedef struct VdbeOpList VdbeOpList;
/* 8 */ 0x00, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,\
/* 16 */ 0x03, 0x03, 0x01, 0x12, 0x01, 0x03, 0x03, 0x09,\
/* 24 */ 0x09, 0x09, 0x09, 0x26, 0x26, 0x09, 0x09, 0x09,\
-/* 32 */ 0x09, 0x01, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
+/* 32 */ 0x09, 0x09, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
/* 40 */ 0x0b, 0x0b, 0x01, 0x26, 0x26, 0x26, 0x26, 0x26,\
/* 48 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x01, 0x12, 0x01,\
-/* 56 */ 0x01, 0x01, 0x01, 0x01, 0x23, 0x0b, 0x01, 0x01,\
-/* 64 */ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02,\
-/* 72 */ 0x08, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10,\
-/* 80 */ 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00,\
-/* 88 */ 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,\
-/* 96 */ 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
-/* 104 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\
-/* 112 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
-/* 120 */ 0x00, 0x10, 0x00, 0x04, 0x04, 0x00, 0x00, 0x10,\
-/* 128 */ 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 0x00,\
-/* 136 */ 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04,\
-/* 144 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
-/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
-/* 160 */ 0x00,}
+/* 56 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x23, 0x0b, 0x01,\
+/* 64 */ 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02,\
+/* 72 */ 0x02, 0x08, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00,\
+/* 80 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
+/* 88 */ 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,\
+/* 96 */ 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00,\
+/* 104 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 112 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 120 */ 0x00, 0x00, 0x10, 0x00, 0x04, 0x04, 0x00, 0x00,\
+/* 128 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00,\
+/* 136 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00,\
+/* 144 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
+/* 160 */ 0x00, 0x00,}
/* The sqlite3P2Values() routine is able to run faster if it knows
** the value of the largest JUMP opcode. The smaller the maximum
@@ -12537,7 +12727,7 @@ typedef struct VdbeOpList VdbeOpList;
** generated this include file strives to group all JUMP opcodes
** together near the beginning of the list.
*/
-#define SQLITE_MX_JUMP_OPCODE 69 /* Maximum JUMP opcode */
+#define SQLITE_MX_JUMP_OPCODE 70 /* Maximum JUMP opcode */
/************** End of opcodes.h *********************************************/
/************** Continuing where we left off in vdbe.h ***********************/
@@ -12684,7 +12874,7 @@ SQLITE_PRIVATE void sqlite3VdbeScanStatus(Vdbe*, int, int, int, LogEst, const ch
# define sqlite3VdbeScanStatus(a,b,c,d,e)
#endif
-#endif
+#endif /* SQLITE_VDBE_H */
/************** End of vdbe.h ************************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -12706,8 +12896,8 @@ SQLITE_PRIVATE void sqlite3VdbeScanStatus(Vdbe*, int, int, int, LogEst, const ch
** at a time and provides a journal for rollback.
*/
-#ifndef _PAGER_H_
-#define _PAGER_H_
+#ifndef SQLITE_PAGER_H
+#define SQLITE_PAGER_H
/*
** Default maximum size for persistent journal files. A negative
@@ -12895,7 +13085,7 @@ SQLITE_PRIVATE const char *sqlite3PagerJournalname(Pager*);
SQLITE_PRIVATE void *sqlite3PagerTempSpace(Pager*);
SQLITE_PRIVATE int sqlite3PagerIsMemdb(Pager*);
SQLITE_PRIVATE void sqlite3PagerCacheStat(Pager *, int, int, int *);
-SQLITE_PRIVATE void sqlite3PagerClearCache(Pager *);
+SQLITE_PRIVATE void sqlite3PagerClearCache(Pager*);
SQLITE_PRIVATE int sqlite3SectorSize(sqlite3_file *);
/* Functions used to truncate the database file. */
@@ -12922,7 +13112,7 @@ SQLITE_PRIVATE void sqlite3PagerRefdump(Pager*);
# define enable_simulated_io_errors()
#endif
-#endif /* _PAGER_H_ */
+#endif /* SQLITE_PAGER_H */
/************** End of pager.h ***********************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -13160,8 +13350,8 @@ SQLITE_PRIVATE int sqlite3PCachePercentDirty(PCache*);
** This file contains pre-processor directives related to operating system
** detection and/or setup.
*/
-#ifndef _OS_SETUP_H_
-#define _OS_SETUP_H_
+#ifndef SQLITE_OS_SETUP_H
+#define SQLITE_OS_SETUP_H
/*
** Figure out if we are dealing with Unix, Windows, or some other operating
@@ -13201,7 +13391,7 @@ SQLITE_PRIVATE int sqlite3PCachePercentDirty(PCache*);
# endif
#endif
-#endif /* _OS_SETUP_H_ */
+#endif /* SQLITE_OS_SETUP_H */
/************** End of os_setup.h ********************************************/
/************** Continuing where we left off in os.h *************************/
@@ -13658,6 +13848,15 @@ SQLITE_PRIVATE void sqlite3CryptFunc(sqlite3_context*,int,sqlite3_value**);
const char*);
#endif
+#ifndef SQLITE_OMIT_DEPRECATED
+/* This is an extra SQLITE_TRACE macro that indicates "legacy" tracing
+** in the style of sqlite3_trace()
+*/
+#define SQLITE_TRACE_LEGACY 0x80
+#else
+#define SQLITE_TRACE_LEGACY 0
+#endif /* SQLITE_OMIT_DEPRECATED */
+
/*
** Each database connection is an instance of the following structure.
@@ -13687,6 +13886,7 @@ struct sqlite3 {
u8 suppressErr; /* Do not issue error messages if true */
u8 vtabOnConflict; /* Value to return for s3_vtab_on_conflict() */
u8 isTransactionSavepoint; /* True if the outermost savepoint is a TS */
+ u8 mTrace; /* zero or more SQLITE_TRACE flags */
int nextPagesize; /* Pagesize after VACUUM if >0 */
u32 magic; /* Magic number for detect library misuse */
int nChange; /* Value returned by sqlite3_changes() */
@@ -13707,7 +13907,7 @@ struct sqlite3 {
int nVDestroy; /* Number of active OP_VDestroy operations */
int nExtension; /* Number of loaded extensions */
void **aExtension; /* Array of shared library handles */
- void (*xTrace)(void*,const char*); /* Trace function */
+ int (*xTrace)(u32,void*,void*,void*); /* Trace function */
void *pTraceArg; /* Argument to the trace function */
void (*xProfile)(void*,const char*,u64); /* Profiling function */
void *pProfileArg; /* Argument to profile function */
@@ -14902,7 +15102,7 @@ struct SrcList {
int regReturn; /* Register holding return address of addrFillSub */
int regResult; /* Registers holding results of a co-routine */
struct {
- u8 jointype; /* Type of join between this able and the previous */
+ u8 jointype; /* Type of join between this table and the previous */
unsigned notIndexed :1; /* True if there is a NOT INDEXED clause */
unsigned isIndexedBy :1; /* True if there is an INDEXED BY clause */
unsigned isTabFunc :1; /* True if table-valued-function syntax */
@@ -14948,19 +15148,20 @@ struct SrcList {
#define WHERE_ORDERBY_MIN 0x0001 /* ORDER BY processing for min() func */
#define WHERE_ORDERBY_MAX 0x0002 /* ORDER BY processing for max() func */
#define WHERE_ONEPASS_DESIRED 0x0004 /* Want to do one-pass UPDATE/DELETE */
-#define WHERE_DUPLICATES_OK 0x0008 /* Ok to return a row more than once */
-#define WHERE_OMIT_OPEN_CLOSE 0x0010 /* Table cursors are already open */
-#define WHERE_FORCE_TABLE 0x0020 /* Do not use an index-only search */
-#define WHERE_ONETABLE_ONLY 0x0040 /* Only code the 1st table in pTabList */
-#define WHERE_NO_AUTOINDEX 0x0080 /* Disallow automatic indexes */
-#define WHERE_GROUPBY 0x0100 /* pOrderBy is really a GROUP BY */
-#define WHERE_DISTINCTBY 0x0200 /* pOrderby is really a DISTINCT clause */
-#define WHERE_WANT_DISTINCT 0x0400 /* All output needs to be distinct */
-#define WHERE_SORTBYGROUP 0x0800 /* Support sqlite3WhereIsSorted() */
-#define WHERE_REOPEN_IDX 0x1000 /* Try to use OP_ReopenIdx */
-#define WHERE_ONEPASS_MULTIROW 0x2000 /* ONEPASS is ok with multiple rows */
-#define WHERE_USE_LIMIT 0x4000 /* There is a constant LIMIT clause */
-#define WHERE_SEEK_TABLE 0x8000 /* Do not defer seeks on main table */
+#define WHERE_ONEPASS_MULTIROW 0x0008 /* ONEPASS is ok with multiple rows */
+#define WHERE_DUPLICATES_OK 0x0010 /* Ok to return a row more than once */
+#define WHERE_OR_SUBCLAUSE 0x0020 /* Processing a sub-WHERE as part of
+ ** the OR optimization */
+#define WHERE_GROUPBY 0x0040 /* pOrderBy is really a GROUP BY */
+#define WHERE_DISTINCTBY 0x0080 /* pOrderby is really a DISTINCT clause */
+#define WHERE_WANT_DISTINCT 0x0100 /* All output needs to be distinct */
+#define WHERE_SORTBYGROUP 0x0200 /* Support sqlite3WhereIsSorted() */
+#define WHERE_SEEK_TABLE 0x0400 /* Do not defer seeks on main table */
+#define WHERE_ORDERBY_LIMIT 0x0800 /* ORDERBY+LIMIT on the inner loop */
+ /* 0x1000 not currently used */
+ /* 0x2000 not currently used */
+#define WHERE_USE_LIMIT 0x4000 /* Use the LIMIT in cost estimates */
+ /* 0x8000 not currently used */
/* Allowed return values from sqlite3WhereIsDistinct()
*/
@@ -15663,6 +15864,7 @@ struct Walker {
struct SrcCount *pSrcCount; /* Counting column references */
struct CCurHint *pCCurHint; /* Used by codeCursorHint() */
int *aiCol; /* array of column indexes */
+ struct IdxCover *pIdxCover; /* Check for index coverage */
} u;
};
@@ -15846,11 +16048,15 @@ SQLITE_PRIVATE int sqlite3HeapNearlyFull(void);
# define sqlite3StackFree(D,P) sqlite3DbFree(D,P)
#endif
-#ifdef SQLITE_ENABLE_MEMSYS3
-SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void);
-#endif
+/* Do not allow both MEMSYS5 and MEMSYS3 to be defined together. If they
+** are, disable MEMSYS3
+*/
#ifdef SQLITE_ENABLE_MEMSYS5
SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys5(void);
+#undef SQLITE_ENABLE_MEMSYS3
+#endif
+#ifdef SQLITE_ENABLE_MEMSYS3
+SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void);
#endif
@@ -16033,8 +16239,8 @@ SQLITE_PRIVATE void sqlite3SrcListAssignCursors(Parse*, SrcList*);
SQLITE_PRIVATE void sqlite3IdListDelete(sqlite3*, IdList*);
SQLITE_PRIVATE void sqlite3SrcListDelete(sqlite3*, SrcList*);
SQLITE_PRIVATE Index *sqlite3AllocateIndexObject(sqlite3*,i16,int,char**);
-SQLITE_PRIVATE Index *sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*,
- Expr*, int, int);
+SQLITE_PRIVATE void sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*,
+ Expr*, int, int, u8);
SQLITE_PRIVATE void sqlite3DropIndex(Parse*, SrcList*, int);
SQLITE_PRIVATE int sqlite3Select(Parse*, Select*, SelectDest*);
SQLITE_PRIVATE Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList*,
@@ -16053,6 +16259,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo*);
SQLITE_PRIVATE LogEst sqlite3WhereOutputRowCount(WhereInfo*);
SQLITE_PRIVATE int sqlite3WhereIsDistinct(WhereInfo*);
SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo*);
+SQLITE_PRIVATE int sqlite3WhereOrderedInnerLoop(WhereInfo*);
SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo*);
SQLITE_PRIVATE int sqlite3WhereContinueLabel(WhereInfo*);
SQLITE_PRIVATE int sqlite3WhereBreakLabel(WhereInfo*);
@@ -16086,8 +16293,10 @@ SQLITE_PRIVATE void sqlite3ExprIfTrue(Parse*, Expr*, int, int);
SQLITE_PRIVATE void sqlite3ExprIfFalse(Parse*, Expr*, int, int);
SQLITE_PRIVATE void sqlite3ExprIfFalseDup(Parse*, Expr*, int, int);
SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3*,const char*, const char*);
-SQLITE_PRIVATE Table *sqlite3LocateTable(Parse*,int isView,const char*, const char*);
-SQLITE_PRIVATE Table *sqlite3LocateTableItem(Parse*,int isView,struct SrcList_item *);
+#define LOCATE_VIEW 0x01
+#define LOCATE_NOERR 0x02
+SQLITE_PRIVATE Table *sqlite3LocateTable(Parse*,u32 flags,const char*, const char*);
+SQLITE_PRIVATE Table *sqlite3LocateTableItem(Parse*,u32 flags,struct SrcList_item *);
SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*);
@@ -16099,6 +16308,7 @@ SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList*, ExprList*, int);
SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Expr*, Expr*, int);
SQLITE_PRIVATE void sqlite3ExprAnalyzeAggregates(NameContext*, Expr*);
SQLITE_PRIVATE void sqlite3ExprAnalyzeAggList(NameContext*,ExprList*);
+SQLITE_PRIVATE int sqlite3ExprCoveredByIndex(Expr*, int iCur, Index *pIdx);
SQLITE_PRIVATE int sqlite3FunctionUsesThisSrc(Expr*, SrcList*);
SQLITE_PRIVATE Vdbe *sqlite3GetVdbe(Parse*);
#ifndef SQLITE_OMIT_BUILTIN_TEST
@@ -16650,7 +16860,7 @@ SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread*, void**);
SQLITE_PRIVATE int sqlite3DbstatRegister(sqlite3*);
#endif
-#endif /* _SQLITEINT_H_ */
+#endif /* SQLITEINT_H */
/************** End of sqliteInt.h *******************************************/
/************** Begin file global.c ******************************************/
@@ -16985,6 +17195,15 @@ static const char * const azCompileOpt[] = {
#if SQLITE_CHECK_PAGES
"CHECK_PAGES",
#endif
+#if defined(__clang__) && defined(__clang_major__)
+ "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "."
+ CTIMEOPT_VAL(__clang_minor__) "."
+ CTIMEOPT_VAL(__clang_patchlevel__),
+#elif defined(_MSC_VER)
+ "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
+#elif defined(__GNUC__) && defined(__VERSION__)
+ "COMPILER=gcc-" __VERSION__,
+#endif
#if SQLITE_COVERAGE_TEST
"COVERAGE_TEST",
#endif
@@ -17004,7 +17223,7 @@ static const char * const azCompileOpt[] = {
"DISABLE_LFS",
#endif
#if SQLITE_ENABLE_8_3_NAMES
- "ENABLE_8_3_NAMES",
+ "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES),
#endif
#if SQLITE_ENABLE_API_ARMOR
"ENABLE_API_ARMOR",
@@ -17344,7 +17563,7 @@ static const char * const azCompileOpt[] = {
** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
** is not required for a match.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_compileoption_used(const char *zOptName){
+SQLITE_API int sqlite3_compileoption_used(const char *zOptName){
int i, n;
#if SQLITE_ENABLE_API_ARMOR
@@ -17372,7 +17591,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_compileoption_used(const char *zOptName){
** Return the N-th compile-time option string. If N is out of range,
** return a NULL pointer.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N){
+SQLITE_API const char *sqlite3_compileoption_get(int N){
if( N>=0 && N<ArraySize(azCompileOpt) ){
return azCompileOpt[N];
}
@@ -17418,8 +17637,8 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N){
** 6000 lines long) it was split up into several smaller files and
** this header information was factored out.
*/
-#ifndef _VDBEINT_H_
-#define _VDBEINT_H_
+#ifndef SQLITE_VDBEINT_H
+#define SQLITE_VDBEINT_H
/*
** The maximum number of times that a statement will try to reparse
@@ -17961,7 +18180,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *);
#define ExpandBlob(P) SQLITE_OK
#endif
-#endif /* !defined(_VDBEINT_H_) */
+#endif /* !defined(SQLITE_VDBEINT_H) */
/************** End of vdbeInt.h *********************************************/
/************** Continuing where we left off in status.c *********************/
@@ -18082,7 +18301,7 @@ SQLITE_PRIVATE void sqlite3StatusHighwater(int op, int X){
/*
** Query status information.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_status64(
+SQLITE_API int sqlite3_status64(
int op,
sqlite3_int64 *pCurrent,
sqlite3_int64 *pHighwater,
@@ -18107,8 +18326,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_status64(
(void)pMutex; /* Prevent warning when SQLITE_THREADSAFE=0 */
return SQLITE_OK;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag){
- sqlite3_int64 iCur, iHwtr;
+SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag){
+ sqlite3_int64 iCur = 0, iHwtr = 0;
int rc;
#ifdef SQLITE_ENABLE_API_ARMOR
if( pCurrent==0 || pHighwater==0 ) return SQLITE_MISUSE_BKPT;
@@ -18124,7 +18343,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_status(int op, int *pCurrent, int *pHighwa
/*
** Query status information for a single database connection
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_status(
+SQLITE_API int sqlite3_db_status(
sqlite3 *db, /* The database connection whose status is desired */
int op, /* Status verb */
int *pCurrent, /* Write current value here */
@@ -18169,6 +18388,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(
** by all pagers associated with the given database connection. The
** highwater mark is meaningless and is returned as zero.
*/
+ case SQLITE_DBSTATUS_CACHE_USED_SHARED:
case SQLITE_DBSTATUS_CACHE_USED: {
int totalUsed = 0;
int i;
@@ -18177,7 +18397,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(
Btree *pBt = db->aDb[i].pBt;
if( pBt ){
Pager *pPager = sqlite3BtreePager(pBt);
- totalUsed += sqlite3PagerMemUsed(pPager);
+ int nByte = sqlite3PagerMemUsed(pPager);
+ if( op==SQLITE_DBSTATUS_CACHE_USED_SHARED ){
+ nByte = nByte / sqlite3BtreeConnectionCount(pBt);
+ }
+ totalUsed += nByte;
}
}
sqlite3BtreeLeaveAll(db);
@@ -19411,7 +19635,6 @@ static void currentTimeFunc(
){
time_t t;
char *zFormat = (char *)sqlite3_user_data(context);
- sqlite3 *db;
sqlite3_int64 iT;
struct tm *pTm;
struct tm sNow;
@@ -19480,9 +19703,7 @@ SQLITE_PRIVATE void sqlite3RegisterDateTimeFunctions(void){
** This file contains OS interface code that is common to all
** architectures.
*/
-#define _SQLITE_OS_C_ 1
/* #include "sqliteInt.h" */
-#undef _SQLITE_OS_C_
/*
** If we compile with the SQLITE_TEST macro set, then the following block
@@ -19799,7 +20020,7 @@ static sqlite3_vfs * SQLITE_WSD vfsList = 0;
** Locate a VFS by name. If no name is given, simply return the
** first VFS on the list.
*/
-SQLITE_API sqlite3_vfs *SQLITE_STDCALL sqlite3_vfs_find(const char *zVfs){
+SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfs){
sqlite3_vfs *pVfs = 0;
#if SQLITE_THREADSAFE
sqlite3_mutex *mutex;
@@ -19845,7 +20066,7 @@ static void vfsUnlink(sqlite3_vfs *pVfs){
** VFS multiple times. The new VFS becomes the default if makeDflt is
** true.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_register(sqlite3_vfs *pVfs, int makeDflt){
+SQLITE_API int sqlite3_vfs_register(sqlite3_vfs *pVfs, int makeDflt){
MUTEX_LOGIC(sqlite3_mutex *mutex;)
#ifndef SQLITE_OMIT_AUTOINIT
int rc = sqlite3_initialize();
@@ -19873,7 +20094,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vfs_register(sqlite3_vfs *pVfs, int makeDf
/*
** Unregister a VFS so that it is no longer accessible.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_unregister(sqlite3_vfs *pVfs){
+SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs *pVfs){
#if SQLITE_THREADSAFE
sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);
#endif
@@ -22224,7 +22445,7 @@ SQLITE_PRIVATE int sqlite3MutexEnd(void){
/*
** Retrieve a pointer to a static mutex or allocate a new dynamic one.
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int id){
+SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int id){
#ifndef SQLITE_OMIT_AUTOINIT
if( id<=SQLITE_MUTEX_RECURSIVE && sqlite3_initialize() ) return 0;
if( id>SQLITE_MUTEX_RECURSIVE && sqlite3MutexInit() ) return 0;
@@ -22245,7 +22466,7 @@ SQLITE_PRIVATE sqlite3_mutex *sqlite3MutexAlloc(int id){
/*
** Free a dynamic mutex.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex *p){
+SQLITE_API void sqlite3_mutex_free(sqlite3_mutex *p){
if( p ){
assert( sqlite3GlobalConfig.mutex.xMutexFree );
sqlite3GlobalConfig.mutex.xMutexFree(p);
@@ -22256,7 +22477,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex *p){
** Obtain the mutex p. If some other thread already has the mutex, block
** until it can be obtained.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex *p){
+SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex *p){
if( p ){
assert( sqlite3GlobalConfig.mutex.xMutexEnter );
sqlite3GlobalConfig.mutex.xMutexEnter(p);
@@ -22267,7 +22488,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex *p){
** Obtain the mutex p. If successful, return SQLITE_OK. Otherwise, if another
** thread holds the mutex and it cannot be obtained, return SQLITE_BUSY.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex *p){
+SQLITE_API int sqlite3_mutex_try(sqlite3_mutex *p){
int rc = SQLITE_OK;
if( p ){
assert( sqlite3GlobalConfig.mutex.xMutexTry );
@@ -22282,7 +22503,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex *p){
** is not currently entered. If a NULL pointer is passed as an argument
** this function is a no-op.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex *p){
+SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex *p){
if( p ){
assert( sqlite3GlobalConfig.mutex.xMutexLeave );
sqlite3GlobalConfig.mutex.xMutexLeave(p);
@@ -22294,11 +22515,11 @@ SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex *p){
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
** intended for use inside assert() statements.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_held(sqlite3_mutex *p){
+SQLITE_API int sqlite3_mutex_held(sqlite3_mutex *p){
assert( p==0 || sqlite3GlobalConfig.mutex.xMutexHeld );
return p==0 || sqlite3GlobalConfig.mutex.xMutexHeld(p);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_notheld(sqlite3_mutex *p){
+SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex *p){
assert( p==0 || sqlite3GlobalConfig.mutex.xMutexNotheld );
return p==0 || sqlite3GlobalConfig.mutex.xMutexNotheld(p);
}
@@ -22995,8 +23216,8 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
** This file contains inline asm code for retrieving "high-performance"
** counters for x86 class CPUs.
*/
-#ifndef _HWTIME_H_
-#define _HWTIME_H_
+#ifndef SQLITE_HWTIME_H
+#define SQLITE_HWTIME_H
/*
** The following routine only works on pentium-class (or newer) processors.
@@ -23064,7 +23285,7 @@ SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
#endif
-#endif /* !defined(_HWTIME_H_) */
+#endif /* !defined(SQLITE_HWTIME_H) */
/************** End of hwtime.h **********************************************/
/************** Continuing where we left off in os_common.h ******************/
@@ -23154,8 +23375,8 @@ SQLITE_API extern int sqlite3_open_file_count;
**
** This file contains code that is specific to Windows.
*/
-#ifndef _OS_WIN_H_
-#define _OS_WIN_H_
+#ifndef SQLITE_OS_WIN_H
+#define SQLITE_OS_WIN_H
/*
** Include the primary Windows SDK header file.
@@ -23227,7 +23448,7 @@ SQLITE_API extern int sqlite3_open_file_count;
# define SQLITE_OS_WIN_THREADS 0
#endif
-#endif /* _OS_WIN_H_ */
+#endif /* SQLITE_OS_WIN_H */
/************** End of os_win.h **********************************************/
/************** Continuing where we left off in mutex_w32.c ******************/
@@ -23330,8 +23551,8 @@ static int winMutex_isNt = -1; /* <0 means "need to query" */
*/
static LONG SQLITE_WIN32_VOLATILE winMutex_lock = 0;
-SQLITE_API int SQLITE_STDCALL sqlite3_win32_is_nt(void); /* os_win.c */
-SQLITE_API void SQLITE_STDCALL sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */
+SQLITE_API int sqlite3_win32_is_nt(void); /* os_win.c */
+SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */
static int winMutexInit(void){
/* The first to increment to 1 does actual initialization */
@@ -23631,7 +23852,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
** held by SQLite. An example of non-essential memory is memory used to
** cache database pages that are not currently in use.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_release_memory(int n){
+SQLITE_API int sqlite3_release_memory(int n){
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
return sqlite3PcacheReleaseMemory(n);
#else
@@ -23690,7 +23911,7 @@ SQLITE_PRIVATE sqlite3_mutex *sqlite3MallocMutex(void){
** that was invoked when memory usage grew too large. Now it is a
** no-op.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_memory_alarm(
+SQLITE_API int sqlite3_memory_alarm(
void(*xCallback)(void *pArg, sqlite3_int64 used,int N),
void *pArg,
sqlite3_int64 iThreshold
@@ -23706,7 +23927,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_memory_alarm(
** Set the soft heap-size limit for the library. Passing a zero or
** negative value indicates no limit.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64 n){
+SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 n){
sqlite3_int64 priorLimit;
sqlite3_int64 excess;
sqlite3_int64 nUsed;
@@ -23728,7 +23949,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64
if( excess>0 ) sqlite3_release_memory((int)(excess & 0x7fffffff));
return priorLimit;
}
-SQLITE_API void SQLITE_STDCALL sqlite3_soft_heap_limit(int n){
+SQLITE_API void sqlite3_soft_heap_limit(int n){
if( n<0 ) n = 0;
sqlite3_soft_heap_limit64(n);
}
@@ -23797,7 +24018,7 @@ SQLITE_PRIVATE void sqlite3MallocEnd(void){
/*
** Return the amount of memory currently checked out.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_used(void){
+SQLITE_API sqlite3_int64 sqlite3_memory_used(void){
sqlite3_int64 res, mx;
sqlite3_status64(SQLITE_STATUS_MEMORY_USED, &res, &mx, 0);
return res;
@@ -23808,7 +24029,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_used(void){
** checked out since either the beginning of this process
** or since the most recent reset.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_highwater(int resetFlag){
+SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag){
sqlite3_int64 res, mx;
sqlite3_status64(SQLITE_STATUS_MEMORY_USED, &res, &mx, resetFlag);
return mx;
@@ -23888,13 +24109,13 @@ SQLITE_PRIVATE void *sqlite3Malloc(u64 n){
** First make sure the memory subsystem is initialized, then do the
** allocation.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc(int n){
+SQLITE_API void *sqlite3_malloc(int n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
return n<=0 ? 0 : sqlite3Malloc(n);
}
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc64(sqlite3_uint64 n){
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64 n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
@@ -24037,7 +24258,7 @@ SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, void *p){
return db->lookaside.sz;
}
}
-SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void *p){
+SQLITE_API sqlite3_uint64 sqlite3_msize(void *p){
assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
return p ? sqlite3GlobalConfig.m.xSize(p) : 0;
@@ -24046,7 +24267,7 @@ SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void *p){
/*
** Free memory previously obtained from sqlite3Malloc().
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_free(void *p){
+SQLITE_API void sqlite3_free(void *p){
if( p==0 ) return; /* IMP: R-49053-54554 */
assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
@@ -24155,14 +24376,14 @@ SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, u64 nBytes){
** The public interface to sqlite3Realloc. Make sure that the memory
** subsystem is initialized prior to invoking sqliteRealloc.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc(void *pOld, int n){
+SQLITE_API void *sqlite3_realloc(void *pOld, int n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
if( n<0 ) n = 0; /* IMP: R-26507-47431 */
return sqlite3Realloc(pOld, n);
}
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc64(void *pOld, sqlite3_uint64 n){
+SQLITE_API void *sqlite3_realloc64(void *pOld, sqlite3_uint64 n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
@@ -25389,7 +25610,7 @@ SQLITE_PRIVATE char *sqlite3MPrintf(sqlite3 *db, const char *zFormat, ...){
** Print into memory obtained from sqlite3_malloc(). Omit the internal
** %-conversion extensions.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char *zFormat, va_list ap){
+SQLITE_API char *sqlite3_vmprintf(const char *zFormat, va_list ap){
char *z;
char zBase[SQLITE_PRINT_BUF_SIZE];
StrAccum acc;
@@ -25413,7 +25634,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char *zFormat, va_list ap
** Print into memory obtained from sqlite3_malloc()(). Omit the internal
** %-conversion extensions.
*/
-SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char *zFormat, ...){
+SQLITE_API char *sqlite3_mprintf(const char *zFormat, ...){
va_list ap;
char *z;
#ifndef SQLITE_OMIT_AUTOINIT
@@ -25438,7 +25659,7 @@ SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char *zFormat, ...){
**
** sqlite3_vsnprintf() is the varargs version.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int n, char *zBuf, const char *zFormat, va_list ap){
+SQLITE_API char *sqlite3_vsnprintf(int n, char *zBuf, const char *zFormat, va_list ap){
StrAccum acc;
if( n<=0 ) return zBuf;
#ifdef SQLITE_ENABLE_API_ARMOR
@@ -25452,7 +25673,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int n, char *zBuf, const char
sqlite3VXPrintf(&acc, zFormat, ap);
return sqlite3StrAccumFinish(&acc);
}
-SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int n, char *zBuf, const char *zFormat, ...){
+SQLITE_API char *sqlite3_snprintf(int n, char *zBuf, const char *zFormat, ...){
char *z;
va_list ap;
va_start(ap,zFormat);
@@ -25488,7 +25709,7 @@ static void renderLogMsg(int iErrCode, const char *zFormat, va_list ap){
/*
** Format and write a message to the log if logging is enabled.
*/
-SQLITE_API void SQLITE_CDECL sqlite3_log(int iErrCode, const char *zFormat, ...){
+SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...){
va_list ap; /* Vararg list */
if( sqlite3GlobalConfig.xLog ){
va_start(ap, zFormat);
@@ -25978,6 +26199,12 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
break;
}
#endif
+ case TK_MATCH: {
+ sqlite3TreeViewLine(pView, "MATCH {%d:%d}%s",
+ pExpr->iTable, pExpr->iColumn, zFlgs);
+ sqlite3TreeViewExpr(pView, pExpr->pRight, 0);
+ break;
+ }
default: {
sqlite3TreeViewLine(pView, "op=%d", pExpr->op);
break;
@@ -26059,7 +26286,7 @@ static SQLITE_WSD struct sqlite3PrngType {
/*
** Return N random bytes.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_randomness(int N, void *pBuf){
+SQLITE_API void sqlite3_randomness(int N, void *pBuf){
unsigned char t;
unsigned char *zBuf = pBuf;
@@ -27262,7 +27489,7 @@ SQLITE_PRIVATE void sqlite3TokenInit(Token *p, char *z){
** case-independent fashion, using the same definition of "case
** independence" that SQLite uses internally when comparing identifiers.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stricmp(const char *zLeft, const char *zRight){
+SQLITE_API int sqlite3_stricmp(const char *zLeft, const char *zRight){
if( zLeft==0 ){
return zRight ? -1 : 0;
}else if( zRight==0 ){
@@ -27283,7 +27510,7 @@ SQLITE_PRIVATE int sqlite3StrICmp(const char *zLeft, const char *zRight){
}
return c;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *zLeft, const char *zRight, int N){
+SQLITE_API int sqlite3_strnicmp(const char *zLeft, const char *zRight, int N){
register unsigned char *a, *b;
if( zLeft==0 ){
return zRight ? -1 : 0;
@@ -28761,17 +28988,17 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 29 */ "NoConflict" OpHelp("key=r[P3@P4]"),
/* 30 */ "NotFound" OpHelp("key=r[P3@P4]"),
/* 31 */ "Found" OpHelp("key=r[P3@P4]"),
- /* 32 */ "NotExists" OpHelp("intkey=r[P3]"),
- /* 33 */ "Last" OpHelp(""),
+ /* 32 */ "SeekRowid" OpHelp("intkey=r[P3]"),
+ /* 33 */ "NotExists" OpHelp("intkey=r[P3]"),
/* 34 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
/* 35 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
- /* 36 */ "Ne" OpHelp("if r[P1]!=r[P3] goto P2"),
- /* 37 */ "Eq" OpHelp("if r[P1]==r[P3] goto P2"),
- /* 38 */ "Gt" OpHelp("if r[P1]>r[P3] goto P2"),
- /* 39 */ "Le" OpHelp("if r[P1]<=r[P3] goto P2"),
- /* 40 */ "Lt" OpHelp("if r[P1]<r[P3] goto P2"),
- /* 41 */ "Ge" OpHelp("if r[P1]>=r[P3] goto P2"),
- /* 42 */ "SorterSort" OpHelp(""),
+ /* 36 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
+ /* 37 */ "Eq" OpHelp("IF r[P3]==r[P1]"),
+ /* 38 */ "Gt" OpHelp("IF r[P3]>r[P1]"),
+ /* 39 */ "Le" OpHelp("IF r[P3]<=r[P1]"),
+ /* 40 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
+ /* 41 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
+ /* 42 */ "Last" OpHelp(""),
/* 43 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
/* 44 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
/* 45 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
@@ -28782,114 +29009,115 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 50 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
/* 51 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
/* 52 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
- /* 53 */ "Sort" OpHelp(""),
+ /* 53 */ "SorterSort" OpHelp(""),
/* 54 */ "BitNot" OpHelp("r[P1]= ~r[P1]"),
- /* 55 */ "Rewind" OpHelp(""),
- /* 56 */ "IdxLE" OpHelp("key=r[P3@P4]"),
- /* 57 */ "IdxGT" OpHelp("key=r[P3@P4]"),
- /* 58 */ "IdxLT" OpHelp("key=r[P3@P4]"),
- /* 59 */ "IdxGE" OpHelp("key=r[P3@P4]"),
- /* 60 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
- /* 61 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
- /* 62 */ "Program" OpHelp(""),
- /* 63 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
- /* 64 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
- /* 65 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]-=P3, goto P2"),
- /* 66 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
- /* 67 */ "IncrVacuum" OpHelp(""),
- /* 68 */ "VNext" OpHelp(""),
- /* 69 */ "Init" OpHelp("Start at P2"),
- /* 70 */ "Return" OpHelp(""),
- /* 71 */ "EndCoroutine" OpHelp(""),
- /* 72 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
- /* 73 */ "Halt" OpHelp(""),
- /* 74 */ "Integer" OpHelp("r[P2]=P1"),
- /* 75 */ "Int64" OpHelp("r[P2]=P4"),
- /* 76 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
- /* 77 */ "Null" OpHelp("r[P2..P3]=NULL"),
- /* 78 */ "SoftNull" OpHelp("r[P1]=NULL"),
- /* 79 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
- /* 80 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
- /* 81 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
- /* 82 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
- /* 83 */ "SCopy" OpHelp("r[P2]=r[P1]"),
- /* 84 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
- /* 85 */ "ResultRow" OpHelp("output=r[P1@P2]"),
- /* 86 */ "CollSeq" OpHelp(""),
- /* 87 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"),
- /* 88 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"),
- /* 89 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
- /* 90 */ "RealAffinity" OpHelp(""),
- /* 91 */ "Cast" OpHelp("affinity(r[P1])"),
- /* 92 */ "Permutation" OpHelp(""),
- /* 93 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
- /* 94 */ "Column" OpHelp("r[P3]=PX"),
- /* 95 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
- /* 96 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
+ /* 55 */ "Sort" OpHelp(""),
+ /* 56 */ "Rewind" OpHelp(""),
+ /* 57 */ "IdxLE" OpHelp("key=r[P3@P4]"),
+ /* 58 */ "IdxGT" OpHelp("key=r[P3@P4]"),
+ /* 59 */ "IdxLT" OpHelp("key=r[P3@P4]"),
+ /* 60 */ "IdxGE" OpHelp("key=r[P3@P4]"),
+ /* 61 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
+ /* 62 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
+ /* 63 */ "Program" OpHelp(""),
+ /* 64 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
+ /* 65 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
+ /* 66 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]-=P3, goto P2"),
+ /* 67 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
+ /* 68 */ "IncrVacuum" OpHelp(""),
+ /* 69 */ "VNext" OpHelp(""),
+ /* 70 */ "Init" OpHelp("Start at P2"),
+ /* 71 */ "Return" OpHelp(""),
+ /* 72 */ "EndCoroutine" OpHelp(""),
+ /* 73 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
+ /* 74 */ "Halt" OpHelp(""),
+ /* 75 */ "Integer" OpHelp("r[P2]=P1"),
+ /* 76 */ "Int64" OpHelp("r[P2]=P4"),
+ /* 77 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
+ /* 78 */ "Null" OpHelp("r[P2..P3]=NULL"),
+ /* 79 */ "SoftNull" OpHelp("r[P1]=NULL"),
+ /* 80 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
+ /* 81 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
+ /* 82 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
+ /* 83 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
+ /* 84 */ "SCopy" OpHelp("r[P2]=r[P1]"),
+ /* 85 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
+ /* 86 */ "ResultRow" OpHelp("output=r[P1@P2]"),
+ /* 87 */ "CollSeq" OpHelp(""),
+ /* 88 */ "Function0" OpHelp("r[P3]=func(r[P2@P5])"),
+ /* 89 */ "Function" OpHelp("r[P3]=func(r[P2@P5])"),
+ /* 90 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
+ /* 91 */ "RealAffinity" OpHelp(""),
+ /* 92 */ "Cast" OpHelp("affinity(r[P1])"),
+ /* 93 */ "Permutation" OpHelp(""),
+ /* 94 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
+ /* 95 */ "Column" OpHelp("r[P3]=PX"),
+ /* 96 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
/* 97 */ "String8" OpHelp("r[P2]='P4'"),
- /* 98 */ "Count" OpHelp("r[P2]=count()"),
- /* 99 */ "ReadCookie" OpHelp(""),
- /* 100 */ "SetCookie" OpHelp(""),
- /* 101 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
- /* 102 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
- /* 103 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
- /* 104 */ "OpenAutoindex" OpHelp("nColumn=P2"),
- /* 105 */ "OpenEphemeral" OpHelp("nColumn=P2"),
- /* 106 */ "SorterOpen" OpHelp(""),
- /* 107 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
- /* 108 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
- /* 109 */ "Close" OpHelp(""),
- /* 110 */ "ColumnsUsed" OpHelp(""),
- /* 111 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
- /* 112 */ "NewRowid" OpHelp("r[P2]=rowid"),
- /* 113 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
- /* 114 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
- /* 115 */ "Delete" OpHelp(""),
- /* 116 */ "ResetCount" OpHelp(""),
- /* 117 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
- /* 118 */ "SorterData" OpHelp("r[P2]=data"),
- /* 119 */ "RowKey" OpHelp("r[P2]=key"),
- /* 120 */ "RowData" OpHelp("r[P2]=data"),
- /* 121 */ "Rowid" OpHelp("r[P2]=rowid"),
- /* 122 */ "NullRow" OpHelp(""),
- /* 123 */ "SorterInsert" OpHelp(""),
- /* 124 */ "IdxInsert" OpHelp("key=r[P2]"),
- /* 125 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
- /* 126 */ "Seek" OpHelp("Move P3 to P1.rowid"),
- /* 127 */ "IdxRowid" OpHelp("r[P2]=rowid"),
- /* 128 */ "Destroy" OpHelp(""),
- /* 129 */ "Clear" OpHelp(""),
- /* 130 */ "ResetSorter" OpHelp(""),
- /* 131 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
- /* 132 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
+ /* 98 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
+ /* 99 */ "Count" OpHelp("r[P2]=count()"),
+ /* 100 */ "ReadCookie" OpHelp(""),
+ /* 101 */ "SetCookie" OpHelp(""),
+ /* 102 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
+ /* 103 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
+ /* 104 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
+ /* 105 */ "OpenAutoindex" OpHelp("nColumn=P2"),
+ /* 106 */ "OpenEphemeral" OpHelp("nColumn=P2"),
+ /* 107 */ "SorterOpen" OpHelp(""),
+ /* 108 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
+ /* 109 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
+ /* 110 */ "Close" OpHelp(""),
+ /* 111 */ "ColumnsUsed" OpHelp(""),
+ /* 112 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
+ /* 113 */ "NewRowid" OpHelp("r[P2]=rowid"),
+ /* 114 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
+ /* 115 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
+ /* 116 */ "Delete" OpHelp(""),
+ /* 117 */ "ResetCount" OpHelp(""),
+ /* 118 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
+ /* 119 */ "SorterData" OpHelp("r[P2]=data"),
+ /* 120 */ "RowKey" OpHelp("r[P2]=key"),
+ /* 121 */ "RowData" OpHelp("r[P2]=data"),
+ /* 122 */ "Rowid" OpHelp("r[P2]=rowid"),
+ /* 123 */ "NullRow" OpHelp(""),
+ /* 124 */ "SorterInsert" OpHelp(""),
+ /* 125 */ "IdxInsert" OpHelp("key=r[P2]"),
+ /* 126 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
+ /* 127 */ "Seek" OpHelp("Move P3 to P1.rowid"),
+ /* 128 */ "IdxRowid" OpHelp("r[P2]=rowid"),
+ /* 129 */ "Destroy" OpHelp(""),
+ /* 130 */ "Clear" OpHelp(""),
+ /* 131 */ "ResetSorter" OpHelp(""),
+ /* 132 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
/* 133 */ "Real" OpHelp("r[P2]=P4"),
- /* 134 */ "ParseSchema" OpHelp(""),
- /* 135 */ "LoadAnalysis" OpHelp(""),
- /* 136 */ "DropTable" OpHelp(""),
- /* 137 */ "DropIndex" OpHelp(""),
- /* 138 */ "DropTrigger" OpHelp(""),
- /* 139 */ "IntegrityCk" OpHelp(""),
- /* 140 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
- /* 141 */ "Param" OpHelp(""),
- /* 142 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
- /* 143 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
- /* 144 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
- /* 145 */ "AggStep0" OpHelp("accum=r[P3] step(r[P2@P5])"),
- /* 146 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
- /* 147 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
- /* 148 */ "Expire" OpHelp(""),
- /* 149 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
- /* 150 */ "VBegin" OpHelp(""),
- /* 151 */ "VCreate" OpHelp(""),
- /* 152 */ "VDestroy" OpHelp(""),
- /* 153 */ "VOpen" OpHelp(""),
- /* 154 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
- /* 155 */ "VRename" OpHelp(""),
- /* 156 */ "Pagecount" OpHelp(""),
- /* 157 */ "MaxPgcnt" OpHelp(""),
- /* 158 */ "CursorHint" OpHelp(""),
- /* 159 */ "Noop" OpHelp(""),
- /* 160 */ "Explain" OpHelp(""),
+ /* 134 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
+ /* 135 */ "ParseSchema" OpHelp(""),
+ /* 136 */ "LoadAnalysis" OpHelp(""),
+ /* 137 */ "DropTable" OpHelp(""),
+ /* 138 */ "DropIndex" OpHelp(""),
+ /* 139 */ "DropTrigger" OpHelp(""),
+ /* 140 */ "IntegrityCk" OpHelp(""),
+ /* 141 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 142 */ "Param" OpHelp(""),
+ /* 143 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
+ /* 144 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
+ /* 145 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
+ /* 146 */ "AggStep0" OpHelp("accum=r[P3] step(r[P2@P5])"),
+ /* 147 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
+ /* 148 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
+ /* 149 */ "Expire" OpHelp(""),
+ /* 150 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
+ /* 151 */ "VBegin" OpHelp(""),
+ /* 152 */ "VCreate" OpHelp(""),
+ /* 153 */ "VDestroy" OpHelp(""),
+ /* 154 */ "VOpen" OpHelp(""),
+ /* 155 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
+ /* 156 */ "VRename" OpHelp(""),
+ /* 157 */ "Pagecount" OpHelp(""),
+ /* 158 */ "MaxPgcnt" OpHelp(""),
+ /* 159 */ "CursorHint" OpHelp(""),
+ /* 160 */ "Noop" OpHelp(""),
+ /* 161 */ "Explain" OpHelp(""),
};
return azName[i];
}
@@ -29239,8 +29467,8 @@ static pid_t randomnessPid = 0;
** This file contains inline asm code for retrieving "high-performance"
** counters for x86 class CPUs.
*/
-#ifndef _HWTIME_H_
-#define _HWTIME_H_
+#ifndef SQLITE_HWTIME_H
+#define SQLITE_HWTIME_H
/*
** The following routine only works on pentium-class (or newer) processors.
@@ -29308,7 +29536,7 @@ SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
#endif
-#endif /* !defined(_HWTIME_H_) */
+#endif /* !defined(SQLITE_HWTIME_H) */
/************** End of hwtime.h **********************************************/
/************** Continuing where we left off in os_common.h ******************/
@@ -36581,7 +36809,7 @@ static int proxyClose(sqlite3_file *id) {
** necessarily been initialized when this routine is called, and so they
** should not be used.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void){
+SQLITE_API int sqlite3_os_init(void){
/*
** The following macro defines an initializer for an sqlite3_vfs object.
** The name of the VFS is NAME. The pAppData is a pointer to a pointer
@@ -36680,7 +36908,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void){
** to release dynamically allocated objects. But not on unix.
** This routine is a no-op for unix.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void){
+SQLITE_API int sqlite3_os_end(void){
return SQLITE_OK;
}
@@ -36768,8 +36996,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void){
** This file contains inline asm code for retrieving "high-performance"
** counters for x86 class CPUs.
*/
-#ifndef _HWTIME_H_
-#define _HWTIME_H_
+#ifndef SQLITE_HWTIME_H
+#define SQLITE_HWTIME_H
/*
** The following routine only works on pentium-class (or newer) processors.
@@ -36837,7 +37065,7 @@ SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
#endif
-#endif /* !defined(_HWTIME_H_) */
+#endif /* !defined(SQLITE_HWTIME_H) */
/************** End of hwtime.h **********************************************/
/************** Continuing where we left off in os_common.h ******************/
@@ -37179,6 +37407,17 @@ struct winFile {
};
/*
+** The winVfsAppData structure is used for the pAppData member for all of the
+** Win32 VFS variants.
+*/
+typedef struct winVfsAppData winVfsAppData;
+struct winVfsAppData {
+ const sqlite3_io_methods *pMethod; /* The file I/O methods to use. */
+ void *pAppData; /* The extra pAppData, if any. */
+ BOOL bNoLock; /* Non-zero if locking is disabled. */
+};
+
+/*
** Allowed values for winFile.ctrlFlags
*/
#define WINFILE_RDONLY 0x02 /* Connection is read only */
@@ -38104,7 +38343,7 @@ static const char *winNextSystemCall(sqlite3_vfs *p, const char *zName){
** "pnLargest" argument, if non-zero, will be used to return the size of the
** largest committed free block in the heap, in bytes.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_win32_compact_heap(LPUINT pnLargest){
+SQLITE_API int sqlite3_win32_compact_heap(LPUINT pnLargest){
int rc = SQLITE_OK;
UINT nLargest = 0;
HANDLE hHeap;
@@ -38144,7 +38383,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_win32_compact_heap(LPUINT pnLargest){
** the sqlite3_memory_used() function does not return zero, SQLITE_BUSY will
** be returned and no changes will be made to the Win32 native heap.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_win32_reset_heap(){
+SQLITE_API int sqlite3_win32_reset_heap(){
int rc;
MUTEX_LOGIC( sqlite3_mutex *pMaster; ) /* The main static mutex */
MUTEX_LOGIC( sqlite3_mutex *pMem; ) /* The memsys static mutex */
@@ -38189,7 +38428,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_win32_reset_heap(){
** (if available).
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_win32_write_debug(const char *zBuf, int nBuf){
+SQLITE_API void sqlite3_win32_write_debug(const char *zBuf, int nBuf){
char zDbgBuf[SQLITE_WIN32_DBG_BUF_SIZE];
int nMin = MIN(nBuf, (SQLITE_WIN32_DBG_BUF_SIZE - 1)); /* may be negative. */
if( nMin<-1 ) nMin = -1; /* all negative values become -1. */
@@ -38235,7 +38474,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_win32_write_debug(const char *zBuf, int n
static HANDLE sleepObj = NULL;
#endif
-SQLITE_API void SQLITE_STDCALL sqlite3_win32_sleep(DWORD milliseconds){
+SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){
#if SQLITE_OS_WINRT
if ( sleepObj==NULL ){
sleepObj = osCreateEventExW(NULL, NULL, CREATE_EVENT_MANUAL_RESET,
@@ -38284,7 +38523,7 @@ SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
** This function determines if the machine is running a version of Windows
** based on the NT kernel.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_win32_is_nt(void){
+SQLITE_API int sqlite3_win32_is_nt(void){
#if SQLITE_OS_WINRT
/*
** NOTE: The WinRT sub-platform is always assumed to be based on the NT
@@ -38672,7 +38911,7 @@ static char *winUtf8ToMbcs(const char *zText, int useAnsi){
/*
** This is a public wrapper for the winUtf8ToUnicode() function.
*/
-SQLITE_API LPWSTR SQLITE_STDCALL sqlite3_win32_utf8_to_unicode(const char *zText){
+SQLITE_API LPWSTR sqlite3_win32_utf8_to_unicode(const char *zText){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38688,7 +38927,7 @@ SQLITE_API LPWSTR SQLITE_STDCALL sqlite3_win32_utf8_to_unicode(const char *zText
/*
** This is a public wrapper for the winUnicodeToUtf8() function.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_win32_unicode_to_utf8(LPCWSTR zWideText){
+SQLITE_API char *sqlite3_win32_unicode_to_utf8(LPCWSTR zWideText){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zWideText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38704,7 +38943,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_win32_unicode_to_utf8(LPCWSTR zWideText)
/*
** This is a public wrapper for the winMbcsToUtf8() function.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_win32_mbcs_to_utf8(const char *zText){
+SQLITE_API char *sqlite3_win32_mbcs_to_utf8(const char *zText){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38720,7 +38959,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_win32_mbcs_to_utf8(const char *zText){
/*
** This is a public wrapper for the winMbcsToUtf8() function.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_win32_mbcs_to_utf8_v2(const char *zText, int useAnsi){
+SQLITE_API char *sqlite3_win32_mbcs_to_utf8_v2(const char *zText, int useAnsi){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38736,7 +38975,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_win32_mbcs_to_utf8_v2(const char *zText,
/*
** This is a public wrapper for the winUtf8ToMbcs() function.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_win32_utf8_to_mbcs(const char *zText){
+SQLITE_API char *sqlite3_win32_utf8_to_mbcs(const char *zText){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38752,7 +38991,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_win32_utf8_to_mbcs(const char *zText){
/*
** This is a public wrapper for the winUtf8ToMbcs() function.
*/
-SQLITE_API char *SQLITE_STDCALL sqlite3_win32_utf8_to_mbcs_v2(const char *zText, int useAnsi){
+SQLITE_API char *sqlite3_win32_utf8_to_mbcs_v2(const char *zText, int useAnsi){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !zText ){
(void)SQLITE_MISUSE_BKPT;
@@ -38772,7 +39011,7 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_win32_utf8_to_mbcs_v2(const char *zText,
** argument is the name of the directory to use. The return value will be
** SQLITE_OK if successful.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_win32_set_directory(DWORD type, LPCWSTR zValue){
+SQLITE_API int sqlite3_win32_set_directory(DWORD type, LPCWSTR zValue){
char **ppDirectory = 0;
#ifndef SQLITE_OMIT_AUTOINIT
int rc = sqlite3_initialize();
@@ -39499,7 +39738,12 @@ static int winClose(sqlite3_file *id){
}while( rc==0 && ++cnt < MX_CLOSE_ATTEMPT && (sqlite3_win32_sleep(100), 1) );
#if SQLITE_OS_WINCE
#define WINCE_DELETION_ATTEMPTS 3
- winceDestroyLock(pFile);
+ {
+ winVfsAppData *pAppData = (winVfsAppData*)pFile->pVfs->pAppData;
+ if( pAppData==NULL || !pAppData->bNoLock ){
+ winceDestroyLock(pFile);
+ }
+ }
if( pFile->zDeleteOnClose ){
int cnt = 0;
while(
@@ -40231,6 +40475,44 @@ static int winUnlock(sqlite3_file *id, int locktype){
return rc;
}
+/******************************************************************************
+****************************** No-op Locking **********************************
+**
+** Of the various locking implementations available, this is by far the
+** simplest: locking is ignored. No attempt is made to lock the database
+** file for reading or writing.
+**
+** This locking mode is appropriate for use on read-only databases
+** (ex: databases that are burned into CD-ROM, for example.) It can
+** also be used if the application employs some external mechanism to
+** prevent simultaneous access of the same database by two or more
+** database connections. But there is a serious risk of database
+** corruption if this locking mode is used in situations where multiple
+** database connections are accessing the same database file at the same
+** time and one or more of those connections are writing.
+*/
+
+static int winNolockLock(sqlite3_file *id, int locktype){
+ UNUSED_PARAMETER(id);
+ UNUSED_PARAMETER(locktype);
+ return SQLITE_OK;
+}
+
+static int winNolockCheckReservedLock(sqlite3_file *id, int *pResOut){
+ UNUSED_PARAMETER(id);
+ UNUSED_PARAMETER(pResOut);
+ return SQLITE_OK;
+}
+
+static int winNolockUnlock(sqlite3_file *id, int locktype){
+ UNUSED_PARAMETER(id);
+ UNUSED_PARAMETER(locktype);
+ return SQLITE_OK;
+}
+
+/******************* End of the no-op lock implementation *********************
+******************************************************************************/
+
/*
** If *pArg is initially negative then this is a query. Set *pArg to
** 1 or 0 depending on whether or not bit mask of pFile->ctrlFlags is set.
@@ -40509,12 +40791,12 @@ struct winShm {
/*
** Apply advisory locks for all n bytes beginning at ofst.
*/
-#define _SHM_UNLCK 1
-#define _SHM_RDLCK 2
-#define _SHM_WRLCK 3
+#define WINSHM_UNLCK 1
+#define WINSHM_RDLCK 2
+#define WINSHM_WRLCK 3
static int winShmSystemLock(
winShmNode *pFile, /* Apply locks to this open shared-memory segment */
- int lockType, /* _SHM_UNLCK, _SHM_RDLCK, or _SHM_WRLCK */
+ int lockType, /* WINSHM_UNLCK, WINSHM_RDLCK, or WINSHM_WRLCK */
int ofst, /* Offset to first byte to be locked/unlocked */
int nByte /* Number of bytes to lock or unlock */
){
@@ -40527,12 +40809,12 @@ static int winShmSystemLock(
pFile->hFile.h, lockType, ofst, nByte));
/* Release/Acquire the system-level lock */
- if( lockType==_SHM_UNLCK ){
+ if( lockType==WINSHM_UNLCK ){
rc = winUnlockFile(&pFile->hFile.h, ofst, 0, nByte, 0);
}else{
/* Initialize the locking parameters */
DWORD dwFlags = LOCKFILE_FAIL_IMMEDIATELY;
- if( lockType == _SHM_WRLCK ) dwFlags |= LOCKFILE_EXCLUSIVE_LOCK;
+ if( lockType == WINSHM_WRLCK ) dwFlags |= LOCKFILE_EXCLUSIVE_LOCK;
rc = winLockFile(&pFile->hFile.h, dwFlags, ofst, 0, nByte, 0);
}
@@ -40544,7 +40826,7 @@ static int winShmSystemLock(
}
OSTRACE(("SHM-LOCK file=%p, func=%s, errno=%lu, rc=%s\n",
- pFile->hFile.h, (lockType == _SHM_UNLCK) ? "winUnlockFile" :
+ pFile->hFile.h, (lockType == WINSHM_UNLCK) ? "winUnlockFile" :
"winLockFile", pFile->lastErrno, sqlite3ErrName(rc)));
return rc;
@@ -40672,7 +40954,7 @@ static int winOpenSharedMemory(winFile *pDbFd){
/* Check to see if another process is holding the dead-man switch.
** If not, truncate the file to zero length.
*/
- if( winShmSystemLock(pShmNode, _SHM_WRLCK, WIN_SHM_DMS, 1)==SQLITE_OK ){
+ if( winShmSystemLock(pShmNode, WINSHM_WRLCK, WIN_SHM_DMS, 1)==SQLITE_OK ){
rc = winTruncate((sqlite3_file *)&pShmNode->hFile, 0);
if( rc!=SQLITE_OK ){
rc = winLogError(SQLITE_IOERR_SHMOPEN, osGetLastError(),
@@ -40680,8 +40962,8 @@ static int winOpenSharedMemory(winFile *pDbFd){
}
}
if( rc==SQLITE_OK ){
- winShmSystemLock(pShmNode, _SHM_UNLCK, WIN_SHM_DMS, 1);
- rc = winShmSystemLock(pShmNode, _SHM_RDLCK, WIN_SHM_DMS, 1);
+ winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
+ rc = winShmSystemLock(pShmNode, WINSHM_RDLCK, WIN_SHM_DMS, 1);
}
if( rc ) goto shm_open_err;
}
@@ -40710,7 +40992,7 @@ static int winOpenSharedMemory(winFile *pDbFd){
/* Jump here on any error */
shm_open_err:
- winShmSystemLock(pShmNode, _SHM_UNLCK, WIN_SHM_DMS, 1);
+ winShmSystemLock(pShmNode, WINSHM_UNLCK, WIN_SHM_DMS, 1);
winShmPurge(pDbFd->pVfs, 0); /* This call frees pShmNode if required */
sqlite3_free(p);
sqlite3_free(pNew);
@@ -40799,7 +41081,7 @@ static int winShmLock(
/* Unlock the system-level locks */
if( (mask & allMask)==0 ){
- rc = winShmSystemLock(pShmNode, _SHM_UNLCK, ofst+WIN_SHM_BASE, n);
+ rc = winShmSystemLock(pShmNode, WINSHM_UNLCK, ofst+WIN_SHM_BASE, n);
}else{
rc = SQLITE_OK;
}
@@ -40827,7 +41109,7 @@ static int winShmLock(
/* Get shared locks at the system level, if necessary */
if( rc==SQLITE_OK ){
if( (allShared & mask)==0 ){
- rc = winShmSystemLock(pShmNode, _SHM_RDLCK, ofst+WIN_SHM_BASE, n);
+ rc = winShmSystemLock(pShmNode, WINSHM_RDLCK, ofst+WIN_SHM_BASE, n);
}else{
rc = SQLITE_OK;
}
@@ -40852,7 +41134,7 @@ static int winShmLock(
** also mark the local connection as being locked.
*/
if( rc==SQLITE_OK ){
- rc = winShmSystemLock(pShmNode, _SHM_WRLCK, ofst+WIN_SHM_BASE, n);
+ rc = winShmSystemLock(pShmNode, WINSHM_WRLCK, ofst+WIN_SHM_BASE, n);
if( rc==SQLITE_OK ){
assert( (p->sharedMask & mask)==0 );
p->exclMask |= mask;
@@ -41295,6 +41577,44 @@ static const sqlite3_io_methods winIoMethod = {
winUnfetch /* xUnfetch */
};
+/*
+** This vector defines all the methods that can operate on an
+** sqlite3_file for win32 without performing any locking.
+*/
+static const sqlite3_io_methods winIoNolockMethod = {
+ 3, /* iVersion */
+ winClose, /* xClose */
+ winRead, /* xRead */
+ winWrite, /* xWrite */
+ winTruncate, /* xTruncate */
+ winSync, /* xSync */
+ winFileSize, /* xFileSize */
+ winNolockLock, /* xLock */
+ winNolockUnlock, /* xUnlock */
+ winNolockCheckReservedLock, /* xCheckReservedLock */
+ winFileControl, /* xFileControl */
+ winSectorSize, /* xSectorSize */
+ winDeviceCharacteristics, /* xDeviceCharacteristics */
+ winShmMap, /* xShmMap */
+ winShmLock, /* xShmLock */
+ winShmBarrier, /* xShmBarrier */
+ winShmUnmap, /* xShmUnmap */
+ winFetch, /* xFetch */
+ winUnfetch /* xUnfetch */
+};
+
+static winVfsAppData winAppData = {
+ &winIoMethod, /* pMethod */
+ 0, /* pAppData */
+ 0 /* bNoLock */
+};
+
+static winVfsAppData winNolockAppData = {
+ &winIoNolockMethod, /* pMethod */
+ 0, /* pAppData */
+ 1 /* bNoLock */
+};
+
/****************************************************************************
**************************** sqlite3_vfs methods ****************************
**
@@ -41627,7 +41947,7 @@ static int winIsDir(const void *zConverted){
** Open a file.
*/
static int winOpen(
- sqlite3_vfs *pVfs, /* Used to get maximum path name length */
+ sqlite3_vfs *pVfs, /* Used to get maximum path length and AppData */
const char *zName, /* Name of the file (UTF-8) */
sqlite3_file *id, /* Write the SQLite file handle here */
int flags, /* Open mode flags */
@@ -41642,6 +41962,7 @@ static int winOpen(
#if SQLITE_OS_WINCE
int isTemp = 0;
#endif
+ winVfsAppData *pAppData;
winFile *pFile = (winFile*)id;
void *zConverted; /* Filename in OS encoding */
const char *zUtf8Name = zName; /* Filename in UTF-8 encoding */
@@ -41863,15 +42184,20 @@ static int winOpen(
"rc=%s\n", h, zUtf8Name, dwDesiredAccess, pOutFlags, pOutFlags ?
*pOutFlags : 0, (h==INVALID_HANDLE_VALUE) ? "failed" : "ok"));
+ pAppData = (winVfsAppData*)pVfs->pAppData;
+
#if SQLITE_OS_WINCE
- if( isReadWrite && eType==SQLITE_OPEN_MAIN_DB
- && (rc = winceCreateLock(zName, pFile))!=SQLITE_OK
- ){
- osCloseHandle(h);
- sqlite3_free(zConverted);
- sqlite3_free(zTmpname);
- OSTRACE(("OPEN-CE-LOCK name=%s, rc=%s\n", zName, sqlite3ErrName(rc)));
- return rc;
+ {
+ if( isReadWrite && eType==SQLITE_OPEN_MAIN_DB
+ && ((pAppData==NULL) || !pAppData->bNoLock)
+ && (rc = winceCreateLock(zName, pFile))!=SQLITE_OK
+ ){
+ osCloseHandle(h);
+ sqlite3_free(zConverted);
+ sqlite3_free(zTmpname);
+ OSTRACE(("OPEN-CE-LOCK name=%s, rc=%s\n", zName, sqlite3ErrName(rc)));
+ return rc;
+ }
}
if( isTemp ){
pFile->zDeleteOnClose = zConverted;
@@ -41882,7 +42208,7 @@ static int winOpen(
}
sqlite3_free(zTmpname);
- pFile->pMethod = &winIoMethod;
+ pFile->pMethod = pAppData ? pAppData->pMethod : &winIoMethod;
pFile->pVfs = pVfs;
pFile->h = h;
if( isReadonly ){
@@ -42157,6 +42483,18 @@ static int winFullPathname(
int nFull, /* Size of output buffer in bytes */
char *zFull /* Output buffer */
){
+#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(__CYGWIN__)
+ DWORD nByte;
+ void *zConverted;
+ char *zOut;
+#endif
+
+ /* If this path name begins with "/X:", where "X" is any alphabetic
+ ** character, discard the initial "/" from the pathname.
+ */
+ if( zRelative[0]=='/' && winIsDriveLetterAndColon(zRelative+1) ){
+ zRelative++;
+ }
#if defined(__CYGWIN__)
SimulateIOError( return SQLITE_ERROR );
@@ -42235,17 +42573,6 @@ static int winFullPathname(
#endif
#if !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && !defined(__CYGWIN__)
- DWORD nByte;
- void *zConverted;
- char *zOut;
-
- /* If this path name begins with "/X:", where "X" is any alphabetic
- ** character, discard the initial "/" from the pathname.
- */
- if( zRelative[0]=='/' && winIsDriveLetterAndColon(zRelative+1) ){
- zRelative++;
- }
-
/* It's odd to simulate an io-error here, but really this is just
** using the io-error infrastructure to test that SQLite handles this
** function failing. This function could fail if, for example, the
@@ -42602,55 +42929,105 @@ static int winGetLastError(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
/*
** Initialize and deinitialize the operating system interface.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void){
+SQLITE_API int sqlite3_os_init(void){
static sqlite3_vfs winVfs = {
- 3, /* iVersion */
- sizeof(winFile), /* szOsFile */
+ 3, /* iVersion */
+ sizeof(winFile), /* szOsFile */
SQLITE_WIN32_MAX_PATH_BYTES, /* mxPathname */
- 0, /* pNext */
- "win32", /* zName */
- 0, /* pAppData */
- winOpen, /* xOpen */
- winDelete, /* xDelete */
- winAccess, /* xAccess */
- winFullPathname, /* xFullPathname */
- winDlOpen, /* xDlOpen */
- winDlError, /* xDlError */
- winDlSym, /* xDlSym */
- winDlClose, /* xDlClose */
- winRandomness, /* xRandomness */
- winSleep, /* xSleep */
- winCurrentTime, /* xCurrentTime */
- winGetLastError, /* xGetLastError */
- winCurrentTimeInt64, /* xCurrentTimeInt64 */
- winSetSystemCall, /* xSetSystemCall */
- winGetSystemCall, /* xGetSystemCall */
- winNextSystemCall, /* xNextSystemCall */
+ 0, /* pNext */
+ "win32", /* zName */
+ &winAppData, /* pAppData */
+ winOpen, /* xOpen */
+ winDelete, /* xDelete */
+ winAccess, /* xAccess */
+ winFullPathname, /* xFullPathname */
+ winDlOpen, /* xDlOpen */
+ winDlError, /* xDlError */
+ winDlSym, /* xDlSym */
+ winDlClose, /* xDlClose */
+ winRandomness, /* xRandomness */
+ winSleep, /* xSleep */
+ winCurrentTime, /* xCurrentTime */
+ winGetLastError, /* xGetLastError */
+ winCurrentTimeInt64, /* xCurrentTimeInt64 */
+ winSetSystemCall, /* xSetSystemCall */
+ winGetSystemCall, /* xGetSystemCall */
+ winNextSystemCall, /* xNextSystemCall */
};
#if defined(SQLITE_WIN32_HAS_WIDE)
static sqlite3_vfs winLongPathVfs = {
- 3, /* iVersion */
- sizeof(winFile), /* szOsFile */
+ 3, /* iVersion */
+ sizeof(winFile), /* szOsFile */
SQLITE_WINNT_MAX_PATH_BYTES, /* mxPathname */
- 0, /* pNext */
- "win32-longpath", /* zName */
- 0, /* pAppData */
- winOpen, /* xOpen */
- winDelete, /* xDelete */
- winAccess, /* xAccess */
- winFullPathname, /* xFullPathname */
- winDlOpen, /* xDlOpen */
- winDlError, /* xDlError */
- winDlSym, /* xDlSym */
- winDlClose, /* xDlClose */
- winRandomness, /* xRandomness */
- winSleep, /* xSleep */
- winCurrentTime, /* xCurrentTime */
- winGetLastError, /* xGetLastError */
- winCurrentTimeInt64, /* xCurrentTimeInt64 */
- winSetSystemCall, /* xSetSystemCall */
- winGetSystemCall, /* xGetSystemCall */
- winNextSystemCall, /* xNextSystemCall */
+ 0, /* pNext */
+ "win32-longpath", /* zName */
+ &winAppData, /* pAppData */
+ winOpen, /* xOpen */
+ winDelete, /* xDelete */
+ winAccess, /* xAccess */
+ winFullPathname, /* xFullPathname */
+ winDlOpen, /* xDlOpen */
+ winDlError, /* xDlError */
+ winDlSym, /* xDlSym */
+ winDlClose, /* xDlClose */
+ winRandomness, /* xRandomness */
+ winSleep, /* xSleep */
+ winCurrentTime, /* xCurrentTime */
+ winGetLastError, /* xGetLastError */
+ winCurrentTimeInt64, /* xCurrentTimeInt64 */
+ winSetSystemCall, /* xSetSystemCall */
+ winGetSystemCall, /* xGetSystemCall */
+ winNextSystemCall, /* xNextSystemCall */
+ };
+#endif
+ static sqlite3_vfs winNolockVfs = {
+ 3, /* iVersion */
+ sizeof(winFile), /* szOsFile */
+ SQLITE_WIN32_MAX_PATH_BYTES, /* mxPathname */
+ 0, /* pNext */
+ "win32-none", /* zName */
+ &winNolockAppData, /* pAppData */
+ winOpen, /* xOpen */
+ winDelete, /* xDelete */
+ winAccess, /* xAccess */
+ winFullPathname, /* xFullPathname */
+ winDlOpen, /* xDlOpen */
+ winDlError, /* xDlError */
+ winDlSym, /* xDlSym */
+ winDlClose, /* xDlClose */
+ winRandomness, /* xRandomness */
+ winSleep, /* xSleep */
+ winCurrentTime, /* xCurrentTime */
+ winGetLastError, /* xGetLastError */
+ winCurrentTimeInt64, /* xCurrentTimeInt64 */
+ winSetSystemCall, /* xSetSystemCall */
+ winGetSystemCall, /* xGetSystemCall */
+ winNextSystemCall, /* xNextSystemCall */
+ };
+#if defined(SQLITE_WIN32_HAS_WIDE)
+ static sqlite3_vfs winLongPathNolockVfs = {
+ 3, /* iVersion */
+ sizeof(winFile), /* szOsFile */
+ SQLITE_WINNT_MAX_PATH_BYTES, /* mxPathname */
+ 0, /* pNext */
+ "win32-longpath-none", /* zName */
+ &winNolockAppData, /* pAppData */
+ winOpen, /* xOpen */
+ winDelete, /* xDelete */
+ winAccess, /* xAccess */
+ winFullPathname, /* xFullPathname */
+ winDlOpen, /* xDlOpen */
+ winDlError, /* xDlError */
+ winDlSym, /* xDlSym */
+ winDlClose, /* xDlClose */
+ winRandomness, /* xRandomness */
+ winSleep, /* xSleep */
+ winCurrentTime, /* xCurrentTime */
+ winGetLastError, /* xGetLastError */
+ winCurrentTimeInt64, /* xCurrentTimeInt64 */
+ winSetSystemCall, /* xSetSystemCall */
+ winGetSystemCall, /* xGetSystemCall */
+ winNextSystemCall, /* xNextSystemCall */
};
#endif
@@ -42674,10 +43051,16 @@ SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void){
sqlite3_vfs_register(&winLongPathVfs, 0);
#endif
+ sqlite3_vfs_register(&winNolockVfs, 0);
+
+#if defined(SQLITE_WIN32_HAS_WIDE)
+ sqlite3_vfs_register(&winLongPathNolockVfs, 0);
+#endif
+
return SQLITE_OK;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void){
+SQLITE_API int sqlite3_os_end(void){
#if SQLITE_OS_WINRT
if( sleepObj!=NULL ){
osCloseHandle(sleepObj);
@@ -43794,29 +44177,31 @@ SQLITE_PRIVATE void sqlite3PcacheClear(PCache *pCache){
/*
** Merge two lists of pages connected by pDirty and in pgno order.
-** Do not both fixing the pDirtyPrev pointers.
+** Do not bother fixing the pDirtyPrev pointers.
*/
static PgHdr *pcacheMergeDirtyList(PgHdr *pA, PgHdr *pB){
PgHdr result, *pTail;
pTail = &result;
- while( pA && pB ){
+ assert( pA!=0 && pB!=0 );
+ for(;;){
if( pA->pgno<pB->pgno ){
pTail->pDirty = pA;
pTail = pA;
pA = pA->pDirty;
+ if( pA==0 ){
+ pTail->pDirty = pB;
+ break;
+ }
}else{
pTail->pDirty = pB;
pTail = pB;
pB = pB->pDirty;
+ if( pB==0 ){
+ pTail->pDirty = pA;
+ break;
+ }
}
}
- if( pA ){
- pTail->pDirty = pA;
- }else if( pB ){
- pTail->pDirty = pB;
- }else{
- pTail->pDirty = 0;
- }
return result.pDirty;
}
@@ -43857,7 +44242,8 @@ static PgHdr *pcacheSortDirtyList(PgHdr *pIn){
}
p = a[0];
for(i=1; i<N_SORT_BUCKET; i++){
- p = pcacheMergeDirtyList(p, a[i]);
+ if( a[i]==0 ) continue;
+ p = p ? pcacheMergeDirtyList(p, a[i]) : a[i];
}
return p;
}
@@ -44612,12 +44998,30 @@ static void pcache1TruncateUnsafe(
PCache1 *pCache, /* The cache to truncate */
unsigned int iLimit /* Drop pages with this pgno or larger */
){
- TESTONLY( unsigned int nPage = 0; ) /* To assert pCache->nPage is correct */
- unsigned int h;
+ TESTONLY( int nPage = 0; ) /* To assert pCache->nPage is correct */
+ unsigned int h, iStop;
assert( sqlite3_mutex_held(pCache->pGroup->mutex) );
- for(h=0; h<pCache->nHash; h++){
- PgHdr1 **pp = &pCache->apHash[h];
+ assert( pCache->iMaxKey >= iLimit );
+ assert( pCache->nHash > 0 );
+ if( pCache->iMaxKey - iLimit < pCache->nHash ){
+ /* If we are just shaving the last few pages off the end of the
+ ** cache, then there is no point in scanning the entire hash table.
+ ** Only scan those hash slots that might contain pages that need to
+ ** be removed. */
+ h = iLimit % pCache->nHash;
+ iStop = pCache->iMaxKey % pCache->nHash;
+ TESTONLY( nPage = -10; ) /* Disable the pCache->nPage validity check */
+ }else{
+ /* This is the general case where many pages are being removed.
+ ** It is necessary to scan the entire hash table */
+ h = pCache->nHash/2;
+ iStop = h - 1;
+ }
+ for(;;){
+ PgHdr1 **pp;
PgHdr1 *pPage;
+ assert( h<pCache->nHash );
+ pp = &pCache->apHash[h];
while( (pPage = *pp)!=0 ){
if( pPage->iKey>=iLimit ){
pCache->nPage--;
@@ -44626,11 +45030,13 @@ static void pcache1TruncateUnsafe(
pcache1FreePage(pPage);
}else{
pp = &pPage->pNext;
- TESTONLY( nPage++; )
+ TESTONLY( if( nPage>=0 ) nPage++; )
}
}
+ if( h==iStop ) break;
+ h = (h+1) % pCache->nHash;
}
- assert( pCache->nPage==nPage );
+ assert( nPage<0 || pCache->nPage==(unsigned)nPage );
}
/******************************************************************************/
@@ -45107,7 +45513,7 @@ static void pcache1Destroy(sqlite3_pcache *p){
PGroup *pGroup = pCache->pGroup;
assert( pCache->bPurgeable || (pCache->nMax==0 && pCache->nMin==0) );
pcache1EnterMutex(pGroup);
- pcache1TruncateUnsafe(pCache, 0);
+ if( pCache->nPage ) pcache1TruncateUnsafe(pCache, 0);
assert( pGroup->nMaxPage >= pCache->nMax );
pGroup->nMaxPage -= pCache->nMax;
assert( pGroup->nMinPage >= pCache->nMin );
@@ -45462,28 +45868,26 @@ static struct RowSetEntry *rowSetEntryMerge(
struct RowSetEntry *pTail;
pTail = &head;
- while( pA && pB ){
+ assert( pA!=0 && pB!=0 );
+ for(;;){
assert( pA->pRight==0 || pA->v<=pA->pRight->v );
assert( pB->pRight==0 || pB->v<=pB->pRight->v );
- if( pA->v<pB->v ){
- pTail->pRight = pA;
+ if( pA->v<=pB->v ){
+ if( pA->v<pB->v ) pTail = pTail->pRight = pA;
pA = pA->pRight;
- pTail = pTail->pRight;
- }else if( pB->v<pA->v ){
- pTail->pRight = pB;
- pB = pB->pRight;
- pTail = pTail->pRight;
+ if( pA==0 ){
+ pTail->pRight = pB;
+ break;
+ }
}else{
- pA = pA->pRight;
+ pTail = pTail->pRight = pB;
+ pB = pB->pRight;
+ if( pB==0 ){
+ pTail->pRight = pA;
+ break;
+ }
}
}
- if( pA ){
- assert( pA->pRight==0 || pA->v<=pA->pRight->v );
- pTail->pRight = pA;
- }else{
- assert( pB==0 || pB->pRight==0 || pB->v<=pB->pRight->v );
- pTail->pRight = pB;
- }
return head.pRight;
}
@@ -45506,9 +45910,10 @@ static struct RowSetEntry *rowSetEntrySort(struct RowSetEntry *pIn){
aBucket[i] = pIn;
pIn = pNext;
}
- pIn = 0;
- for(i=0; i<sizeof(aBucket)/sizeof(aBucket[0]); i++){
- pIn = rowSetEntryMerge(pIn, aBucket[i]);
+ pIn = aBucket[0];
+ for(i=1; i<sizeof(aBucket)/sizeof(aBucket[0]); i++){
+ if( aBucket[i]==0 ) continue;
+ pIn = pIn ? rowSetEntryMerge(pIn, aBucket[i]) : aBucket[i];
}
return pIn;
}
@@ -45760,8 +46165,8 @@ SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, int iBatch, sqlite3_int64
** the implementation of each function in log.c for further details.
*/
-#ifndef _WAL_H_
-#define _WAL_H_
+#ifndef SQLITE_WAL_H
+#define SQLITE_WAL_H
/* #include "sqliteInt.h" */
@@ -45889,7 +46294,7 @@ SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal);
SQLITE_PRIVATE sqlite3_file *sqlite3WalFile(Wal *pWal);
#endif /* ifndef SQLITE_OMIT_WAL */
-#endif /* _WAL_H_ */
+#endif /* SQLITE_WAL_H */
/************** End of wal.h *************************************************/
/************** Continuing where we left off in pager.c **********************/
@@ -53039,6 +53444,7 @@ SQLITE_PRIVATE void sqlite3PagerClearCache(Pager *pPager){
}
#endif
+
#ifndef SQLITE_OMIT_WAL
/*
** This function is called when the user invokes "PRAGMA wal_checkpoint",
@@ -53264,7 +53670,6 @@ SQLITE_PRIVATE int sqlite3PagerWalFramesize(Pager *pPager){
}
#endif
-
#endif /* SQLITE_OMIT_DISKIO */
/************** End of pager.c ***********************************************/
@@ -56380,16 +56785,21 @@ SQLITE_PRIVATE int sqlite3WalFrames(
** past the sector boundary is written after the sync.
*/
if( isCommit && (sync_flags & WAL_SYNC_TRANSACTIONS)!=0 ){
+ int bSync = 1;
if( pWal->padToSectorBoundary ){
int sectorSize = sqlite3SectorSize(pWal->pWalFd);
w.iSyncPoint = ((iOffset+sectorSize-1)/sectorSize)*sectorSize;
+ bSync = (w.iSyncPoint==iOffset);
+ testcase( bSync );
while( iOffset<w.iSyncPoint ){
rc = walWriteOneFrame(&w, pLast, nTruncate, iOffset);
if( rc ) return rc;
iOffset += szFrame;
nExtra++;
}
- }else{
+ }
+ if( bSync ){
+ assert( rc==SQLITE_OK );
rc = sqlite3OsSync(w.pFd, sync_flags & SQLITE_SYNC_MASK);
}
}
@@ -56675,7 +57085,7 @@ SQLITE_PRIVATE void sqlite3WalSnapshotOpen(Wal *pWal, sqlite3_snapshot *pSnapsho
** Return a +ve value if snapshot p1 is newer than p2. A -ve value if
** p1 is older than p2 and zero if p1 and p2 are the same snapshot.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_snapshot_cmp(sqlite3_snapshot *p1, sqlite3_snapshot *p2){
+SQLITE_API int sqlite3_snapshot_cmp(sqlite3_snapshot *p1, sqlite3_snapshot *p2){
WalIndexHdr *pHdr1 = (WalIndexHdr*)p1;
WalIndexHdr *pHdr2 = (WalIndexHdr*)p2;
@@ -57812,7 +58222,7 @@ static BtShared *SQLITE_WSD sqlite3SharedCacheList = 0;
** The shared cache setting effects only future calls to
** sqlite3_open(), sqlite3_open16(), or sqlite3_open_v2().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_shared_cache(int enable){
+SQLITE_API int sqlite3_enable_shared_cache(int enable){
sqlite3GlobalConfig.sharedCacheEnabled = enable;
return SQLITE_OK;
}
@@ -58176,6 +58586,15 @@ static void releasePage(MemPage *pPage); /* Forward reference */
static int cursorHoldsMutex(BtCursor *p){
return sqlite3_mutex_held(p->pBt->mutex);
}
+
+/* Verify that the cursor and the BtShared agree about what is the current
+** database connetion. This is important in shared-cache mode. If the database
+** connection pointers get out-of-sync, it is possible for routines like
+** btreeInitPage() to reference an stale connection pointer that references a
+** a connection that has already closed. This routine is used inside assert()
+** statements only and for the purpose of double-checking that the btree code
+** does keep the database connection pointers up-to-date.
+*/
static int cursorOwnsBtShared(BtCursor *p){
assert( cursorHoldsMutex(p) );
return (p->pBtree->db==p->pBt->db);
@@ -58335,21 +58754,19 @@ static void btreeReleaseAllCursorPages(BtCursor *pCur){
** the key.
*/
static int saveCursorKey(BtCursor *pCur){
- int rc;
+ int rc = SQLITE_OK;
assert( CURSOR_VALID==pCur->eState );
assert( 0==pCur->pKey );
assert( cursorHoldsMutex(pCur) );
- rc = sqlite3BtreeKeySize(pCur, &pCur->nKey);
- assert( rc==SQLITE_OK ); /* KeySize() cannot fail */
-
- /* If this is an intKey table, then the above call to BtreeKeySize()
- ** stores the integer key in pCur->nKey. In this case this value is
- ** all that is required. Otherwise, if pCur is not open on an intKey
- ** table, then malloc space for and store the pCur->nKey bytes of key
- ** data. */
- if( 0==pCur->curIntKey ){
- void *pKey = sqlite3Malloc( pCur->nKey );
+ if( pCur->curIntKey ){
+ /* Only the rowid is required for a table btree */
+ pCur->nKey = sqlite3BtreeIntegerKey(pCur);
+ }else{
+ /* For an index btree, save the complete key content */
+ void *pKey;
+ pCur->nKey = sqlite3BtreePayloadSize(pCur);
+ pKey = sqlite3Malloc( pCur->nKey );
if( pKey ){
rc = sqlite3BtreeKey(pCur, 0, (int)pCur->nKey, pKey);
if( rc==SQLITE_OK ){
@@ -60056,9 +60473,9 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
#if !defined(SQLITE_OMIT_SHARED_CACHE) && !defined(SQLITE_OMIT_DISKIO)
/* Add the new BtShared object to the linked list sharable BtShareds.
*/
+ pBt->nRef = 1;
if( p->sharable ){
MUTEX_LOGIC( sqlite3_mutex *mutexShared; )
- pBt->nRef = 1;
MUTEX_LOGIC( mutexShared = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);)
if( SQLITE_THREADSAFE && sqlite3GlobalConfig.bCoreMutex ){
pBt->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_FAST);
@@ -60129,6 +60546,7 @@ btree_open_out:
assert( sqlite3_mutex_held(mutexOpen) );
sqlite3_mutex_leave(mutexOpen);
}
+ assert( rc!=SQLITE_OK || sqlite3BtreeConnectionCount(*ppBtree)>0 );
return rc;
}
@@ -61988,46 +62406,33 @@ SQLITE_PRIVATE int sqlite3BtreeCursorIsValid(BtCursor *pCur){
#endif /* NDEBUG */
/*
-** Set *pSize to the size of the buffer needed to hold the value of
-** the key for the current entry. If the cursor is not pointing
-** to a valid entry, *pSize is set to 0.
-**
-** For a table with the INTKEY flag set, this routine returns the key
-** itself, not the number of bytes in the key.
-**
-** The caller must position the cursor prior to invoking this routine.
-**
-** This routine cannot fail. It always returns SQLITE_OK.
+** Return the value of the integer key or "rowid" for a table btree.
+** This routine is only valid for a cursor that is pointing into a
+** ordinary table btree. If the cursor points to an index btree or
+** is invalid, the result of this routine is undefined.
*/
-SQLITE_PRIVATE int sqlite3BtreeKeySize(BtCursor *pCur, i64 *pSize){
+SQLITE_PRIVATE i64 sqlite3BtreeIntegerKey(BtCursor *pCur){
assert( cursorHoldsMutex(pCur) );
assert( pCur->eState==CURSOR_VALID );
+ assert( pCur->curIntKey );
getCellInfo(pCur);
- *pSize = pCur->info.nKey;
- return SQLITE_OK;
+ return pCur->info.nKey;
}
/*
-** Set *pSize to the number of bytes of data in the entry the
-** cursor currently points to.
+** Return the number of bytes of payload for the entry that pCur is
+** currently pointing to. For table btrees, this will be the amount
+** of data. For index btrees, this will be the size of the key.
**
** The caller must guarantee that the cursor is pointing to a non-NULL
** valid entry. In other words, the calling procedure must guarantee
** that the cursor has Cursor.eState==CURSOR_VALID.
-**
-** Failure is not possible. This function always returns SQLITE_OK.
-** It might just as well be a procedure (returning void) but we continue
-** to return an integer result code for historical reasons.
*/
-SQLITE_PRIVATE int sqlite3BtreeDataSize(BtCursor *pCur, u32 *pSize){
- assert( cursorOwnsBtShared(pCur) );
+SQLITE_PRIVATE u32 sqlite3BtreePayloadSize(BtCursor *pCur){
+ assert( cursorHoldsMutex(pCur) );
assert( pCur->eState==CURSOR_VALID );
- assert( pCur->iPage>=0 );
- assert( pCur->iPage<BTCURSOR_MAX_DEPTH );
- assert( pCur->apPage[pCur->iPage]->intKeyLeaf==1 );
getCellInfo(pCur);
- *pSize = pCur->info.nPayload;
- return SQLITE_OK;
+ return pCur->info.nPayload;
}
/*
@@ -62469,10 +62874,7 @@ static const void *fetchPayload(
** These routines is used to get quick access to key and data
** in the common case where no overflow pages are used.
*/
-SQLITE_PRIVATE const void *sqlite3BtreeKeyFetch(BtCursor *pCur, u32 *pAmt){
- return fetchPayload(pCur, pAmt);
-}
-SQLITE_PRIVATE const void *sqlite3BtreeDataFetch(BtCursor *pCur, u32 *pAmt){
+SQLITE_PRIVATE const void *sqlite3BtreePayloadFetch(BtCursor *pCur, u32 *pAmt){
return fetchPayload(pCur, pAmt);
}
@@ -62805,11 +63207,12 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
assert( pRes );
assert( (pIdxKey==0)==(pCur->pKeyInfo==0) );
+ assert( pCur->eState!=CURSOR_VALID || (pIdxKey==0)==(pCur->curIntKey!=0) );
/* If the cursor is already positioned at the point we are trying
** to move to, then just return without doing any work */
- if( pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0
- && pCur->curIntKey
+ if( pIdxKey==0
+ && pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0
){
if( pCur->info.nKey==intKey ){
*pRes = 0;
@@ -63798,9 +64201,7 @@ static int clearCell(
static int fillInCell(
MemPage *pPage, /* The page that contains the cell */
unsigned char *pCell, /* Complete text of the cell */
- const void *pKey, i64 nKey, /* The key */
- const void *pData,int nData, /* The data */
- int nZero, /* Extra zero bytes to append to pData */
+ const BtreePayload *pX, /* Payload with which to construct the cell */
int *pnSize /* Write cell size here */
){
int nPayload;
@@ -63824,26 +64225,23 @@ static int fillInCell(
/* Fill in the header. */
nHeader = pPage->childPtrSize;
- nPayload = nData + nZero;
- if( pPage->intKeyLeaf ){
+ if( pPage->intKey ){
+ nPayload = pX->nData + pX->nZero;
+ pSrc = pX->pData;
+ nSrc = pX->nData;
+ assert( pPage->intKeyLeaf ); /* fillInCell() only called for leaves */
nHeader += putVarint32(&pCell[nHeader], nPayload);
+ nHeader += putVarint(&pCell[nHeader], *(u64*)&pX->nKey);
}else{
- assert( nData==0 );
- assert( nZero==0 );
+ assert( pX->nData==0 );
+ assert( pX->nZero==0 );
+ assert( pX->nKey<=0x7fffffff && pX->pKey!=0 );
+ nSrc = nPayload = (int)pX->nKey;
+ pSrc = pX->pKey;
+ nHeader += putVarint32(&pCell[nHeader], nPayload);
}
- nHeader += putVarint(&pCell[nHeader], *(u64*)&nKey);
- /* Fill in the payload size */
- if( pPage->intKey ){
- pSrc = pData;
- nSrc = nData;
- nData = 0;
- }else{
- assert( nKey<=0x7fffffff && pKey!=0 );
- nPayload = (int)nKey;
- pSrc = pKey;
- nSrc = (int)nKey;
- }
+ /* Fill in the payload */
if( nPayload<=pPage->maxLocal ){
n = nHeader + nPayload;
testcase( n==3 );
@@ -63881,7 +64279,7 @@ static int fillInCell(
CellInfo info;
pPage->xParseCell(pPage, pCell, &info);
assert( nHeader==(int)(info.pPayload - pCell) );
- assert( info.nKey==nKey );
+ assert( info.nKey==pX->nKey );
assert( *pnSize == info.nSize );
assert( spaceLeft == info.nLocal );
}
@@ -63966,10 +64364,6 @@ static int fillInCell(
pSrc += n;
nSrc -= n;
spaceLeft -= n;
- if( nSrc==0 ){
- nSrc = nData;
- pSrc = pData;
- }
}
releasePage(pToRelease);
return SQLITE_OK;
@@ -64036,6 +64430,8 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
** in pTemp or the original pCell) and also record its index.
** Allocating a new entry in pPage->aCell[] implies that
** pPage->nOverflow is incremented.
+**
+** *pRC must be SQLITE_OK when this routine is called.
*/
static void insertCell(
MemPage *pPage, /* Page into which we are copying */
@@ -64051,8 +64447,7 @@ static void insertCell(
u8 *data; /* The content of the whole page */
u8 *pIns; /* The point in pPage->aCellIdx[] where no cell inserted */
- if( *pRC ) return;
-
+ assert( *pRC==SQLITE_OK );
assert( i>=0 && i<=pPage->nCell+pPage->nOverflow );
assert( MX_CELL(pPage->pBt)<=10921 );
assert( pPage->nCell<=MX_CELL(pPage->pBt) || CORRUPT_DB );
@@ -64126,7 +64521,7 @@ static void insertCell(
/*
** A CellArray object contains a cache of pointers and sizes for a
-** consecutive sequence of cells that might be held multiple pages.
+** consecutive sequence of cells that might be held on multiple pages.
*/
typedef struct CellArray CellArray;
struct CellArray {
@@ -64558,8 +64953,10 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
while( ((*(pOut++) = *(pCell++))&0x80) && pCell<pStop );
/* Insert the new divider cell into pParent. */
- insertCell(pParent, pParent->nCell, pSpace, (int)(pOut-pSpace),
- 0, pPage->pgno, &rc);
+ if( rc==SQLITE_OK ){
+ insertCell(pParent, pParent->nCell, pSpace, (int)(pOut-pSpace),
+ 0, pPage->pgno, &rc);
+ }
/* Set the right-child pointer of pParent to point to the new page. */
put4byte(&pParent->aData[pParent->hdrOffset+8], pgnoNew);
@@ -65079,7 +65476,7 @@ static int balance_nonroot(
assert( r<nMaxCells );
(void)cachedCellSize(&b, r);
if( szRight!=0
- && (bBulk || szRight+b.szCell[d]+2 > szLeft-(b.szCell[r]+2)) ){
+ && (bBulk || szRight+b.szCell[d]+2 > szLeft-(b.szCell[r]+(i==k-1?0:2)))){
break;
}
szRight += b.szCell[d] + 2;
@@ -65651,13 +66048,19 @@ static int balance(BtCursor *pCur){
/*
-** Insert a new record into the BTree. The key is given by (pKey,nKey)
-** and the data is given by (pData,nData). The cursor is used only to
-** define what table the record should be inserted into. The cursor
-** is left pointing at a random location.
+** Insert a new record into the BTree. The content of the new record
+** is described by the pX object. The pCur cursor is used only to
+** define what table the record should be inserted into, and is left
+** pointing at a random location.
**
-** For an INTKEY table, only the nKey value of the key is used. pKey is
-** ignored. For a ZERODATA table, the pData and nData are both ignored.
+** For a table btree (used for rowid tables), only the pX.nKey value of
+** the key is used. The pX.pKey value must be NULL. The pX.nKey is the
+** rowid or INTEGER PRIMARY KEY of the row. The pX.nData,pData,nZero fields
+** hold the content of the row.
+**
+** For an index btree (used for indexes and WITHOUT ROWID tables), the
+** key is an arbitrary byte sequence stored in pX.pKey,nKey. The
+** pX.pData,nData,nZero fields must be zero.
**
** If the seekResult parameter is non-zero, then a successful call to
** MovetoUnpacked() to seek cursor pCur to (pKey, nKey) has already
@@ -65674,9 +66077,7 @@ static int balance(BtCursor *pCur){
*/
SQLITE_PRIVATE int sqlite3BtreeInsert(
BtCursor *pCur, /* Insert data into the table of this cursor */
- const void *pKey, i64 nKey, /* The key of the new record */
- const void *pData, int nData, /* The data of the new record */
- int nZero, /* Number of extra 0 bytes to append to data */
+ const BtreePayload *pX, /* Content of the row to be inserted */
int appendBias, /* True if this is likely an append */
int seekResult /* Result of prior MovetoUnpacked() call */
){
@@ -65706,7 +66107,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
** keys with no associated data. If the cursor was opened expecting an
** intkey table, the caller should be inserting integer keys with a
** blob of associated data. */
- assert( (pKey==0)==(pCur->pKeyInfo==0) );
+ assert( (pX->pKey==0)==(pCur->pKeyInfo==0) );
/* Save the positions of any other cursors open on this table.
**
@@ -65725,38 +66126,38 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
}
if( pCur->pKeyInfo==0 ){
- assert( pKey==0 );
+ assert( pX->pKey==0 );
/* If this is an insert into a table b-tree, invalidate any incrblob
** cursors open on the row being replaced */
- invalidateIncrblobCursors(p, nKey, 0);
+ invalidateIncrblobCursors(p, pX->nKey, 0);
/* If the cursor is currently on the last row and we are appending a
** new row onto the end, set the "loc" to avoid an unnecessary
** btreeMoveto() call */
- if( (pCur->curFlags&BTCF_ValidNKey)!=0 && nKey>0
- && pCur->info.nKey==nKey-1 ){
+ if( (pCur->curFlags&BTCF_ValidNKey)!=0 && pX->nKey>0
+ && pCur->info.nKey==pX->nKey-1 ){
loc = -1;
}else if( loc==0 ){
- rc = sqlite3BtreeMovetoUnpacked(pCur, 0, nKey, appendBias, &loc);
+ rc = sqlite3BtreeMovetoUnpacked(pCur, 0, pX->nKey, appendBias, &loc);
if( rc ) return rc;
}
}else if( loc==0 ){
- rc = btreeMoveto(pCur, pKey, nKey, appendBias, &loc);
+ rc = btreeMoveto(pCur, pX->pKey, pX->nKey, appendBias, &loc);
if( rc ) return rc;
}
assert( pCur->eState==CURSOR_VALID || (pCur->eState==CURSOR_INVALID && loc) );
pPage = pCur->apPage[pCur->iPage];
- assert( pPage->intKey || nKey>=0 );
+ assert( pPage->intKey || pX->nKey>=0 );
assert( pPage->leaf || !pPage->intKey );
TRACE(("INSERT: table=%d nkey=%lld ndata=%d page=%d %s\n",
- pCur->pgnoRoot, nKey, nData, pPage->pgno,
+ pCur->pgnoRoot, pX->nKey, pX->nData, pPage->pgno,
loc==0 ? "overwrite" : "new entry"));
assert( pPage->isInit );
newCell = pBt->pTmpSpace;
assert( newCell!=0 );
- rc = fillInCell(pPage, newCell, pKey, nKey, pData, nData, nZero, &szNew);
+ rc = fillInCell(pPage, newCell, pX, &szNew);
if( rc ) goto end_insert;
assert( szNew==pPage->xCellSize(pPage, newCell) );
assert( szNew <= MX_CELL_SIZE(pBt) );
@@ -65782,6 +66183,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
assert( pPage->leaf );
}
insertCell(pPage, idx, newCell, szNew, 0, 0, &rc);
+ assert( pPage->nOverflow==0 || rc==SQLITE_OK );
assert( rc!=SQLITE_OK || pPage->nCell>0 || pPage->nOverflow>0 );
/* If no error has occurred and pPage has an overflow cell, call balance()
@@ -65805,7 +66207,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
** row without seeking the cursor. This can be a big performance boost.
*/
pCur->info.nSize = 0;
- if( rc==SQLITE_OK && pPage->nOverflow ){
+ if( pPage->nOverflow ){
+ assert( rc==SQLITE_OK );
pCur->curFlags &= ~(BTCF_ValidNKey);
rc = balance(pCur);
@@ -65941,7 +66344,9 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur, u8 flags){
pTmp = pBt->pTmpSpace;
assert( pTmp!=0 );
rc = sqlite3PagerWrite(pLeaf->pDbPage);
- insertCell(pPage, iCellIdx, pCell-4, nCell+4, pTmp, n, &rc);
+ if( rc==SQLITE_OK ){
+ insertCell(pPage, iCellIdx, pCell-4, nCell+4, pTmp, n, &rc);
+ }
dropCell(pLeaf, pLeaf->nCell-1, nCell, &rc);
if( rc ) return rc;
}
@@ -67430,6 +67835,16 @@ SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(MemPage));
SQLITE_PRIVATE int sqlite3BtreeSharable(Btree *p){
return p->sharable;
}
+
+/*
+** Return the number of connections to the BtShared object accessed by
+** the Btree handle passed as the only argument. For private caches
+** this is always 1. For shared caches it may be 1 or greater.
+*/
+SQLITE_PRIVATE int sqlite3BtreeConnectionCount(Btree *p){
+ testcase( p->sharable );
+ return p->pBt->nRef;
+}
#endif
/************** End of btree.c ***********************************************/
@@ -67580,7 +67995,7 @@ static int checkReadTransaction(sqlite3 *db, Btree *p){
** If an error occurs, NULL is returned and an error code and error message
** stored in database handle pDestDb.
*/
-SQLITE_API sqlite3_backup *SQLITE_STDCALL sqlite3_backup_init(
+SQLITE_API sqlite3_backup *sqlite3_backup_init(
sqlite3* pDestDb, /* Database to write to */
const char *zDestDb, /* Name of database within pDestDb */
sqlite3* pSrcDb, /* Database connection to read from */
@@ -67788,7 +68203,7 @@ static void attachBackupObject(sqlite3_backup *p){
/*
** Copy nPage pages from the source b-tree to the destination.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_step(sqlite3_backup *p, int nPage){
+SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
int rc;
int destMode; /* Destination journal mode */
int pgszSrc = 0; /* Source page size */
@@ -68032,7 +68447,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_backup_step(sqlite3_backup *p, int nPage){
/*
** Release all resources associated with an sqlite3_backup* handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_finish(sqlite3_backup *p){
+SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p){
sqlite3_backup **pp; /* Ptr to head of pagers backup list */
sqlite3 *pSrcDb; /* Source database connection */
int rc; /* Value to return */
@@ -68084,7 +68499,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_backup_finish(sqlite3_backup *p){
** Return the number of pages still to be backed up as of the most recent
** call to sqlite3_backup_step().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_remaining(sqlite3_backup *p){
+SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p){
#ifdef SQLITE_ENABLE_API_ARMOR
if( p==0 ){
(void)SQLITE_MISUSE_BKPT;
@@ -68098,7 +68513,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_backup_remaining(sqlite3_backup *p){
** Return the total number of pages in the source database as of the most
** recent call to sqlite3_backup_step().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_pagecount(sqlite3_backup *p){
+SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p){
#ifdef SQLITE_ENABLE_API_ARMOR
if( p==0 ){
(void)SQLITE_MISUSE_BKPT;
@@ -68213,10 +68628,10 @@ SQLITE_PRIVATE int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
** sqlite3_backup_step(), we can guarantee that the copy finishes
** within a single call (unless an error occurs). The assert() statement
** checks this assumption - (p->rc) should be set to either SQLITE_DONE
- ** or an error code.
- */
+ ** or an error code. */
sqlite3_backup_step(&b, 0x7FFFFFFF);
assert( b.rc!=SQLITE_OK );
+
rc = sqlite3_backup_finish(&b);
if( rc==SQLITE_OK ){
pTo->pBt->btsFlags &= ~BTS_PAGESIZE_FIXED;
@@ -69227,11 +69642,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(
/* Note: the calls to BtreeKeyFetch() and DataFetch() below assert()
** that both the BtShared and database handle mutexes are held. */
assert( (pMem->flags & MEM_RowSet)==0 );
- if( key ){
- zData = (char *)sqlite3BtreeKeyFetch(pCur, &available);
- }else{
- zData = (char *)sqlite3BtreeDataFetch(pCur, &available);
- }
+ zData = (char *)sqlite3BtreePayloadFetch(pCur, &available);
assert( zData!=0 );
if( offset+amt<=available ){
@@ -70012,14 +70423,6 @@ SQLITE_PRIVATE void sqlite3VdbeSetSql(Vdbe *p, const char *z, int n, int isPrepa
}
/*
-** Return the SQL associated with a prepared statement
-*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sql(sqlite3_stmt *pStmt){
- Vdbe *p = (Vdbe *)pStmt;
- return p ? p->zSql : 0;
-}
-
-/*
** Swap all content between two VDBE structures.
*/
SQLITE_PRIVATE void sqlite3VdbeSwap(Vdbe *pA, Vdbe *pB){
@@ -70738,7 +71141,7 @@ SQLITE_PRIVATE void sqlite3VdbeJumpHere(Vdbe *p, int addr){
** the FuncDef is not ephermal, then do nothing.
*/
static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){
- if( ALWAYS(pDef) && (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){
+ if( (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){
sqlite3DbFree(db, pDef);
}
}
@@ -70748,12 +71151,20 @@ static void vdbeFreeOpArray(sqlite3 *, Op *, int);
/*
** Delete a P4 value if necessary.
*/
+static SQLITE_NOINLINE void freeP4Mem(sqlite3 *db, Mem *p){
+ if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
+ sqlite3DbFree(db, p);
+}
+static SQLITE_NOINLINE void freeP4FuncCtx(sqlite3 *db, sqlite3_context *p){
+ freeEphemeralFunction(db, p->pFunc);
+ sqlite3DbFree(db, p);
+}
static void freeP4(sqlite3 *db, int p4type, void *p4){
assert( db );
switch( p4type ){
case P4_FUNCCTX: {
- freeEphemeralFunction(db, ((sqlite3_context*)p4)->pFunc);
- /* Fall through into the next case */
+ freeP4FuncCtx(db, (sqlite3_context*)p4);
+ break;
}
case P4_REAL:
case P4_INT64:
@@ -70784,9 +71195,7 @@ static void freeP4(sqlite3 *db, int p4type, void *p4){
if( db->pnBytesFreed==0 ){
sqlite3ValueFree((sqlite3_value*)p4);
}else{
- Mem *p = (Mem*)p4;
- if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
- sqlite3DbFree(db, p);
+ freeP4Mem(db, (Mem*)p4);
}
break;
}
@@ -71043,12 +71452,21 @@ static int displayComment(
const char *zSynopsis;
int nOpName;
int ii, jj;
+ char zAlt[50];
zOpName = sqlite3OpcodeName(pOp->opcode);
nOpName = sqlite3Strlen30(zOpName);
if( zOpName[nOpName+1] ){
int seenCom = 0;
char c;
zSynopsis = zOpName += nOpName + 1;
+ if( strncmp(zSynopsis,"IF ",3)==0 ){
+ if( pOp->p5 & SQLITE_STOREP2 ){
+ sqlite3_snprintf(sizeof(zAlt), zAlt, "r[P2] = (%s)", zSynopsis+3);
+ }else{
+ sqlite3_snprintf(sizeof(zAlt), zAlt, "if %s goto P2", zSynopsis+3);
+ }
+ zSynopsis = zAlt;
+ }
for(ii=jj=0; jj<nTemp-1 && (c = zSynopsis[ii])!=0; ii++){
if( c=='P' ){
c = zSynopsis[++ii];
@@ -74256,8 +74674,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
** this code can safely assume that nCellKey is 32-bits
*/
assert( sqlite3BtreeCursorIsValid(pCur) );
- VVA_ONLY(rc =) sqlite3BtreeKeySize(pCur, &nCellKey);
- assert( rc==SQLITE_OK ); /* pCur is always valid so KeySize cannot fail */
+ nCellKey = sqlite3BtreePayloadSize(pCur);
assert( (nCellKey & SQLITE_MAX_U32)==(u64)nCellKey );
/* Read in the complete content of the index entry */
@@ -74334,8 +74751,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
assert( pC->eCurType==CURTYPE_BTREE );
pCur = pC->uc.pCursor;
assert( sqlite3BtreeCursorIsValid(pCur) );
- VVA_ONLY(rc =) sqlite3BtreeKeySize(pCur, &nCellKey);
- assert( rc==SQLITE_OK ); /* pCur is always valid so KeySize cannot fail */
+ nCellKey = sqlite3BtreePayloadSize(pCur);
/* nCellKey will always be between 0 and 0xffffffff because of the way
** that btreeParseCellPtr() and sqlite3GetVarint32() are implemented */
if( nCellKey<=0 || nCellKey>0x7fffffff ){
@@ -74562,7 +74978,7 @@ SQLITE_PRIVATE void sqlite3VdbePreUpdateHook(
** collating sequences are registered or if an authorizer function is
** added or changed.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_expired(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_expired(sqlite3_stmt *pStmt){
Vdbe *p = (Vdbe*)pStmt;
return p==0 || p->expired;
}
@@ -74597,12 +75013,19 @@ static int vdbeSafetyNotNull(Vdbe *p){
*/
static SQLITE_NOINLINE void invokeProfileCallback(sqlite3 *db, Vdbe *p){
sqlite3_int64 iNow;
+ sqlite3_int64 iElapse;
assert( p->startTime>0 );
- assert( db->xProfile!=0 );
+ assert( db->xProfile!=0 || (db->mTrace & SQLITE_TRACE_PROFILE)!=0 );
assert( db->init.busy==0 );
assert( p->zSql!=0 );
sqlite3OsCurrentTimeInt64(db->pVfs, &iNow);
- db->xProfile(db->pProfileArg, p->zSql, (iNow - p->startTime)*1000000);
+ iElapse = (iNow - p->startTime)*1000000;
+ if( db->xProfile ){
+ db->xProfile(db->pProfileArg, p->zSql, iElapse);
+ }
+ if( db->mTrace & SQLITE_TRACE_PROFILE ){
+ db->xTrace(SQLITE_TRACE_PROFILE, db->pTraceArg, p, (void*)&iElapse);
+ }
p->startTime = 0;
}
/*
@@ -74624,7 +75047,7 @@ static SQLITE_NOINLINE void invokeProfileCallback(sqlite3 *db, Vdbe *p){
** This routine sets the error code and string returned by
** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt){
int rc;
if( pStmt==0 ){
/* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL
@@ -74651,7 +75074,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt){
** This routine sets the error code and string returned by
** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt){
int rc;
if( pStmt==0 ){
rc = SQLITE_OK;
@@ -74672,7 +75095,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt){
/*
** Set all the parameters in the compiled SQL statement to NULL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt *pStmt){
int i;
int rc = SQLITE_OK;
Vdbe *p = (Vdbe*)pStmt;
@@ -74696,7 +75119,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt *pStmt){
** The following routines extract information from a Mem or sqlite3_value
** structure.
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_blob(sqlite3_value *pVal){
+SQLITE_API const void *sqlite3_value_blob(sqlite3_value *pVal){
Mem *p = (Mem*)pVal;
if( p->flags & (MEM_Blob|MEM_Str) ){
if( sqlite3VdbeMemExpandBlob(p)!=SQLITE_OK ){
@@ -74709,36 +75132,36 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_value_blob(sqlite3_value *pVal){
return sqlite3_value_text(pVal);
}
}
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes(sqlite3_value *pVal){
+SQLITE_API int sqlite3_value_bytes(sqlite3_value *pVal){
return sqlite3ValueBytes(pVal, SQLITE_UTF8);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes16(sqlite3_value *pVal){
+SQLITE_API int sqlite3_value_bytes16(sqlite3_value *pVal){
return sqlite3ValueBytes(pVal, SQLITE_UTF16NATIVE);
}
-SQLITE_API double SQLITE_STDCALL sqlite3_value_double(sqlite3_value *pVal){
+SQLITE_API double sqlite3_value_double(sqlite3_value *pVal){
return sqlite3VdbeRealValue((Mem*)pVal);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_value_int(sqlite3_value *pVal){
+SQLITE_API int sqlite3_value_int(sqlite3_value *pVal){
return (int)sqlite3VdbeIntValue((Mem*)pVal);
}
-SQLITE_API sqlite_int64 SQLITE_STDCALL sqlite3_value_int64(sqlite3_value *pVal){
+SQLITE_API sqlite_int64 sqlite3_value_int64(sqlite3_value *pVal){
return sqlite3VdbeIntValue((Mem*)pVal);
}
-SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value *pVal){
+SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value *pVal){
Mem *pMem = (Mem*)pVal;
return ((pMem->flags & MEM_Subtype) ? pMem->eSubtype : 0);
}
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_value_text(sqlite3_value *pVal){
+SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16(sqlite3_value* pVal){
+SQLITE_API const void *sqlite3_value_text16(sqlite3_value* pVal){
return sqlite3ValueText(pVal, SQLITE_UTF16NATIVE);
}
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16be(sqlite3_value *pVal){
+SQLITE_API const void *sqlite3_value_text16be(sqlite3_value *pVal){
return sqlite3ValueText(pVal, SQLITE_UTF16BE);
}
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16le(sqlite3_value *pVal){
+SQLITE_API const void *sqlite3_value_text16le(sqlite3_value *pVal){
return sqlite3ValueText(pVal, SQLITE_UTF16LE);
}
#endif /* SQLITE_OMIT_UTF16 */
@@ -74746,7 +75169,7 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16le(sqlite3_value *pVal
** fundamental datatypes: 64-bit signed integer 64-bit IEEE floating
** point number string BLOB NULL
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_value_type(sqlite3_value* pVal){
+SQLITE_API int sqlite3_value_type(sqlite3_value* pVal){
static const u8 aType[] = {
SQLITE_BLOB, /* 0x00 */
SQLITE_NULL, /* 0x01 */
@@ -74786,7 +75209,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_value_type(sqlite3_value* pVal){
/* Make a copy of an sqlite3_value object
*/
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value *pOrig){
+SQLITE_API sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){
sqlite3_value *pNew;
if( pOrig==0 ) return 0;
pNew = sqlite3_malloc( sizeof(*pNew) );
@@ -74809,7 +75232,7 @@ SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value *
/* Destroy an sqlite3_value object previously obtained from
** sqlite3_value_dup().
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value *pOld){
+SQLITE_API void sqlite3_value_free(sqlite3_value *pOld){
sqlite3ValueFree(pOld);
}
@@ -74852,7 +75275,7 @@ static int invokeValueDestructor(
if( pCtx ) sqlite3_result_error_toobig(pCtx);
return SQLITE_TOOBIG;
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob(
+SQLITE_API void sqlite3_result_blob(
sqlite3_context *pCtx,
const void *z,
int n,
@@ -74862,7 +75285,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_blob(
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, 0, xDel);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob64(
+SQLITE_API void sqlite3_result_blob64(
sqlite3_context *pCtx,
const void *z,
sqlite3_uint64 n,
@@ -74876,43 +75299,43 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_blob64(
setResultStrOrError(pCtx, z, (int)n, 0, xDel);
}
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_double(sqlite3_context *pCtx, double rVal){
+SQLITE_API void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetDouble(pCtx->pOut, rVal);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
+SQLITE_API void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_ERROR;
pCtx->fErrorOrAux = 1;
sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
+SQLITE_API void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_ERROR;
pCtx->fErrorOrAux = 1;
sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
}
#endif
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int(sqlite3_context *pCtx, int iVal){
+SQLITE_API void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetInt64(pCtx->pOut, (i64)iVal);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
+SQLITE_API void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetInt64(pCtx->pOut, iVal);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_null(sqlite3_context *pCtx){
+SQLITE_API void sqlite3_result_null(sqlite3_context *pCtx){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetNull(pCtx->pOut);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){
+SQLITE_API void sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){
Mem *pOut = pCtx->pOut;
assert( sqlite3_mutex_held(pOut->db->mutex) );
pOut->eSubtype = eSubtype & 0xff;
pOut->flags |= MEM_Subtype;
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text(
+SQLITE_API void sqlite3_result_text(
sqlite3_context *pCtx,
const char *z,
int n,
@@ -74921,7 +75344,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_text(
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF8, xDel);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text64(
+SQLITE_API void sqlite3_result_text64(
sqlite3_context *pCtx,
const char *z,
sqlite3_uint64 n,
@@ -74938,7 +75361,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_text64(
}
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16(
+SQLITE_API void sqlite3_result_text16(
sqlite3_context *pCtx,
const void *z,
int n,
@@ -74947,7 +75370,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_text16(
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF16NATIVE, xDel);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16be(
+SQLITE_API void sqlite3_result_text16be(
sqlite3_context *pCtx,
const void *z,
int n,
@@ -74956,7 +75379,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_text16be(
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF16BE, xDel);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16le(
+SQLITE_API void sqlite3_result_text16le(
sqlite3_context *pCtx,
const void *z,
int n,
@@ -74966,15 +75389,15 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_text16le(
setResultStrOrError(pCtx, z, n, SQLITE_UTF16LE, xDel);
}
#endif /* SQLITE_OMIT_UTF16 */
-SQLITE_API void SQLITE_STDCALL sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
+SQLITE_API void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemCopy(pCtx->pOut, pValue);
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
+SQLITE_API void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetZeroBlob(pCtx->pOut, n);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context *pCtx, u64 n){
+SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context *pCtx, u64 n){
Mem *pOut = pCtx->pOut;
assert( sqlite3_mutex_held(pOut->db->mutex) );
if( n>(u64)pOut->db->aLimit[SQLITE_LIMIT_LENGTH] ){
@@ -74983,7 +75406,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context *pCtx, u
sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n);
return SQLITE_OK;
}
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
+SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
pCtx->isError = errCode;
pCtx->fErrorOrAux = 1;
#ifdef SQLITE_DEBUG
@@ -74996,7 +75419,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_error_code(sqlite3_context *pCtx,
}
/* Force an SQLITE_TOOBIG error. */
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_toobig(sqlite3_context *pCtx){
+SQLITE_API void sqlite3_result_error_toobig(sqlite3_context *pCtx){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_TOOBIG;
pCtx->fErrorOrAux = 1;
@@ -75005,7 +75428,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_error_toobig(sqlite3_context *pCtx
}
/* An SQLITE_NOMEM error. */
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_nomem(sqlite3_context *pCtx){
+SQLITE_API void sqlite3_result_error_nomem(sqlite3_context *pCtx){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
sqlite3VdbeMemSetNull(pCtx->pOut);
pCtx->isError = SQLITE_NOMEM_BKPT;
@@ -75106,7 +75529,8 @@ static int sqlite3Step(Vdbe *p){
);
#ifndef SQLITE_OMIT_TRACE
- if( db->xProfile && !db->init.busy && p->zSql ){
+ if( (db->xProfile || (db->mTrace & SQLITE_TRACE_PROFILE)!=0)
+ && !db->init.busy && p->zSql ){
sqlite3OsCurrentTimeInt64(db->pVfs, &p->startTime);
}else{
assert( p->startTime==0 );
@@ -75176,7 +75600,7 @@ end_of_step:
** sqlite3Step() to do most of the work. If a schema error occurs,
** call sqlite3Reprepare() and try again.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_step(sqlite3_stmt *pStmt){
int rc = SQLITE_OK; /* Result from sqlite3Step() */
int rc2 = SQLITE_OK; /* Result from sqlite3Reprepare() */
Vdbe *v = (Vdbe*)pStmt; /* the prepared statement */
@@ -75227,7 +75651,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt *pStmt){
** Extract the user data from a sqlite3_context structure and return a
** pointer to it.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context *p){
+SQLITE_API void *sqlite3_user_data(sqlite3_context *p){
assert( p && p->pFunc );
return p->pFunc->pUserData;
}
@@ -75242,7 +75666,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context *p){
** sqlite3_create_function16() routines that originally registered the
** application defined function.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context *p){
+SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){
assert( p && p->pOut );
return p->pOut->db;
}
@@ -75318,7 +75742,7 @@ static SQLITE_NOINLINE void *createAggContext(sqlite3_context *p, int nByte){
** context is allocated on the first call. Subsequent calls return the
** same context that was returned on prior calls.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context *p, int nByte){
+SQLITE_API void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
assert( p && p->pFunc && p->pFunc->xFinalize );
assert( sqlite3_mutex_held(p->pOut->db->mutex) );
testcase( nByte<0 );
@@ -75333,7 +75757,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context *p, in
** Return the auxiliary data pointer, if any, for the iArg'th argument to
** the user-function defined by pCtx.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
+SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
AuxData *pAuxData;
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
@@ -75354,7 +75778,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_get_auxdata(sqlite3_context *pCtx, int i
** argument to the user-function defined by pCtx. Any previous value is
** deleted by calling the delete function specified when it was set.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_set_auxdata(
+SQLITE_API void sqlite3_set_auxdata(
sqlite3_context *pCtx,
int iArg,
void *pAux,
@@ -75409,7 +75833,7 @@ failed:
** implementations should keep their own counts within their aggregate
** context.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_aggregate_count(sqlite3_context *p){
+SQLITE_API int sqlite3_aggregate_count(sqlite3_context *p){
assert( p && p->pMem && p->pFunc && p->pFunc->xFinalize );
return p->pMem->n;
}
@@ -75418,7 +75842,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_aggregate_count(sqlite3_context *p){
/*
** Return the number of columns in the result set for the statement pStmt.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt){
Vdbe *pVm = (Vdbe *)pStmt;
return pVm ? pVm->nResColumn : 0;
}
@@ -75427,7 +75851,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt){
** Return the number of values available from the current row of the
** currently executing statement pStmt.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_data_count(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt){
Vdbe *pVm = (Vdbe *)pStmt;
if( pVm==0 || pVm->pResultSet==0 ) return 0;
return pVm->nResColumn;
@@ -75530,7 +75954,7 @@ static void columnMallocFailure(sqlite3_stmt *pStmt)
** The following routines are used to access elements of the current row
** in the result set.
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
+SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt *pStmt, int i){
const void *val;
val = sqlite3_value_blob( columnMem(pStmt,i) );
/* Even though there is no encoding conversion, value_blob() might
@@ -75540,37 +75964,37 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_blob(sqlite3_stmt *pStmt, i
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
+SQLITE_API int sqlite3_column_bytes(sqlite3_stmt *pStmt, int i){
int val = sqlite3_value_bytes( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
+SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt *pStmt, int i){
int val = sqlite3_value_bytes16( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API double SQLITE_STDCALL sqlite3_column_double(sqlite3_stmt *pStmt, int i){
+SQLITE_API double sqlite3_column_double(sqlite3_stmt *pStmt, int i){
double val = sqlite3_value_double( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_column_int(sqlite3_stmt *pStmt, int i){
+SQLITE_API int sqlite3_column_int(sqlite3_stmt *pStmt, int i){
int val = sqlite3_value_int( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API sqlite_int64 SQLITE_STDCALL sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
+SQLITE_API sqlite_int64 sqlite3_column_int64(sqlite3_stmt *pStmt, int i){
sqlite_int64 val = sqlite3_value_int64( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_column_text(sqlite3_stmt *pStmt, int i){
+SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt *pStmt, int i){
const unsigned char *val = sqlite3_value_text( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt *pStmt, int i){
+SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
Mem *pOut = columnMem(pStmt, i);
if( pOut->flags&MEM_Static ){
pOut->flags &= ~MEM_Static;
@@ -75580,13 +76004,13 @@ SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt *pStm
return (sqlite3_value *)pOut;
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
+SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt *pStmt, int i){
const void *val = sqlite3_value_text16( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return val;
}
#endif /* SQLITE_OMIT_UTF16 */
-SQLITE_API int SQLITE_STDCALL sqlite3_column_type(sqlite3_stmt *pStmt, int i){
+SQLITE_API int sqlite3_column_type(sqlite3_stmt *pStmt, int i){
int iType = sqlite3_value_type( columnMem(pStmt,i) );
columnMallocFailure(pStmt);
return iType;
@@ -75650,12 +76074,12 @@ static const void *columnName(
** Return the name of the Nth column of the result set returned by SQL
** statement pStmt.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_name(sqlite3_stmt *pStmt, int N){
+SQLITE_API const char *sqlite3_column_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_NAME);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
+SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_NAME);
}
@@ -75675,12 +76099,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt *pStmt,
** Return the column declaration type (if applicable) of the 'i'th column
** of the result set of SQL statement pStmt.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
+SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
+SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
}
@@ -75693,12 +76117,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt *pS
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unambiguous reference to a database column.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
+SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DATABASE);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
+SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DATABASE);
}
@@ -75709,12 +76133,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stm
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unambiguous reference to a database column.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
+SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_TABLE);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
+SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_TABLE);
}
@@ -75725,12 +76149,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt *
** NULL is returned if the result column is an expression or constant or
** anything else which is not an unambiguous reference to a database column.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
+SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_COLUMN);
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
+SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_COLUMN);
}
@@ -75831,7 +76255,7 @@ static int bindText(
/*
** Bind a blob value to an SQL statement variable.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob(
+SQLITE_API int sqlite3_bind_blob(
sqlite3_stmt *pStmt,
int i,
const void *zData,
@@ -75843,7 +76267,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob(
#endif
return bindText(pStmt, i, zData, nData, xDel, 0);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob64(
+SQLITE_API int sqlite3_bind_blob64(
sqlite3_stmt *pStmt,
int i,
const void *zData,
@@ -75857,7 +76281,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob64(
return bindText(pStmt, i, zData, (int)nData, xDel, 0);
}
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
+SQLITE_API int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
int rc;
Vdbe *p = (Vdbe *)pStmt;
rc = vdbeUnbind(p, i);
@@ -75867,10 +76291,10 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_double(sqlite3_stmt *pStmt, int i, do
}
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
+SQLITE_API int sqlite3_bind_int(sqlite3_stmt *p, int i, int iValue){
return sqlite3_bind_int64(p, i, (i64)iValue);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
+SQLITE_API int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
int rc;
Vdbe *p = (Vdbe *)pStmt;
rc = vdbeUnbind(p, i);
@@ -75880,7 +76304,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sql
}
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
+SQLITE_API int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
int rc;
Vdbe *p = (Vdbe*)pStmt;
rc = vdbeUnbind(p, i);
@@ -75889,7 +76313,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
}
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text(
+SQLITE_API int sqlite3_bind_text(
sqlite3_stmt *pStmt,
int i,
const char *zData,
@@ -75898,7 +76322,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_text(
){
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text64(
+SQLITE_API int sqlite3_bind_text64(
sqlite3_stmt *pStmt,
int i,
const char *zData,
@@ -75915,7 +76339,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_text64(
}
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text16(
+SQLITE_API int sqlite3_bind_text16(
sqlite3_stmt *pStmt,
int i,
const void *zData,
@@ -75925,7 +76349,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_text16(
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF16NATIVE);
}
#endif /* SQLITE_OMIT_UTF16 */
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
+SQLITE_API int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
int rc;
switch( sqlite3_value_type((sqlite3_value*)pValue) ){
case SQLITE_INTEGER: {
@@ -75956,7 +76380,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_value(sqlite3_stmt *pStmt, int i, con
}
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
+SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
int rc;
Vdbe *p = (Vdbe *)pStmt;
rc = vdbeUnbind(p, i);
@@ -75966,7 +76390,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i,
}
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt *pStmt, int i, sqlite3_uint64 n){
+SQLITE_API int sqlite3_bind_zeroblob64(sqlite3_stmt *pStmt, int i, sqlite3_uint64 n){
int rc;
Vdbe *p = (Vdbe *)pStmt;
sqlite3_mutex_enter(p->db->mutex);
@@ -75985,7 +76409,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt *pStmt, int i
** Return the number of wildcards that can be potentially bound to.
** This routine is added to support DBD::SQLite.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
Vdbe *p = (Vdbe*)pStmt;
return p ? p->nVar : 0;
}
@@ -75996,7 +76420,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt *pStmt){
**
** The result is always UTF-8.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){
+SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt *pStmt, int i){
Vdbe *p = (Vdbe*)pStmt;
if( p==0 || i<1 || i>p->nzVar ){
return 0;
@@ -76024,7 +76448,7 @@ SQLITE_PRIVATE int sqlite3VdbeParameterIndex(Vdbe *p, const char *zName, int nNa
}
return 0;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
+SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
return sqlite3VdbeParameterIndex((Vdbe*)pStmt, zName, sqlite3Strlen30(zName));
}
@@ -76058,7 +76482,7 @@ SQLITE_PRIVATE int sqlite3TransferBindings(sqlite3_stmt *pFromStmt, sqlite3_stmt
** an SQLITE_ERROR is returned. Nothing else can go wrong, so otherwise
** SQLITE_OK is returned.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
+SQLITE_API int sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt, sqlite3_stmt *pToStmt){
Vdbe *pFrom = (Vdbe*)pFromStmt;
Vdbe *pTo = (Vdbe*)pToStmt;
if( pFrom->nVar!=pTo->nVar ){
@@ -76080,7 +76504,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_transfer_bindings(sqlite3_stmt *pFromStmt,
** the first argument to the sqlite3_prepare() that was used to create
** the statement in the first place.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt *pStmt){
+SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt *pStmt){
return pStmt ? ((Vdbe*)pStmt)->db : 0;
}
@@ -76088,14 +76512,14 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt *pStmt){
** Return true if the prepared statement is guaranteed to not modify the
** database.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_readonly(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){
return pStmt ? ((Vdbe*)pStmt)->readOnly : 1;
}
/*
** Return true if the prepared statement is in need of being reset.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_busy(sqlite3_stmt *pStmt){
+SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt *pStmt){
Vdbe *v = (Vdbe*)pStmt;
return v!=0 && v->pc>=0 && v->magic==VDBE_MAGIC_RUN;
}
@@ -76106,7 +76530,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_busy(sqlite3_stmt *pStmt){
** prepared statement for the database connection. Return NULL if there
** are no more.
*/
-SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
+SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
sqlite3_stmt *pNext;
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(pDb) ){
@@ -76127,7 +76551,7 @@ SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_
/*
** Return the value of a status counter for a prepared statement
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){
+SQLITE_API int sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){
Vdbe *pVdbe = (Vdbe*)pStmt;
u32 v;
#ifdef SQLITE_ENABLE_API_ARMOR
@@ -76141,6 +76565,39 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, i
return (int)v;
}
+/*
+** Return the SQL associated with a prepared statement
+*/
+SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt){
+ Vdbe *p = (Vdbe *)pStmt;
+ return p ? p->zSql : 0;
+}
+
+/*
+** Return the SQL associated with a prepared statement with
+** bound parameters expanded. Space to hold the returned string is
+** obtained from sqlite3_malloc(). The caller is responsible for
+** freeing the returned string by passing it to sqlite3_free().
+**
+** The SQLITE_TRACE_SIZE_LIMIT puts an upper bound on the size of
+** expanded bound parameters.
+*/
+SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt){
+#ifdef SQLITE_OMIT_TRACE
+ return 0;
+#else
+ char *z = 0;
+ const char *zSql = sqlite3_sql(pStmt);
+ if( zSql ){
+ Vdbe *p = (Vdbe *)pStmt;
+ sqlite3_mutex_enter(p->db->mutex);
+ z = sqlite3VdbeExpandSql(p, zSql);
+ sqlite3_mutex_leave(p->db->mutex);
+ }
+ return z;
+#endif
+}
+
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
/*
** Allocate and populate an UnpackedRecord structure based on the serialized
@@ -76167,7 +76624,7 @@ static UnpackedRecord *vdbeUnpackRecord(
** This function is called from within a pre-update callback to retrieve
** a field of the row currently being updated or deleted.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
+SQLITE_API int sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
PreUpdate *p = db->pPreUpdate;
int rc = SQLITE_OK;
@@ -76187,8 +76644,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlit
u32 nRec;
u8 *aRec;
- rc = sqlite3BtreeDataSize(p->pCsr->uc.pCursor, &nRec);
- if( rc!=SQLITE_OK ) goto preupdate_old_out;
+ nRec = sqlite3BtreePayloadSize(p->pCsr->uc.pCursor);
aRec = sqlite3DbMallocRaw(db, nRec);
if( !aRec ) goto preupdate_old_out;
rc = sqlite3BtreeData(p->pCsr->uc.pCursor, 0, nRec, aRec);
@@ -76223,7 +76679,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlit
** This function is called from within a pre-update callback to retrieve
** the number of columns in the row being updated, deleted or inserted.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_count(sqlite3 *db){
+SQLITE_API int sqlite3_preupdate_count(sqlite3 *db){
PreUpdate *p = db->pPreUpdate;
return (p ? p->keyinfo.nField : 0);
}
@@ -76241,7 +76697,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_count(sqlite3 *db){
** For the purposes of the previous paragraph, a foreign key CASCADE, SET NULL
** or SET DEFAULT action is considered a trigger.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_depth(sqlite3 *db){
+SQLITE_API int sqlite3_preupdate_depth(sqlite3 *db){
PreUpdate *p = db->pPreUpdate;
return (p ? p->v->nFrame : 0);
}
@@ -76252,7 +76708,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_depth(sqlite3 *db){
** This function is called from within a pre-update callback to retrieve
** a field of the row currently being updated or inserted.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
+SQLITE_API int sqlite3_preupdate_new(sqlite3 *db, int iIdx, sqlite3_value **ppValue){
PreUpdate *p = db->pPreUpdate;
int rc = SQLITE_OK;
Mem *pMem;
@@ -76326,7 +76782,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3 *db, int iIdx, sqlit
/*
** Return status data for a single loop within query pStmt.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
+SQLITE_API int sqlite3_stmt_scanstatus(
sqlite3_stmt *pStmt, /* Prepared statement being queried */
int idx, /* Index of loop to report on */
int iScanStatusOp, /* Which metric to return */
@@ -76385,7 +76841,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
/*
** Zero all counters associated with the sqlite3_stmt_scanstatus() data.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){
+SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){
Vdbe *p = (Vdbe*)pStmt;
memset(p->anExec, 0, p->nOp * sizeof(i64));
}
@@ -76476,10 +76932,13 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
int i; /* Loop counter */
Mem *pVar; /* Value of a host parameter */
StrAccum out; /* Accumulate the output here */
+#ifndef SQLITE_OMIT_UTF16
+ Mem utf8; /* Used to convert UTF16 parameters into UTF8 for display */
+#endif
char zBase[100]; /* Initial working space */
db = p->db;
- sqlite3StrAccumInit(&out, db, zBase, sizeof(zBase),
+ sqlite3StrAccumInit(&out, 0, zBase, sizeof(zBase),
db->aLimit[SQLITE_LIMIT_LENGTH]);
if( db->nVdbeExec>1 ){
while( *zRawSql ){
@@ -76530,12 +76989,14 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
int nOut; /* Number of bytes of the string text to include in output */
#ifndef SQLITE_OMIT_UTF16
u8 enc = ENC(db);
- Mem utf8;
if( enc!=SQLITE_UTF8 ){
memset(&utf8, 0, sizeof(utf8));
utf8.db = db;
sqlite3VdbeMemSetStr(&utf8, pVar->z, pVar->n, enc, SQLITE_STATIC);
- sqlite3VdbeChangeEncoding(&utf8, SQLITE_UTF8);
+ if( SQLITE_NOMEM==sqlite3VdbeChangeEncoding(&utf8, SQLITE_UTF8) ){
+ out.accError = STRACCUM_NOMEM;
+ out.nAlloc = 0;
+ }
pVar = &utf8;
}
#endif
@@ -76577,6 +77038,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
}
}
}
+ if( out.accError ) sqlite3StrAccumReset(&out);
return sqlite3StrAccumFinish(&out);
}
@@ -76906,7 +77368,7 @@ static void applyAffinity(
** is appropriate. But only do the conversion if it is possible without
** loss of information and return the revised type of the argument.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_value_numeric_type(sqlite3_value *pVal){
+SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
int eType = sqlite3_value_type(pVal);
if( eType==SQLITE_TEXT ){
Mem *pMem = (Mem*)pVal;
@@ -77109,8 +77571,8 @@ static void registerTrace(int iReg, Mem *p){
** This file contains inline asm code for retrieving "high-performance"
** counters for x86 class CPUs.
*/
-#ifndef _HWTIME_H_
-#define _HWTIME_H_
+#ifndef SQLITE_HWTIME_H
+#define SQLITE_HWTIME_H
/*
** The following routine only works on pentium-class (or newer) processors.
@@ -77178,7 +77640,7 @@ SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
#endif
-#endif /* !defined(_HWTIME_H_) */
+#endif /* !defined(SQLITE_HWTIME_H) */
/************** End of hwtime.h **********************************************/
/************** Continuing where we left off in vdbe.c ***********************/
@@ -78058,6 +78520,10 @@ case OP_ResultRow: {
}
if( db->mallocFailed ) goto no_mem;
+ if( db->mTrace & SQLITE_TRACE_ROW ){
+ db->xTrace(SQLITE_TRACE_ROW, db->pTraceArg, p, 0);
+ }
+
/* Return SQLITE_ROW
*/
p->pc = (int)(pOp - aOp) + 1;
@@ -78552,7 +79018,7 @@ case OP_Cast: { /* in1 */
#endif /* SQLITE_OMIT_CAST */
/* Opcode: Lt P1 P2 P3 P4 P5
-** Synopsis: if r[P1]<r[P3] goto P2
+** Synopsis: IF r[P3]<r[P1]
**
** Compare the values in register P1 and P3. If reg(P3)<reg(P1) then
** jump to address P2.
@@ -78587,7 +79053,7 @@ case OP_Cast: { /* in1 */
** bit set.
*/
/* Opcode: Ne P1 P2 P3 P4 P5
-** Synopsis: if r[P1]!=r[P3] goto P2
+** Synopsis: IF r[P3]!=r[P1]
**
** This works just like the Lt opcode except that the jump is taken if
** the operands in registers P1 and P3 are not equal. See the Lt opcode for
@@ -78600,7 +79066,7 @@ case OP_Cast: { /* in1 */
** the SQLITE_NULLEQ flag were omitted from P5.
*/
/* Opcode: Eq P1 P2 P3 P4 P5
-** Synopsis: if r[P1]==r[P3] goto P2
+** Synopsis: IF r[P3]==r[P1]
**
** This works just like the Lt opcode except that the jump is taken if
** the operands in registers P1 and P3 are equal.
@@ -78613,21 +79079,21 @@ case OP_Cast: { /* in1 */
** the SQLITE_NULLEQ flag were omitted from P5.
*/
/* Opcode: Le P1 P2 P3 P4 P5
-** Synopsis: if r[P1]<=r[P3] goto P2
+** Synopsis: IF r[P3]<=r[P1]
**
** This works just like the Lt opcode except that the jump is taken if
** the content of register P3 is less than or equal to the content of
** register P1. See the Lt opcode for additional information.
*/
/* Opcode: Gt P1 P2 P3 P4 P5
-** Synopsis: if r[P1]>r[P3] goto P2
+** Synopsis: IF r[P3]>r[P1]
**
** This works just like the Lt opcode except that the jump is taken if
** the content of register P3 is greater than the content of
** register P1. See the Lt opcode for additional information.
*/
/* Opcode: Ge P1 P2 P3 P4 P5
-** Synopsis: if r[P1]>=r[P3] goto P2
+** Synopsis: IF r[P3]>=r[P1]
**
** This works just like the Lt opcode except that the jump is taken if
** the content of register P3 is greater than or equal to the content of
@@ -78691,6 +79157,7 @@ case OP_Ge: { /* same as TK_GE, jump, in1, in3 */
if( (flags1 | flags3)&MEM_Str ){
if( (flags1 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
applyNumericAffinity(pIn1,0);
+ flags3 = pIn3->flags;
}
if( (flags3 & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
applyNumericAffinity(pIn3,0);
@@ -78703,6 +79170,7 @@ case OP_Ge: { /* same as TK_GE, jump, in1, in3 */
sqlite3VdbeMemStringify(pIn1, encoding, 1);
testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) );
flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask);
+ flags3 = pIn3->flags;
}
if( (flags3 & MEM_Str)==0 && (flags3 & (MEM_Int|MEM_Real))!=0 ){
testcase( pIn3->flags & MEM_Int );
@@ -79055,7 +79523,6 @@ case OP_NotNull: { /* same as TK_NOTNULL, jump, in1 */
** skipped for length() and all content loading can be skipped for typeof().
*/
case OP_Column: {
- i64 payloadSize64; /* Number of bytes in the record */
int p2; /* column number to retrieve */
VdbeCursor *pC; /* The VDBE cursor */
BtCursor *pCrsr; /* The BTree cursor */
@@ -79078,6 +79545,7 @@ case OP_Column: {
/* If the cursor cache is stale, bring it up-to-date */
rc = sqlite3VdbeCursorMoveto(&pC, &p2);
+ if( rc ) goto abort_due_to_error;
assert( pOp->p3>0 && pOp->p3<=(p->nMem+1 - p->nCursor) );
pDest = &aMem[pOp->p3];
@@ -79091,8 +79559,7 @@ case OP_Column: {
assert( pC->eCurType!=CURTYPE_SORTER );
pCrsr = pC->uc.pCursor;
- if( rc ) goto abort_due_to_error;
- if( pC->cacheStatus!=p->cacheCtr ){
+ if( pC->cacheStatus!=p->cacheCtr ){ /*OPTIMIZATION-IF-FALSE*/
if( pC->nullRow ){
if( pC->eCurType==CURTYPE_PSEUDO ){
assert( pC->uc.pseudoTableReg>0 );
@@ -79108,22 +79575,9 @@ case OP_Column: {
}else{
assert( pC->eCurType==CURTYPE_BTREE );
assert( pCrsr );
- if( pC->isTable==0 ){
- assert( sqlite3BtreeCursorIsValid(pCrsr) );
- VVA_ONLY(rc =) sqlite3BtreeKeySize(pCrsr, &payloadSize64);
- assert( rc==SQLITE_OK ); /* True because of CursorMoveto() call above */
- /* sqlite3BtreeParseCellPtr() uses getVarint32() to extract the
- ** payload size, so it is impossible for payloadSize64 to be
- ** larger than 32 bits. */
- assert( (payloadSize64 & SQLITE_MAX_U32)==(u64)payloadSize64 );
- pC->aRow = sqlite3BtreeKeyFetch(pCrsr, &avail);
- pC->payloadSize = (u32)payloadSize64;
- }else{
- assert( sqlite3BtreeCursorIsValid(pCrsr) );
- VVA_ONLY(rc =) sqlite3BtreeDataSize(pCrsr, &pC->payloadSize);
- assert( rc==SQLITE_OK ); /* DataSize() cannot fail */
- pC->aRow = sqlite3BtreeDataFetch(pCrsr, &avail);
- }
+ assert( sqlite3BtreeCursorIsValid(pCrsr) );
+ pC->payloadSize = sqlite3BtreePayloadSize(pCrsr);
+ pC->aRow = sqlite3BtreePayloadFetch(pCrsr, &avail);
assert( avail<=65536 ); /* Maximum page size is 64KiB */
if( pC->payloadSize <= (u32)avail ){
pC->szRow = pC->payloadSize;
@@ -79139,7 +79593,7 @@ case OP_Column: {
aOffset[0] = offset;
- if( avail<offset ){
+ if( avail<offset ){ /*OPTIMIZATION-IF-FALSE*/
/* pC->aRow does not have to hold the entire row, but it does at least
** need to cover the header of the record. If pC->aRow does not contain
** the complete header, then set it to zero, forcing the header to be
@@ -79160,14 +79614,15 @@ case OP_Column: {
rc = SQLITE_CORRUPT_BKPT;
goto abort_due_to_error;
}
+ }else if( offset>0 ){ /*OPTIMIZATION-IF-TRUE*/
+ /* The following goto is an optimization. It can be omitted and
+ ** everything will still work. But OP_Column is measurably faster
+ ** by skipping the subsequent conditional, which is always true.
+ */
+ zData = pC->aRow;
+ assert( pC->nHdrParsed<=p2 ); /* Conditional skipped */
+ goto op_column_read_header;
}
-
- /* The following goto is an optimization. It can be omitted and
- ** everything will still work. But OP_Column is measurably faster
- ** by skipping the subsequent conditional, which is always true.
- */
- assert( pC->nHdrParsed<=p2 ); /* Conditional skipped */
- goto op_column_read_header;
}
/* Make sure at least the first p2+1 entries of the header have been
@@ -79177,7 +79632,6 @@ case OP_Column: {
/* If there is more header available for parsing in the record, try
** to extract additional fields up through the p2+1-th field
*/
- op_column_read_header:
if( pC->iHdrOffset<aOffset[0] ){
/* Make sure zData points to enough of the record to cover the header. */
if( pC->aRow==0 ){
@@ -79190,11 +79644,11 @@ case OP_Column: {
}
/* Fill in pC->aType[i] and aOffset[i] values through the p2-th field. */
+ op_column_read_header:
i = pC->nHdrParsed;
offset64 = aOffset[i];
zHdr = zData + pC->iHdrOffset;
zEndHdr = zData + aOffset[0];
- assert( i<=p2 && zHdr<zEndHdr );
do{
if( (t = zHdr[0])<0x80 ){
zHdr++;
@@ -79206,9 +79660,7 @@ case OP_Column: {
pC->aType[i++] = t;
aOffset[i] = (u32)(offset64 & 0xffffffff);
}while( i<=p2 && zHdr<zEndHdr );
- pC->nHdrParsed = i;
- pC->iHdrOffset = (u32)(zHdr - zData);
-
+
/* The record is corrupt if any of the following are true:
** (1) the bytes of the header extend past the declared header size
** (2) the entire header was used but not all data was used
@@ -79221,8 +79673,10 @@ case OP_Column: {
rc = SQLITE_CORRUPT_BKPT;
goto abort_due_to_error;
}
- if( pC->aRow==0 ) sqlite3VdbeMemRelease(&sMem);
+ pC->nHdrParsed = i;
+ pC->iHdrOffset = (u32)(zHdr - zData);
+ if( pC->aRow==0 ) sqlite3VdbeMemRelease(&sMem);
}else{
t = 0;
}
@@ -79250,9 +79704,10 @@ case OP_Column: {
assert( p2<pC->nHdrParsed );
assert( rc==SQLITE_OK );
assert( sqlite3VdbeCheckMemInvariants(pDest) );
- if( VdbeMemDynamic(pDest) ) sqlite3VdbeMemSetNull(pDest);
+ if( VdbeMemDynamic(pDest) ){
+ sqlite3VdbeMemSetNull(pDest);
+ }
assert( t==pC->aType[p2] );
- pDest->enc = encoding;
if( pC->szRow>=aOffset[p2+1] ){
/* This is the common case where the desired content fits on the original
** page - where the content is not on an overflow page */
@@ -79266,6 +79721,7 @@ case OP_Column: {
*/
static const u16 aFlag[] = { MEM_Blob, MEM_Str|MEM_Term };
pDest->n = len = (t-12)/2;
+ pDest->enc = encoding;
if( pDest->szMalloc < len+2 ){
pDest->flags = MEM_Null;
if( sqlite3VdbeMemGrow(pDest, len+2, 0) ) goto no_mem;
@@ -79278,6 +79734,7 @@ case OP_Column: {
pDest->flags = aFlag[t&1];
}
}else{
+ pDest->enc = encoding;
/* This branch happens only when content is on overflow pages */
if( ((pOp->p5 & (OPFLAG_LENGTHARG|OPFLAG_TYPEOFARG))!=0
&& ((t>=12 && (t&1)==0) || (pOp->p5 & OPFLAG_TYPEOFARG)!=0))
@@ -80695,6 +81152,30 @@ case OP_Found: { /* jump, in3 */
break;
}
+/* Opcode: SeekRowid P1 P2 P3 * *
+** Synopsis: intkey=r[P3]
+**
+** P1 is the index of a cursor open on an SQL table btree (with integer
+** keys). If register P3 does not contain an integer or if P1 does not
+** contain a record with rowid P3 then jump immediately to P2.
+** Or, if P2 is 0, raise an SQLITE_CORRUPT error. If P1 does contain
+** a record with rowid P3 then
+** leave the cursor pointing at that record and fall through to the next
+** instruction.
+**
+** The OP_NotExists opcode performs the same operation, but with OP_NotExists
+** the P3 register must be guaranteed to contain an integer value. With this
+** opcode, register P3 might not contain an integer.
+**
+** The OP_NotFound opcode performs the same operation on index btrees
+** (with arbitrary multi-value keys).
+**
+** This opcode leaves the cursor in a state where it cannot be advanced
+** in either direction. In other words, the Next and Prev opcodes will
+** not work following this opcode.
+**
+** See also: Found, NotFound, NoConflict, SeekRowid
+*/
/* Opcode: NotExists P1 P2 P3 * *
** Synopsis: intkey=r[P3]
**
@@ -80705,6 +81186,10 @@ case OP_Found: { /* jump, in3 */
** leave the cursor pointing at that record and fall through to the next
** instruction.
**
+** The OP_SeekRowid opcode performs the same operation but also allows the
+** P3 register to contain a non-integer value, in which case the jump is
+** always taken. This opcode requires that P3 always contain an integer.
+**
** The OP_NotFound opcode performs the same operation on index btrees
** (with arbitrary multi-value keys).
**
@@ -80712,15 +81197,22 @@ case OP_Found: { /* jump, in3 */
** in either direction. In other words, the Next and Prev opcodes will
** not work following this opcode.
**
-** See also: Found, NotFound, NoConflict
+** See also: Found, NotFound, NoConflict, SeekRowid
*/
-case OP_NotExists: { /* jump, in3 */
+case OP_SeekRowid: { /* jump, in3 */
VdbeCursor *pC;
BtCursor *pCrsr;
int res;
u64 iKey;
pIn3 = &aMem[pOp->p3];
+ if( (pIn3->flags & MEM_Int)==0 ){
+ applyAffinity(pIn3, SQLITE_AFF_NUMERIC, encoding);
+ if( (pIn3->flags & MEM_Int)==0 ) goto jump_to_p2;
+ }
+ /* Fall through into OP_NotExists */
+case OP_NotExists: /* jump, in3 */
+ pIn3 = &aMem[pOp->p3];
assert( pIn3->flags & MEM_Int );
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
pC = p->apCsr[pOp->p1];
@@ -80838,8 +81330,7 @@ case OP_NewRowid: { /* out2 */
v = 1; /* IMP: R-61914-48074 */
}else{
assert( sqlite3BtreeCursorIsValid(pC->uc.pCursor) );
- rc = sqlite3BtreeKeySize(pC->uc.pCursor, &v);
- assert( rc==SQLITE_OK ); /* Cannot fail following BtreeLast() */
+ v = sqlite3BtreeIntegerKey(pC->uc.pCursor);
if( v>=MAX_ROWID ){
pC->useRandomRowid = 1;
}else{
@@ -80922,10 +81413,12 @@ case OP_NewRowid: { /* out2 */
** sqlite3_last_insert_rowid() function (otherwise it is unmodified).
**
** If the OPFLAG_USESEEKRESULT flag of P5 is set and if the result of
-** the last seek operation (OP_NotExists) was a success, then this
+** the last seek operation (OP_NotExists or OP_SeekRowid) was a success,
+** then this
** operation will not attempt to find the appropriate row before doing
** the insert but will instead overwrite the row that the cursor is
-** currently pointing to. Presumably, the prior OP_NotExists opcode
+** currently pointing to. Presumably, the prior OP_NotExists or
+** OP_SeekRowid opcode
** has already positioned the cursor correctly. This is an optimization
** that boosts performance by avoiding redundant seeks.
**
@@ -80957,13 +81450,12 @@ case OP_Insert:
case OP_InsertInt: {
Mem *pData; /* MEM cell holding data for the record to be inserted */
Mem *pKey; /* MEM cell holding key for the record */
- i64 iKey; /* The integer ROWID or key for the record to be inserted */
VdbeCursor *pC; /* Cursor to table into which insert is written */
- int nZero; /* Number of zero-bytes to append */
int seekResult; /* Result of prior seek or 0 if no USESEEKRESULT flag */
const char *zDb; /* database name - used by the update hook */
Table *pTab; /* Table structure - used by update and pre-update hooks */
int op; /* Opcode for update hook: SQLITE_UPDATE or SQLITE_INSERT */
+ BtreePayload x; /* Payload to be inserted */
op = 0;
pData = &aMem[pOp->p2];
@@ -80982,10 +81474,10 @@ case OP_InsertInt: {
assert( pKey->flags & MEM_Int );
assert( memIsValid(pKey) );
REGISTER_TRACE(pOp->p3, pKey);
- iKey = pKey->u.i;
+ x.nKey = pKey->u.i;
}else{
assert( pOp->opcode==OP_InsertInt );
- iKey = pOp->p3;
+ x.nKey = pOp->p3;
}
if( pOp->p4type==P4_TABLE && HAS_UPDATE_HOOK(db) ){
@@ -81006,26 +81498,28 @@ case OP_InsertInt: {
&& pOp->p4type==P4_TABLE
&& !(pOp->p5 & OPFLAG_ISUPDATE)
){
- sqlite3VdbePreUpdateHook(p, pC, SQLITE_INSERT, zDb, pTab, iKey, pOp->p2);
+ sqlite3VdbePreUpdateHook(p, pC, SQLITE_INSERT, zDb, pTab, x.nKey, pOp->p2);
}
#endif
if( pOp->p5 & OPFLAG_NCHANGE ) p->nChange++;
- if( pOp->p5 & OPFLAG_LASTROWID ) db->lastRowid = lastRowid = iKey;
+ if( pOp->p5 & OPFLAG_LASTROWID ) db->lastRowid = lastRowid = x.nKey;
if( pData->flags & MEM_Null ){
- pData->z = 0;
- pData->n = 0;
+ x.pData = 0;
+ x.nData = 0;
}else{
assert( pData->flags & (MEM_Blob|MEM_Str) );
+ x.pData = pData->z;
+ x.nData = pData->n;
}
seekResult = ((pOp->p5 & OPFLAG_USESEEKRESULT) ? pC->seekResult : 0);
if( pData->flags & MEM_Zero ){
- nZero = pData->u.nZero;
+ x.nZero = pData->u.nZero;
}else{
- nZero = 0;
+ x.nZero = 0;
}
- rc = sqlite3BtreeInsert(pC->uc.pCursor, 0, iKey,
- pData->z, pData->n, nZero,
+ x.pKey = 0;
+ rc = sqlite3BtreeInsert(pC->uc.pCursor, &x,
(pOp->p5 & OPFLAG_APPEND)!=0, seekResult
);
pC->deferredMoveto = 0;
@@ -81034,7 +81528,7 @@ case OP_InsertInt: {
/* Invoke the update-hook if required. */
if( rc ) goto abort_due_to_error;
if( db->xUpdateCallback && op ){
- db->xUpdateCallback(db->pUpdateArg, op, zDb, pTab->zName, iKey);
+ db->xUpdateCallback(db->pUpdateArg, op, zDb, pTab->zName, x.nKey);
}
break;
}
@@ -81093,8 +81587,7 @@ case OP_Delete: {
/* If p5 is zero, the seek operation that positioned the cursor prior to
** OP_Delete will have also set the pC->movetoTarget field to the rowid of
** the row that is being deleted */
- i64 iKey = 0;
- sqlite3BtreeKeySize(pC->uc.pCursor, &iKey);
+ i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
assert( pC->movetoTarget==iKey );
}
#endif
@@ -81110,7 +81603,7 @@ case OP_Delete: {
zDb = db->aDb[pC->iDb].zName;
pTab = pOp->p4.pTab;
if( (pOp->p5 & OPFLAG_SAVEPOSITION)!=0 && pC->isTable ){
- sqlite3BtreeKeySize(pC->uc.pCursor, &pC->movetoTarget);
+ pC->movetoTarget = sqlite3BtreeIntegerKey(pC->uc.pCursor);
}
}else{
zDb = 0; /* Not needed. Silence a compiler warning. */
@@ -81264,7 +81757,6 @@ case OP_RowData: {
VdbeCursor *pC;
BtCursor *pCrsr;
u32 n;
- i64 n64;
pOut = &aMem[pOp->p2];
memAboutToChange(p, pOut);
@@ -81282,8 +81774,9 @@ case OP_RowData: {
pCrsr = pC->uc.pCursor;
/* The OP_RowKey and OP_RowData opcodes always follow OP_NotExists or
- ** OP_Rewind/Op_Next with no intervening instructions that might invalidate
- ** the cursor. If this where not the case, on of the following assert()s
+ ** OP_SeekRowid or OP_Rewind/Op_Next with no intervening instructions
+ ** that might invalidate the cursor.
+ ** If this where not the case, on of the following assert()s
** would fail. Should this ever change (because of changes in the code
** generator) then the fix would be to insert a call to
** sqlite3VdbeCursorMoveto().
@@ -81295,20 +81788,9 @@ case OP_RowData: {
if( rc!=SQLITE_OK ) goto abort_due_to_error;
#endif
- if( pC->isTable==0 ){
- assert( !pC->isTable );
- VVA_ONLY(rc =) sqlite3BtreeKeySize(pCrsr, &n64);
- assert( rc==SQLITE_OK ); /* True because of CursorMoveto() call above */
- if( n64>db->aLimit[SQLITE_LIMIT_LENGTH] ){
- goto too_big;
- }
- n = (u32)n64;
- }else{
- VVA_ONLY(rc =) sqlite3BtreeDataSize(pCrsr, &n);
- assert( rc==SQLITE_OK ); /* DataSize() cannot fail */
- if( n>(u32)db->aLimit[SQLITE_LIMIT_LENGTH] ){
- goto too_big;
- }
+ n = sqlite3BtreePayloadSize(pCrsr);
+ if( n>(u32)db->aLimit[SQLITE_LIMIT_LENGTH] ){
+ goto too_big;
}
testcase( n==0 );
if( sqlite3VdbeMemClearAndResize(pOut, MAX(n,32)) ){
@@ -81373,8 +81855,7 @@ case OP_Rowid: { /* out2 */
pOut->flags = MEM_Null;
break;
}
- rc = sqlite3BtreeKeySize(pC->uc.pCursor, &v);
- assert( rc==SQLITE_OK ); /* Always so because of CursorRestore() above */
+ v = sqlite3BtreeIntegerKey(pC->uc.pCursor);
}
pOut->u.i = v;
break;
@@ -81649,8 +82130,7 @@ next_tail:
case OP_SorterInsert: /* in2 */
case OP_IdxInsert: { /* in2 */
VdbeCursor *pC;
- int nKey;
- const char *zKey;
+ BtreePayload x;
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
pC = p->apCsr[pOp->p1];
@@ -81666,9 +82146,12 @@ case OP_IdxInsert: { /* in2 */
if( pOp->opcode==OP_SorterInsert ){
rc = sqlite3VdbeSorterWrite(pC, pIn2);
}else{
- nKey = pIn2->n;
- zKey = pIn2->z;
- rc = sqlite3BtreeInsert(pC->uc.pCursor, zKey, nKey, "", 0, 0, pOp->p3,
+ x.nKey = pIn2->n;
+ x.pKey = pIn2->z;
+ x.nData = 0;
+ x.nZero = 0;
+ x.pData = 0;
+ rc = sqlite3BtreeInsert(pC->uc.pCursor, &x, pOp->p3,
((pOp->p5 & OPFLAG_USESEEKRESULT) ? pC->seekResult : 0)
);
assert( pC->deferredMoveto==0 );
@@ -83436,16 +83919,34 @@ case OP_MaxPgcnt: { /* out2 */
*/
case OP_Init: { /* jump */
char *zTrace;
- char *z;
+
+ /* If the P4 argument is not NULL, then it must be an SQL comment string.
+ ** The "--" string is broken up to prevent false-positives with srcck1.c.
+ **
+ ** This assert() provides evidence for:
+ ** EVIDENCE-OF: R-50676-09860 The callback can compute the same text that
+ ** would have been returned by the legacy sqlite3_trace() interface by
+ ** using the X argument when X begins with "--" and invoking
+ ** sqlite3_expanded_sql(P) otherwise.
+ */
+ assert( pOp->p4.z==0 || strncmp(pOp->p4.z, "-" "- ", 3)==0 );
#ifndef SQLITE_OMIT_TRACE
- if( db->xTrace
+ if( (db->mTrace & (SQLITE_TRACE_STMT|SQLITE_TRACE_LEGACY))!=0
&& !p->doingRerun
&& (zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql))!=0
){
- z = sqlite3VdbeExpandSql(p, zTrace);
- db->xTrace(db->pTraceArg, z);
- sqlite3DbFree(db, z);
+#ifndef SQLITE_OMIT_DEPRECATED
+ if( db->mTrace & SQLITE_TRACE_LEGACY ){
+ void (*x)(void*,const char*) = (void(*)(void*,const char*))db->xTrace;
+ char *z = sqlite3VdbeExpandSql(p, zTrace);
+ x(db->pTraceArg, z);
+ sqlite3_free(z);
+ }else
+#endif
+ {
+ (void)db->xTrace(SQLITE_TRACE_STMT, db->pTraceArg, p, zTrace);
+ }
}
#ifdef SQLITE_USE_FCNTL_TRACE
zTrace = (pOp->p4.z ? pOp->p4.z : p->zSql);
@@ -83719,7 +84220,7 @@ static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr){
/*
** Open a blob handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_open(
+SQLITE_API int sqlite3_blob_open(
sqlite3* db, /* The database connection */
const char *zDb, /* The attached database containing the blob */
const char *zTable, /* The table containing the blob */
@@ -83960,7 +84461,7 @@ blob_open_out:
** Close a blob handle that was previously created using
** sqlite3_blob_open().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_close(sqlite3_blob *pBlob){
+SQLITE_API int sqlite3_blob_close(sqlite3_blob *pBlob){
Incrblob *p = (Incrblob *)pBlob;
int rc;
sqlite3 *db;
@@ -84028,7 +84529,7 @@ static int blobReadWrite(
** anyhow.
*/
sqlite3_int64 iKey;
- sqlite3BtreeKeySize(p->pCsr, &iKey);
+ iKey = sqlite3BtreeIntegerKey(p->pCsr);
sqlite3VdbePreUpdateHook(
v, v->apCsr[0], SQLITE_DELETE, p->zDb, p->pTab, iKey, -1
);
@@ -84053,14 +84554,14 @@ static int blobReadWrite(
/*
** Read data from a blob handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_read(sqlite3_blob *pBlob, void *z, int n, int iOffset){
+SQLITE_API int sqlite3_blob_read(sqlite3_blob *pBlob, void *z, int n, int iOffset){
return blobReadWrite(pBlob, z, n, iOffset, sqlite3BtreeData);
}
/*
** Write data to a blob handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *pBlob, const void *z, int n, int iOffset){
+SQLITE_API int sqlite3_blob_write(sqlite3_blob *pBlob, const void *z, int n, int iOffset){
return blobReadWrite(pBlob, (void *)z, n, iOffset, sqlite3BtreePutData);
}
@@ -84070,7 +84571,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *pBlob, const void
** The Incrblob.nByte field is fixed for the lifetime of the Incrblob
** so no mutex is required for access.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *pBlob){
+SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *pBlob){
Incrblob *p = (Incrblob *)pBlob;
return (p && p->pStmt) ? p->nByte : 0;
}
@@ -84085,7 +84586,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *pBlob){
** subsequent calls to sqlite3_blob_xxx() functions (except blob_close())
** immediately return SQLITE_ABORT.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
+SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
int rc;
Incrblob *p = (Incrblob *)pBlob;
sqlite3 *db;
@@ -85463,19 +85964,18 @@ static int vdbeSortAllocUnpacked(SortSubtask *pTask){
/*
** Merge the two sorted lists p1 and p2 into a single list.
-** Set *ppOut to the head of the new list.
*/
-static void vdbeSorterMerge(
+static SorterRecord *vdbeSorterMerge(
SortSubtask *pTask, /* Calling thread context */
SorterRecord *p1, /* First list to merge */
- SorterRecord *p2, /* Second list to merge */
- SorterRecord **ppOut /* OUT: Head of merged list */
+ SorterRecord *p2 /* Second list to merge */
){
SorterRecord *pFinal = 0;
SorterRecord **pp = &pFinal;
int bCached = 0;
- while( p1 && p2 ){
+ assert( p1!=0 && p2!=0 );
+ for(;;){
int res;
res = pTask->xCompare(
pTask, &bCached, SRVAL(p1), p1->nVal, SRVAL(p2), p2->nVal
@@ -85485,15 +85985,22 @@ static void vdbeSorterMerge(
*pp = p1;
pp = &p1->u.pNext;
p1 = p1->u.pNext;
+ if( p1==0 ){
+ *pp = p2;
+ break;
+ }
}else{
*pp = p2;
pp = &p2->u.pNext;
p2 = p2->u.pNext;
bCached = 0;
+ if( p2==0 ){
+ *pp = p1;
+ break;
+ }
}
}
- *pp = p1 ? p1 : p2;
- *ppOut = pFinal;
+ return pFinal;
}
/*
@@ -85546,7 +86053,7 @@ static int vdbeSorterSort(SortSubtask *pTask, SorterList *pList){
p->u.pNext = 0;
for(i=0; aSlot[i]; i++){
- vdbeSorterMerge(pTask, p, aSlot[i], &p);
+ p = vdbeSorterMerge(pTask, p, aSlot[i]);
aSlot[i] = 0;
}
aSlot[i] = p;
@@ -85555,7 +86062,8 @@ static int vdbeSorterSort(SortSubtask *pTask, SorterList *pList){
p = 0;
for(i=0; i<64; i++){
- vdbeSorterMerge(pTask, p, aSlot[i], &p);
+ if( aSlot[i]==0 ) continue;
+ p = p ? vdbeSorterMerge(pTask, p, aSlot[i]) : aSlot[i];
}
pList->pList = p;
@@ -88175,7 +88683,11 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId);
pNC->nErr++;
is_agg = 0;
- }else if( no_such_func && pParse->db->init.busy==0 ){
+ }else if( no_such_func && pParse->db->init.busy==0
+#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+ && pParse->explain==0
+#endif
+ ){
sqlite3ErrorMsg(pParse, "no such function: %.*s", nId, zId);
pNC->nErr++;
}else if( wrong_num_args ){
@@ -90775,6 +91287,11 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, u32 inFlags, int
eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
if( prRhsHasNull && !pTab->aCol[iCol].notNull ){
+#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
+ const i64 sOne = 1;
+ sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed,
+ iTab, 0, 0, (u8*)&sOne, P4_INT64);
+#endif
*prRhsHasNull = ++pParse->nMem;
sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull);
}
@@ -90787,7 +91304,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, u32 inFlags, int
/* If no preexisting index is available for the IN clause
** and IN_INDEX_NOOP is an allowed reply
** and the RHS of the IN operator is a list, not a subquery
- ** and the RHS is not contant or has two or fewer terms,
+ ** and the RHS is not constant or has two or fewer terms,
** then it is not worth creating an ephemeral table to evaluate
** the IN operator so return IN_INDEX_NOOP.
*/
@@ -91179,8 +91696,7 @@ static void sqlite3ExprCodeIN(
if( eType==IN_INDEX_ROWID ){
/* In this case, the RHS is the ROWID of table b-tree
*/
- sqlite3VdbeAddOp2(v, OP_MustBeInt, r1, destIfFalse); VdbeCoverage(v);
- sqlite3VdbeAddOp3(v, OP_NotExists, pExpr->iTable, destIfFalse, r1);
+ sqlite3VdbeAddOp3(v, OP_SeekRowid, pExpr->iTable, destIfFalse, r1);
VdbeCoverage(v);
}else{
/* In this case, the RHS is an index b-tree.
@@ -91493,7 +92009,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(
}else{
int op = IsVirtual(pTab) ? OP_VColumn : OP_Column;
int x = iCol;
- if( !HasRowid(pTab) ){
+ if( !HasRowid(pTab) && !IsVirtual(pTab) ){
x = sqlite3ColumnOfIndex(sqlite3PrimaryKeyIndex(pTab), iCol);
}
sqlite3VdbeAddOp3(v, op, iTabCur, x, regOut);
@@ -91896,6 +92412,11 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
assert( !ExprHasProperty(pExpr, EP_IntValue) );
zId = pExpr->u.zToken;
pDef = sqlite3FindFunction(db, zId, nFarg, enc, 0);
+#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+ if( pDef==0 && pParse->explain ){
+ pDef = sqlite3FindFunction(db, "unknown", nFarg, enc, 0);
+ }
+#endif
if( pDef==0 || pDef->xFinalize!=0 ){
sqlite3ErrorMsg(pParse, "unknown function: %s()", zId);
break;
@@ -92920,6 +93441,61 @@ SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Expr *pE1, Expr *pE2, int iTab){
/*
** An instance of the following structure is used by the tree walker
+** to determine if an expression can be evaluated by reference to the
+** index only, without having to do a search for the corresponding
+** table entry. The IdxCover.pIdx field is the index. IdxCover.iCur
+** is the cursor for the table.
+*/
+struct IdxCover {
+ Index *pIdx; /* The index to be tested for coverage */
+ int iCur; /* Cursor number for the table corresponding to the index */
+};
+
+/*
+** Check to see if there are references to columns in table
+** pWalker->u.pIdxCover->iCur can be satisfied using the index
+** pWalker->u.pIdxCover->pIdx.
+*/
+static int exprIdxCover(Walker *pWalker, Expr *pExpr){
+ if( pExpr->op==TK_COLUMN
+ && pExpr->iTable==pWalker->u.pIdxCover->iCur
+ && sqlite3ColumnOfIndex(pWalker->u.pIdxCover->pIdx, pExpr->iColumn)<0
+ ){
+ pWalker->eCode = 1;
+ return WRC_Abort;
+ }
+ return WRC_Continue;
+}
+
+/*
+** Determine if an index pIdx on table with cursor iCur contains will
+** the expression pExpr. Return true if the index does cover the
+** expression and false if the pExpr expression references table columns
+** that are not found in the index pIdx.
+**
+** An index covering an expression means that the expression can be
+** evaluated using only the index and without having to lookup the
+** corresponding table entry.
+*/
+SQLITE_PRIVATE int sqlite3ExprCoveredByIndex(
+ Expr *pExpr, /* The index to be tested */
+ int iCur, /* The cursor number for the corresponding table */
+ Index *pIdx /* The index that might be used for coverage */
+){
+ Walker w;
+ struct IdxCover xcov;
+ memset(&w, 0, sizeof(w));
+ xcov.iCur = iCur;
+ xcov.pIdx = pIdx;
+ w.xExprCallback = exprIdxCover;
+ w.u.pIdxCover = &xcov;
+ sqlite3WalkExpr(&w, pExpr);
+ return !w.eCode;
+}
+
+
+/*
+** An instance of the following structure is used by the tree walker
** to count references to table columns in the arguments of an
** aggregate function, in order to implement the
** sqlite3FunctionThisSrc() routine.
@@ -93872,6 +94448,7 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
Expr *pDflt; /* Default value for the new column */
sqlite3 *db; /* The database connection; */
Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */
+ int r1; /* Temporary registers */
db = pParse->db;
if( pParse->nErr || db->mallocFailed ) return;
@@ -93966,16 +94543,18 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
db->flags = savedDbFlags;
}
- /* If the default value of the new column is NULL, then the file
- ** format to 2. If the default value of the new column is not NULL,
- ** the file format be 3. Back when this feature was first added
- ** in 2006, we went to the trouble to upgrade the file format to the
- ** minimum support values. But 10-years on, we can assume that all
- ** extent versions of SQLite support file-format 4, so we always and
- ** unconditionally upgrade to 4.
+ /* Make sure the schema version is at least 3. But do not upgrade
+ ** from less than 3 to 4, as that will corrupt any preexisting DESC
+ ** index.
*/
- sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT,
- SQLITE_MAX_FILE_FORMAT);
+ r1 = sqlite3GetTempReg(pParse);
+ sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT);
+ sqlite3VdbeUsesBtree(v, iDb);
+ sqlite3VdbeAddOp2(v, OP_AddImm, r1, -2);
+ sqlite3VdbeAddOp2(v, OP_IfPos, r1, sqlite3VdbeCurrentAddr(v)+2);
+ VdbeCoverage(v);
+ sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, 3);
+ sqlite3ReleaseTempReg(pParse, r1);
/* Reload the schema of the modified table. */
reloadTableSchema(pParse, pTab, pTab->zName);
@@ -96620,7 +97199,7 @@ SQLITE_PRIVATE int sqlite3FixTriggerStep(
** Setting the auth function to NULL disables this hook. The default
** setting of the auth function is NULL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
+SQLITE_API int sqlite3_set_authorizer(
sqlite3 *db,
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pArg
@@ -96664,6 +97243,7 @@ SQLITE_PRIVATE int sqlite3AuthReadCol(
char *zDb = db->aDb[iDb].zName; /* Name of attached database */
int rc; /* Auth callback return code */
+ if( db->init.busy ) return SQLITE_OK;
rc = db->xAuth(db->pAuthArg, SQLITE_READ, zTab,zCol,zDb,pParse->zAuthContext
#ifdef SQLITE_USER_AUTHENTICATION
,db->auth.zAuthUser
@@ -97154,7 +97734,7 @@ SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const cha
*/
SQLITE_PRIVATE Table *sqlite3LocateTable(
Parse *pParse, /* context in which to report errors */
- int isView, /* True if looking for a VIEW rather than a TABLE */
+ u32 flags, /* LOCATE_VIEW or LOCATE_NOERR */
const char *zName, /* Name of the table we are looking for */
const char *zDbase /* Name of the database. Might be NULL */
){
@@ -97168,7 +97748,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
p = sqlite3FindTable(pParse->db, zName, zDbase);
if( p==0 ){
- const char *zMsg = isView ? "no such view" : "no such table";
+ const char *zMsg = flags & LOCATE_VIEW ? "no such view" : "no such table";
#ifndef SQLITE_OMIT_VIRTUALTABLE
if( sqlite3FindDbName(pParse->db, zDbase)<1 ){
/* If zName is the not the name of a table in the schema created using
@@ -97180,12 +97760,14 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
}
}
#endif
- if( zDbase ){
- sqlite3ErrorMsg(pParse, "%s: %s.%s", zMsg, zDbase, zName);
- }else{
- sqlite3ErrorMsg(pParse, "%s: %s", zMsg, zName);
+ if( (flags & LOCATE_NOERR)==0 ){
+ if( zDbase ){
+ sqlite3ErrorMsg(pParse, "%s: %s.%s", zMsg, zDbase, zName);
+ }else{
+ sqlite3ErrorMsg(pParse, "%s: %s", zMsg, zName);
+ }
+ pParse->checkSchema = 1;
}
- pParse->checkSchema = 1;
}
return p;
@@ -97202,7 +97784,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
*/
SQLITE_PRIVATE Table *sqlite3LocateTableItem(
Parse *pParse,
- int isView,
+ u32 flags,
struct SrcList_item *p
){
const char *zDb;
@@ -97213,7 +97795,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTableItem(
}else{
zDb = p->zDatabase;
}
- return sqlite3LocateTable(pParse, isView, p->zName, zDb);
+ return sqlite3LocateTable(pParse, flags, p->zName, zDb);
}
/*
@@ -97421,8 +98003,9 @@ static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){
/* Delete all indices associated with this table. */
for(pIndex = pTable->pIndex; pIndex; pIndex=pNext){
pNext = pIndex->pNext;
- assert( pIndex->pSchema==pTable->pSchema );
- if( !db || db->pnBytesFreed==0 ){
+ assert( pIndex->pSchema==pTable->pSchema
+ || (IsVirtual(pTable) && pIndex->idxType!=SQLITE_IDXTYPE_APPDEF) );
+ if( (db==0 || db->pnBytesFreed==0) && !IsVirtual(pTable) ){
char *zName = pIndex->zName;
TESTONLY ( Index *pOld = ) sqlite3HashInsert(
&pIndex->pSchema->idxHash, zName, 0
@@ -98104,7 +98687,7 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
Column *pCol = 0;
int iCol = -1, i;
int nTerm;
- if( pTab==0 || IN_DECLARE_VTAB ) goto primary_key_exit;
+ if( pTab==0 ) goto primary_key_exit;
if( pTab->tabFlags & TF_HasPrimaryKey ){
sqlite3ErrorMsg(pParse,
"table \"%s\" has more than one primary key", pTab->zName);
@@ -98150,12 +98733,8 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
"INTEGER PRIMARY KEY");
#endif
}else{
- Index *p;
- p = sqlite3CreateIndex(pParse, 0, 0, 0, pList, onError, 0,
- 0, sortOrder, 0);
- if( p ){
- p->idxType = SQLITE_IDXTYPE_PRIMARYKEY;
- }
+ sqlite3CreateIndex(pParse, 0, 0, 0, pList, onError, 0,
+ 0, sortOrder, 0, SQLITE_IDXTYPE_PRIMARYKEY);
pList = 0;
}
@@ -98472,21 +99051,23 @@ static int hasColumn(const i16 *aiCol, int nCol, int x){
** are appropriate for a WITHOUT ROWID table instead of a rowid table.
** Changes include:
**
-** (1) Convert the OP_CreateTable into an OP_CreateIndex. There is
+** (1) Set all columns of the PRIMARY KEY schema object to be NOT NULL.
+** (2) Convert the OP_CreateTable into an OP_CreateIndex. There is
** no rowid btree for a WITHOUT ROWID. Instead, the canonical
** data storage is a covering index btree.
-** (2) Bypass the creation of the sqlite_master table entry
+** (3) Bypass the creation of the sqlite_master table entry
** for the PRIMARY KEY as the primary key index is now
** identified by the sqlite_master table entry of the table itself.
-** (3) Set the Index.tnum of the PRIMARY KEY Index object in the
+** (4) Set the Index.tnum of the PRIMARY KEY Index object in the
** schema to the rootpage from the main table.
-** (4) Set all columns of the PRIMARY KEY schema object to be NOT NULL.
** (5) Add all table columns to the PRIMARY KEY Index object
** so that the PRIMARY KEY is a covering index. The surplus
** columns are part of KeyInfo.nXField and are not used for
** sorting or lookup or uniqueness checks.
** (6) Replace the rowid tail on all automatically generated UNIQUE
** indices with the PRIMARY KEY columns.
+**
+** For virtual tables, only (1) is performed.
*/
static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
Index *pIdx;
@@ -98496,6 +99077,20 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
sqlite3 *db = pParse->db;
Vdbe *v = pParse->pVdbe;
+ /* Mark every PRIMARY KEY column as NOT NULL (except for imposter tables)
+ */
+ if( !db->init.imposterTable ){
+ for(i=0; i<pTab->nCol; i++){
+ if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0 ){
+ pTab->aCol[i].notNull = OE_Abort;
+ }
+ }
+ }
+
+ /* The remaining transformations only apply to b-tree tables, not to
+ ** virtual tables */
+ if( IN_DECLARE_VTAB ) return;
+
/* Convert the OP_CreateTable opcode that would normally create the
** root-page for the table into an OP_CreateIndex opcode. The index
** created will become the PRIMARY KEY index.
@@ -98517,9 +99112,10 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
if( pList==0 ) return;
pList->a[0].sortOrder = pParse->iPkSortOrder;
assert( pParse->pNewTable==pTab );
- pPk = sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0);
- if( pPk==0 ) return;
- pPk->idxType = SQLITE_IDXTYPE_PRIMARYKEY;
+ sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0,
+ SQLITE_IDXTYPE_PRIMARYKEY);
+ if( db->mallocFailed ) return;
+ pPk = sqlite3PrimaryKeyIndex(pTab);
pTab->iPKey = -1;
}else{
pPk = sqlite3PrimaryKeyIndex(pTab);
@@ -98547,19 +99143,11 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
}
pPk->nKeyCol = j;
}
- pPk->isCovering = 1;
assert( pPk!=0 );
+ pPk->isCovering = 1;
+ if( !db->init.imposterTable ) pPk->uniqNotNull = 1;
nPk = pPk->nKeyCol;
- /* Make sure every column of the PRIMARY KEY is NOT NULL. (Except,
- ** do not enforce this for imposter tables.) */
- if( !db->init.imposterTable ){
- for(i=0; i<nPk; i++){
- pTab->aCol[pPk->aiColumn[i]].notNull = OE_Abort;
- }
- pPk->uniqNotNull = 1;
- }
-
/* The root page of the PRIMARY KEY is the table root page */
pPk->tnum = pTab->tnum;
@@ -99314,6 +99902,7 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
assert( pName->nSrc==1 );
if( sqlite3ReadSchema(pParse) ) goto exit_drop_table;
if( noErr ) db->suppressErr++;
+ assert( isView==0 || isView==LOCATE_VIEW );
pTab = sqlite3LocateTableItem(pParse, isView, &pName->a[0]);
if( noErr ) db->suppressErr--;
@@ -99684,12 +100273,8 @@ SQLITE_PRIVATE Index *sqlite3AllocateIndexObject(
** pList is a list of columns to be indexed. pList will be NULL if this
** is a primary key or unique-constraint on the most recent column added
** to the table currently under construction.
-**
-** If the index is created successfully, return a pointer to the new Index
-** structure. This is used by sqlite3AddPrimaryKey() to mark the index
-** as the tables primary key (Index.idxType==SQLITE_IDXTYPE_PRIMARYKEY)
*/
-SQLITE_PRIVATE Index *sqlite3CreateIndex(
+SQLITE_PRIVATE void sqlite3CreateIndex(
Parse *pParse, /* All information about this parse */
Token *pName1, /* First part of index name. May be NULL */
Token *pName2, /* Second part of index name. May be NULL */
@@ -99699,9 +100284,9 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
Token *pStart, /* The CREATE token that begins this statement */
Expr *pPIWhere, /* WHERE clause for partial indices */
int sortOrder, /* Sort order of primary key when pList==NULL */
- int ifNotExist /* Omit error if index already exists */
+ int ifNotExist, /* Omit error if index already exists */
+ u8 idxType /* The index type */
){
- Index *pRet = 0; /* Pointer to return */
Table *pTab = 0; /* Table to be indexed */
Index *pIndex = 0; /* The index to be created */
char *zName = 0; /* Name of the index */
@@ -99719,7 +100304,10 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
char *zExtra = 0; /* Extra space after the Index object */
Index *pPk = 0; /* PRIMARY KEY index for WITHOUT ROWID tables */
- if( db->mallocFailed || IN_DECLARE_VTAB || pParse->nErr>0 ){
+ if( db->mallocFailed || pParse->nErr>0 ){
+ goto exit_create_index;
+ }
+ if( IN_DECLARE_VTAB && idxType!=SQLITE_IDXTYPE_PRIMARYKEY ){
goto exit_create_index;
}
if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
@@ -99845,6 +100433,13 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
if( zName==0 ){
goto exit_create_index;
}
+
+ /* Automatic index names generated from within sqlite3_declare_vtab()
+ ** must have names that are distinct from normal automatic index names.
+ ** The following statement converts "sqlite3_autoindex..." into
+ ** "sqlite3_butoindex..." in order to make the names distinct.
+ ** The "vtab_err.test" test demonstrates the need of this statement. */
+ if( IN_DECLARE_VTAB ) zName[7]++;
}
/* Check for authorization to create an index.
@@ -99908,7 +100503,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
pIndex->pTable = pTab;
pIndex->onError = (u8)onError;
pIndex->uniqNotNull = onError!=OE_None;
- pIndex->idxType = pName ? SQLITE_IDXTYPE_APPDEF : SQLITE_IDXTYPE_UNIQUE;
+ pIndex->idxType = idxType;
pIndex->pSchema = db->aDb[iDb].pSchema;
pIndex->nKeyCol = pList->nExpr;
if( pPIWhere ){
@@ -100088,7 +100683,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
pIdx->onError = pIndex->onError;
}
}
- pRet = pIdx;
+ if( idxType==SQLITE_IDXTYPE_PRIMARYKEY ) pIdx->idxType = idxType;
goto exit_create_index;
}
}
@@ -100100,6 +100695,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
assert( pParse->nErr==0 );
if( db->init.busy ){
Index *p;
+ assert( !IN_DECLARE_VTAB );
assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
pIndex->zName, pIndex);
@@ -100181,7 +100777,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
sqlite3ChangeCookie(pParse, iDb);
sqlite3VdbeAddParseSchemaOp(v, iDb,
sqlite3MPrintf(db, "name='%q' AND type='index'", pIndex->zName));
- sqlite3VdbeAddOp1(v, OP_Expire, 0);
+ sqlite3VdbeAddOp0(v, OP_Expire);
}
sqlite3VdbeJumpHere(v, pIndex->tnum);
@@ -100206,7 +100802,6 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
pIndex->pNext = pOther->pNext;
pOther->pNext = pIndex;
}
- pRet = pIndex;
pIndex = 0;
}
@@ -100217,7 +100812,6 @@ exit_create_index:
sqlite3ExprListDelete(db, pList);
sqlite3SrcListDelete(db, pTblName);
sqlite3DbFree(db, zName);
- return pRet;
}
/*
@@ -100246,10 +100840,11 @@ SQLITE_PRIVATE void sqlite3DefaultRowEst(Index *pIdx){
int i;
/* Set the first entry (number of rows in the index) to the estimated
- ** number of rows in the table. Or 10, if the estimated number of rows
- ** in the table is less than that. */
+ ** number of rows in the table, or half the number of rows in the table
+ ** for a partial index. But do not let the estimate drop below 10. */
a[0] = pIdx->pTable->nRowLogEst;
- if( a[0]<33 ) a[0] = 33; assert( 33==sqlite3LogEst(10) );
+ if( pIdx->pPartIdxWhere!=0 ) a[0] -= 10; assert( 10==sqlite3LogEst(2) );
+ if( a[0]<33 ) a[0] = 33; assert( 33==sqlite3LogEst(10) );
/* Estimate that a[1] is 10, a[2] is 9, a[3] is 8, a[4] is 7, a[5] is
** 6 and each subsequent value (if any) is 5. */
@@ -101131,10 +101726,6 @@ SQLITE_PRIVATE void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){
/*
** Return a KeyInfo structure that is appropriate for the given Index.
**
-** The KeyInfo structure for an index is cached in the Index object.
-** So there might be multiple references to the returned pointer. The
-** caller should not try to modify the KeyInfo object.
-**
** The caller should invoke sqlite3KeyInfoUnref() on the returned object
** when it has finished using it.
*/
@@ -103366,7 +103957,7 @@ static int patternCompare(
}
c2 = Utf8Read(zString);
if( c==c2 ) continue;
- if( noCase && c<0x80 && c2<0x80 && sqlite3Tolower(c)==sqlite3Tolower(c2) ){
+ if( noCase && sqlite3Tolower(c)==sqlite3Tolower(c2) && c<0x80 && c2<0x80 ){
continue;
}
if( c==matchOne && zPattern!=zEscaped && c2!=0 ) continue;
@@ -103378,14 +103969,14 @@ static int patternCompare(
/*
** The sqlite3_strglob() interface.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlobPattern, const char *zString){
+SQLITE_API int sqlite3_strglob(const char *zGlobPattern, const char *zString){
return patternCompare((u8*)zGlobPattern, (u8*)zString, &globInfo, '[')==0;
}
/*
** The sqlite3_strlike() interface.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc){
+SQLITE_API int sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc){
return patternCompare((u8*)zPattern, (u8*)zStr, &likeInfoNorm, esc)==0;
}
@@ -103942,6 +104533,26 @@ static void trimFunc(
}
+#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+/*
+** The "unknown" function is automatically substituted in place of
+** any unrecognized function name when doing an EXPLAIN or EXPLAIN QUERY PLAN
+** when the SQLITE_ENABLE_UNKNOWN_FUNCTION compile-time option is used.
+** When the "sqlite3" command-line shell is built using this functionality,
+** that allows an EXPLAIN or EXPLAIN QUERY PLAN for complex queries
+** involving application-defined functions to be examined in a generic
+** sqlite3 shell.
+*/
+static void unknownFunc(
+ sqlite3_context *context,
+ int argc,
+ sqlite3_value **argv
+){
+ /* no-op */
+}
+#endif /*SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION*/
+
+
/* IMP: R-25361-16150 This function is omitted from SQLite by default. It
** is only available if the SQLITE_SOUNDEX compile-time option is used
** when SQLite is built.
@@ -104412,13 +105023,16 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, groupConcatFinalize),
LIKEFUNC(glob, 2, &globInfo, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE),
- #ifdef SQLITE_CASE_SENSITIVE_LIKE
+#ifdef SQLITE_CASE_SENSITIVE_LIKE
LIKEFUNC(like, 2, &likeInfoAlt, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE),
LIKEFUNC(like, 3, &likeInfoAlt, SQLITE_FUNC_LIKE|SQLITE_FUNC_CASE),
- #else
+#else
LIKEFUNC(like, 2, &likeInfoNorm, SQLITE_FUNC_LIKE),
LIKEFUNC(like, 3, &likeInfoNorm, SQLITE_FUNC_LIKE),
- #endif
+#endif
+#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+ FUNCTION(unknown, -1, 0, 0, unknownFunc ),
+#endif
FUNCTION(coalesce, 1, 0, 0, 0 ),
FUNCTION(coalesce, 0, 0, 0, 0 ),
FUNCTION2(coalesce, -1, 0, 0, noopFunc, SQLITE_FUNC_COALESCE),
@@ -105825,7 +106439,8 @@ SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
FKey *pFKey; /* Iterator variable */
FKey *pNext; /* Copy of pFKey->pNextFrom */
- assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
+ assert( db==0 || IsVirtual(pTab)
+ || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
/* Remove the FK from the fkeyHash hash table. */
@@ -107640,15 +108255,15 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
int iIdxCur = iBase++;
assert( pIdx->pSchema==pTab->pSchema );
+ if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
+ if( piDataCur ) *piDataCur = iIdxCur;
+ p5 = 0;
+ }
if( aToOpen==0 || aToOpen[i+1] ){
sqlite3VdbeAddOp3(v, op, iIdxCur, pIdx->tnum, iDb);
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
- VdbeComment((v, "%s", pIdx->zName));
- }
- if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
- if( piDataCur ) *piDataCur = iIdxCur;
- }else{
sqlite3VdbeChangeP5(v, p5);
+ VdbeComment((v, "%s", pIdx->zName));
}
}
if( iBase>pParse->nTab ) pParse->nTab = iBase;
@@ -108080,7 +108695,7 @@ static int xferOptimization(
** argument to xCallback(). If xCallback=NULL then no callback
** is invoked, even for queries.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_exec(
+SQLITE_API int sqlite3_exec(
sqlite3 *db, /* The database on which the SQL executes */
const char *zSql, /* The SQL to be executed */
sqlite3_callback xCallback, /* Invoke this callback routine */
@@ -108235,12 +108850,10 @@ exec_out:
** as extensions by SQLite should #include this file instead of
** sqlite3.h.
*/
-#ifndef _SQLITE3EXT_H_
-#define _SQLITE3EXT_H_
+#ifndef SQLITE3EXT_H
+#define SQLITE3EXT_H
/* #include "sqlite3.h" */
-typedef struct sqlite3_api_routines sqlite3_api_routines;
-
/*
** The following structure holds pointers to all of the SQLite API
** routines.
@@ -108501,9 +109114,22 @@ struct sqlite3_api_routines {
int (*db_cacheflush)(sqlite3*);
/* Version 3.12.0 and later */
int (*system_errno)(sqlite3*);
+ /* Version 3.14.0 and later */
+ int (*trace_v2)(sqlite3*,unsigned,int(*)(unsigned,void*,void*,void*),void*);
+ char *(*expanded_sql)(sqlite3_stmt*);
};
/*
+** This is the function signature used for all extension entry points. It
+** is also defined in the file "loadext.c".
+*/
+typedef int (*sqlite3_loadext_entry)(
+ sqlite3 *db, /* Handle to the database. */
+ char **pzErrMsg, /* Used to set error string on failure. */
+ const sqlite3_api_routines *pThunk /* Extension API function pointers. */
+);
+
+/*
** The following macros redefine the API routines so that they are
** redirected through the global sqlite3_api structure.
**
@@ -108746,6 +109372,9 @@ struct sqlite3_api_routines {
#define sqlite3_db_cacheflush sqlite3_api->db_cacheflush
/* Version 3.12.0 and later */
#define sqlite3_system_errno sqlite3_api->system_errno
+/* Version 3.14.0 and later */
+#define sqlite3_trace_v2 sqlite3_api->trace_v2
+#define sqlite3_expanded_sql sqlite3_api->expanded_sql
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
@@ -108763,7 +109392,7 @@ struct sqlite3_api_routines {
# define SQLITE_EXTENSION_INIT3 /*no-op*/
#endif
-#endif /* _SQLITE3EXT_H_ */
+#endif /* SQLITE3EXT_H */
/************** End of sqlite3ext.h ******************************************/
/************** Continuing where we left off in loadext.c ********************/
@@ -108771,7 +109400,6 @@ struct sqlite3_api_routines {
/* #include <string.h> */
#ifndef SQLITE_OMIT_LOAD_EXTENSION
-
/*
** Some API routines are omitted when various features are
** excluded from a build of SQLite. Substitute a NULL pointer
@@ -108841,7 +109469,7 @@ struct sqlite3_api_routines {
# define sqlite3_enable_shared_cache 0
#endif
-#ifdef SQLITE_OMIT_TRACE
+#if defined(SQLITE_OMIT_TRACE) || defined(SQLITE_OMIT_DEPRECATED)
# define sqlite3_profile 0
# define sqlite3_trace 0
#endif
@@ -108861,6 +109489,10 @@ struct sqlite3_api_routines {
#define sqlite3_blob_reopen 0
#endif
+#if defined(SQLITE_OMIT_TRACE)
+# define sqlite3_trace_v2 0
+#endif
+
/*
** The following structure contains pointers to all SQLite API routines.
** A pointer to this structure is passed into extensions when they are
@@ -109166,7 +109798,10 @@ static const sqlite3_api_routines sqlite3Apis = {
sqlite3_strlike,
sqlite3_db_cacheflush,
/* Version 3.12.0 and later */
- sqlite3_system_errno
+ sqlite3_system_errno,
+ /* Version 3.14.0 and later */
+ sqlite3_trace_v2,
+ sqlite3_expanded_sql
};
/*
@@ -109189,13 +109824,14 @@ static int sqlite3LoadExtension(
){
sqlite3_vfs *pVfs = db->pVfs;
void *handle;
- int (*xInit)(sqlite3*,char**,const sqlite3_api_routines*);
+ sqlite3_loadext_entry xInit;
char *zErrmsg = 0;
const char *zEntry;
char *zAltEntry = 0;
void **aHandle;
u64 nMsg = 300 + sqlite3Strlen30(zFile);
int ii;
+ int rc;
/* Shared library endings to try if zFile cannot be loaded as written */
static const char *azEndings[] = {
@@ -109247,8 +109883,7 @@ static int sqlite3LoadExtension(
}
return SQLITE_ERROR;
}
- xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*))
- sqlite3OsDlSym(pVfs, handle, zEntry);
+ xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
/* If no entry point was specified and the default legacy
** entry point name "sqlite3_extension_init" was not found, then
@@ -109280,8 +109915,7 @@ static int sqlite3LoadExtension(
}
memcpy(zAltEntry+iEntry, "_init", 6);
zEntry = zAltEntry;
- xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*))
- sqlite3OsDlSym(pVfs, handle, zEntry);
+ xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry);
}
if( xInit==0 ){
if( pzErrMsg ){
@@ -109298,7 +109932,9 @@ static int sqlite3LoadExtension(
return SQLITE_ERROR;
}
sqlite3_free(zAltEntry);
- if( xInit(db, &zErrmsg, &sqlite3Apis) ){
+ rc = xInit(db, &zErrmsg, &sqlite3Apis);
+ if( rc ){
+ if( rc==SQLITE_OK_LOAD_PERMANENTLY ) return SQLITE_OK;
if( pzErrMsg ){
*pzErrMsg = sqlite3_mprintf("error during initialization: %s", zErrmsg);
}
@@ -109321,7 +109957,7 @@ static int sqlite3LoadExtension(
db->aExtension[db->nExtension++] = handle;
return SQLITE_OK;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
+SQLITE_API int sqlite3_load_extension(
sqlite3 *db, /* Load the extension into this database connection */
const char *zFile, /* Name of the shared library containing extension */
const char *zProc, /* Entry point. Use "sqlite3_extension_init" if 0 */
@@ -109352,7 +109988,7 @@ SQLITE_PRIVATE void sqlite3CloseExtensions(sqlite3 *db){
** Enable or disable extension loading. Extension loading is disabled by
** default so as not to open security holes in older applications.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int onoff){
+SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff){
sqlite3_mutex_enter(db->mutex);
if( onoff ){
db->flags |= SQLITE_LoadExtension|SQLITE_LoadExtFunc;
@@ -109409,7 +110045,9 @@ static SQLITE_WSD struct sqlite3AutoExtList {
** Register a statically linked extension that is automatically
** loaded by every new database connection.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xInit)(void)){
+SQLITE_API int sqlite3_auto_extension(
+ void (*xInit)(void)
+){
int rc = SQLITE_OK;
#ifndef SQLITE_OMIT_AUTOINIT
rc = sqlite3_initialize();
@@ -109454,7 +110092,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xInit)(void)){
** Return 1 if xInit was found on the list and removed. Return 0 if xInit
** was not on the list.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xInit)(void)){
+SQLITE_API int sqlite3_cancel_auto_extension(
+ void (*xInit)(void)
+){
#if SQLITE_THREADSAFE
sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);
#endif
@@ -109477,7 +110117,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xInit)(void))
/*
** Reset the automatic extension loading mechanism.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_reset_auto_extension(void){
+SQLITE_API void sqlite3_reset_auto_extension(void){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize()==SQLITE_OK )
#endif
@@ -109503,7 +110143,7 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
u32 i;
int go = 1;
int rc;
- int (*xInit)(sqlite3*,char**,const sqlite3_api_routines*);
+ sqlite3_loadext_entry xInit;
wsdAutoextInit;
if( wsdAutoext.nExt==0 ){
@@ -109520,8 +110160,7 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
xInit = 0;
go = 0;
}else{
- xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*))
- wsdAutoext.aExt[i];
+ xInit = (sqlite3_loadext_entry)wsdAutoext.aExt[i];
}
sqlite3_mutex_leave(mutex);
zErrmsg = 0;
@@ -111036,7 +111675,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
** compiler (eg. count_changes). So add an opcode to expire all
** compiled SQL statements after modifying a pragma value.
*/
- sqlite3VdbeAddOp2(v, OP_Expire, 0, 0);
+ sqlite3VdbeAddOp0(v, OP_Expire);
setAllPagerFlags(db);
}
break;
@@ -111058,7 +111697,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
*/
case PragTyp_TABLE_INFO: if( zRight ){
Table *pTab;
- pTab = sqlite3FindTable(db, zRight, zDb);
+ pTab = sqlite3LocateTable(pParse, LOCATE_NOERR, zRight, zDb);
if( pTab ){
static const char *azCol[] = {
"cid", "name", "type", "notnull", "dflt_value", "pk"
@@ -111340,12 +111979,10 @@ SQLITE_PRIVATE void sqlite3Pragma(
sqlite3VdbeAddOp3(v, OP_Column, 0, iKey, regRow);
sqlite3ColumnDefault(v, pTab, iKey, regRow);
sqlite3VdbeAddOp2(v, OP_IsNull, regRow, addrOk); VdbeCoverage(v);
- sqlite3VdbeAddOp2(v, OP_MustBeInt, regRow,
- sqlite3VdbeCurrentAddr(v)+3); VdbeCoverage(v);
}else{
sqlite3VdbeAddOp2(v, OP_Rowid, 0, regRow);
}
- sqlite3VdbeAddOp3(v, OP_NotExists, i, 0, regRow); VdbeCoverage(v);
+ sqlite3VdbeAddOp3(v, OP_SeekRowid, i, 0, regRow); VdbeCoverage(v);
sqlite3VdbeGoto(v, addrOk);
sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2);
}else{
@@ -112741,7 +113378,7 @@ SQLITE_PRIVATE int sqlite3Reprepare(Vdbe *p){
** and the statement is automatically recompiled if an schema change
** occurs.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare(
+SQLITE_API int sqlite3_prepare(
sqlite3 *db, /* Database handle. */
const char *zSql, /* UTF-8 encoded SQL statement. */
int nBytes, /* Length of zSql in bytes. */
@@ -112753,7 +113390,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_prepare(
assert( rc==SQLITE_OK || ppStmt==0 || *ppStmt==0 ); /* VERIFY: F13021 */
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare_v2(
+SQLITE_API int sqlite3_prepare_v2(
sqlite3 *db, /* Database handle. */
const char *zSql, /* UTF-8 encoded SQL statement. */
int nBytes, /* Length of zSql in bytes. */
@@ -112829,7 +113466,7 @@ static int sqlite3Prepare16(
** and the statement is automatically recompiled if an schema change
** occurs.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16(
+SQLITE_API int sqlite3_prepare16(
sqlite3 *db, /* Database handle. */
const void *zSql, /* UTF-16 encoded SQL statement. */
int nBytes, /* Length of zSql in bytes. */
@@ -112841,7 +113478,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_prepare16(
assert( rc==SQLITE_OK || ppStmt==0 || *ppStmt==0 ); /* VERIFY: F13021 */
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16_v2(
+SQLITE_API int sqlite3_prepare16_v2(
sqlite3 *db, /* Database handle. */
const void *zSql, /* UTF-16 encoded SQL statement. */
int nBytes, /* Length of zSql in bytes. */
@@ -112916,6 +113553,7 @@ struct SortCtx {
int addrSortIndex; /* Address of the OP_SorterOpen or OP_OpenEphemeral */
int labelDone; /* Jump here when done, ex: LIMIT reached */
u8 sortFlags; /* Zero or more SORTFLAG_* bits */
+ u8 bOrderedInnerLoop; /* ORDER BY correctly sorts the inner loop */
};
#define SORTFLAG_UseSorter 0x01 /* Use SorterOpen instead of OpenEphemeral */
@@ -113449,9 +114087,30 @@ static void pushOntoSorter(
sqlite3VdbeAddOp2(v, op, pSort->iECursor, regRecord);
if( iLimit ){
int addr;
+ int r1 = 0;
+ /* Fill the sorter until it contains LIMIT+OFFSET entries. (The iLimit
+ ** register is initialized with value of LIMIT+OFFSET.) After the sorter
+ ** fills up, delete the least entry in the sorter after each insert.
+ ** Thus we never hold more than the LIMIT+OFFSET rows in memory at once */
addr = sqlite3VdbeAddOp3(v, OP_IfNotZero, iLimit, 0, 1); VdbeCoverage(v);
sqlite3VdbeAddOp1(v, OP_Last, pSort->iECursor);
+ if( pSort->bOrderedInnerLoop ){
+ r1 = ++pParse->nMem;
+ sqlite3VdbeAddOp3(v, OP_Column, pSort->iECursor, nExpr, r1);
+ VdbeComment((v, "seq"));
+ }
sqlite3VdbeAddOp1(v, OP_Delete, pSort->iECursor);
+ if( pSort->bOrderedInnerLoop ){
+ /* If the inner loop is driven by an index such that values from
+ ** the same iteration of the inner loop are in sorted order, then
+ ** immediately jump to the next iteration of an inner loop if the
+ ** entry from the current iteration does not fit into the top
+ ** LIMIT+OFFSET entries of the sorter. */
+ int iBrk = sqlite3VdbeCurrentAddr(v) + 2;
+ sqlite3VdbeAddOp3(v, OP_Eq, regBase+nExpr, iBrk, r1);
+ sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
+ VdbeCoverage(v);
+ }
sqlite3VdbeJumpHere(v, addr);
}
}
@@ -113866,7 +114525,7 @@ static void selectInnerLoop(
*/
SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoAlloc(sqlite3 *db, int N, int X){
int nExtra = (N+X)*(sizeof(CollSeq*)+1);
- KeyInfo *p = sqlite3Malloc(sizeof(KeyInfo) + nExtra);
+ KeyInfo *p = sqlite3DbMallocRaw(db, sizeof(KeyInfo) + nExtra);
if( p ){
p->aSortOrder = (u8*)&p->aColl[N+X];
p->nField = (u16)N;
@@ -113888,7 +114547,7 @@ SQLITE_PRIVATE void sqlite3KeyInfoUnref(KeyInfo *p){
if( p ){
assert( p->nRef>0 );
p->nRef--;
- if( p->nRef==0 ) sqlite3DbFree(0, p);
+ if( p->nRef==0 ) sqlite3DbFree(p->db, p);
}
}
@@ -118036,6 +118695,7 @@ SQLITE_PRIVATE int sqlite3Select(
}
if( sSort.pOrderBy ){
sSort.nOBSat = sqlite3WhereIsOrdered(pWInfo);
+ sSort.bOrderedInnerLoop = sqlite3WhereOrderedInnerLoop(pWInfo);
if( sSort.nOBSat==sSort.pOrderBy->nExpr ){
sSort.pOrderBy = 0;
}
@@ -118661,7 +119321,7 @@ malloc_failed:
** Instead, the entire table should be passed to sqlite3_free_table() when
** the calling procedure is finished using it.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
+SQLITE_API int sqlite3_get_table(
sqlite3 *db, /* The database on which the SQL executes */
const char *zSql, /* The SQL to be executed */
char ***pazResult, /* Write the result table here */
@@ -118730,7 +119390,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
/*
** This routine frees the space the sqlite3_get_table() malloced.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_free_table(
+SQLITE_API void sqlite3_free_table(
char **azResult /* Result returned from sqlite3_get_table() */
){
if( azResult ){
@@ -120805,7 +121465,7 @@ SQLITE_PRIVATE int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
int saved_flags; /* Saved value of the db->flags */
int saved_nChange; /* Saved value of db->nChange */
int saved_nTotalChange; /* Saved value of db->nTotalChange */
- void (*saved_xTrace)(void*,const char*); /* Saved db->xTrace */
+ u8 saved_mTrace; /* Saved trace settings */
Db *pDb = 0; /* Database to detach at end of vacuum */
int isMemDb; /* True if vacuuming a :memory: database */
int nRes; /* Bytes of reserved space at the end of each page */
@@ -120826,10 +121486,10 @@ SQLITE_PRIVATE int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
saved_flags = db->flags;
saved_nChange = db->nChange;
saved_nTotalChange = db->nTotalChange;
- saved_xTrace = db->xTrace;
+ saved_mTrace = db->mTrace;
db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks | SQLITE_PreferBuiltin;
db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder);
- db->xTrace = 0;
+ db->mTrace = 0;
pMain = db->aDb[0].pBt;
isMemDb = sqlite3PagerIsMemdb(sqlite3BtreePager(pMain));
@@ -120881,6 +121541,8 @@ SQLITE_PRIVATE int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
}
#endif
+ sqlite3BtreeSetCacheSize(pTemp, db->aDb[0].pSchema->cache_size);
+ sqlite3BtreeSetSpillSize(pTemp, sqlite3BtreeSetSpillSize(pMain,0));
rc = execSql(db, pzErrMsg, "PRAGMA vacuum_db.synchronous=OFF");
if( rc!=SQLITE_OK ) goto end_of_vacuum;
@@ -121029,7 +121691,7 @@ end_of_vacuum:
db->flags = saved_flags;
db->nChange = saved_nChange;
db->nTotalChange = saved_nTotalChange;
- db->xTrace = saved_xTrace;
+ db->mTrace = saved_mTrace;
sqlite3BtreeSetPageSize(pMain, -1, -1, 1);
/* Currently there is an SQL level transaction open on the vacuum
@@ -121138,7 +121800,7 @@ static int createModule(
/*
** External API function used to create a new virtual-table module.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module(
+SQLITE_API int sqlite3_create_module(
sqlite3 *db, /* Database in which module is registered */
const char *zName, /* Name assigned to this module */
const sqlite3_module *pModule, /* The definition of the module */
@@ -121153,7 +121815,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_module(
/*
** External API function used to create a new virtual-table module.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module_v2(
+SQLITE_API int sqlite3_create_module_v2(
sqlite3 *db, /* Database in which module is registered */
const char *zName, /* Name assigned to this module */
const sqlite3_module *pModule, /* The definition of the module */
@@ -121478,7 +122140,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
v = sqlite3GetVdbe(pParse);
sqlite3ChangeCookie(pParse, iDb);
- sqlite3VdbeAddOp2(v, OP_Expire, 0, 0);
+ sqlite3VdbeAddOp0(v, OP_Expire);
zWhere = sqlite3MPrintf(db, "name='%q' AND type='table'", pTab->zName);
sqlite3VdbeAddParseSchemaOp(v, iDb, zWhere);
@@ -121777,7 +122439,7 @@ SQLITE_PRIVATE int sqlite3VtabCallCreate(sqlite3 *db, int iDb, const char *zTab,
** valid to call this function from within the xCreate() or xConnect() of a
** virtual table module.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
+SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
VtabCtx *pCtx;
Parse *pParse;
int rc = SQLITE_OK;
@@ -121814,10 +122476,24 @@ SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3 *db, const char *zCre
&& (pParse->pNewTable->tabFlags & TF_Virtual)==0
){
if( !pTab->aCol ){
- pTab->aCol = pParse->pNewTable->aCol;
- pTab->nCol = pParse->pNewTable->nCol;
- pParse->pNewTable->nCol = 0;
- pParse->pNewTable->aCol = 0;
+ Table *pNew = pParse->pNewTable;
+ Index *pIdx;
+ pTab->aCol = pNew->aCol;
+ pTab->nCol = pNew->nCol;
+ pTab->tabFlags |= pNew->tabFlags & (TF_WithoutRowid|TF_NoVisibleRowid);
+ pNew->nCol = 0;
+ pNew->aCol = 0;
+ assert( pTab->pIndex==0 );
+ if( !HasRowid(pNew) && pCtx->pVTable->pMod->pModule->xUpdate!=0 ){
+ rc = SQLITE_ERROR;
+ }
+ pIdx = pNew->pIndex;
+ if( pIdx ){
+ assert( pIdx->pNext==0 );
+ pTab->pIndex = pIdx;
+ pNew->pIndex = 0;
+ pIdx->pTable = pTab;
+ }
}
pCtx->bDeclared = 1;
}else{
@@ -121853,7 +122529,7 @@ SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab
Table *pTab;
pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zName);
- if( ALWAYS(pTab!=0 && pTab->pVTable!=0) ){
+ if( pTab!=0 && ALWAYS(pTab->pVTable!=0) ){
VTable *p;
int (*xDestroy)(sqlite3_vtab *);
for(p=pTab->pVTable; p; p=p->pNext){
@@ -121993,7 +122669,10 @@ SQLITE_PRIVATE int sqlite3VtabBegin(sqlite3 *db, VTable *pVTab){
if( rc==SQLITE_OK ){
int iSvpt = db->nStatement + db->nSavepoint;
addToVTrans(db, pVTab);
- if( iSvpt ) rc = sqlite3VtabSavepoint(db, SAVEPOINT_BEGIN, iSvpt-1);
+ if( iSvpt && pModule->xSavepoint ){
+ pVTab->iSavepoint = iSvpt;
+ rc = pModule->xSavepoint(pVTab->pVtab, iSvpt-1);
+ }
}
}
}
@@ -122147,7 +122826,7 @@ SQLITE_PRIVATE void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
}
/*
-** Check to see if virtual tale module pMod can be have an eponymous
+** Check to see if virtual table module pMod can be have an eponymous
** virtual table instance. If it can, create one if one does not already
** exist. Return non-zero if the eponymous virtual table instance exists
** when this routine returns, and return zero if it does not exist.
@@ -122164,17 +122843,18 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
const sqlite3_module *pModule = pMod->pModule;
Table *pTab;
char *zErr = 0;
- int nName;
int rc;
sqlite3 *db = pParse->db;
if( pMod->pEpoTab ) return 1;
if( pModule->xCreate!=0 && pModule->xCreate!=pModule->xConnect ) return 0;
- nName = sqlite3Strlen30(pMod->zName) + 1;
- pTab = sqlite3DbMallocZero(db, sizeof(Table) + nName);
+ pTab = sqlite3DbMallocZero(db, sizeof(Table));
if( pTab==0 ) return 0;
+ pTab->zName = sqlite3DbStrDup(db, pMod->zName);
+ if( pTab->zName==0 ){
+ sqlite3DbFree(db, pTab);
+ return 0;
+ }
pMod->pEpoTab = pTab;
- pTab->zName = (char*)&pTab[1];
- memcpy(pTab->zName, pMod->zName, nName);
pTab->nRef = 1;
pTab->pSchema = db->aDb[0].pSchema;
pTab->tabFlags |= TF_Virtual;
@@ -122200,9 +122880,11 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
SQLITE_PRIVATE void sqlite3VtabEponymousTableClear(sqlite3 *db, Module *pMod){
Table *pTab = pMod->pEpoTab;
if( pTab!=0 ){
- sqlite3DeleteColumnNames(db, pTab);
- sqlite3VtabClear(db, pTab);
- sqlite3DbFree(db, pTab);
+ /* Mark the table as Ephemeral prior to deleting it, so that the
+ ** sqlite3DeleteTable() routine will know that it is not stored in
+ ** the schema. */
+ pTab->tabFlags |= TF_Ephemeral;
+ sqlite3DeleteTable(db, pTab);
pMod->pEpoTab = 0;
}
}
@@ -122214,7 +122896,7 @@ SQLITE_PRIVATE void sqlite3VtabEponymousTableClear(sqlite3 *db, Module *pMod){
** The results of this routine are undefined unless it is called from
** within an xUpdate method.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *db){
+SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *db){
static const unsigned char aMap[] = {
SQLITE_ROLLBACK, SQLITE_ABORT, SQLITE_FAIL, SQLITE_IGNORE, SQLITE_REPLACE
};
@@ -122232,7 +122914,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *db){
** the SQLite core with additional information about the behavior
** of the virtual table being implemented.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_vtab_config(sqlite3 *db, int op, ...){
+SQLITE_API int sqlite3_vtab_config(sqlite3 *db, int op, ...){
va_list ap;
int rc = SQLITE_OK;
@@ -122709,8 +123391,9 @@ struct WhereInfo {
u8 sorted; /* True if really sorted (not just grouped) */
u8 eOnePass; /* ONEPASS_OFF, or _SINGLE, or _MULTI */
u8 untestedTerms; /* Not all WHERE terms resolved by outer loop */
- u8 eDistinct; /* One of the WHERE_DISTINCT_* values below */
+ u8 eDistinct; /* One of the WHERE_DISTINCT_* values */
u8 nLevel; /* Number of nested loop */
+ u8 bOrderedInnerLoop; /* True if only the inner-most loop is ordered */
int iTop; /* The very beginning of the WHERE loop */
int iContinue; /* Jump here to continue with next record */
int iBreak; /* Jump here to break out of the loop */
@@ -122727,6 +123410,9 @@ struct WhereInfo {
** where.c:
*/
SQLITE_PRIVATE Bitmask sqlite3WhereGetMask(WhereMaskSet*,int);
+#ifdef WHERETRACE_ENABLED
+SQLITE_PRIVATE void sqlite3WhereClausePrint(WhereClause *pWC);
+#endif
SQLITE_PRIVATE WhereTerm *sqlite3WhereFindTerm(
WhereClause *pWC, /* The WHERE clause to be searched */
int iCur, /* Cursor number of LHS */
@@ -122943,7 +123629,7 @@ SQLITE_PRIVATE int sqlite3WhereExplainOneScan(
pLoop = pLevel->pWLoop;
flags = pLoop->wsFlags;
- if( (flags&WHERE_MULTI_OR) || (wctrlFlags&WHERE_ONETABLE_ONLY) ) return 0;
+ if( (flags&WHERE_MULTI_OR) || (wctrlFlags&WHERE_OR_SUBCLAUSE) ) return 0;
isSearch = (flags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))!=0
|| ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
@@ -123353,9 +124039,15 @@ static int codeAllEqualityTerms(
sqlite3VdbeAddOp2(v, OP_SCopy, r1, regBase+j);
}
}
- testcase( pTerm->eOperator & WO_ISNULL );
- testcase( pTerm->eOperator & WO_IN );
- if( (pTerm->eOperator & (WO_ISNULL|WO_IN))==0 ){
+ if( (pTerm->eOperator & WO_IN)!=0 ){
+ if( pTerm->pExpr->flags & EP_xIsSelect ){
+ /* No affinity ever needs to be (or should be) applied to a value
+ ** from the RHS of an "? IN (SELECT ...)" expression. The
+ ** sqlite3FindInIndex() routine has already ensured that the
+ ** affinity of the comparison has been applied to the value. */
+ if( zAff ) zAff[j] = SQLITE_AFF_BLOB;
+ }
+ }else if( (pTerm->eOperator & WO_ISNULL)==0 ){
Expr *pRight = pTerm->pExpr->pRight;
if( (pTerm->wtFlags & TERM_IS)==0 && sqlite3ExprCanBeNull(pRight) ){
sqlite3VdbeAddOp2(v, OP_IsNull, regBase+j, pLevel->addrBrk);
@@ -123386,7 +124078,7 @@ static int codeAllEqualityTerms(
** expression: "x>='ABC' AND x<'abd'". But this requires that the range
** scan loop run twice, once for strings and a second time for BLOBs.
** The OP_String opcodes on the second pass convert the upper and lower
-** bound string contants to blobs. This routine makes the necessary changes
+** bound string constants to blobs. This routine makes the necessary changes
** to the OP_String opcodes for that to happen.
**
** Except, of course, if SQLITE_LIKE_DOESNT_MATCH_BLOBS is defined, then
@@ -123443,6 +124135,38 @@ static int codeCursorHintCheckExpr(Walker *pWalker, Expr *pExpr){
return WRC_Continue;
}
+/*
+** Test whether or not expression pExpr, which was part of a WHERE clause,
+** should be included in the cursor-hint for a table that is on the rhs
+** of a LEFT JOIN. Set Walker.eCode to non-zero before returning if the
+** expression is not suitable.
+**
+** An expression is unsuitable if it might evaluate to non NULL even if
+** a TK_COLUMN node that does affect the value of the expression is set
+** to NULL. For example:
+**
+** col IS NULL
+** col IS NOT NULL
+** coalesce(col, 1)
+** CASE WHEN col THEN 0 ELSE 1 END
+*/
+static int codeCursorHintIsOrFunction(Walker *pWalker, Expr *pExpr){
+ if( pExpr->op==TK_IS
+ || pExpr->op==TK_ISNULL || pExpr->op==TK_ISNOT
+ || pExpr->op==TK_NOTNULL || pExpr->op==TK_CASE
+ ){
+ pWalker->eCode = 1;
+ }else if( pExpr->op==TK_FUNCTION ){
+ int d1;
+ char d2[3];
+ if( 0==sqlite3IsLikeFunction(pWalker->pParse->db, pExpr, &d1, d2) ){
+ pWalker->eCode = 1;
+ }
+ }
+
+ return WRC_Continue;
+}
+
/*
** This function is called on every node of an expression tree used as an
@@ -123495,6 +124219,7 @@ static int codeCursorHintFixExpr(Walker *pWalker, Expr *pExpr){
** Insert an OP_CursorHint instruction if it is appropriate to do so.
*/
static void codeCursorHint(
+ struct SrcList_item *pTabItem, /* FROM clause item */
WhereInfo *pWInfo, /* The where clause */
WhereLevel *pLevel, /* Which loop to provide hints for */
WhereTerm *pEndRange /* Hint this end-of-scan boundary term if not NULL */
@@ -123525,7 +124250,42 @@ static void codeCursorHint(
pTerm = &pWC->a[i];
if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
if( pTerm->prereqAll & pLevel->notReady ) continue;
- if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) continue;
+
+ /* Any terms specified as part of the ON(...) clause for any LEFT
+ ** JOIN for which the current table is not the rhs are omitted
+ ** from the cursor-hint.
+ **
+ ** If this table is the rhs of a LEFT JOIN, "IS" or "IS NULL" terms
+ ** that were specified as part of the WHERE clause must be excluded.
+ ** This is to address the following:
+ **
+ ** SELECT ... t1 LEFT JOIN t2 ON (t1.a=t2.b) WHERE t2.c IS NULL;
+ **
+ ** Say there is a single row in t2 that matches (t1.a=t2.b), but its
+ ** t2.c values is not NULL. If the (t2.c IS NULL) constraint is
+ ** pushed down to the cursor, this row is filtered out, causing
+ ** SQLite to synthesize a row of NULL values. Which does match the
+ ** WHERE clause, and so the query returns a row. Which is incorrect.
+ **
+ ** For the same reason, WHERE terms such as:
+ **
+ ** WHERE 1 = (t2.c IS NULL)
+ **
+ ** are also excluded. See codeCursorHintIsOrFunction() for details.
+ */
+ if( pTabItem->fg.jointype & JT_LEFT ){
+ Expr *pExpr = pTerm->pExpr;
+ if( !ExprHasProperty(pExpr, EP_FromJoin)
+ || pExpr->iRightJoinTable!=pTabItem->iCursor
+ ){
+ sWalker.eCode = 0;
+ sWalker.xExprCallback = codeCursorHintIsOrFunction;
+ sqlite3WalkExpr(&sWalker, pTerm->pExpr);
+ if( sWalker.eCode ) continue;
+ }
+ }else{
+ if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) continue;
+ }
/* All terms in pWLoop->aLTerm[] except pEndRange are used to initialize
** the cursor. These terms are not needed as hints for a pure range
@@ -123559,7 +124319,7 @@ static void codeCursorHint(
}
}
#else
-# define codeCursorHint(A,B,C) /* No-op */
+# define codeCursorHint(A,B,C,D) /* No-op */
#endif /* SQLITE_ENABLE_CURSOR_HINTS */
/*
@@ -123593,7 +124353,7 @@ static void codeDeferredSeek(
assert( pIdx->aiColumn[pIdx->nColumn-1]==-1 );
sqlite3VdbeAddOp3(v, OP_Seek, iIdxCur, 0, iCur);
- if( (pWInfo->wctrlFlags & WHERE_FORCE_TABLE)
+ if( (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)
&& DbMaskAllZero(sqlite3ParseToplevel(pParse)->writeMask)
){
int i;
@@ -123648,7 +124408,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
pLevel->notReady = notReady & ~sqlite3WhereGetMask(&pWInfo->sMaskSet, iCur);
bRev = (pWInfo->revMask>>iLevel)&1;
omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0
- && (pWInfo->wctrlFlags & WHERE_FORCE_TABLE)==0;
+ && (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)==0;
VdbeModuleComment((v, "Begin WHERE-loop%d: %s",iLevel,pTabItem->pTab->zName));
/* Create labels for the "break" and "continue" instructions
@@ -123788,8 +124548,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, 0, bRev, iReleaseReg);
if( iRowidReg!=iReleaseReg ) sqlite3ReleaseTempReg(pParse, iReleaseReg);
addrNxt = pLevel->addrNxt;
- sqlite3VdbeAddOp2(v, OP_MustBeInt, iRowidReg, addrNxt); VdbeCoverage(v);
- sqlite3VdbeAddOp3(v, OP_NotExists, iCur, addrNxt, iRowidReg);
+ sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
VdbeCoverage(v);
sqlite3ExprCacheAffinityChange(pParse, iRowidReg, 1);
sqlite3ExprCacheStore(pParse, iCur, -1, iRowidReg);
@@ -123816,7 +124575,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
pStart = pEnd;
pEnd = pTerm;
}
- codeCursorHint(pWInfo, pLevel, pEnd);
+ codeCursorHint(pTabItem, pWInfo, pLevel, pEnd);
if( pStart ){
Expr *pX; /* The expression that defines the start bound */
int r1, rTemp; /* Registers for holding the start boundary */
@@ -124030,7 +124789,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
** and store the values of those terms in an array of registers
** starting at regBase.
*/
- codeCursorHint(pWInfo, pLevel, pRangeEnd);
+ codeCursorHint(pTabItem, pWInfo, pLevel, pRangeEnd);
regBase = codeAllEqualityTerms(pParse,pLevel,bRev,nExtraReg,&zStartAff);
assert( zStartAff==0 || sqlite3Strlen30(zStartAff)>=nEq );
if( zStartAff ) cEndAff = zStartAff[nEq];
@@ -124069,6 +124828,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
}
nConstraint++;
testcase( pRangeStart->wtFlags & TERM_VIRTUAL );
+ bSeekPastNull = 0;
}else if( bSeekPastNull ){
sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
nConstraint++;
@@ -124334,11 +125094,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
** eliminating duplicates from other WHERE clauses, the action for each
** sub-WHERE clause is to to invoke the main loop body as a subroutine.
*/
- wctrlFlags = WHERE_OMIT_OPEN_CLOSE
- | WHERE_FORCE_TABLE
- | WHERE_ONETABLE_ONLY
- | WHERE_NO_AUTOINDEX
- | (pWInfo->wctrlFlags & WHERE_SEEK_TABLE);
+ wctrlFlags = WHERE_OR_SUBCLAUSE | (pWInfo->wctrlFlags & WHERE_SEEK_TABLE);
for(ii=0; ii<pOrWc->nTerm; ii++){
WhereTerm *pOrTerm = &pOrWc->a[ii];
if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){
@@ -124446,7 +125202,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
){
assert( pSubWInfo->a[0].iIdxCur==iCovCur );
pCov = pSubLoop->u.btree.pIndex;
- wctrlFlags |= WHERE_REOPEN_IDX;
}else{
pCov = 0;
}
@@ -124483,7 +125238,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
** a pseudo-cursor. No need to Rewind or Next such cursors. */
pLevel->op = OP_Noop;
}else{
- codeCursorHint(pWInfo, pLevel, 0);
+ codeCursorHint(pTabItem, pWInfo, pLevel, 0);
pLevel->op = aStep[bRev];
pLevel->p1 = iCur;
pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrBrk);
@@ -124508,7 +125263,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue;
if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
testcase( pWInfo->untestedTerms==0
- && (pWInfo->wctrlFlags & WHERE_ONETABLE_ONLY)!=0 );
+ && (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)!=0 );
pWInfo->untestedTerms = 1;
continue;
}
@@ -125170,7 +125925,9 @@ static void exprAnalyzeOrTerm(
if( !db->mallocFailed ){
for(j=0, pAndTerm=pAndWC->a; j<pAndWC->nTerm; j++, pAndTerm++){
assert( pAndTerm->pExpr );
- if( allowedOp(pAndTerm->pExpr->op) ){
+ if( allowedOp(pAndTerm->pExpr->op)
+ || pAndTerm->eOperator==WO_MATCH
+ ){
b |= sqlite3WhereGetMask(&pWInfo->sMaskSet, pAndTerm->leftCursor);
}
}
@@ -125385,12 +126142,10 @@ static int termIsEquivalence(Parse *pParse, Expr *pExpr){
pColl = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, pExpr->pRight);
if( pColl==0 || sqlite3StrICmp(pColl->zName, "BINARY")==0 ) return 1;
pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
- /* Since pLeft and pRight are both a column references, their collating
- ** sequence should always be defined. */
- zColl1 = ALWAYS(pColl) ? pColl->zName : 0;
+ zColl1 = pColl ? pColl->zName : 0;
pColl = sqlite3ExprCollSeq(pParse, pExpr->pRight);
- zColl2 = ALWAYS(pColl) ? pColl->zName : 0;
- return sqlite3StrICmp(zColl1, zColl2)==0;
+ zColl2 = pColl ? pColl->zName : 0;
+ return sqlite3_stricmp(zColl1, zColl2)==0;
}
/*
@@ -125724,7 +126479,7 @@ static void exprAnalyze(
** virtual tables. The native query optimizer does not attempt
** to do anything with MATCH functions.
*/
- if( isMatchOfColumn(pExpr, &eOp2) ){
+ if( pWC->op==TK_AND && isMatchOfColumn(pExpr, &eOp2) ){
int idxNew;
Expr *pRight, *pLeft;
WhereTerm *pNewTerm;
@@ -126018,6 +126773,18 @@ SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo *pWInfo){
}
/*
+** Return TRUE if the innermost loop of the WHERE clause implementation
+** returns rows in ORDER BY order for complete run of the inner loop.
+**
+** Across multiple iterations of outer loops, the output rows need not be
+** sorted. As long as rows are sorted for just the innermost loop, this
+** routine can return TRUE.
+*/
+SQLITE_PRIVATE int sqlite3WhereOrderedInnerLoop(WhereInfo *pWInfo){
+ return pWInfo->bOrderedInnerLoop;
+}
+
+/*
** Return the VDBE address or label to jump to in order to continue
** immediately with the next row of a WHERE clause.
*/
@@ -127602,13 +128369,23 @@ static void whereTermPrint(WhereTerm *pTerm, int iTerm){
sqlite3DebugPrintf("TERM-%-3d NULL\n", iTerm);
}else{
char zType[4];
+ char zLeft[50];
memcpy(zType, "...", 4);
if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
+ if( pTerm->eOperator & WO_SINGLE ){
+ sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
+ pTerm->leftCursor, pTerm->u.leftColumn);
+ }else if( (pTerm->eOperator & WO_OR)!=0 && pTerm->u.pOrInfo!=0 ){
+ sqlite3_snprintf(sizeof(zLeft),zLeft,"indexable=0x%lld",
+ pTerm->u.pOrInfo->indexable);
+ }else{
+ sqlite3_snprintf(sizeof(zLeft),zLeft,"left=%d", pTerm->leftCursor);
+ }
sqlite3DebugPrintf(
- "TERM-%-3d %p %s cursor=%-3d prob=%-3d op=0x%03x wtFlags=0x%04x\n",
- iTerm, pTerm, zType, pTerm->leftCursor, pTerm->truthProb,
+ "TERM-%-3d %p %s %-12s prob=%-3d op=0x%03x wtFlags=0x%04x\n",
+ iTerm, pTerm, zType, zLeft, pTerm->truthProb,
pTerm->eOperator, pTerm->wtFlags);
sqlite3TreeViewExpr(0, pTerm->pExpr, 0);
}
@@ -127617,6 +128394,18 @@ static void whereTermPrint(WhereTerm *pTerm, int iTerm){
#ifdef WHERETRACE_ENABLED
/*
+** Show the complete content of a WhereClause
+*/
+SQLITE_PRIVATE void sqlite3WhereClausePrint(WhereClause *pWC){
+ int i;
+ for(i=0; i<pWC->nTerm; i++){
+ whereTermPrint(&pWC->a[i], i);
+ }
+}
+#endif
+
+#ifdef WHERETRACE_ENABLED
+/*
** Print a WhereLoop object for debugging purposes
*/
static void whereLoopPrint(WhereLoop *p, WhereClause *pWC){
@@ -128601,7 +129390,7 @@ static int whereLoopAddBtree(
#ifndef SQLITE_OMIT_AUTOMATIC_INDEX
/* Automatic indexes */
if( !pBuilder->pOrSet /* Not part of an OR optimization */
- && (pWInfo->wctrlFlags & WHERE_NO_AUTOINDEX)==0
+ && (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)==0
&& (pWInfo->pParse->db->flags & SQLITE_AutoIndex)!=0
&& pSrc->pIBIndex==0 /* Has no INDEXED BY clause */
&& !pSrc->fg.notIndexed /* Has no NOT INDEXED clause */
@@ -128633,6 +129422,7 @@ static int whereLoopAddBtree(
pNew->rSetup += 24;
}
ApplyCostMultiplier(pNew->rSetup, pTab->costMult);
+ if( pNew->rSetup<0 ) pNew->rSetup = 0;
/* TUNING: Each index lookup yields 20 rows in the table. This
** is more than the usual guess of 10 rows, since we have no way
** of knowing how selective the index will ultimately be. It would
@@ -128693,6 +129483,7 @@ static int whereLoopAddBtree(
/* Full scan via index */
if( b
|| !HasRowid(pTab)
+ || pProbe->pPartIdxWhere!=0
|| ( m==0
&& pProbe->bUnordered==0
&& (pProbe->szIdxRow<pTab->szTabRow)
@@ -128705,11 +129496,34 @@ static int whereLoopAddBtree(
/* The cost of visiting the index rows is N*K, where K is
** between 1.1 and 3.0, depending on the relative sizes of the
- ** index and table rows. If this is a non-covering index scan,
- ** also add the cost of visiting table rows (N*3.0). */
+ ** index and table rows. */
pNew->rRun = rSize + 1 + (15*pProbe->szIdxRow)/pTab->szTabRow;
if( m!=0 ){
- pNew->rRun = sqlite3LogEstAdd(pNew->rRun, rSize+16);
+ /* If this is a non-covering index scan, add in the cost of
+ ** doing table lookups. The cost will be 3x the number of
+ ** lookups. Take into account WHERE clause terms that can be
+ ** satisfied using just the index, and that do not require a
+ ** table lookup. */
+ LogEst nLookup = rSize + 16; /* Base cost: N*3 */
+ int ii;
+ int iCur = pSrc->iCursor;
+ WhereClause *pWC2 = &pWInfo->sWC;
+ for(ii=0; ii<pWC2->nTerm; ii++){
+ WhereTerm *pTerm = &pWC2->a[ii];
+ if( !sqlite3ExprCoveredByIndex(pTerm->pExpr, iCur, pProbe) ){
+ break;
+ }
+ /* pTerm can be evaluated using just the index. So reduce
+ ** the expected number of table lookups accordingly */
+ if( pTerm->truthProb<=0 ){
+ nLookup += pTerm->truthProb;
+ }else{
+ nLookup--;
+ if( pTerm->eOperator & (WO_EQ|WO_IS) ) nLookup -= 19;
+ }
+ }
+
+ pNew->rRun = sqlite3LogEstAdd(pNew->rRun, nLookup);
}
ApplyCostMultiplier(pNew->rRun, pTab->costMult);
whereLoopOutputAdjust(pWC, pNew, rSize);
@@ -129078,9 +129892,7 @@ static int whereLoopAddOr(
WHERETRACE(0x200, ("OR-term %d of %p has %d subterms:\n",
(int)(pOrTerm-pOrWC->a), pTerm, sSubBuild.pWC->nTerm));
if( sqlite3WhereTrace & 0x400 ){
- for(i=0; i<sSubBuild.pWC->nTerm; i++){
- whereTermPrint(&sSubBuild.pWC->a[i], i);
- }
+ sqlite3WhereClausePrint(sSubBuild.pWC);
}
#endif
#ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -129173,6 +129985,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
mPrereq = mPrior;
}
priorJointype = pItem->fg.jointype;
+#ifndef SQLITE_OMIT_VIRTUALTABLE
if( IsVirtual(pItem->pTab) ){
struct SrcList_item *p;
for(p=&pItem[1]; p<pEnd; p++){
@@ -129181,7 +129994,9 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
}
}
rc = whereLoopAddVirtual(pBuilder, mPrereq, mUnusable);
- }else{
+ }else
+#endif /* SQLITE_OMIT_VIRTUALTABLE */
+ {
rc = whereLoopAddBtree(pBuilder, mPrereq);
}
if( rc==SQLITE_OK ){
@@ -129216,7 +130031,7 @@ static i8 wherePathSatisfiesOrderBy(
WhereInfo *pWInfo, /* The WHERE clause */
ExprList *pOrderBy, /* ORDER BY or GROUP BY or DISTINCT clause to check */
WherePath *pPath, /* The WherePath to check */
- u16 wctrlFlags, /* Might contain WHERE_GROUPBY or WHERE_DISTINCTBY */
+ u16 wctrlFlags, /* WHERE_GROUPBY or _DISTINCTBY or _ORDERBY_LIMIT */
u16 nLoop, /* Number of entries in pPath->aLoop[] */
WhereLoop *pLast, /* Add this WhereLoop to the end of pPath->aLoop[] */
Bitmask *pRevMask /* OUT: Mask of WhereLoops to run in reverse order */
@@ -129227,6 +130042,7 @@ static i8 wherePathSatisfiesOrderBy(
u8 isOrderDistinct; /* All prior WhereLoops are order-distinct */
u8 distinctColumns; /* True if the loop has UNIQUE NOT NULL columns */
u8 isMatch; /* iColumn matches a term of the ORDER BY clause */
+ u16 eqOpMask; /* Allowed equality operators */
u16 nKeyCol; /* Number of key columns in pIndex */
u16 nColumn; /* Total number of ordered columns in the index */
u16 nOrderBy; /* Number terms in the ORDER BY clause */
@@ -129277,9 +130093,16 @@ static i8 wherePathSatisfiesOrderBy(
obDone = MASKBIT(nOrderBy)-1;
orderDistinctMask = 0;
ready = 0;
+ eqOpMask = WO_EQ | WO_IS | WO_ISNULL;
+ if( wctrlFlags & WHERE_ORDERBY_LIMIT ) eqOpMask |= WO_IN;
for(iLoop=0; isOrderDistinct && obSat<obDone && iLoop<=nLoop; iLoop++){
if( iLoop>0 ) ready |= pLoop->maskSelf;
- pLoop = iLoop<nLoop ? pPath->aLoop[iLoop] : pLast;
+ if( iLoop<nLoop ){
+ pLoop = pPath->aLoop[iLoop];
+ if( wctrlFlags & WHERE_ORDERBY_LIMIT ) continue;
+ }else{
+ pLoop = pLast;
+ }
if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
if( pLoop->u.vtab.isOrdered ) obSat = obDone;
break;
@@ -129297,8 +130120,16 @@ static i8 wherePathSatisfiesOrderBy(
if( pOBExpr->op!=TK_COLUMN ) continue;
if( pOBExpr->iTable!=iCur ) continue;
pTerm = sqlite3WhereFindTerm(&pWInfo->sWC, iCur, pOBExpr->iColumn,
- ~ready, WO_EQ|WO_ISNULL|WO_IS, 0);
+ ~ready, eqOpMask, 0);
if( pTerm==0 ) continue;
+ if( pTerm->eOperator==WO_IN ){
+ /* IN terms are only valid for sorting in the ORDER BY LIMIT
+ ** optimization, and then only if they are actually used
+ ** by the query plan */
+ assert( wctrlFlags & WHERE_ORDERBY_LIMIT );
+ for(j=0; j<pLoop->nLTerm && pTerm!=pLoop->aLTerm[j]; j++){}
+ if( j>=pLoop->nLTerm ) continue;
+ }
if( (pTerm->eOperator&(WO_EQ|WO_IS))!=0 && pOBExpr->iColumn>=0 ){
const char *z1, *z2;
pColl = sqlite3ExprCollSeq(pWInfo->pParse, pOrderBy->a[i].pExpr);
@@ -129337,10 +130168,12 @@ static i8 wherePathSatisfiesOrderBy(
for(j=0; j<nColumn; j++){
u8 bOnce; /* True to run the ORDER BY search loop */
- /* Skip over == and IS NULL terms */
+ /* Skip over == and IS and ISNULL terms.
+ ** (Also skip IN terms when doing WHERE_ORDERBY_LIMIT processing)
+ */
if( j<pLoop->u.btree.nEq
&& pLoop->nSkip==0
- && ((i = pLoop->aLTerm[j]->eOperator) & (WO_EQ|WO_ISNULL|WO_IS))!=0
+ && ((i = pLoop->aLTerm[j]->eOperator) & eqOpMask)!=0
){
if( i & WO_ISNULL ){
testcase( isOrderDistinct );
@@ -129864,8 +130697,19 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
}
}else{
pWInfo->nOBSat = pFrom->isOrdered;
- if( pWInfo->nOBSat<0 ) pWInfo->nOBSat = 0;
pWInfo->revMask = pFrom->revLoop;
+ if( pWInfo->nOBSat<=0 ){
+ pWInfo->nOBSat = 0;
+ if( nLoop>0 && (pFrom->aLoop[nLoop-1]->wsFlags & WHERE_ONEROW)==0 ){
+ Bitmask m = 0;
+ int rc = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pOrderBy, pFrom,
+ WHERE_ORDERBY_LIMIT, nLoop-1, pFrom->aLoop[nLoop-1], &m);
+ if( rc==pWInfo->pOrderBy->nExpr ){
+ pWInfo->bOrderedInnerLoop = 1;
+ pWInfo->revMask = m;
+ }
+ }
+ }
}
if( (pWInfo->wctrlFlags & WHERE_SORTBYGROUP)
&& pWInfo->nOBSat==pWInfo->pOrderBy->nExpr && nLoop>0
@@ -129913,7 +130757,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
Index *pIdx;
pWInfo = pBuilder->pWInfo;
- if( pWInfo->wctrlFlags & WHERE_FORCE_TABLE ) return 0;
+ if( pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE ) return 0;
assert( pWInfo->pTabList->nSrc>=1 );
pItem = pWInfo->pTabList->a;
pTab = pItem->pTab;
@@ -130060,7 +130904,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
** is called from an UPDATE or DELETE statement, then pOrderBy is NULL.
**
** The iIdxCur parameter is the cursor number of an index. If
-** WHERE_ONETABLE_ONLY is set, iIdxCur is the cursor number of an index
+** WHERE_OR_SUBCLAUSE is set, iIdxCur is the cursor number of an index
** to use for OR clause processing. The WHERE clause should use this
** specific cursor. If WHERE_ONEPASS_DESIRED is set, then iIdxCur is
** the first cursor in an array of cursors for all indices. iIdxCur should
@@ -130074,7 +130918,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
ExprList *pOrderBy, /* An ORDER BY (or GROUP BY) clause, or NULL */
ExprList *pDistinctSet, /* Try not to output two rows that duplicate these */
u16 wctrlFlags, /* The WHERE_* flags defined in sqliteInt.h */
- int iAuxArg /* If WHERE_ONETABLE_ONLY is set, index cursor number
+ int iAuxArg /* If WHERE_OR_SUBCLAUSE is set, index cursor number
** If WHERE_USE_LIMIT, then the limit amount */
){
int nByteWInfo; /* Num. bytes allocated for WhereInfo struct */
@@ -130093,11 +130937,11 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
assert( (wctrlFlags & WHERE_ONEPASS_MULTIROW)==0 || (
(wctrlFlags & WHERE_ONEPASS_DESIRED)!=0
- && (wctrlFlags & WHERE_OMIT_OPEN_CLOSE)==0
+ && (wctrlFlags & WHERE_OR_SUBCLAUSE)==0
));
- /* Only one of WHERE_ONETABLE_ONLY or WHERE_USE_LIMIT */
- assert( (wctrlFlags & WHERE_ONETABLE_ONLY)==0
+ /* Only one of WHERE_OR_SUBCLAUSE or WHERE_USE_LIMIT */
+ assert( (wctrlFlags & WHERE_OR_SUBCLAUSE)==0
|| (wctrlFlags & WHERE_USE_LIMIT)==0 );
/* Variable initialization */
@@ -130125,11 +130969,11 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
}
/* This function normally generates a nested loop for all tables in
- ** pTabList. But if the WHERE_ONETABLE_ONLY flag is set, then we should
+ ** pTabList. But if the WHERE_OR_SUBCLAUSE flag is set, then we should
** only generate code for the first table in pTabList and assume that
** any cursors associated with subsequent tables are uninitialized.
*/
- nTabList = (wctrlFlags & WHERE_ONETABLE_ONLY) ? 1 : pTabList->nSrc;
+ nTabList = (wctrlFlags & WHERE_OR_SUBCLAUSE) ? 1 : pTabList->nSrc;
/* Allocate and initialize the WhereInfo structure that will become the
** return value. A single allocation is used to store the WhereInfo
@@ -130205,7 +131049,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
** Note that bitmasks are created for all pTabList->nSrc tables in
** pTabList, not just the first nTabList tables. nTabList is normally
** equal to pTabList->nSrc but might be shortened to 1 if the
- ** WHERE_ONETABLE_ONLY flag is set.
+ ** WHERE_OR_SUBCLAUSE flag is set.
*/
for(ii=0; ii<pTabList->nSrc; ii++){
createMask(pMaskSet, pTabList->a[ii].iCursor);
@@ -130243,10 +131087,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
sqlite3DebugPrintf(")\n");
}
if( sqlite3WhereTrace & 0x100 ){ /* Display all terms of the WHERE clause */
- int i;
- for(i=0; i<sWLB.pWC->nTerm; i++){
- whereTermPrint(&sWLB.pWC->a[i], i);
- }
+ sqlite3WhereClausePrint(sWLB.pWC);
}
#endif
@@ -130388,7 +131229,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
}else
#endif
if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
- && (wctrlFlags & WHERE_OMIT_OPEN_CLOSE)==0 ){
+ && (wctrlFlags & WHERE_OR_SUBCLAUSE)==0 ){
int op = OP_OpenRead;
if( pWInfo->eOnePass!=ONEPASS_OFF ){
op = OP_OpenWrite;
@@ -130427,7 +131268,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
/* iAuxArg is always set if to a positive value if ONEPASS is possible */
assert( iAuxArg!=0 || (pWInfo->wctrlFlags & WHERE_ONEPASS_DESIRED)==0 );
if( !HasRowid(pTab) && IsPrimaryKeyIndex(pIx)
- && (wctrlFlags & WHERE_ONETABLE_ONLY)!=0
+ && (wctrlFlags & WHERE_OR_SUBCLAUSE)!=0
){
/* This is one term of an OR-optimization using the PRIMARY KEY of a
** WITHOUT ROWID table. No need for a separate index */
@@ -130443,9 +131284,9 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
}
op = OP_OpenWrite;
pWInfo->aiCurOnePass[1] = iIndexCur;
- }else if( iAuxArg && (wctrlFlags & WHERE_ONETABLE_ONLY)!=0 ){
+ }else if( iAuxArg && (wctrlFlags & WHERE_OR_SUBCLAUSE)!=0 ){
iIndexCur = iAuxArg;
- if( wctrlFlags & WHERE_REOPEN_IDX ) op = OP_ReopenIdx;
+ op = OP_ReopenIdx;
}else{
iIndexCur = pParse->nTab++;
}
@@ -130507,7 +131348,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
pLevel->addrBody = sqlite3VdbeCurrentAddr(v);
notReady = sqlite3WhereCodeOneLoopStart(pWInfo, ii, notReady);
pWInfo->iContinue = pLevel->addrCont;
- if( (wsFlags&WHERE_MULTI_OR)==0 && (wctrlFlags&WHERE_ONETABLE_ONLY)==0 ){
+ if( (wsFlags&WHERE_MULTI_OR)==0 && (wctrlFlags&WHERE_OR_SUBCLAUSE)==0 ){
sqlite3WhereAddScanStatus(v, pTabList, pLevel, addrExplain);
}
}
@@ -130630,12 +131471,12 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
/* Close all of the cursors that were opened by sqlite3WhereBegin.
** Except, do not close cursors that will be reused by the OR optimization
- ** (WHERE_OMIT_OPEN_CLOSE). And do not close the OP_OpenWrite cursors
+ ** (WHERE_OR_SUBCLAUSE). And do not close the OP_OpenWrite cursors
** created for the ONEPASS optimization.
*/
if( (pTab->tabFlags & TF_Ephemeral)==0
&& pTab->pSelect==0
- && (pWInfo->wctrlFlags & WHERE_OMIT_OPEN_CLOSE)==0
+ && (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)==0
){
int ws = pLoop->wsFlags;
if( pWInfo->eOnePass==ONEPASS_OFF && (ws & WHERE_IDX_ONLY)==0 ){
@@ -130982,26 +131823,26 @@ static void disableLookaside(Parse *pParse){
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned char
-#define YYNOCODE 251
+#define YYNOCODE 252
#define YYACTIONTYPE unsigned short int
#define YYWILDCARD 96
#define sqlite3ParserTOKENTYPE Token
typedef union {
int yyinit;
sqlite3ParserTOKENTYPE yy0;
- struct LimitVal yy64;
- Expr* yy122;
- Select* yy159;
- IdList* yy180;
- struct {int value; int mask;} yy207;
- struct LikeOp yy318;
- TriggerStep* yy327;
- With* yy331;
- ExprSpan yy342;
- SrcList* yy347;
- int yy392;
- struct TrigEvent yy410;
- ExprList* yy442;
+ Expr* yy72;
+ TriggerStep* yy145;
+ ExprList* yy148;
+ SrcList* yy185;
+ ExprSpan yy190;
+ int yy194;
+ Select* yy243;
+ IdList* yy254;
+ With* yy285;
+ struct TrigEvent yy332;
+ struct LimitVal yy354;
+ struct LikeOp yy392;
+ struct {int value; int mask;} yy497;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
@@ -131011,16 +131852,16 @@ typedef union {
#define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
#define sqlite3ParserARG_STORE yypParser->pParse = pParse
#define YYFALLBACK 1
-#define YYNSTATE 440
-#define YYNRULE 326
-#define YY_MAX_SHIFT 439
-#define YY_MIN_SHIFTREDUCE 649
-#define YY_MAX_SHIFTREDUCE 974
-#define YY_MIN_REDUCE 975
-#define YY_MAX_REDUCE 1300
-#define YY_ERROR_ACTION 1301
-#define YY_ACCEPT_ACTION 1302
-#define YY_NO_ACTION 1303
+#define YYNSTATE 443
+#define YYNRULE 328
+#define YY_MAX_SHIFT 442
+#define YY_MIN_SHIFTREDUCE 653
+#define YY_MAX_SHIFTREDUCE 980
+#define YY_MIN_REDUCE 981
+#define YY_MAX_REDUCE 1308
+#define YY_ERROR_ACTION 1309
+#define YY_ACCEPT_ACTION 1310
+#define YY_NO_ACTION 1311
/************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined
@@ -131088,159 +131929,159 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (1501)
+#define YY_ACTTAB_COUNT (1507)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 315, 810, 339, 804, 5, 194, 194, 798, 92, 93,
- /* 10 */ 83, 819, 819, 831, 834, 823, 823, 90, 90, 91,
- /* 20 */ 91, 91, 91, 290, 89, 89, 89, 89, 88, 88,
- /* 30 */ 87, 87, 87, 86, 339, 315, 952, 952, 803, 803,
- /* 40 */ 803, 922, 342, 92, 93, 83, 819, 819, 831, 834,
- /* 50 */ 823, 823, 90, 90, 91, 91, 91, 91, 123, 89,
- /* 60 */ 89, 89, 89, 88, 88, 87, 87, 87, 86, 339,
- /* 70 */ 88, 88, 87, 87, 87, 86, 339, 772, 952, 952,
- /* 80 */ 315, 87, 87, 87, 86, 339, 773, 68, 92, 93,
- /* 90 */ 83, 819, 819, 831, 834, 823, 823, 90, 90, 91,
- /* 100 */ 91, 91, 91, 434, 89, 89, 89, 89, 88, 88,
- /* 110 */ 87, 87, 87, 86, 339, 1302, 146, 921, 2, 315,
- /* 120 */ 427, 24, 679, 953, 48, 86, 339, 92, 93, 83,
- /* 130 */ 819, 819, 831, 834, 823, 823, 90, 90, 91, 91,
- /* 140 */ 91, 91, 94, 89, 89, 89, 89, 88, 88, 87,
- /* 150 */ 87, 87, 86, 339, 933, 933, 315, 259, 412, 398,
- /* 160 */ 396, 57, 733, 733, 92, 93, 83, 819, 819, 831,
- /* 170 */ 834, 823, 823, 90, 90, 91, 91, 91, 91, 56,
- /* 180 */ 89, 89, 89, 89, 88, 88, 87, 87, 87, 86,
- /* 190 */ 339, 315, 1245, 922, 342, 268, 934, 935, 241, 92,
- /* 200 */ 93, 83, 819, 819, 831, 834, 823, 823, 90, 90,
- /* 210 */ 91, 91, 91, 91, 291, 89, 89, 89, 89, 88,
- /* 220 */ 88, 87, 87, 87, 86, 339, 315, 913, 1295, 682,
- /* 230 */ 687, 1295, 233, 397, 92, 93, 83, 819, 819, 831,
- /* 240 */ 834, 823, 823, 90, 90, 91, 91, 91, 91, 326,
- /* 250 */ 89, 89, 89, 89, 88, 88, 87, 87, 87, 86,
- /* 260 */ 339, 315, 85, 82, 168, 680, 431, 938, 939, 92,
- /* 270 */ 93, 83, 819, 819, 831, 834, 823, 823, 90, 90,
- /* 280 */ 91, 91, 91, 91, 291, 89, 89, 89, 89, 88,
- /* 290 */ 88, 87, 87, 87, 86, 339, 315, 319, 913, 1296,
- /* 300 */ 797, 911, 1296, 681, 92, 93, 83, 819, 819, 831,
- /* 310 */ 834, 823, 823, 90, 90, 91, 91, 91, 91, 335,
- /* 320 */ 89, 89, 89, 89, 88, 88, 87, 87, 87, 86,
- /* 330 */ 339, 315, 876, 876, 373, 85, 82, 168, 944, 92,
- /* 340 */ 93, 83, 819, 819, 831, 834, 823, 823, 90, 90,
- /* 350 */ 91, 91, 91, 91, 896, 89, 89, 89, 89, 88,
- /* 360 */ 88, 87, 87, 87, 86, 339, 315, 370, 307, 973,
- /* 370 */ 367, 1, 911, 433, 92, 93, 83, 819, 819, 831,
- /* 380 */ 834, 823, 823, 90, 90, 91, 91, 91, 91, 189,
- /* 390 */ 89, 89, 89, 89, 88, 88, 87, 87, 87, 86,
- /* 400 */ 339, 315, 720, 948, 933, 933, 149, 718, 948, 92,
- /* 410 */ 93, 83, 819, 819, 831, 834, 823, 823, 90, 90,
- /* 420 */ 91, 91, 91, 91, 434, 89, 89, 89, 89, 88,
- /* 430 */ 88, 87, 87, 87, 86, 339, 338, 938, 939, 947,
- /* 440 */ 694, 940, 974, 315, 953, 48, 934, 935, 715, 689,
- /* 450 */ 71, 92, 93, 83, 819, 819, 831, 834, 823, 823,
- /* 460 */ 90, 90, 91, 91, 91, 91, 320, 89, 89, 89,
- /* 470 */ 89, 88, 88, 87, 87, 87, 86, 339, 315, 412,
- /* 480 */ 403, 820, 820, 832, 835, 74, 92, 81, 83, 819,
- /* 490 */ 819, 831, 834, 823, 823, 90, 90, 91, 91, 91,
- /* 500 */ 91, 698, 89, 89, 89, 89, 88, 88, 87, 87,
- /* 510 */ 87, 86, 339, 315, 259, 654, 655, 656, 393, 111,
- /* 520 */ 331, 153, 93, 83, 819, 819, 831, 834, 823, 823,
- /* 530 */ 90, 90, 91, 91, 91, 91, 434, 89, 89, 89,
- /* 540 */ 89, 88, 88, 87, 87, 87, 86, 339, 315, 188,
- /* 550 */ 187, 186, 824, 937, 328, 219, 953, 48, 83, 819,
- /* 560 */ 819, 831, 834, 823, 823, 90, 90, 91, 91, 91,
- /* 570 */ 91, 956, 89, 89, 89, 89, 88, 88, 87, 87,
- /* 580 */ 87, 86, 339, 79, 429, 738, 3, 1174, 955, 348,
- /* 590 */ 737, 332, 792, 933, 933, 937, 79, 429, 730, 3,
- /* 600 */ 203, 160, 278, 391, 273, 390, 190, 892, 434, 400,
- /* 610 */ 741, 76, 77, 271, 287, 253, 353, 242, 78, 340,
- /* 620 */ 340, 85, 82, 168, 76, 77, 233, 397, 953, 48,
- /* 630 */ 432, 78, 340, 340, 277, 934, 935, 185, 439, 651,
- /* 640 */ 388, 385, 384, 432, 234, 276, 107, 418, 349, 337,
- /* 650 */ 336, 383, 893, 728, 215, 949, 123, 971, 308, 810,
- /* 660 */ 418, 436, 435, 412, 394, 798, 400, 873, 894, 123,
- /* 670 */ 721, 872, 810, 889, 436, 435, 215, 949, 798, 351,
- /* 680 */ 722, 697, 380, 434, 771, 371, 22, 434, 400, 79,
- /* 690 */ 429, 232, 3, 189, 413, 870, 803, 803, 803, 805,
- /* 700 */ 18, 54, 148, 953, 48, 956, 113, 953, 9, 803,
- /* 710 */ 803, 803, 805, 18, 310, 123, 748, 76, 77, 742,
- /* 720 */ 123, 325, 955, 866, 78, 340, 340, 113, 350, 359,
- /* 730 */ 85, 82, 168, 343, 960, 960, 432, 770, 412, 414,
- /* 740 */ 407, 23, 1240, 1240, 79, 429, 357, 3, 166, 91,
- /* 750 */ 91, 91, 91, 418, 89, 89, 89, 89, 88, 88,
- /* 760 */ 87, 87, 87, 86, 339, 810, 434, 436, 435, 792,
- /* 770 */ 320, 798, 76, 77, 789, 271, 123, 434, 360, 78,
- /* 780 */ 340, 340, 864, 85, 82, 168, 953, 9, 395, 743,
- /* 790 */ 360, 432, 253, 358, 252, 933, 933, 953, 30, 889,
- /* 800 */ 327, 216, 803, 803, 803, 805, 18, 113, 418, 89,
- /* 810 */ 89, 89, 89, 88, 88, 87, 87, 87, 86, 339,
- /* 820 */ 810, 113, 436, 435, 792, 185, 798, 288, 388, 385,
- /* 830 */ 384, 123, 113, 920, 2, 796, 696, 934, 935, 383,
- /* 840 */ 69, 429, 434, 3, 218, 110, 738, 253, 358, 252,
- /* 850 */ 434, 737, 933, 933, 892, 359, 222, 803, 803, 803,
- /* 860 */ 805, 18, 953, 47, 933, 933, 933, 933, 76, 77,
- /* 870 */ 953, 9, 366, 904, 217, 78, 340, 340, 677, 305,
- /* 880 */ 304, 303, 206, 301, 224, 259, 664, 432, 337, 336,
- /* 890 */ 434, 228, 247, 144, 934, 935, 933, 933, 667, 893,
- /* 900 */ 324, 1259, 96, 434, 418, 796, 934, 935, 934, 935,
- /* 910 */ 953, 48, 401, 148, 289, 894, 810, 417, 436, 435,
- /* 920 */ 677, 759, 798, 953, 9, 314, 220, 162, 161, 170,
- /* 930 */ 402, 239, 953, 8, 194, 683, 683, 410, 934, 935,
- /* 940 */ 238, 959, 933, 933, 225, 408, 945, 365, 957, 212,
- /* 950 */ 958, 172, 757, 803, 803, 803, 805, 18, 173, 365,
- /* 960 */ 176, 123, 171, 113, 244, 952, 246, 434, 356, 796,
- /* 970 */ 372, 365, 236, 960, 960, 810, 290, 804, 191, 165,
- /* 980 */ 852, 798, 259, 316, 934, 935, 237, 953, 34, 404,
- /* 990 */ 91, 91, 91, 91, 84, 89, 89, 89, 89, 88,
- /* 1000 */ 88, 87, 87, 87, 86, 339, 701, 952, 434, 240,
- /* 1010 */ 347, 758, 803, 803, 803, 434, 245, 1179, 434, 389,
- /* 1020 */ 434, 376, 434, 895, 167, 434, 405, 702, 953, 35,
- /* 1030 */ 673, 321, 221, 434, 333, 953, 11, 434, 953, 26,
- /* 1040 */ 953, 36, 953, 37, 251, 953, 38, 434, 259, 434,
- /* 1050 */ 757, 434, 329, 953, 27, 434, 223, 953, 28, 434,
- /* 1060 */ 690, 434, 67, 434, 65, 434, 862, 953, 39, 953,
- /* 1070 */ 40, 953, 41, 423, 434, 953, 10, 434, 772, 953,
- /* 1080 */ 42, 953, 98, 953, 43, 953, 44, 773, 434, 346,
- /* 1090 */ 434, 75, 434, 73, 953, 31, 434, 953, 45, 434,
- /* 1100 */ 259, 434, 690, 434, 757, 434, 887, 434, 953, 46,
- /* 1110 */ 953, 32, 953, 115, 434, 266, 953, 116, 951, 953,
- /* 1120 */ 117, 953, 52, 953, 33, 953, 99, 953, 49, 726,
- /* 1130 */ 434, 909, 434, 19, 953, 100, 434, 344, 434, 113,
- /* 1140 */ 434, 258, 692, 434, 259, 434, 670, 434, 20, 434,
- /* 1150 */ 953, 101, 953, 97, 434, 259, 953, 114, 953, 112,
- /* 1160 */ 953, 105, 113, 953, 104, 953, 102, 953, 103, 953,
- /* 1170 */ 51, 434, 148, 434, 953, 53, 167, 434, 259, 113,
- /* 1180 */ 300, 307, 912, 363, 311, 860, 248, 261, 209, 264,
- /* 1190 */ 416, 953, 50, 953, 25, 420, 727, 953, 29, 430,
- /* 1200 */ 321, 424, 757, 428, 322, 124, 1269, 214, 165, 710,
- /* 1210 */ 859, 908, 806, 794, 309, 158, 193, 361, 254, 723,
- /* 1220 */ 364, 67, 381, 269, 735, 199, 67, 70, 113, 700,
- /* 1230 */ 699, 707, 708, 884, 113, 766, 113, 855, 193, 883,
- /* 1240 */ 199, 869, 869, 675, 868, 868, 109, 368, 255, 260,
- /* 1250 */ 263, 280, 859, 265, 806, 974, 267, 711, 695, 272,
- /* 1260 */ 764, 282, 795, 284, 150, 744, 755, 415, 292, 293,
- /* 1270 */ 802, 678, 672, 661, 660, 662, 927, 6, 306, 386,
- /* 1280 */ 352, 786, 243, 250, 886, 362, 163, 286, 419, 298,
- /* 1290 */ 930, 159, 968, 196, 126, 903, 901, 965, 55, 58,
- /* 1300 */ 323, 275, 857, 136, 147, 694, 856, 121, 65, 354,
- /* 1310 */ 355, 379, 175, 61, 151, 369, 180, 871, 375, 129,
- /* 1320 */ 257, 756, 210, 181, 145, 131, 132, 377, 262, 663,
- /* 1330 */ 133, 134, 139, 783, 791, 182, 392, 183, 312, 330,
- /* 1340 */ 714, 888, 713, 851, 692, 195, 712, 406, 686, 705,
- /* 1350 */ 313, 685, 64, 839, 274, 72, 684, 334, 942, 95,
- /* 1360 */ 752, 279, 281, 704, 753, 751, 422, 283, 411, 750,
- /* 1370 */ 426, 66, 204, 409, 21, 285, 928, 669, 437, 205,
- /* 1380 */ 207, 208, 438, 658, 657, 652, 118, 108, 119, 226,
- /* 1390 */ 650, 341, 157, 235, 169, 345, 106, 734, 790, 296,
- /* 1400 */ 294, 295, 120, 297, 867, 865, 127, 128, 130, 724,
- /* 1410 */ 229, 174, 249, 882, 137, 230, 138, 135, 885, 231,
- /* 1420 */ 59, 60, 177, 881, 7, 178, 12, 179, 256, 874,
- /* 1430 */ 140, 193, 962, 374, 141, 152, 666, 378, 276, 184,
- /* 1440 */ 270, 122, 142, 382, 387, 62, 13, 14, 703, 63,
- /* 1450 */ 125, 317, 318, 227, 809, 808, 837, 732, 15, 164,
- /* 1460 */ 736, 4, 765, 211, 399, 213, 192, 143, 760, 70,
- /* 1470 */ 67, 16, 17, 838, 836, 891, 841, 890, 198, 197,
- /* 1480 */ 917, 154, 421, 923, 918, 155, 200, 977, 425, 840,
- /* 1490 */ 156, 201, 807, 676, 80, 302, 299, 977, 202, 1261,
- /* 1500 */ 1260,
+ /* 0 */ 317, 814, 341, 808, 5, 195, 195, 802, 93, 94,
+ /* 10 */ 84, 823, 823, 835, 838, 827, 827, 91, 91, 92,
+ /* 20 */ 92, 92, 92, 293, 90, 90, 90, 90, 89, 89,
+ /* 30 */ 88, 88, 88, 87, 341, 317, 958, 958, 807, 807,
+ /* 40 */ 807, 928, 344, 93, 94, 84, 823, 823, 835, 838,
+ /* 50 */ 827, 827, 91, 91, 92, 92, 92, 92, 328, 90,
+ /* 60 */ 90, 90, 90, 89, 89, 88, 88, 88, 87, 341,
+ /* 70 */ 89, 89, 88, 88, 88, 87, 341, 776, 958, 958,
+ /* 80 */ 317, 88, 88, 88, 87, 341, 777, 69, 93, 94,
+ /* 90 */ 84, 823, 823, 835, 838, 827, 827, 91, 91, 92,
+ /* 100 */ 92, 92, 92, 437, 90, 90, 90, 90, 89, 89,
+ /* 110 */ 88, 88, 88, 87, 341, 1310, 147, 147, 2, 317,
+ /* 120 */ 76, 25, 74, 49, 49, 87, 341, 93, 94, 84,
+ /* 130 */ 823, 823, 835, 838, 827, 827, 91, 91, 92, 92,
+ /* 140 */ 92, 92, 95, 90, 90, 90, 90, 89, 89, 88,
+ /* 150 */ 88, 88, 87, 341, 939, 939, 317, 260, 415, 400,
+ /* 160 */ 398, 58, 737, 737, 93, 94, 84, 823, 823, 835,
+ /* 170 */ 838, 827, 827, 91, 91, 92, 92, 92, 92, 57,
+ /* 180 */ 90, 90, 90, 90, 89, 89, 88, 88, 88, 87,
+ /* 190 */ 341, 317, 1253, 928, 344, 269, 940, 941, 242, 93,
+ /* 200 */ 94, 84, 823, 823, 835, 838, 827, 827, 91, 91,
+ /* 210 */ 92, 92, 92, 92, 293, 90, 90, 90, 90, 89,
+ /* 220 */ 89, 88, 88, 88, 87, 341, 317, 919, 1303, 793,
+ /* 230 */ 691, 1303, 724, 724, 93, 94, 84, 823, 823, 835,
+ /* 240 */ 838, 827, 827, 91, 91, 92, 92, 92, 92, 337,
+ /* 250 */ 90, 90, 90, 90, 89, 89, 88, 88, 88, 87,
+ /* 260 */ 341, 317, 114, 919, 1304, 684, 395, 1304, 124, 93,
+ /* 270 */ 94, 84, 823, 823, 835, 838, 827, 827, 91, 91,
+ /* 280 */ 92, 92, 92, 92, 683, 90, 90, 90, 90, 89,
+ /* 290 */ 89, 88, 88, 88, 87, 341, 317, 86, 83, 169,
+ /* 300 */ 801, 917, 234, 399, 93, 94, 84, 823, 823, 835,
+ /* 310 */ 838, 827, 827, 91, 91, 92, 92, 92, 92, 686,
+ /* 320 */ 90, 90, 90, 90, 89, 89, 88, 88, 88, 87,
+ /* 330 */ 341, 317, 436, 742, 86, 83, 169, 917, 741, 93,
+ /* 340 */ 94, 84, 823, 823, 835, 838, 827, 827, 91, 91,
+ /* 350 */ 92, 92, 92, 92, 902, 90, 90, 90, 90, 89,
+ /* 360 */ 89, 88, 88, 88, 87, 341, 317, 321, 434, 434,
+ /* 370 */ 434, 1, 722, 722, 93, 94, 84, 823, 823, 835,
+ /* 380 */ 838, 827, 827, 91, 91, 92, 92, 92, 92, 190,
+ /* 390 */ 90, 90, 90, 90, 89, 89, 88, 88, 88, 87,
+ /* 400 */ 341, 317, 685, 292, 939, 939, 150, 977, 310, 93,
+ /* 410 */ 94, 84, 823, 823, 835, 838, 827, 827, 91, 91,
+ /* 420 */ 92, 92, 92, 92, 437, 90, 90, 90, 90, 89,
+ /* 430 */ 89, 88, 88, 88, 87, 341, 926, 2, 372, 719,
+ /* 440 */ 698, 369, 950, 317, 49, 49, 940, 941, 719, 177,
+ /* 450 */ 72, 93, 94, 84, 823, 823, 835, 838, 827, 827,
+ /* 460 */ 91, 91, 92, 92, 92, 92, 322, 90, 90, 90,
+ /* 470 */ 90, 89, 89, 88, 88, 88, 87, 341, 317, 415,
+ /* 480 */ 405, 824, 824, 836, 839, 75, 93, 82, 84, 823,
+ /* 490 */ 823, 835, 838, 827, 827, 91, 91, 92, 92, 92,
+ /* 500 */ 92, 430, 90, 90, 90, 90, 89, 89, 88, 88,
+ /* 510 */ 88, 87, 341, 317, 340, 340, 340, 658, 659, 660,
+ /* 520 */ 333, 288, 94, 84, 823, 823, 835, 838, 827, 827,
+ /* 530 */ 91, 91, 92, 92, 92, 92, 437, 90, 90, 90,
+ /* 540 */ 90, 89, 89, 88, 88, 88, 87, 341, 317, 882,
+ /* 550 */ 882, 375, 828, 66, 330, 409, 49, 49, 84, 823,
+ /* 560 */ 823, 835, 838, 827, 827, 91, 91, 92, 92, 92,
+ /* 570 */ 92, 351, 90, 90, 90, 90, 89, 89, 88, 88,
+ /* 580 */ 88, 87, 341, 80, 432, 742, 3, 1180, 351, 350,
+ /* 590 */ 741, 334, 796, 939, 939, 761, 80, 432, 278, 3,
+ /* 600 */ 204, 161, 279, 393, 274, 392, 191, 362, 437, 277,
+ /* 610 */ 745, 77, 78, 272, 800, 254, 355, 243, 79, 342,
+ /* 620 */ 342, 86, 83, 169, 77, 78, 234, 399, 49, 49,
+ /* 630 */ 435, 79, 342, 342, 437, 940, 941, 186, 442, 655,
+ /* 640 */ 390, 387, 386, 435, 235, 213, 108, 421, 761, 351,
+ /* 650 */ 437, 385, 167, 732, 10, 10, 124, 124, 671, 814,
+ /* 660 */ 421, 439, 438, 415, 414, 802, 362, 168, 327, 124,
+ /* 670 */ 49, 49, 814, 219, 439, 438, 800, 186, 802, 326,
+ /* 680 */ 390, 387, 386, 437, 1248, 1248, 23, 939, 939, 80,
+ /* 690 */ 432, 385, 3, 761, 416, 876, 807, 807, 807, 809,
+ /* 700 */ 19, 290, 149, 49, 49, 415, 396, 260, 910, 807,
+ /* 710 */ 807, 807, 809, 19, 312, 237, 145, 77, 78, 746,
+ /* 720 */ 168, 702, 437, 149, 79, 342, 342, 114, 358, 940,
+ /* 730 */ 941, 302, 223, 397, 345, 313, 435, 260, 415, 417,
+ /* 740 */ 858, 374, 31, 31, 80, 432, 761, 3, 348, 92,
+ /* 750 */ 92, 92, 92, 421, 90, 90, 90, 90, 89, 89,
+ /* 760 */ 88, 88, 88, 87, 341, 814, 114, 439, 438, 796,
+ /* 770 */ 367, 802, 77, 78, 701, 796, 124, 1187, 220, 79,
+ /* 780 */ 342, 342, 124, 747, 734, 939, 939, 775, 404, 939,
+ /* 790 */ 939, 435, 254, 360, 253, 402, 895, 346, 254, 360,
+ /* 800 */ 253, 774, 807, 807, 807, 809, 19, 800, 421, 90,
+ /* 810 */ 90, 90, 90, 89, 89, 88, 88, 88, 87, 341,
+ /* 820 */ 814, 114, 439, 438, 939, 939, 802, 940, 941, 114,
+ /* 830 */ 437, 940, 941, 86, 83, 169, 192, 166, 309, 979,
+ /* 840 */ 70, 432, 700, 3, 382, 870, 238, 86, 83, 169,
+ /* 850 */ 10, 10, 361, 406, 763, 190, 222, 807, 807, 807,
+ /* 860 */ 809, 19, 870, 872, 329, 24, 940, 941, 77, 78,
+ /* 870 */ 359, 437, 335, 260, 218, 79, 342, 342, 437, 307,
+ /* 880 */ 306, 305, 207, 303, 339, 338, 668, 435, 339, 338,
+ /* 890 */ 407, 10, 10, 762, 216, 216, 939, 939, 49, 49,
+ /* 900 */ 437, 260, 97, 241, 421, 225, 402, 189, 188, 187,
+ /* 910 */ 309, 918, 980, 149, 221, 898, 814, 868, 439, 438,
+ /* 920 */ 10, 10, 802, 870, 915, 316, 898, 163, 162, 171,
+ /* 930 */ 249, 240, 322, 410, 412, 687, 687, 272, 940, 941,
+ /* 940 */ 239, 965, 901, 437, 226, 403, 226, 437, 963, 367,
+ /* 950 */ 964, 173, 248, 807, 807, 807, 809, 19, 174, 367,
+ /* 960 */ 899, 124, 172, 48, 48, 9, 9, 35, 35, 966,
+ /* 970 */ 966, 899, 363, 966, 966, 814, 900, 808, 725, 939,
+ /* 980 */ 939, 802, 895, 318, 980, 324, 125, 900, 726, 420,
+ /* 990 */ 92, 92, 92, 92, 85, 90, 90, 90, 90, 89,
+ /* 1000 */ 89, 88, 88, 88, 87, 341, 216, 216, 437, 946,
+ /* 1010 */ 349, 292, 807, 807, 807, 114, 291, 693, 402, 705,
+ /* 1020 */ 890, 940, 941, 437, 245, 889, 247, 437, 36, 36,
+ /* 1030 */ 437, 353, 391, 437, 260, 252, 260, 437, 361, 437,
+ /* 1040 */ 706, 437, 370, 12, 12, 224, 437, 27, 27, 437,
+ /* 1050 */ 37, 37, 437, 38, 38, 752, 368, 39, 39, 28,
+ /* 1060 */ 28, 29, 29, 215, 166, 331, 40, 40, 437, 41,
+ /* 1070 */ 41, 437, 42, 42, 437, 866, 246, 731, 437, 879,
+ /* 1080 */ 437, 256, 437, 878, 437, 267, 437, 261, 11, 11,
+ /* 1090 */ 437, 43, 43, 437, 99, 99, 437, 373, 44, 44,
+ /* 1100 */ 45, 45, 32, 32, 46, 46, 47, 47, 437, 426,
+ /* 1110 */ 33, 33, 776, 116, 116, 437, 117, 117, 437, 124,
+ /* 1120 */ 437, 777, 437, 260, 437, 957, 437, 352, 118, 118,
+ /* 1130 */ 437, 195, 437, 111, 437, 53, 53, 264, 34, 34,
+ /* 1140 */ 100, 100, 50, 50, 101, 101, 102, 102, 437, 260,
+ /* 1150 */ 98, 98, 115, 115, 113, 113, 437, 262, 437, 265,
+ /* 1160 */ 437, 943, 958, 437, 727, 437, 681, 437, 106, 106,
+ /* 1170 */ 68, 437, 893, 730, 437, 365, 105, 105, 103, 103,
+ /* 1180 */ 104, 104, 217, 52, 52, 54, 54, 51, 51, 694,
+ /* 1190 */ 259, 26, 26, 266, 30, 30, 677, 323, 433, 323,
+ /* 1200 */ 674, 423, 427, 943, 958, 114, 114, 431, 681, 865,
+ /* 1210 */ 1277, 233, 366, 714, 112, 20, 154, 704, 703, 810,
+ /* 1220 */ 914, 55, 159, 311, 798, 255, 383, 194, 68, 200,
+ /* 1230 */ 21, 694, 268, 114, 114, 114, 270, 711, 712, 68,
+ /* 1240 */ 114, 739, 770, 715, 71, 194, 861, 875, 875, 200,
+ /* 1250 */ 696, 865, 874, 874, 679, 699, 273, 110, 229, 419,
+ /* 1260 */ 768, 810, 799, 378, 748, 759, 418, 210, 294, 281,
+ /* 1270 */ 295, 806, 283, 682, 676, 665, 664, 666, 933, 151,
+ /* 1280 */ 285, 7, 1267, 308, 251, 790, 354, 244, 892, 364,
+ /* 1290 */ 287, 422, 300, 164, 160, 936, 974, 127, 197, 137,
+ /* 1300 */ 909, 907, 971, 388, 276, 863, 862, 56, 698, 325,
+ /* 1310 */ 148, 59, 122, 66, 356, 381, 357, 176, 152, 62,
+ /* 1320 */ 371, 130, 877, 181, 377, 760, 211, 182, 132, 133,
+ /* 1330 */ 134, 135, 258, 146, 140, 795, 787, 263, 183, 379,
+ /* 1340 */ 667, 394, 184, 332, 894, 314, 718, 717, 857, 716,
+ /* 1350 */ 696, 315, 709, 690, 65, 196, 6, 408, 289, 708,
+ /* 1360 */ 275, 689, 688, 948, 756, 757, 280, 282, 425, 755,
+ /* 1370 */ 284, 336, 73, 67, 754, 429, 411, 96, 286, 413,
+ /* 1380 */ 205, 934, 673, 22, 209, 440, 119, 120, 109, 206,
+ /* 1390 */ 208, 441, 662, 661, 656, 843, 654, 343, 158, 236,
+ /* 1400 */ 170, 347, 107, 227, 121, 738, 873, 298, 296, 297,
+ /* 1410 */ 299, 871, 794, 128, 129, 728, 230, 131, 175, 250,
+ /* 1420 */ 888, 136, 138, 231, 232, 139, 60, 61, 891, 178,
+ /* 1430 */ 179, 887, 8, 13, 180, 257, 880, 968, 194, 141,
+ /* 1440 */ 142, 376, 153, 670, 380, 185, 143, 277, 63, 384,
+ /* 1450 */ 14, 707, 271, 15, 389, 64, 319, 320, 126, 228,
+ /* 1460 */ 813, 812, 841, 736, 123, 16, 401, 740, 4, 769,
+ /* 1470 */ 165, 212, 214, 193, 144, 764, 71, 68, 17, 18,
+ /* 1480 */ 856, 842, 840, 897, 845, 896, 199, 198, 923, 155,
+ /* 1490 */ 424, 929, 924, 156, 201, 202, 428, 844, 157, 203,
+ /* 1500 */ 811, 680, 81, 1269, 1268, 301, 304,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 19, 95, 53, 97, 22, 24, 24, 101, 27, 28,
@@ -131248,14 +132089,14 @@ static const YYCODETYPE yy_lookahead[] = {
/* 20 */ 39, 40, 41, 152, 43, 44, 45, 46, 47, 48,
/* 30 */ 49, 50, 51, 52, 53, 19, 55, 55, 132, 133,
/* 40 */ 134, 1, 2, 27, 28, 29, 30, 31, 32, 33,
- /* 50 */ 34, 35, 36, 37, 38, 39, 40, 41, 92, 43,
+ /* 50 */ 34, 35, 36, 37, 38, 39, 40, 41, 187, 43,
/* 60 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
/* 70 */ 47, 48, 49, 50, 51, 52, 53, 61, 97, 97,
/* 80 */ 19, 49, 50, 51, 52, 53, 70, 26, 27, 28,
/* 90 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
/* 100 */ 39, 40, 41, 152, 43, 44, 45, 46, 47, 48,
/* 110 */ 49, 50, 51, 52, 53, 144, 145, 146, 147, 19,
- /* 120 */ 249, 22, 172, 172, 173, 52, 53, 27, 28, 29,
+ /* 120 */ 137, 22, 139, 172, 173, 52, 53, 27, 28, 29,
/* 130 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
/* 140 */ 40, 41, 81, 43, 44, 45, 46, 47, 48, 49,
/* 150 */ 50, 51, 52, 53, 55, 56, 19, 152, 207, 208,
@@ -131265,269 +132106,271 @@ static const YYCODETYPE yy_lookahead[] = {
/* 190 */ 53, 19, 0, 1, 2, 23, 97, 98, 193, 27,
/* 200 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
/* 210 */ 38, 39, 40, 41, 152, 43, 44, 45, 46, 47,
- /* 220 */ 48, 49, 50, 51, 52, 53, 19, 22, 23, 172,
- /* 230 */ 23, 26, 119, 120, 27, 28, 29, 30, 31, 32,
+ /* 220 */ 48, 49, 50, 51, 52, 53, 19, 22, 23, 163,
+ /* 230 */ 23, 26, 190, 191, 27, 28, 29, 30, 31, 32,
/* 240 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 187,
/* 250 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 260 */ 53, 19, 221, 222, 223, 23, 168, 169, 170, 27,
+ /* 260 */ 53, 19, 196, 22, 23, 23, 49, 26, 92, 27,
/* 270 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- /* 280 */ 38, 39, 40, 41, 152, 43, 44, 45, 46, 47,
- /* 290 */ 48, 49, 50, 51, 52, 53, 19, 157, 22, 23,
- /* 300 */ 23, 96, 26, 172, 27, 28, 29, 30, 31, 32,
- /* 310 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 187,
+ /* 280 */ 38, 39, 40, 41, 172, 43, 44, 45, 46, 47,
+ /* 290 */ 48, 49, 50, 51, 52, 53, 19, 221, 222, 223,
+ /* 300 */ 23, 96, 119, 120, 27, 28, 29, 30, 31, 32,
+ /* 310 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 172,
/* 320 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 330 */ 53, 19, 108, 109, 110, 221, 222, 223, 185, 27,
+ /* 330 */ 53, 19, 152, 116, 221, 222, 223, 96, 121, 27,
/* 340 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- /* 350 */ 38, 39, 40, 41, 240, 43, 44, 45, 46, 47,
- /* 360 */ 48, 49, 50, 51, 52, 53, 19, 227, 22, 23,
- /* 370 */ 230, 22, 96, 152, 27, 28, 29, 30, 31, 32,
+ /* 350 */ 38, 39, 40, 41, 241, 43, 44, 45, 46, 47,
+ /* 360 */ 48, 49, 50, 51, 52, 53, 19, 157, 168, 169,
+ /* 370 */ 170, 22, 190, 191, 27, 28, 29, 30, 31, 32,
/* 380 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 30,
/* 390 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 400 */ 53, 19, 190, 191, 55, 56, 24, 190, 191, 27,
+ /* 400 */ 53, 19, 172, 152, 55, 56, 24, 247, 248, 27,
/* 410 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
/* 420 */ 38, 39, 40, 41, 152, 43, 44, 45, 46, 47,
- /* 430 */ 48, 49, 50, 51, 52, 53, 168, 169, 170, 179,
- /* 440 */ 180, 171, 96, 19, 172, 173, 97, 98, 188, 179,
+ /* 430 */ 48, 49, 50, 51, 52, 53, 146, 147, 228, 179,
+ /* 440 */ 180, 231, 185, 19, 172, 173, 97, 98, 188, 26,
/* 450 */ 138, 27, 28, 29, 30, 31, 32, 33, 34, 35,
/* 460 */ 36, 37, 38, 39, 40, 41, 107, 43, 44, 45,
/* 470 */ 46, 47, 48, 49, 50, 51, 52, 53, 19, 207,
/* 480 */ 208, 30, 31, 32, 33, 138, 27, 28, 29, 30,
/* 490 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- /* 500 */ 41, 181, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 510 */ 51, 52, 53, 19, 152, 7, 8, 9, 49, 22,
- /* 520 */ 19, 24, 28, 29, 30, 31, 32, 33, 34, 35,
+ /* 500 */ 41, 250, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 510 */ 51, 52, 53, 19, 168, 169, 170, 7, 8, 9,
+ /* 520 */ 19, 152, 28, 29, 30, 31, 32, 33, 34, 35,
/* 530 */ 36, 37, 38, 39, 40, 41, 152, 43, 44, 45,
/* 540 */ 46, 47, 48, 49, 50, 51, 52, 53, 19, 108,
- /* 550 */ 109, 110, 101, 55, 53, 193, 172, 173, 29, 30,
+ /* 550 */ 109, 110, 101, 130, 53, 152, 172, 173, 29, 30,
/* 560 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
/* 570 */ 41, 152, 43, 44, 45, 46, 47, 48, 49, 50,
/* 580 */ 51, 52, 53, 19, 20, 116, 22, 23, 169, 170,
- /* 590 */ 121, 207, 85, 55, 56, 97, 19, 20, 195, 22,
- /* 600 */ 99, 100, 101, 102, 103, 104, 105, 12, 152, 206,
+ /* 590 */ 121, 207, 85, 55, 56, 26, 19, 20, 101, 22,
+ /* 600 */ 99, 100, 101, 102, 103, 104, 105, 152, 152, 112,
/* 610 */ 210, 47, 48, 112, 152, 108, 109, 110, 54, 55,
/* 620 */ 56, 221, 222, 223, 47, 48, 119, 120, 172, 173,
- /* 630 */ 66, 54, 55, 56, 101, 97, 98, 99, 148, 149,
- /* 640 */ 102, 103, 104, 66, 154, 112, 156, 83, 229, 47,
- /* 650 */ 48, 113, 57, 163, 194, 195, 92, 246, 247, 95,
- /* 660 */ 83, 97, 98, 207, 208, 101, 206, 59, 73, 92,
- /* 670 */ 75, 63, 95, 163, 97, 98, 194, 195, 101, 219,
- /* 680 */ 85, 181, 19, 152, 175, 77, 196, 152, 206, 19,
- /* 690 */ 20, 199, 22, 30, 163, 11, 132, 133, 134, 135,
- /* 700 */ 136, 209, 152, 172, 173, 152, 196, 172, 173, 132,
- /* 710 */ 133, 134, 135, 136, 164, 92, 213, 47, 48, 49,
- /* 720 */ 92, 186, 169, 170, 54, 55, 56, 196, 100, 219,
- /* 730 */ 221, 222, 223, 243, 132, 133, 66, 175, 207, 208,
- /* 740 */ 152, 231, 119, 120, 19, 20, 236, 22, 152, 38,
+ /* 630 */ 66, 54, 55, 56, 152, 97, 98, 99, 148, 149,
+ /* 640 */ 102, 103, 104, 66, 154, 23, 156, 83, 26, 230,
+ /* 650 */ 152, 113, 152, 163, 172, 173, 92, 92, 21, 95,
+ /* 660 */ 83, 97, 98, 207, 208, 101, 152, 98, 186, 92,
+ /* 670 */ 172, 173, 95, 218, 97, 98, 152, 99, 101, 217,
+ /* 680 */ 102, 103, 104, 152, 119, 120, 196, 55, 56, 19,
+ /* 690 */ 20, 113, 22, 124, 163, 11, 132, 133, 134, 135,
+ /* 700 */ 136, 152, 152, 172, 173, 207, 208, 152, 152, 132,
+ /* 710 */ 133, 134, 135, 136, 164, 152, 84, 47, 48, 49,
+ /* 720 */ 98, 181, 152, 152, 54, 55, 56, 196, 91, 97,
+ /* 730 */ 98, 160, 218, 163, 244, 164, 66, 152, 207, 208,
+ /* 740 */ 103, 217, 172, 173, 19, 20, 124, 22, 193, 38,
/* 750 */ 39, 40, 41, 83, 43, 44, 45, 46, 47, 48,
- /* 760 */ 49, 50, 51, 52, 53, 95, 152, 97, 98, 85,
- /* 770 */ 107, 101, 47, 48, 163, 112, 92, 152, 152, 54,
- /* 780 */ 55, 56, 229, 221, 222, 223, 172, 173, 163, 49,
- /* 790 */ 152, 66, 108, 109, 110, 55, 56, 172, 173, 163,
- /* 800 */ 186, 22, 132, 133, 134, 135, 136, 196, 83, 43,
+ /* 760 */ 49, 50, 51, 52, 53, 95, 196, 97, 98, 85,
+ /* 770 */ 152, 101, 47, 48, 181, 85, 92, 140, 193, 54,
+ /* 780 */ 55, 56, 92, 49, 195, 55, 56, 175, 163, 55,
+ /* 790 */ 56, 66, 108, 109, 110, 206, 163, 242, 108, 109,
+ /* 800 */ 110, 175, 132, 133, 134, 135, 136, 152, 83, 43,
/* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 820 */ 95, 196, 97, 98, 85, 99, 101, 152, 102, 103,
- /* 830 */ 104, 92, 196, 146, 147, 152, 181, 97, 98, 113,
- /* 840 */ 19, 20, 152, 22, 218, 22, 116, 108, 109, 110,
- /* 850 */ 152, 121, 55, 56, 12, 219, 218, 132, 133, 134,
- /* 860 */ 135, 136, 172, 173, 55, 56, 55, 56, 47, 48,
- /* 870 */ 172, 173, 236, 152, 5, 54, 55, 56, 55, 10,
- /* 880 */ 11, 12, 13, 14, 186, 152, 17, 66, 47, 48,
- /* 890 */ 152, 210, 16, 84, 97, 98, 55, 56, 21, 57,
- /* 900 */ 217, 122, 22, 152, 83, 152, 97, 98, 97, 98,
- /* 910 */ 172, 173, 152, 152, 224, 73, 95, 75, 97, 98,
- /* 920 */ 97, 124, 101, 172, 173, 164, 193, 47, 48, 60,
- /* 930 */ 163, 62, 172, 173, 24, 55, 56, 186, 97, 98,
- /* 940 */ 71, 100, 55, 56, 183, 207, 185, 152, 107, 23,
- /* 950 */ 109, 82, 26, 132, 133, 134, 135, 136, 89, 152,
- /* 960 */ 26, 92, 93, 196, 88, 55, 90, 152, 91, 152,
- /* 970 */ 217, 152, 152, 132, 133, 95, 152, 97, 211, 212,
- /* 980 */ 103, 101, 152, 114, 97, 98, 152, 172, 173, 19,
+ /* 820 */ 95, 196, 97, 98, 55, 56, 101, 97, 98, 196,
+ /* 830 */ 152, 97, 98, 221, 222, 223, 211, 212, 22, 23,
+ /* 840 */ 19, 20, 181, 22, 19, 152, 152, 221, 222, 223,
+ /* 850 */ 172, 173, 219, 19, 124, 30, 238, 132, 133, 134,
+ /* 860 */ 135, 136, 169, 170, 186, 232, 97, 98, 47, 48,
+ /* 870 */ 237, 152, 217, 152, 5, 54, 55, 56, 152, 10,
+ /* 880 */ 11, 12, 13, 14, 47, 48, 17, 66, 47, 48,
+ /* 890 */ 56, 172, 173, 124, 194, 195, 55, 56, 172, 173,
+ /* 900 */ 152, 152, 22, 152, 83, 186, 206, 108, 109, 110,
+ /* 910 */ 22, 23, 96, 152, 193, 12, 95, 152, 97, 98,
+ /* 920 */ 172, 173, 101, 230, 152, 164, 12, 47, 48, 60,
+ /* 930 */ 152, 62, 107, 207, 186, 55, 56, 112, 97, 98,
+ /* 940 */ 71, 100, 193, 152, 183, 152, 185, 152, 107, 152,
+ /* 950 */ 109, 82, 16, 132, 133, 134, 135, 136, 89, 152,
+ /* 960 */ 57, 92, 93, 172, 173, 172, 173, 172, 173, 132,
+ /* 970 */ 133, 57, 152, 132, 133, 95, 73, 97, 75, 55,
+ /* 980 */ 56, 101, 163, 114, 96, 245, 246, 73, 85, 75,
/* 990 */ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- /* 1000 */ 48, 49, 50, 51, 52, 53, 65, 97, 152, 152,
- /* 1010 */ 141, 124, 132, 133, 134, 152, 140, 140, 152, 78,
- /* 1020 */ 152, 233, 152, 193, 98, 152, 56, 86, 172, 173,
- /* 1030 */ 166, 167, 237, 152, 217, 172, 173, 152, 172, 173,
- /* 1040 */ 172, 173, 172, 173, 237, 172, 173, 152, 152, 152,
- /* 1050 */ 124, 152, 111, 172, 173, 152, 237, 172, 173, 152,
- /* 1060 */ 55, 152, 26, 152, 130, 152, 152, 172, 173, 172,
- /* 1070 */ 173, 172, 173, 249, 152, 172, 173, 152, 61, 172,
- /* 1080 */ 173, 172, 173, 172, 173, 172, 173, 70, 152, 193,
- /* 1090 */ 152, 137, 152, 139, 172, 173, 152, 172, 173, 152,
- /* 1100 */ 152, 152, 97, 152, 26, 152, 163, 152, 172, 173,
- /* 1110 */ 172, 173, 172, 173, 152, 16, 172, 173, 26, 172,
- /* 1120 */ 173, 172, 173, 172, 173, 172, 173, 172, 173, 163,
- /* 1130 */ 152, 152, 152, 22, 172, 173, 152, 241, 152, 196,
- /* 1140 */ 152, 193, 106, 152, 152, 152, 163, 152, 37, 152,
- /* 1150 */ 172, 173, 172, 173, 152, 152, 172, 173, 172, 173,
- /* 1160 */ 172, 173, 196, 172, 173, 172, 173, 172, 173, 172,
- /* 1170 */ 173, 152, 152, 152, 172, 173, 98, 152, 152, 196,
- /* 1180 */ 160, 22, 23, 19, 164, 193, 152, 88, 232, 90,
- /* 1190 */ 191, 172, 173, 172, 173, 163, 193, 172, 173, 166,
- /* 1200 */ 167, 163, 124, 163, 244, 245, 23, 211, 212, 26,
- /* 1210 */ 55, 23, 55, 23, 26, 123, 26, 152, 23, 193,
- /* 1220 */ 56, 26, 23, 23, 23, 26, 26, 26, 196, 100,
- /* 1230 */ 101, 7, 8, 152, 196, 23, 196, 23, 26, 152,
- /* 1240 */ 26, 132, 133, 23, 132, 133, 26, 152, 152, 152,
- /* 1250 */ 152, 210, 97, 152, 97, 96, 152, 152, 152, 152,
- /* 1260 */ 152, 210, 152, 210, 197, 152, 152, 152, 152, 152,
- /* 1270 */ 152, 152, 152, 152, 152, 152, 152, 198, 150, 176,
- /* 1280 */ 214, 201, 214, 238, 201, 238, 184, 214, 226, 200,
- /* 1290 */ 155, 198, 67, 122, 242, 159, 159, 69, 239, 239,
- /* 1300 */ 159, 175, 175, 22, 220, 180, 175, 27, 130, 18,
- /* 1310 */ 159, 18, 158, 137, 220, 159, 158, 235, 74, 189,
- /* 1320 */ 234, 159, 159, 158, 22, 192, 192, 177, 159, 159,
- /* 1330 */ 192, 192, 189, 201, 189, 158, 107, 158, 177, 76,
- /* 1340 */ 174, 201, 174, 201, 106, 159, 174, 125, 174, 182,
- /* 1350 */ 177, 176, 107, 159, 174, 137, 174, 53, 174, 129,
- /* 1360 */ 216, 215, 215, 182, 216, 216, 177, 215, 126, 216,
- /* 1370 */ 177, 128, 25, 127, 26, 215, 13, 162, 161, 153,
- /* 1380 */ 153, 6, 151, 151, 151, 151, 165, 178, 165, 178,
- /* 1390 */ 4, 3, 22, 142, 15, 94, 16, 205, 120, 202,
- /* 1400 */ 204, 203, 165, 201, 23, 23, 131, 111, 123, 20,
- /* 1410 */ 225, 125, 16, 1, 131, 228, 111, 123, 56, 228,
- /* 1420 */ 37, 37, 64, 1, 5, 122, 22, 107, 140, 80,
- /* 1430 */ 80, 26, 87, 72, 107, 24, 20, 19, 112, 105,
- /* 1440 */ 23, 68, 22, 79, 79, 22, 22, 22, 58, 22,
- /* 1450 */ 245, 248, 248, 79, 23, 23, 23, 116, 22, 122,
- /* 1460 */ 23, 22, 56, 23, 26, 23, 64, 22, 124, 26,
- /* 1470 */ 26, 64, 64, 23, 23, 23, 11, 23, 22, 26,
- /* 1480 */ 23, 22, 24, 1, 23, 22, 26, 250, 24, 23,
- /* 1490 */ 22, 122, 23, 23, 22, 15, 23, 250, 122, 122,
- /* 1500 */ 122,
+ /* 1000 */ 48, 49, 50, 51, 52, 53, 194, 195, 152, 171,
+ /* 1010 */ 141, 152, 132, 133, 134, 196, 225, 179, 206, 65,
+ /* 1020 */ 152, 97, 98, 152, 88, 152, 90, 152, 172, 173,
+ /* 1030 */ 152, 219, 78, 152, 152, 238, 152, 152, 219, 152,
+ /* 1040 */ 86, 152, 152, 172, 173, 238, 152, 172, 173, 152,
+ /* 1050 */ 172, 173, 152, 172, 173, 213, 237, 172, 173, 172,
+ /* 1060 */ 173, 172, 173, 211, 212, 111, 172, 173, 152, 172,
+ /* 1070 */ 173, 152, 172, 173, 152, 193, 140, 193, 152, 59,
+ /* 1080 */ 152, 152, 152, 63, 152, 16, 152, 152, 172, 173,
+ /* 1090 */ 152, 172, 173, 152, 172, 173, 152, 77, 172, 173,
+ /* 1100 */ 172, 173, 172, 173, 172, 173, 172, 173, 152, 250,
+ /* 1110 */ 172, 173, 61, 172, 173, 152, 172, 173, 152, 92,
+ /* 1120 */ 152, 70, 152, 152, 152, 26, 152, 100, 172, 173,
+ /* 1130 */ 152, 24, 152, 22, 152, 172, 173, 152, 172, 173,
+ /* 1140 */ 172, 173, 172, 173, 172, 173, 172, 173, 152, 152,
+ /* 1150 */ 172, 173, 172, 173, 172, 173, 152, 88, 152, 90,
+ /* 1160 */ 152, 55, 55, 152, 193, 152, 55, 152, 172, 173,
+ /* 1170 */ 26, 152, 163, 163, 152, 19, 172, 173, 172, 173,
+ /* 1180 */ 172, 173, 22, 172, 173, 172, 173, 172, 173, 55,
+ /* 1190 */ 193, 172, 173, 152, 172, 173, 166, 167, 166, 167,
+ /* 1200 */ 163, 163, 163, 97, 97, 196, 196, 163, 97, 55,
+ /* 1210 */ 23, 199, 56, 26, 22, 22, 24, 100, 101, 55,
+ /* 1220 */ 23, 209, 123, 26, 23, 23, 23, 26, 26, 26,
+ /* 1230 */ 37, 97, 152, 196, 196, 196, 23, 7, 8, 26,
+ /* 1240 */ 196, 23, 23, 152, 26, 26, 23, 132, 133, 26,
+ /* 1250 */ 106, 97, 132, 133, 23, 152, 152, 26, 210, 191,
+ /* 1260 */ 152, 97, 152, 234, 152, 152, 152, 233, 152, 210,
+ /* 1270 */ 152, 152, 210, 152, 152, 152, 152, 152, 152, 197,
+ /* 1280 */ 210, 198, 122, 150, 239, 201, 214, 214, 201, 239,
+ /* 1290 */ 214, 227, 200, 184, 198, 155, 67, 243, 122, 22,
+ /* 1300 */ 159, 159, 69, 176, 175, 175, 175, 240, 180, 159,
+ /* 1310 */ 220, 240, 27, 130, 18, 18, 159, 158, 220, 137,
+ /* 1320 */ 159, 189, 236, 158, 74, 159, 159, 158, 192, 192,
+ /* 1330 */ 192, 192, 235, 22, 189, 189, 201, 159, 158, 177,
+ /* 1340 */ 159, 107, 158, 76, 201, 177, 174, 174, 201, 174,
+ /* 1350 */ 106, 177, 182, 174, 107, 159, 22, 125, 159, 182,
+ /* 1360 */ 174, 176, 174, 174, 216, 216, 215, 215, 177, 216,
+ /* 1370 */ 215, 53, 137, 128, 216, 177, 127, 129, 215, 126,
+ /* 1380 */ 25, 13, 162, 26, 6, 161, 165, 165, 178, 153,
+ /* 1390 */ 153, 151, 151, 151, 151, 224, 4, 3, 22, 142,
+ /* 1400 */ 15, 94, 16, 178, 165, 205, 23, 202, 204, 203,
+ /* 1410 */ 201, 23, 120, 131, 111, 20, 226, 123, 125, 16,
+ /* 1420 */ 1, 123, 131, 229, 229, 111, 37, 37, 56, 64,
+ /* 1430 */ 122, 1, 5, 22, 107, 140, 80, 87, 26, 80,
+ /* 1440 */ 107, 72, 24, 20, 19, 105, 22, 112, 22, 79,
+ /* 1450 */ 22, 58, 23, 22, 79, 22, 249, 249, 246, 79,
+ /* 1460 */ 23, 23, 23, 116, 68, 22, 26, 23, 22, 56,
+ /* 1470 */ 122, 23, 23, 64, 22, 124, 26, 26, 64, 64,
+ /* 1480 */ 23, 23, 23, 23, 11, 23, 22, 26, 23, 22,
+ /* 1490 */ 24, 1, 23, 22, 26, 122, 24, 23, 22, 122,
+ /* 1500 */ 23, 23, 22, 122, 122, 23, 15,
};
#define YY_SHIFT_USE_DFLT (-95)
-#define YY_SHIFT_COUNT (439)
+#define YY_SHIFT_COUNT (442)
#define YY_SHIFT_MIN (-94)
-#define YY_SHIFT_MAX (1482)
+#define YY_SHIFT_MAX (1491)
static const short yy_shift_ofst[] = {
- /* 0 */ 40, 564, 869, 577, 725, 725, 725, 739, -19, 16,
- /* 10 */ 16, 100, 725, 725, 725, 725, 725, 725, 725, 841,
- /* 20 */ 841, 538, 507, 684, 623, 61, 137, 172, 207, 242,
- /* 30 */ 277, 312, 347, 382, 424, 424, 424, 424, 424, 424,
- /* 40 */ 424, 424, 424, 424, 424, 424, 424, 424, 424, 459,
- /* 50 */ 424, 494, 529, 529, 670, 725, 725, 725, 725, 725,
+ /* 0 */ 40, 564, 869, 577, 725, 725, 725, 725, 690, -19,
+ /* 10 */ 16, 16, 100, 725, 725, 725, 725, 725, 725, 725,
+ /* 20 */ 841, 841, 538, 507, 684, 565, 61, 137, 172, 207,
+ /* 30 */ 242, 277, 312, 347, 382, 424, 424, 424, 424, 424,
+ /* 40 */ 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
+ /* 50 */ 459, 424, 494, 529, 529, 670, 725, 725, 725, 725,
/* 60 */ 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
/* 70 */ 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
- /* 80 */ 725, 725, 725, 821, 725, 725, 725, 725, 725, 725,
- /* 90 */ 725, 725, 725, 725, 725, 725, 725, 952, 711, 711,
- /* 100 */ 711, 711, 711, 766, 23, 32, 811, 877, 663, 602,
- /* 110 */ 602, 811, 73, 113, -51, -95, -95, -95, 501, 501,
- /* 120 */ 501, 595, 595, 809, 205, 276, 811, 811, 811, 811,
- /* 130 */ 811, 811, 811, 811, 811, 811, 811, 811, 811, 811,
- /* 140 */ 811, 811, 811, 811, 811, 811, 192, 628, 498, 498,
- /* 150 */ 113, -34, -34, -34, -34, -34, -34, -95, -95, -95,
- /* 160 */ 880, -94, -94, 726, 740, 99, 797, 887, 349, 811,
- /* 170 */ 811, 811, 811, 811, 811, 811, 811, 811, 811, 811,
- /* 180 */ 811, 811, 811, 811, 811, 811, 941, 941, 941, 811,
- /* 190 */ 811, 926, 811, 811, 811, -18, 811, 811, 842, 811,
- /* 200 */ 811, 811, 811, 811, 811, 811, 811, 811, 811, 224,
- /* 210 */ 608, 910, 910, 910, 1078, 45, 469, 508, 934, 970,
- /* 220 */ 970, 1164, 934, 1164, 1036, 1183, 359, 1017, 970, 954,
- /* 230 */ 1017, 1017, 1092, 730, 497, 1225, 1171, 1171, 1228, 1228,
- /* 240 */ 1171, 1281, 1280, 1178, 1291, 1291, 1291, 1291, 1171, 1293,
- /* 250 */ 1178, 1281, 1280, 1280, 1178, 1171, 1293, 1176, 1244, 1171,
- /* 260 */ 1171, 1293, 1302, 1171, 1293, 1171, 1293, 1302, 1229, 1229,
- /* 270 */ 1229, 1263, 1302, 1229, 1238, 1229, 1263, 1229, 1229, 1222,
- /* 280 */ 1245, 1222, 1245, 1222, 1245, 1222, 1245, 1171, 1171, 1218,
- /* 290 */ 1302, 1304, 1304, 1302, 1230, 1242, 1243, 1246, 1178, 1347,
- /* 300 */ 1348, 1363, 1363, 1375, 1375, 1375, 1375, -95, -95, -95,
- /* 310 */ -95, -95, -95, -95, -95, 451, 876, 346, 1159, 1099,
- /* 320 */ 441, 823, 1188, 1111, 1190, 1195, 1199, 1200, 1005, 1129,
- /* 330 */ 1224, 533, 1201, 1212, 1155, 1214, 1109, 1112, 1220, 1157,
- /* 340 */ 779, 1386, 1388, 1370, 1251, 1379, 1301, 1380, 1381, 1382,
- /* 350 */ 1278, 1275, 1296, 1285, 1389, 1286, 1396, 1412, 1294, 1283,
- /* 360 */ 1383, 1384, 1305, 1362, 1358, 1303, 1422, 1419, 1404, 1320,
- /* 370 */ 1288, 1349, 1405, 1350, 1345, 1361, 1327, 1411, 1416, 1418,
- /* 380 */ 1326, 1334, 1420, 1364, 1423, 1424, 1417, 1425, 1365, 1390,
- /* 390 */ 1427, 1374, 1373, 1431, 1432, 1433, 1341, 1436, 1437, 1439,
- /* 400 */ 1438, 1337, 1440, 1442, 1406, 1402, 1445, 1344, 1443, 1407,
- /* 410 */ 1444, 1408, 1443, 1450, 1451, 1452, 1453, 1454, 1456, 1465,
- /* 420 */ 1457, 1459, 1458, 1460, 1461, 1463, 1464, 1460, 1466, 1468,
- /* 430 */ 1469, 1470, 1472, 1369, 1376, 1377, 1378, 1473, 1480, 1482,
+ /* 80 */ 725, 725, 725, 725, 821, 725, 725, 725, 725, 725,
+ /* 90 */ 725, 725, 725, 725, 725, 725, 725, 725, 952, 711,
+ /* 100 */ 711, 711, 711, 711, 766, 23, 32, 924, 637, 825,
+ /* 110 */ 837, 837, 924, 73, 183, -51, -95, -95, -95, 501,
+ /* 120 */ 501, 501, 903, 903, 632, 205, 241, 924, 924, 924,
+ /* 130 */ 924, 924, 924, 924, 924, 924, 924, 924, 924, 924,
+ /* 140 */ 924, 924, 924, 924, 924, 924, 924, 192, 1027, 1106,
+ /* 150 */ 1106, 183, 176, 176, 176, 176, 176, 176, -95, -95,
+ /* 160 */ -95, 880, -94, -94, 578, 734, 99, 730, 769, 349,
+ /* 170 */ 924, 924, 924, 924, 924, 924, 924, 924, 924, 924,
+ /* 180 */ 924, 924, 924, 924, 924, 924, 924, 954, 954, 954,
+ /* 190 */ 924, 924, 622, 924, 924, 924, -18, 924, 924, 914,
+ /* 200 */ 924, 924, 924, 924, 924, 924, 924, 924, 924, 924,
+ /* 210 */ 441, 1020, 1107, 1107, 1107, 569, 45, 217, 510, 423,
+ /* 220 */ 834, 834, 1156, 423, 1156, 1144, 1187, 359, 1051, 834,
+ /* 230 */ -17, 1051, 1051, 1099, 469, 1192, 1229, 1176, 1176, 1233,
+ /* 240 */ 1233, 1176, 1277, 1285, 1183, 1296, 1296, 1296, 1296, 1176,
+ /* 250 */ 1297, 1183, 1277, 1285, 1285, 1183, 1176, 1297, 1182, 1250,
+ /* 260 */ 1176, 1176, 1297, 1311, 1176, 1297, 1176, 1297, 1311, 1234,
+ /* 270 */ 1234, 1234, 1267, 1311, 1234, 1244, 1234, 1267, 1234, 1234,
+ /* 280 */ 1232, 1247, 1232, 1247, 1232, 1247, 1232, 1247, 1176, 1334,
+ /* 290 */ 1176, 1235, 1311, 1318, 1318, 1311, 1248, 1253, 1245, 1249,
+ /* 300 */ 1183, 1355, 1357, 1368, 1368, 1378, 1378, 1378, 1378, -95,
+ /* 310 */ -95, -95, -95, -95, -95, -95, -95, 451, 936, 816,
+ /* 320 */ 888, 1069, 799, 1111, 1197, 1193, 1201, 1202, 1203, 1213,
+ /* 330 */ 1134, 1117, 1230, 497, 1218, 1219, 1154, 1223, 1115, 1120,
+ /* 340 */ 1231, 1164, 1160, 1392, 1394, 1376, 1257, 1385, 1307, 1386,
+ /* 350 */ 1383, 1388, 1292, 1282, 1303, 1294, 1395, 1293, 1403, 1419,
+ /* 360 */ 1298, 1291, 1389, 1390, 1314, 1372, 1365, 1308, 1430, 1427,
+ /* 370 */ 1411, 1327, 1295, 1356, 1412, 1359, 1350, 1369, 1333, 1418,
+ /* 380 */ 1423, 1425, 1335, 1340, 1424, 1370, 1426, 1428, 1429, 1431,
+ /* 390 */ 1375, 1393, 1433, 1380, 1396, 1437, 1438, 1439, 1347, 1443,
+ /* 400 */ 1444, 1446, 1440, 1348, 1448, 1449, 1413, 1409, 1452, 1351,
+ /* 410 */ 1450, 1414, 1451, 1415, 1457, 1450, 1458, 1459, 1460, 1461,
+ /* 420 */ 1462, 1464, 1473, 1465, 1467, 1466, 1468, 1469, 1471, 1472,
+ /* 430 */ 1468, 1474, 1476, 1477, 1478, 1480, 1373, 1377, 1381, 1382,
+ /* 440 */ 1482, 1491, 1490,
};
#define YY_REDUCE_USE_DFLT (-130)
-#define YY_REDUCE_COUNT (314)
+#define YY_REDUCE_COUNT (316)
#define YY_REDUCE_MIN (-129)
-#define YY_REDUCE_MAX (1237)
+#define YY_REDUCE_MAX (1243)
static const short yy_reduce_ofst[] = {
- /* 0 */ -29, 531, 490, 625, -49, 272, 456, 510, 400, 509,
- /* 10 */ 562, 114, 535, 614, 698, 384, 738, 751, 690, 419,
- /* 20 */ 553, 761, 460, 636, 767, 41, 41, 41, 41, 41,
- /* 30 */ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- /* 40 */ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- /* 50 */ 41, 41, 41, 41, 760, 815, 856, 863, 866, 868,
- /* 60 */ 870, 873, 881, 885, 895, 897, 899, 903, 907, 909,
- /* 70 */ 911, 913, 922, 925, 936, 938, 940, 944, 947, 949,
- /* 80 */ 951, 953, 955, 962, 978, 980, 984, 986, 988, 991,
- /* 90 */ 993, 995, 997, 1002, 1019, 1021, 1025, 41, 41, 41,
- /* 100 */ 41, 41, 41, 41, 41, 41, 896, 140, 260, 98,
- /* 110 */ 268, 1020, 41, 482, 41, 41, 41, 41, 270, 270,
- /* 120 */ 270, 212, 217, -129, 411, 411, 550, 5, 626, 362,
- /* 130 */ 733, 830, 992, 1003, 1026, 795, 683, 807, 638, 819,
- /* 140 */ 753, 948, 62, 817, 824, 132, 687, 611, 864, 1033,
- /* 150 */ 403, 943, 966, 983, 1032, 1038, 1040, 960, 996, 492,
- /* 160 */ -50, 57, 131, 153, 221, 462, 588, 596, 675, 721,
- /* 170 */ 820, 834, 857, 914, 979, 1034, 1065, 1081, 1087, 1095,
- /* 180 */ 1096, 1097, 1098, 1101, 1104, 1105, 320, 500, 655, 1106,
- /* 190 */ 1107, 503, 1108, 1110, 1113, 681, 1114, 1115, 999, 1116,
- /* 200 */ 1117, 1118, 221, 1119, 1120, 1121, 1122, 1123, 1124, 788,
- /* 210 */ 956, 1041, 1051, 1053, 503, 1067, 1079, 1128, 1080, 1066,
- /* 220 */ 1068, 1045, 1083, 1047, 1103, 1102, 1125, 1126, 1073, 1062,
- /* 230 */ 1127, 1131, 1089, 1093, 1135, 1052, 1136, 1137, 1059, 1060,
- /* 240 */ 1141, 1084, 1130, 1132, 1133, 1134, 1138, 1139, 1151, 1154,
- /* 250 */ 1140, 1094, 1143, 1145, 1142, 1156, 1158, 1082, 1086, 1162,
- /* 260 */ 1163, 1165, 1150, 1169, 1177, 1170, 1179, 1161, 1166, 1168,
- /* 270 */ 1172, 1167, 1173, 1174, 1175, 1180, 1181, 1182, 1184, 1144,
- /* 280 */ 1146, 1148, 1147, 1149, 1152, 1153, 1160, 1186, 1194, 1185,
- /* 290 */ 1189, 1187, 1191, 1193, 1192, 1196, 1198, 1197, 1202, 1215,
- /* 300 */ 1217, 1226, 1227, 1231, 1232, 1233, 1234, 1203, 1204, 1205,
- /* 310 */ 1221, 1223, 1209, 1211, 1237,
+ /* 0 */ -29, 531, 490, 570, -49, 272, 456, 498, 633, 400,
+ /* 10 */ 612, 626, 113, 482, 678, 719, 384, 726, 748, 791,
+ /* 20 */ 419, 693, 761, 812, 819, 625, 76, 76, 76, 76,
+ /* 30 */ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ /* 40 */ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ /* 50 */ 76, 76, 76, 76, 76, 793, 795, 856, 871, 875,
+ /* 60 */ 878, 881, 885, 887, 889, 894, 897, 900, 916, 919,
+ /* 70 */ 922, 926, 928, 930, 932, 934, 938, 941, 944, 956,
+ /* 80 */ 963, 966, 968, 970, 972, 974, 978, 980, 982, 996,
+ /* 90 */ 1004, 1006, 1008, 1011, 1013, 1015, 1019, 1022, 76, 76,
+ /* 100 */ 76, 76, 76, 76, 76, 76, 76, 555, 210, 260,
+ /* 110 */ 200, 346, 571, 76, 700, 76, 76, 76, 76, 838,
+ /* 120 */ 838, 838, 42, 182, 251, 160, 160, 550, 5, 455,
+ /* 130 */ 585, 721, 749, 882, 884, 971, 618, 462, 797, 514,
+ /* 140 */ 807, 524, 997, -129, 655, 859, 62, 290, 66, 1030,
+ /* 150 */ 1032, 589, 1009, 1010, 1037, 1038, 1039, 1044, 740, 852,
+ /* 160 */ 1012, 112, 147, 230, 257, 180, 369, 403, 500, 549,
+ /* 170 */ 556, 563, 694, 751, 765, 772, 778, 820, 868, 873,
+ /* 180 */ 890, 929, 935, 985, 1041, 1080, 1091, 540, 593, 661,
+ /* 190 */ 1103, 1104, 842, 1108, 1110, 1112, 1048, 1113, 1114, 1068,
+ /* 200 */ 1116, 1118, 1119, 180, 1121, 1122, 1123, 1124, 1125, 1126,
+ /* 210 */ 1029, 1034, 1059, 1062, 1070, 842, 1082, 1083, 1133, 1084,
+ /* 220 */ 1072, 1073, 1045, 1087, 1050, 1127, 1109, 1128, 1129, 1076,
+ /* 230 */ 1064, 1130, 1131, 1092, 1096, 1140, 1054, 1141, 1142, 1067,
+ /* 240 */ 1071, 1150, 1090, 1132, 1135, 1136, 1137, 1138, 1139, 1157,
+ /* 250 */ 1159, 1143, 1098, 1145, 1146, 1147, 1161, 1165, 1086, 1097,
+ /* 260 */ 1166, 1167, 1169, 1162, 1178, 1180, 1181, 1184, 1168, 1172,
+ /* 270 */ 1173, 1175, 1170, 1174, 1179, 1185, 1186, 1177, 1188, 1189,
+ /* 280 */ 1148, 1151, 1149, 1152, 1153, 1155, 1158, 1163, 1196, 1171,
+ /* 290 */ 1199, 1190, 1191, 1194, 1195, 1198, 1200, 1204, 1206, 1205,
+ /* 300 */ 1209, 1220, 1224, 1236, 1237, 1240, 1241, 1242, 1243, 1207,
+ /* 310 */ 1208, 1212, 1221, 1222, 1210, 1225, 1239,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 1250, 1240, 1240, 1240, 1174, 1174, 1174, 1240, 1071, 1100,
- /* 10 */ 1100, 1224, 1301, 1301, 1301, 1301, 1301, 1301, 1173, 1301,
- /* 20 */ 1301, 1301, 1301, 1240, 1075, 1106, 1301, 1301, 1301, 1301,
- /* 30 */ 1301, 1301, 1301, 1301, 1223, 1225, 1114, 1113, 1206, 1087,
- /* 40 */ 1111, 1104, 1108, 1175, 1169, 1170, 1168, 1172, 1176, 1301,
- /* 50 */ 1107, 1138, 1153, 1137, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 60 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 70 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 80 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 90 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1147, 1152, 1159,
- /* 100 */ 1151, 1148, 1140, 1139, 1141, 1142, 1301, 994, 1042, 1301,
- /* 110 */ 1301, 1301, 1143, 1301, 1144, 1156, 1155, 1154, 1231, 1258,
- /* 120 */ 1257, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 130 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 140 */ 1301, 1301, 1301, 1301, 1301, 1301, 1250, 1240, 1000, 1000,
- /* 150 */ 1301, 1240, 1240, 1240, 1240, 1240, 1240, 1236, 1075, 1066,
- /* 160 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 170 */ 1228, 1226, 1301, 1187, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 180 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 190 */ 1301, 1301, 1301, 1301, 1301, 1071, 1301, 1301, 1301, 1301,
- /* 200 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1252, 1301,
- /* 210 */ 1201, 1071, 1071, 1071, 1073, 1055, 1065, 979, 1110, 1089,
- /* 220 */ 1089, 1290, 1110, 1290, 1017, 1272, 1014, 1100, 1089, 1171,
- /* 230 */ 1100, 1100, 1072, 1065, 1301, 1293, 1080, 1080, 1292, 1292,
- /* 240 */ 1080, 1119, 1045, 1110, 1051, 1051, 1051, 1051, 1080, 991,
- /* 250 */ 1110, 1119, 1045, 1045, 1110, 1080, 991, 1205, 1287, 1080,
- /* 260 */ 1080, 991, 1180, 1080, 991, 1080, 991, 1180, 1043, 1043,
- /* 270 */ 1043, 1032, 1180, 1043, 1017, 1043, 1032, 1043, 1043, 1093,
- /* 280 */ 1088, 1093, 1088, 1093, 1088, 1093, 1088, 1080, 1080, 1301,
- /* 290 */ 1180, 1184, 1184, 1180, 1105, 1094, 1103, 1101, 1110, 997,
- /* 300 */ 1035, 1255, 1255, 1251, 1251, 1251, 1251, 1298, 1298, 1236,
- /* 310 */ 1267, 1267, 1019, 1019, 1267, 1301, 1301, 1301, 1301, 1301,
- /* 320 */ 1301, 1262, 1301, 1189, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 330 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 340 */ 1125, 1301, 975, 1233, 1301, 1301, 1232, 1301, 1301, 1301,
- /* 350 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 360 */ 1301, 1301, 1301, 1301, 1301, 1289, 1301, 1301, 1301, 1301,
- /* 370 */ 1301, 1301, 1204, 1203, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 380 */ 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 390 */ 1301, 1301, 1301, 1301, 1301, 1301, 1057, 1301, 1301, 1301,
- /* 400 */ 1276, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1102, 1301,
- /* 410 */ 1095, 1301, 1280, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
- /* 420 */ 1301, 1301, 1301, 1242, 1301, 1301, 1301, 1241, 1301, 1301,
- /* 430 */ 1301, 1301, 1301, 1127, 1301, 1126, 1130, 1301, 985, 1301,
+ /* 0 */ 1258, 1248, 1248, 1248, 1180, 1180, 1180, 1180, 1248, 1077,
+ /* 10 */ 1106, 1106, 1232, 1309, 1309, 1309, 1309, 1309, 1309, 1179,
+ /* 20 */ 1309, 1309, 1309, 1309, 1248, 1081, 1112, 1309, 1309, 1309,
+ /* 30 */ 1309, 1309, 1309, 1309, 1309, 1231, 1233, 1120, 1119, 1214,
+ /* 40 */ 1093, 1117, 1110, 1114, 1181, 1175, 1176, 1174, 1178, 1182,
+ /* 50 */ 1309, 1113, 1144, 1159, 1143, 1309, 1309, 1309, 1309, 1309,
+ /* 60 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 70 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 80 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 90 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1153, 1158,
+ /* 100 */ 1165, 1157, 1154, 1146, 1145, 1147, 1148, 1309, 1000, 1048,
+ /* 110 */ 1309, 1309, 1309, 1149, 1309, 1150, 1162, 1161, 1160, 1239,
+ /* 120 */ 1266, 1265, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 130 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 140 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1258, 1248, 1006,
+ /* 150 */ 1006, 1309, 1248, 1248, 1248, 1248, 1248, 1248, 1244, 1081,
+ /* 160 */ 1072, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 170 */ 1309, 1236, 1234, 1309, 1195, 1309, 1309, 1309, 1309, 1309,
+ /* 180 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 190 */ 1309, 1309, 1309, 1309, 1309, 1309, 1077, 1309, 1309, 1309,
+ /* 200 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1260,
+ /* 210 */ 1309, 1209, 1077, 1077, 1077, 1079, 1061, 1071, 985, 1116,
+ /* 220 */ 1095, 1095, 1298, 1116, 1298, 1023, 1280, 1020, 1106, 1095,
+ /* 230 */ 1177, 1106, 1106, 1078, 1071, 1309, 1301, 1086, 1086, 1300,
+ /* 240 */ 1300, 1086, 1125, 1051, 1116, 1057, 1057, 1057, 1057, 1086,
+ /* 250 */ 997, 1116, 1125, 1051, 1051, 1116, 1086, 997, 1213, 1295,
+ /* 260 */ 1086, 1086, 997, 1188, 1086, 997, 1086, 997, 1188, 1049,
+ /* 270 */ 1049, 1049, 1038, 1188, 1049, 1023, 1049, 1038, 1049, 1049,
+ /* 280 */ 1099, 1094, 1099, 1094, 1099, 1094, 1099, 1094, 1086, 1183,
+ /* 290 */ 1086, 1309, 1188, 1192, 1192, 1188, 1111, 1100, 1109, 1107,
+ /* 300 */ 1116, 1003, 1041, 1263, 1263, 1259, 1259, 1259, 1259, 1306,
+ /* 310 */ 1306, 1244, 1275, 1275, 1025, 1025, 1275, 1309, 1309, 1309,
+ /* 320 */ 1309, 1309, 1309, 1270, 1309, 1197, 1309, 1309, 1309, 1309,
+ /* 330 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 340 */ 1309, 1309, 1131, 1309, 981, 1241, 1309, 1309, 1240, 1309,
+ /* 350 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 360 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1297, 1309, 1309,
+ /* 370 */ 1309, 1309, 1309, 1309, 1212, 1211, 1309, 1309, 1309, 1309,
+ /* 380 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 390 */ 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1063, 1309,
+ /* 400 */ 1309, 1309, 1284, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
+ /* 410 */ 1108, 1309, 1101, 1309, 1309, 1288, 1309, 1309, 1309, 1309,
+ /* 420 */ 1309, 1309, 1309, 1309, 1309, 1309, 1250, 1309, 1309, 1309,
+ /* 430 */ 1249, 1309, 1309, 1309, 1309, 1309, 1133, 1309, 1132, 1136,
+ /* 440 */ 1309, 991, 1309,
};
/********** End of lemon-generated parsing tables *****************************/
@@ -131674,9 +132517,9 @@ typedef struct yyStackEntry yyStackEntry;
/* The state of the parser is completely contained in an instance of
** the following structure */
struct yyParser {
- int yyidx; /* Index of top element in stack */
+ yyStackEntry *yytos; /* Pointer to top element of the stack */
#ifdef YYTRACKMAXSTACKDEPTH
- int yyidxMax; /* Maximum value of yyidx */
+ int yyhwm; /* High-water mark of the stack */
#endif
#ifndef YYNOERRORRECOVERY
int yyerrcnt; /* Shifts left before out of the error */
@@ -131685,6 +132528,7 @@ struct yyParser {
#if YYSTACKDEPTH<=0
int yystksz; /* Current side of the stack */
yyStackEntry *yystack; /* The parser's stack */
+ yyStackEntry yystk0; /* First stack entry */
#else
yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
#endif
@@ -131783,13 +132627,13 @@ static const char *const yyTokenName[] = {
"stl_prefix", "joinop", "indexed_opt", "on_opt",
"using_opt", "idlist", "setlist", "insert_cmd",
"idlist_opt", "likeop", "between_op", "in_op",
- "case_operand", "case_exprlist", "case_else", "uniqueflag",
- "collate", "nmnum", "trigger_decl", "trigger_cmd_list",
- "trigger_time", "trigger_event", "foreach_clause", "when_clause",
- "trigger_cmd", "trnm", "tridxby", "database_kw_opt",
- "key_opt", "add_column_fullname", "kwcolumn_opt", "create_vtab",
- "vtabarglist", "vtabarg", "vtabargtoken", "lp",
- "anylist", "wqlist",
+ "paren_exprlist", "case_operand", "case_exprlist", "case_else",
+ "uniqueflag", "collate", "nmnum", "trigger_decl",
+ "trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause",
+ "when_clause", "trigger_cmd", "trnm", "tridxby",
+ "database_kw_opt", "key_opt", "add_column_fullname", "kwcolumn_opt",
+ "create_vtab", "vtabarglist", "vtabarg", "vtabargtoken",
+ "lp", "anylist", "wqlist",
};
#endif /* NDEBUG */
@@ -131987,7 +132831,7 @@ static const char *const yyRuleName[] = {
/* 187 */ "expr ::= expr in_op LP exprlist RP",
/* 188 */ "expr ::= LP select RP",
/* 189 */ "expr ::= expr in_op LP select RP",
- /* 190 */ "expr ::= expr in_op nm dbnm",
+ /* 190 */ "expr ::= expr in_op nm dbnm paren_exprlist",
/* 191 */ "expr ::= EXISTS LP select RP",
/* 192 */ "expr ::= CASE case_operand case_exprlist case_else END",
/* 193 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
@@ -131999,154 +132843,166 @@ static const char *const yyRuleName[] = {
/* 199 */ "exprlist ::=",
/* 200 */ "nexprlist ::= nexprlist COMMA expr",
/* 201 */ "nexprlist ::= expr",
- /* 202 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
- /* 203 */ "uniqueflag ::= UNIQUE",
- /* 204 */ "uniqueflag ::=",
- /* 205 */ "eidlist_opt ::=",
- /* 206 */ "eidlist_opt ::= LP eidlist RP",
- /* 207 */ "eidlist ::= eidlist COMMA nm collate sortorder",
- /* 208 */ "eidlist ::= nm collate sortorder",
- /* 209 */ "collate ::=",
- /* 210 */ "collate ::= COLLATE ID|STRING",
- /* 211 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 212 */ "cmd ::= VACUUM",
- /* 213 */ "cmd ::= VACUUM nm",
- /* 214 */ "cmd ::= PRAGMA nm dbnm",
- /* 215 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 216 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 217 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 218 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
- /* 219 */ "plus_num ::= PLUS INTEGER|FLOAT",
- /* 220 */ "minus_num ::= MINUS INTEGER|FLOAT",
- /* 221 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
- /* 222 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
- /* 223 */ "trigger_time ::= BEFORE",
- /* 224 */ "trigger_time ::= AFTER",
- /* 225 */ "trigger_time ::= INSTEAD OF",
- /* 226 */ "trigger_time ::=",
- /* 227 */ "trigger_event ::= DELETE|INSERT",
- /* 228 */ "trigger_event ::= UPDATE",
- /* 229 */ "trigger_event ::= UPDATE OF idlist",
- /* 230 */ "when_clause ::=",
- /* 231 */ "when_clause ::= WHEN expr",
- /* 232 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 233 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 234 */ "trnm ::= nm DOT nm",
- /* 235 */ "tridxby ::= INDEXED BY nm",
- /* 236 */ "tridxby ::= NOT INDEXED",
- /* 237 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt",
- /* 238 */ "trigger_cmd ::= insert_cmd INTO trnm idlist_opt select",
- /* 239 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt",
- /* 240 */ "trigger_cmd ::= select",
- /* 241 */ "expr ::= RAISE LP IGNORE RP",
- /* 242 */ "expr ::= RAISE LP raisetype COMMA nm RP",
- /* 243 */ "raisetype ::= ROLLBACK",
- /* 244 */ "raisetype ::= ABORT",
- /* 245 */ "raisetype ::= FAIL",
- /* 246 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 247 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 248 */ "cmd ::= DETACH database_kw_opt expr",
- /* 249 */ "key_opt ::=",
- /* 250 */ "key_opt ::= KEY expr",
- /* 251 */ "cmd ::= REINDEX",
- /* 252 */ "cmd ::= REINDEX nm dbnm",
- /* 253 */ "cmd ::= ANALYZE",
- /* 254 */ "cmd ::= ANALYZE nm dbnm",
- /* 255 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 256 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
- /* 257 */ "add_column_fullname ::= fullname",
- /* 258 */ "cmd ::= create_vtab",
- /* 259 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 260 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 261 */ "vtabarg ::=",
- /* 262 */ "vtabargtoken ::= ANY",
- /* 263 */ "vtabargtoken ::= lp anylist RP",
- /* 264 */ "lp ::= LP",
- /* 265 */ "with ::=",
- /* 266 */ "with ::= WITH wqlist",
- /* 267 */ "with ::= WITH RECURSIVE wqlist",
- /* 268 */ "wqlist ::= nm eidlist_opt AS LP select RP",
- /* 269 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
- /* 270 */ "input ::= cmdlist",
- /* 271 */ "cmdlist ::= cmdlist ecmd",
- /* 272 */ "cmdlist ::= ecmd",
- /* 273 */ "ecmd ::= SEMI",
- /* 274 */ "ecmd ::= explain cmdx SEMI",
- /* 275 */ "explain ::=",
- /* 276 */ "trans_opt ::=",
- /* 277 */ "trans_opt ::= TRANSACTION",
- /* 278 */ "trans_opt ::= TRANSACTION nm",
- /* 279 */ "savepoint_opt ::= SAVEPOINT",
- /* 280 */ "savepoint_opt ::=",
- /* 281 */ "cmd ::= create_table create_table_args",
- /* 282 */ "columnlist ::= columnlist COMMA columnname carglist",
- /* 283 */ "columnlist ::= columnname carglist",
- /* 284 */ "nm ::= ID|INDEXED",
- /* 285 */ "nm ::= STRING",
- /* 286 */ "nm ::= JOIN_KW",
- /* 287 */ "typetoken ::= typename",
- /* 288 */ "typename ::= ID|STRING",
- /* 289 */ "signed ::= plus_num",
- /* 290 */ "signed ::= minus_num",
- /* 291 */ "carglist ::= carglist ccons",
- /* 292 */ "carglist ::=",
- /* 293 */ "ccons ::= NULL onconf",
- /* 294 */ "conslist_opt ::= COMMA conslist",
- /* 295 */ "conslist ::= conslist tconscomma tcons",
- /* 296 */ "conslist ::= tcons",
- /* 297 */ "tconscomma ::=",
- /* 298 */ "defer_subclause_opt ::= defer_subclause",
- /* 299 */ "resolvetype ::= raisetype",
- /* 300 */ "selectnowith ::= oneselect",
- /* 301 */ "oneselect ::= values",
- /* 302 */ "sclp ::= selcollist COMMA",
- /* 303 */ "as ::= ID|STRING",
- /* 304 */ "expr ::= term",
- /* 305 */ "exprlist ::= nexprlist",
- /* 306 */ "nmnum ::= plus_num",
- /* 307 */ "nmnum ::= nm",
- /* 308 */ "nmnum ::= ON",
- /* 309 */ "nmnum ::= DELETE",
- /* 310 */ "nmnum ::= DEFAULT",
- /* 311 */ "plus_num ::= INTEGER|FLOAT",
- /* 312 */ "foreach_clause ::=",
- /* 313 */ "foreach_clause ::= FOR EACH ROW",
- /* 314 */ "trnm ::= nm",
- /* 315 */ "tridxby ::=",
- /* 316 */ "database_kw_opt ::= DATABASE",
- /* 317 */ "database_kw_opt ::=",
- /* 318 */ "kwcolumn_opt ::=",
- /* 319 */ "kwcolumn_opt ::= COLUMNKW",
- /* 320 */ "vtabarglist ::= vtabarg",
- /* 321 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 322 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 323 */ "anylist ::=",
- /* 324 */ "anylist ::= anylist LP anylist RP",
- /* 325 */ "anylist ::= anylist ANY",
+ /* 202 */ "paren_exprlist ::=",
+ /* 203 */ "paren_exprlist ::= LP exprlist RP",
+ /* 204 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
+ /* 205 */ "uniqueflag ::= UNIQUE",
+ /* 206 */ "uniqueflag ::=",
+ /* 207 */ "eidlist_opt ::=",
+ /* 208 */ "eidlist_opt ::= LP eidlist RP",
+ /* 209 */ "eidlist ::= eidlist COMMA nm collate sortorder",
+ /* 210 */ "eidlist ::= nm collate sortorder",
+ /* 211 */ "collate ::=",
+ /* 212 */ "collate ::= COLLATE ID|STRING",
+ /* 213 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 214 */ "cmd ::= VACUUM",
+ /* 215 */ "cmd ::= VACUUM nm",
+ /* 216 */ "cmd ::= PRAGMA nm dbnm",
+ /* 217 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 218 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 219 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 220 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
+ /* 221 */ "plus_num ::= PLUS INTEGER|FLOAT",
+ /* 222 */ "minus_num ::= MINUS INTEGER|FLOAT",
+ /* 223 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
+ /* 224 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
+ /* 225 */ "trigger_time ::= BEFORE",
+ /* 226 */ "trigger_time ::= AFTER",
+ /* 227 */ "trigger_time ::= INSTEAD OF",
+ /* 228 */ "trigger_time ::=",
+ /* 229 */ "trigger_event ::= DELETE|INSERT",
+ /* 230 */ "trigger_event ::= UPDATE",
+ /* 231 */ "trigger_event ::= UPDATE OF idlist",
+ /* 232 */ "when_clause ::=",
+ /* 233 */ "when_clause ::= WHEN expr",
+ /* 234 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 235 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 236 */ "trnm ::= nm DOT nm",
+ /* 237 */ "tridxby ::= INDEXED BY nm",
+ /* 238 */ "tridxby ::= NOT INDEXED",
+ /* 239 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt",
+ /* 240 */ "trigger_cmd ::= insert_cmd INTO trnm idlist_opt select",
+ /* 241 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt",
+ /* 242 */ "trigger_cmd ::= select",
+ /* 243 */ "expr ::= RAISE LP IGNORE RP",
+ /* 244 */ "expr ::= RAISE LP raisetype COMMA nm RP",
+ /* 245 */ "raisetype ::= ROLLBACK",
+ /* 246 */ "raisetype ::= ABORT",
+ /* 247 */ "raisetype ::= FAIL",
+ /* 248 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 249 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 250 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 251 */ "key_opt ::=",
+ /* 252 */ "key_opt ::= KEY expr",
+ /* 253 */ "cmd ::= REINDEX",
+ /* 254 */ "cmd ::= REINDEX nm dbnm",
+ /* 255 */ "cmd ::= ANALYZE",
+ /* 256 */ "cmd ::= ANALYZE nm dbnm",
+ /* 257 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 258 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
+ /* 259 */ "add_column_fullname ::= fullname",
+ /* 260 */ "cmd ::= create_vtab",
+ /* 261 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 262 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 263 */ "vtabarg ::=",
+ /* 264 */ "vtabargtoken ::= ANY",
+ /* 265 */ "vtabargtoken ::= lp anylist RP",
+ /* 266 */ "lp ::= LP",
+ /* 267 */ "with ::=",
+ /* 268 */ "with ::= WITH wqlist",
+ /* 269 */ "with ::= WITH RECURSIVE wqlist",
+ /* 270 */ "wqlist ::= nm eidlist_opt AS LP select RP",
+ /* 271 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
+ /* 272 */ "input ::= cmdlist",
+ /* 273 */ "cmdlist ::= cmdlist ecmd",
+ /* 274 */ "cmdlist ::= ecmd",
+ /* 275 */ "ecmd ::= SEMI",
+ /* 276 */ "ecmd ::= explain cmdx SEMI",
+ /* 277 */ "explain ::=",
+ /* 278 */ "trans_opt ::=",
+ /* 279 */ "trans_opt ::= TRANSACTION",
+ /* 280 */ "trans_opt ::= TRANSACTION nm",
+ /* 281 */ "savepoint_opt ::= SAVEPOINT",
+ /* 282 */ "savepoint_opt ::=",
+ /* 283 */ "cmd ::= create_table create_table_args",
+ /* 284 */ "columnlist ::= columnlist COMMA columnname carglist",
+ /* 285 */ "columnlist ::= columnname carglist",
+ /* 286 */ "nm ::= ID|INDEXED",
+ /* 287 */ "nm ::= STRING",
+ /* 288 */ "nm ::= JOIN_KW",
+ /* 289 */ "typetoken ::= typename",
+ /* 290 */ "typename ::= ID|STRING",
+ /* 291 */ "signed ::= plus_num",
+ /* 292 */ "signed ::= minus_num",
+ /* 293 */ "carglist ::= carglist ccons",
+ /* 294 */ "carglist ::=",
+ /* 295 */ "ccons ::= NULL onconf",
+ /* 296 */ "conslist_opt ::= COMMA conslist",
+ /* 297 */ "conslist ::= conslist tconscomma tcons",
+ /* 298 */ "conslist ::= tcons",
+ /* 299 */ "tconscomma ::=",
+ /* 300 */ "defer_subclause_opt ::= defer_subclause",
+ /* 301 */ "resolvetype ::= raisetype",
+ /* 302 */ "selectnowith ::= oneselect",
+ /* 303 */ "oneselect ::= values",
+ /* 304 */ "sclp ::= selcollist COMMA",
+ /* 305 */ "as ::= ID|STRING",
+ /* 306 */ "expr ::= term",
+ /* 307 */ "exprlist ::= nexprlist",
+ /* 308 */ "nmnum ::= plus_num",
+ /* 309 */ "nmnum ::= nm",
+ /* 310 */ "nmnum ::= ON",
+ /* 311 */ "nmnum ::= DELETE",
+ /* 312 */ "nmnum ::= DEFAULT",
+ /* 313 */ "plus_num ::= INTEGER|FLOAT",
+ /* 314 */ "foreach_clause ::=",
+ /* 315 */ "foreach_clause ::= FOR EACH ROW",
+ /* 316 */ "trnm ::= nm",
+ /* 317 */ "tridxby ::=",
+ /* 318 */ "database_kw_opt ::= DATABASE",
+ /* 319 */ "database_kw_opt ::=",
+ /* 320 */ "kwcolumn_opt ::=",
+ /* 321 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 322 */ "vtabarglist ::= vtabarg",
+ /* 323 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 324 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 325 */ "anylist ::=",
+ /* 326 */ "anylist ::= anylist LP anylist RP",
+ /* 327 */ "anylist ::= anylist ANY",
};
#endif /* NDEBUG */
#if YYSTACKDEPTH<=0
/*
-** Try to increase the size of the parser stack.
+** Try to increase the size of the parser stack. Return the number
+** of errors. Return 0 on success.
*/
-static void yyGrowStack(yyParser *p){
+static int yyGrowStack(yyParser *p){
int newSize;
+ int idx;
yyStackEntry *pNew;
newSize = p->yystksz*2 + 100;
- pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
+ idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
+ if( p->yystack==&p->yystk0 ){
+ pNew = malloc(newSize*sizeof(pNew[0]));
+ if( pNew ) pNew[0] = p->yystk0;
+ }else{
+ pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
+ }
if( pNew ){
p->yystack = pNew;
- p->yystksz = newSize;
+ p->yytos = &p->yystack[idx];
#ifndef NDEBUG
if( yyTraceFILE ){
- fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
- yyTracePrompt, p->yystksz);
+ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
+ yyTracePrompt, p->yystksz, newSize);
}
#endif
+ p->yystksz = newSize;
}
+ return pNew==0;
}
#endif
@@ -132175,15 +133031,24 @@ SQLITE_PRIVATE void *sqlite3ParserAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){
yyParser *pParser;
pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
if( pParser ){
- pParser->yyidx = -1;
#ifdef YYTRACKMAXSTACKDEPTH
- pParser->yyidxMax = 0;
+ pParser->yyhwm = 0;
#endif
#if YYSTACKDEPTH<=0
+ pParser->yytos = NULL;
pParser->yystack = NULL;
pParser->yystksz = 0;
- yyGrowStack(pParser);
+ if( yyGrowStack(pParser) ){
+ pParser->yystack = &pParser->yystk0;
+ pParser->yystksz = 1;
+ }
+#endif
+#ifndef YYNOERRORRECOVERY
+ pParser->yyerrcnt = -1;
#endif
+ pParser->yytos = pParser->yystack;
+ pParser->yystack[0].stateno = 0;
+ pParser->yystack[0].major = 0;
}
return pParser;
}
@@ -132218,13 +133083,13 @@ static void yy_destructor(
case 195: /* oneselect */
case 206: /* values */
{
-sqlite3SelectDelete(pParse->db, (yypminor->yy159));
+sqlite3SelectDelete(pParse->db, (yypminor->yy243));
}
break;
case 172: /* term */
case 173: /* expr */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy342).pExpr);
+sqlite3ExprDelete(pParse->db, (yypminor->yy190).pExpr);
}
break;
case 177: /* eidlist_opt */
@@ -132237,9 +133102,10 @@ sqlite3ExprDelete(pParse->db, (yypminor->yy342).pExpr);
case 208: /* exprlist */
case 209: /* sclp */
case 218: /* setlist */
- case 225: /* case_exprlist */
+ case 224: /* paren_exprlist */
+ case 226: /* case_exprlist */
{
-sqlite3ExprListDelete(pParse->db, (yypminor->yy442));
+sqlite3ExprListDelete(pParse->db, (yypminor->yy148));
}
break;
case 193: /* fullname */
@@ -132247,42 +133113,42 @@ sqlite3ExprListDelete(pParse->db, (yypminor->yy442));
case 211: /* seltablist */
case 212: /* stl_prefix */
{
-sqlite3SrcListDelete(pParse->db, (yypminor->yy347));
+sqlite3SrcListDelete(pParse->db, (yypminor->yy185));
}
break;
case 196: /* with */
- case 249: /* wqlist */
+ case 250: /* wqlist */
{
-sqlite3WithDelete(pParse->db, (yypminor->yy331));
+sqlite3WithDelete(pParse->db, (yypminor->yy285));
}
break;
case 201: /* where_opt */
case 203: /* having_opt */
case 215: /* on_opt */
- case 224: /* case_operand */
- case 226: /* case_else */
- case 235: /* when_clause */
- case 240: /* key_opt */
+ case 225: /* case_operand */
+ case 227: /* case_else */
+ case 236: /* when_clause */
+ case 241: /* key_opt */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy122));
+sqlite3ExprDelete(pParse->db, (yypminor->yy72));
}
break;
case 216: /* using_opt */
case 217: /* idlist */
case 220: /* idlist_opt */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy180));
+sqlite3IdListDelete(pParse->db, (yypminor->yy254));
}
break;
- case 231: /* trigger_cmd_list */
- case 236: /* trigger_cmd */
+ case 232: /* trigger_cmd_list */
+ case 237: /* trigger_cmd */
{
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy327));
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy145));
}
break;
- case 233: /* trigger_event */
+ case 234: /* trigger_event */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy410).b);
+sqlite3IdListDelete(pParse->db, (yypminor->yy332).b);
}
break;
/********* End destructor definitions *****************************************/
@@ -132298,8 +133164,9 @@ sqlite3IdListDelete(pParse->db, (yypminor->yy410).b);
*/
static void yy_pop_parser_stack(yyParser *pParser){
yyStackEntry *yytos;
- assert( pParser->yyidx>=0 );
- yytos = &pParser->yystack[pParser->yyidx--];
+ assert( pParser->yytos!=0 );
+ assert( pParser->yytos > pParser->yystack );
+ yytos = pParser->yytos--;
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE,"%sPopping %s\n",
@@ -132326,9 +133193,9 @@ SQLITE_PRIVATE void sqlite3ParserFree(
#ifndef YYPARSEFREENEVERNULL
if( pParser==0 ) return;
#endif
- while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
+ while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
#if YYSTACKDEPTH<=0
- free(pParser->yystack);
+ if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
#endif
(*freeProc)((void*)pParser);
}
@@ -132339,7 +133206,7 @@ SQLITE_PRIVATE void sqlite3ParserFree(
#ifdef YYTRACKMAXSTACKDEPTH
SQLITE_PRIVATE int sqlite3ParserStackPeak(void *p){
yyParser *pParser = (yyParser*)p;
- return pParser->yyidxMax;
+ return pParser->yyhwm;
}
#endif
@@ -132352,7 +133219,7 @@ static unsigned int yy_find_shift_action(
YYCODETYPE iLookAhead /* The look-ahead token */
){
int i;
- int stateno = pParser->yystack[pParser->yyidx].stateno;
+ int stateno = pParser->yytos->stateno;
if( stateno>=YY_MIN_REDUCE ) return stateno;
assert( stateno <= YY_SHIFT_COUNT );
@@ -132445,13 +133312,13 @@ static int yy_find_reduce_action(
*/
static void yyStackOverflow(yyParser *yypParser){
sqlite3ParserARG_FETCH;
- yypParser->yyidx--;
+ yypParser->yytos--;
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
}
#endif
- while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
/* Here code is inserted which will execute if the parser
** stack every overflows */
/******** Begin %stack_overflow code ******************************************/
@@ -132469,11 +133336,11 @@ static void yyTraceShift(yyParser *yypParser, int yyNewState){
if( yyTraceFILE ){
if( yyNewState<YYNSTATE ){
fprintf(yyTraceFILE,"%sShift '%s', go to state %d\n",
- yyTracePrompt,yyTokenName[yypParser->yystack[yypParser->yyidx].major],
+ yyTracePrompt,yyTokenName[yypParser->yytos->major],
yyNewState);
}else{
fprintf(yyTraceFILE,"%sShift '%s'\n",
- yyTracePrompt,yyTokenName[yypParser->yystack[yypParser->yyidx].major]);
+ yyTracePrompt,yyTokenName[yypParser->yytos->major]);
}
}
}
@@ -132491,27 +133358,30 @@ static void yy_shift(
sqlite3ParserTOKENTYPE yyMinor /* The minor token to shift in */
){
yyStackEntry *yytos;
- yypParser->yyidx++;
+ yypParser->yytos++;
#ifdef YYTRACKMAXSTACKDEPTH
- if( yypParser->yyidx>yypParser->yyidxMax ){
- yypParser->yyidxMax = yypParser->yyidx;
+ if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
+ yypParser->yyhwm++;
+ assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
}
#endif
#if YYSTACKDEPTH>0
- if( yypParser->yyidx>=YYSTACKDEPTH ){
+ if( yypParser->yytos>=&yypParser->yystack[YYSTACKDEPTH] ){
yyStackOverflow(yypParser);
return;
}
#else
- if( yypParser->yyidx>=yypParser->yystksz ){
- yyGrowStack(yypParser);
- if( yypParser->yyidx>=yypParser->yystksz ){
+ if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){
+ if( yyGrowStack(yypParser) ){
yyStackOverflow(yypParser);
return;
}
}
#endif
- yytos = &yypParser->yystack[yypParser->yyidx];
+ if( yyNewState > YY_MAX_SHIFT ){
+ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
+ }
+ yytos = yypParser->yytos;
yytos->stateno = (YYACTIONTYPE)yyNewState;
yytos->major = (YYCODETYPE)yyMajor;
yytos->minor.yy0 = yyMinor;
@@ -132715,27 +133585,29 @@ static const struct {
{ 173, 5 },
{ 173, 3 },
{ 173, 5 },
- { 173, 4 },
+ { 173, 5 },
{ 173, 4 },
{ 173, 5 },
- { 225, 5 },
- { 225, 4 },
- { 226, 2 },
- { 226, 0 },
- { 224, 1 },
- { 224, 0 },
+ { 226, 5 },
+ { 226, 4 },
+ { 227, 2 },
+ { 227, 0 },
+ { 225, 1 },
+ { 225, 0 },
{ 208, 0 },
{ 207, 3 },
{ 207, 1 },
+ { 224, 0 },
+ { 224, 3 },
{ 149, 12 },
- { 227, 1 },
- { 227, 0 },
+ { 228, 1 },
+ { 228, 0 },
{ 177, 0 },
{ 177, 3 },
{ 187, 5 },
{ 187, 3 },
- { 228, 0 },
- { 228, 2 },
+ { 229, 0 },
+ { 229, 2 },
{ 149, 4 },
{ 149, 1 },
{ 149, 2 },
@@ -132747,25 +133619,25 @@ static const struct {
{ 169, 2 },
{ 170, 2 },
{ 149, 5 },
- { 230, 11 },
- { 232, 1 },
- { 232, 1 },
- { 232, 2 },
- { 232, 0 },
+ { 231, 11 },
{ 233, 1 },
{ 233, 1 },
- { 233, 3 },
- { 235, 0 },
- { 235, 2 },
- { 231, 3 },
- { 231, 2 },
- { 237, 3 },
+ { 233, 2 },
+ { 233, 0 },
+ { 234, 1 },
+ { 234, 1 },
+ { 234, 3 },
+ { 236, 0 },
+ { 236, 2 },
+ { 232, 3 },
+ { 232, 2 },
{ 238, 3 },
- { 238, 2 },
- { 236, 7 },
- { 236, 5 },
- { 236, 5 },
- { 236, 1 },
+ { 239, 3 },
+ { 239, 2 },
+ { 237, 7 },
+ { 237, 5 },
+ { 237, 5 },
+ { 237, 1 },
{ 173, 4 },
{ 173, 6 },
{ 191, 1 },
@@ -132774,27 +133646,27 @@ static const struct {
{ 149, 4 },
{ 149, 6 },
{ 149, 3 },
- { 240, 0 },
- { 240, 2 },
+ { 241, 0 },
+ { 241, 2 },
{ 149, 1 },
{ 149, 3 },
{ 149, 1 },
{ 149, 3 },
{ 149, 6 },
{ 149, 7 },
- { 241, 1 },
+ { 242, 1 },
{ 149, 1 },
{ 149, 4 },
- { 243, 8 },
- { 245, 0 },
- { 246, 1 },
- { 246, 3 },
+ { 244, 8 },
+ { 246, 0 },
{ 247, 1 },
+ { 247, 3 },
+ { 248, 1 },
{ 196, 0 },
{ 196, 2 },
{ 196, 3 },
- { 249, 6 },
- { 249, 8 },
+ { 250, 6 },
+ { 250, 8 },
{ 144, 1 },
{ 145, 2 },
{ 145, 1 },
@@ -132831,26 +133703,26 @@ static const struct {
{ 210, 1 },
{ 173, 1 },
{ 208, 1 },
- { 229, 1 },
- { 229, 1 },
- { 229, 1 },
- { 229, 1 },
- { 229, 1 },
+ { 230, 1 },
+ { 230, 1 },
+ { 230, 1 },
+ { 230, 1 },
+ { 230, 1 },
{ 169, 1 },
- { 234, 0 },
- { 234, 3 },
- { 237, 1 },
- { 238, 0 },
- { 239, 1 },
+ { 235, 0 },
+ { 235, 3 },
+ { 238, 1 },
{ 239, 0 },
- { 242, 0 },
- { 242, 1 },
- { 244, 1 },
- { 244, 3 },
- { 245, 2 },
- { 248, 0 },
- { 248, 4 },
- { 248, 2 },
+ { 240, 1 },
+ { 240, 0 },
+ { 243, 0 },
+ { 243, 1 },
+ { 245, 1 },
+ { 245, 3 },
+ { 246, 2 },
+ { 249, 0 },
+ { 249, 4 },
+ { 249, 2 },
};
static void yy_accept(yyParser*); /* Forward Declaration */
@@ -132868,7 +133740,7 @@ static void yy_reduce(
yyStackEntry *yymsp; /* The top of the parser's stack */
int yysize; /* Amount to pop the stack */
sqlite3ParserARG_FETCH;
- yymsp = &yypParser->yystack[yypParser->yyidx];
+ yymsp = yypParser->yytos;
#ifndef NDEBUG
if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
yysize = yyRuleInfo[yyruleno].nrhs;
@@ -132882,22 +133754,23 @@ static void yy_reduce(
** enough on the stack to push the LHS value */
if( yyRuleInfo[yyruleno].nrhs==0 ){
#ifdef YYTRACKMAXSTACKDEPTH
- if( yypParser->yyidx>yypParser->yyidxMax ){
- yypParser->yyidxMax = yypParser->yyidx;
+ if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
+ yypParser->yyhwm++;
+ assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack));
}
#endif
#if YYSTACKDEPTH>0
- if( yypParser->yyidx>=YYSTACKDEPTH-1 ){
+ if( yypParser->yytos>=&yypParser->yystack[YYSTACKDEPTH-1] ){
yyStackOverflow(yypParser);
return;
}
#else
- if( yypParser->yyidx>=yypParser->yystksz-1 ){
- yyGrowStack(yypParser);
- if( yypParser->yyidx>=yypParser->yystksz-1 ){
+ if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){
+ if( yyGrowStack(yypParser) ){
yyStackOverflow(yypParser);
return;
}
+ yymsp = yypParser->yytos;
}
#endif
}
@@ -132923,15 +133796,15 @@ static void yy_reduce(
{ sqlite3FinishCoding(pParse); }
break;
case 3: /* cmd ::= BEGIN transtype trans_opt */
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy392);}
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy194);}
break;
case 4: /* transtype ::= */
-{yymsp[1].minor.yy392 = TK_DEFERRED;}
+{yymsp[1].minor.yy194 = TK_DEFERRED;}
break;
case 5: /* transtype ::= DEFERRED */
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
-{yymsp[0].minor.yy392 = yymsp[0].major; /*A-overwrites-X*/}
+{yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-X*/}
break;
case 8: /* cmd ::= COMMIT trans_opt */
case 9: /* cmd ::= END trans_opt */ yytestcase(yyruleno==9);
@@ -132957,7 +133830,7 @@ static void yy_reduce(
break;
case 14: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
{
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy392,0,0,yymsp[-2].minor.yy392);
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy194,0,0,yymsp[-2].minor.yy194);
}
break;
case 15: /* createkw ::= CREATE */
@@ -132971,33 +133844,33 @@ static void yy_reduce(
case 67: /* defer_subclause_opt ::= */ yytestcase(yyruleno==67);
case 76: /* ifexists ::= */ yytestcase(yyruleno==76);
case 90: /* distinct ::= */ yytestcase(yyruleno==90);
- case 209: /* collate ::= */ yytestcase(yyruleno==209);
-{yymsp[1].minor.yy392 = 0;}
+ case 211: /* collate ::= */ yytestcase(yyruleno==211);
+{yymsp[1].minor.yy194 = 0;}
break;
case 17: /* ifnotexists ::= IF NOT EXISTS */
-{yymsp[-2].minor.yy392 = 1;}
+{yymsp[-2].minor.yy194 = 1;}
break;
case 18: /* temp ::= TEMP */
case 43: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==43);
-{yymsp[0].minor.yy392 = 1;}
+{yymsp[0].minor.yy194 = 1;}
break;
case 20: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
{
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy392,0);
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy194,0);
}
break;
case 21: /* create_table_args ::= AS select */
{
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy159);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy159);
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy243);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy243);
}
break;
case 23: /* table_options ::= WITHOUT nm */
{
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
- yymsp[-1].minor.yy392 = TF_WithoutRowid | TF_NoVisibleRowid;
+ yymsp[-1].minor.yy194 = TF_WithoutRowid | TF_NoVisibleRowid;
}else{
- yymsp[-1].minor.yy392 = 0;
+ yymsp[-1].minor.yy194 = 0;
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
}
}
@@ -133029,17 +133902,17 @@ static void yy_reduce(
break;
case 30: /* ccons ::= DEFAULT term */
case 32: /* ccons ::= DEFAULT PLUS term */ yytestcase(yyruleno==32);
-{sqlite3AddDefaultValue(pParse,&yymsp[0].minor.yy342);}
+{sqlite3AddDefaultValue(pParse,&yymsp[0].minor.yy190);}
break;
case 31: /* ccons ::= DEFAULT LP expr RP */
-{sqlite3AddDefaultValue(pParse,&yymsp[-1].minor.yy342);}
+{sqlite3AddDefaultValue(pParse,&yymsp[-1].minor.yy190);}
break;
case 33: /* ccons ::= DEFAULT MINUS term */
{
ExprSpan v;
- v.pExpr = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy342.pExpr, 0, 0);
+ v.pExpr = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy190.pExpr, 0, 0);
v.zStart = yymsp[-1].minor.yy0.z;
- v.zEnd = yymsp[0].minor.yy342.zEnd;
+ v.zEnd = yymsp[0].minor.yy190.zEnd;
sqlite3AddDefaultValue(pParse,&v);
}
break;
@@ -133051,147 +133924,149 @@ static void yy_reduce(
}
break;
case 35: /* ccons ::= NOT NULL onconf */
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy392);}
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy194);}
break;
case 36: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy392,yymsp[0].minor.yy392,yymsp[-2].minor.yy392);}
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy194,yymsp[0].minor.yy194,yymsp[-2].minor.yy194);}
break;
case 37: /* ccons ::= UNIQUE onconf */
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy392,0,0,0,0);}
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy194,0,0,0,0,
+ SQLITE_IDXTYPE_UNIQUE);}
break;
case 38: /* ccons ::= CHECK LP expr RP */
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy342.pExpr);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy190.pExpr);}
break;
case 39: /* ccons ::= REFERENCES nm eidlist_opt refargs */
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy442,yymsp[0].minor.yy392);}
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy148,yymsp[0].minor.yy194);}
break;
case 40: /* ccons ::= defer_subclause */
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy392);}
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy194);}
break;
case 41: /* ccons ::= COLLATE ID|STRING */
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
break;
case 44: /* refargs ::= */
-{ yymsp[1].minor.yy392 = OE_None*0x0101; /* EV: R-19803-45884 */}
+{ yymsp[1].minor.yy194 = OE_None*0x0101; /* EV: R-19803-45884 */}
break;
case 45: /* refargs ::= refargs refarg */
-{ yymsp[-1].minor.yy392 = (yymsp[-1].minor.yy392 & ~yymsp[0].minor.yy207.mask) | yymsp[0].minor.yy207.value; }
+{ yymsp[-1].minor.yy194 = (yymsp[-1].minor.yy194 & ~yymsp[0].minor.yy497.mask) | yymsp[0].minor.yy497.value; }
break;
case 46: /* refarg ::= MATCH nm */
-{ yymsp[-1].minor.yy207.value = 0; yymsp[-1].minor.yy207.mask = 0x000000; }
+{ yymsp[-1].minor.yy497.value = 0; yymsp[-1].minor.yy497.mask = 0x000000; }
break;
case 47: /* refarg ::= ON INSERT refact */
-{ yymsp[-2].minor.yy207.value = 0; yymsp[-2].minor.yy207.mask = 0x000000; }
+{ yymsp[-2].minor.yy497.value = 0; yymsp[-2].minor.yy497.mask = 0x000000; }
break;
case 48: /* refarg ::= ON DELETE refact */
-{ yymsp[-2].minor.yy207.value = yymsp[0].minor.yy392; yymsp[-2].minor.yy207.mask = 0x0000ff; }
+{ yymsp[-2].minor.yy497.value = yymsp[0].minor.yy194; yymsp[-2].minor.yy497.mask = 0x0000ff; }
break;
case 49: /* refarg ::= ON UPDATE refact */
-{ yymsp[-2].minor.yy207.value = yymsp[0].minor.yy392<<8; yymsp[-2].minor.yy207.mask = 0x00ff00; }
+{ yymsp[-2].minor.yy497.value = yymsp[0].minor.yy194<<8; yymsp[-2].minor.yy497.mask = 0x00ff00; }
break;
case 50: /* refact ::= SET NULL */
-{ yymsp[-1].minor.yy392 = OE_SetNull; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy194 = OE_SetNull; /* EV: R-33326-45252 */}
break;
case 51: /* refact ::= SET DEFAULT */
-{ yymsp[-1].minor.yy392 = OE_SetDflt; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy194 = OE_SetDflt; /* EV: R-33326-45252 */}
break;
case 52: /* refact ::= CASCADE */
-{ yymsp[0].minor.yy392 = OE_Cascade; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy194 = OE_Cascade; /* EV: R-33326-45252 */}
break;
case 53: /* refact ::= RESTRICT */
-{ yymsp[0].minor.yy392 = OE_Restrict; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy194 = OE_Restrict; /* EV: R-33326-45252 */}
break;
case 54: /* refact ::= NO ACTION */
-{ yymsp[-1].minor.yy392 = OE_None; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy194 = OE_None; /* EV: R-33326-45252 */}
break;
case 55: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
-{yymsp[-2].minor.yy392 = 0;}
+{yymsp[-2].minor.yy194 = 0;}
break;
case 56: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
case 71: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==71);
case 142: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==142);
-{yymsp[-1].minor.yy392 = yymsp[0].minor.yy392;}
+{yymsp[-1].minor.yy194 = yymsp[0].minor.yy194;}
break;
case 58: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
case 75: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==75);
case 183: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==183);
case 186: /* in_op ::= NOT IN */ yytestcase(yyruleno==186);
- case 210: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==210);
-{yymsp[-1].minor.yy392 = 1;}
+ case 212: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==212);
+{yymsp[-1].minor.yy194 = 1;}
break;
case 59: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yymsp[-1].minor.yy392 = 0;}
+{yymsp[-1].minor.yy194 = 0;}
break;
case 61: /* tconscomma ::= COMMA */
{pParse->constraintName.n = 0;}
break;
case 63: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy442,yymsp[0].minor.yy392,yymsp[-2].minor.yy392,0);}
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy148,yymsp[0].minor.yy194,yymsp[-2].minor.yy194,0);}
break;
case 64: /* tcons ::= UNIQUE LP sortlist RP onconf */
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy442,yymsp[0].minor.yy392,0,0,0,0);}
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy148,yymsp[0].minor.yy194,0,0,0,0,
+ SQLITE_IDXTYPE_UNIQUE);}
break;
case 65: /* tcons ::= CHECK LP expr RP onconf */
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy342.pExpr);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy190.pExpr);}
break;
case 66: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
{
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy442, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy442, yymsp[-1].minor.yy392);
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy392);
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy148, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy148, yymsp[-1].minor.yy194);
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy194);
}
break;
case 68: /* onconf ::= */
case 70: /* orconf ::= */ yytestcase(yyruleno==70);
-{yymsp[1].minor.yy392 = OE_Default;}
+{yymsp[1].minor.yy194 = OE_Default;}
break;
case 69: /* onconf ::= ON CONFLICT resolvetype */
-{yymsp[-2].minor.yy392 = yymsp[0].minor.yy392;}
+{yymsp[-2].minor.yy194 = yymsp[0].minor.yy194;}
break;
case 72: /* resolvetype ::= IGNORE */
-{yymsp[0].minor.yy392 = OE_Ignore;}
+{yymsp[0].minor.yy194 = OE_Ignore;}
break;
case 73: /* resolvetype ::= REPLACE */
case 143: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==143);
-{yymsp[0].minor.yy392 = OE_Replace;}
+{yymsp[0].minor.yy194 = OE_Replace;}
break;
case 74: /* cmd ::= DROP TABLE ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy347, 0, yymsp[-1].minor.yy392);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy185, 0, yymsp[-1].minor.yy194);
}
break;
case 77: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
{
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy442, yymsp[0].minor.yy159, yymsp[-7].minor.yy392, yymsp[-5].minor.yy392);
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy148, yymsp[0].minor.yy243, yymsp[-7].minor.yy194, yymsp[-5].minor.yy194);
}
break;
case 78: /* cmd ::= DROP VIEW ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy347, 1, yymsp[-1].minor.yy392);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy185, 1, yymsp[-1].minor.yy194);
}
break;
case 79: /* cmd ::= select */
{
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
- sqlite3Select(pParse, yymsp[0].minor.yy159, &dest);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy159);
+ sqlite3Select(pParse, yymsp[0].minor.yy243, &dest);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy243);
}
break;
case 80: /* select ::= with selectnowith */
{
- Select *p = yymsp[0].minor.yy159;
+ Select *p = yymsp[0].minor.yy243;
if( p ){
- p->pWith = yymsp[-1].minor.yy331;
+ p->pWith = yymsp[-1].minor.yy285;
parserDoubleLinkSelect(pParse, p);
}else{
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy331);
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy285);
}
- yymsp[-1].minor.yy159 = p; /*A-overwrites-W*/
+ yymsp[-1].minor.yy243 = p; /*A-overwrites-W*/
}
break;
case 81: /* selectnowith ::= selectnowith multiselect_op oneselect */
{
- Select *pRhs = yymsp[0].minor.yy159;
- Select *pLhs = yymsp[-2].minor.yy159;
+ Select *pRhs = yymsp[0].minor.yy243;
+ Select *pLhs = yymsp[-2].minor.yy243;
if( pRhs && pRhs->pPrior ){
SrcList *pFrom;
Token x;
@@ -133201,30 +134076,30 @@ static void yy_reduce(
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0,0);
}
if( pRhs ){
- pRhs->op = (u8)yymsp[-1].minor.yy392;
+ pRhs->op = (u8)yymsp[-1].minor.yy194;
pRhs->pPrior = pLhs;
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
pRhs->selFlags &= ~SF_MultiValue;
- if( yymsp[-1].minor.yy392!=TK_ALL ) pParse->hasCompound = 1;
+ if( yymsp[-1].minor.yy194!=TK_ALL ) pParse->hasCompound = 1;
}else{
sqlite3SelectDelete(pParse->db, pLhs);
}
- yymsp[-2].minor.yy159 = pRhs;
+ yymsp[-2].minor.yy243 = pRhs;
}
break;
case 82: /* multiselect_op ::= UNION */
case 84: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==84);
-{yymsp[0].minor.yy392 = yymsp[0].major; /*A-overwrites-OP*/}
+{yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-OP*/}
break;
case 83: /* multiselect_op ::= UNION ALL */
-{yymsp[-1].minor.yy392 = TK_ALL;}
+{yymsp[-1].minor.yy194 = TK_ALL;}
break;
case 85: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
{
#if SELECTTRACE_ENABLED
Token s = yymsp[-8].minor.yy0; /*A-overwrites-S*/
#endif
- yymsp[-8].minor.yy159 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy442,yymsp[-5].minor.yy347,yymsp[-4].minor.yy122,yymsp[-3].minor.yy442,yymsp[-2].minor.yy122,yymsp[-1].minor.yy442,yymsp[-7].minor.yy392,yymsp[0].minor.yy64.pLimit,yymsp[0].minor.yy64.pOffset);
+ yymsp[-8].minor.yy243 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy148,yymsp[-5].minor.yy185,yymsp[-4].minor.yy72,yymsp[-3].minor.yy148,yymsp[-2].minor.yy72,yymsp[-1].minor.yy148,yymsp[-7].minor.yy194,yymsp[0].minor.yy354.pLimit,yymsp[0].minor.yy354.pOffset);
#if SELECTTRACE_ENABLED
/* Populate the Select.zSelName[] string that is used to help with
** query planner debugging, to differentiate between multiple Select
@@ -133235,17 +134110,17 @@ static void yy_reduce(
** comment to be the zSelName value. Otherwise, the label is #N where
** is an integer that is incremented with each SELECT statement seen.
*/
- if( yymsp[-8].minor.yy159!=0 ){
+ if( yymsp[-8].minor.yy243!=0 ){
const char *z = s.z+6;
int i;
- sqlite3_snprintf(sizeof(yymsp[-8].minor.yy159->zSelName), yymsp[-8].minor.yy159->zSelName, "#%d",
+ sqlite3_snprintf(sizeof(yymsp[-8].minor.yy243->zSelName), yymsp[-8].minor.yy243->zSelName, "#%d",
++pParse->nSelect);
while( z[0]==' ' ) z++;
if( z[0]=='/' && z[1]=='*' ){
z += 2;
while( z[0]==' ' ) z++;
for(i=0; sqlite3Isalnum(z[i]); i++){}
- sqlite3_snprintf(sizeof(yymsp[-8].minor.yy159->zSelName), yymsp[-8].minor.yy159->zSelName, "%.*s", i, z);
+ sqlite3_snprintf(sizeof(yymsp[-8].minor.yy243->zSelName), yymsp[-8].minor.yy243->zSelName, "%.*s", i, z);
}
}
#endif /* SELECTRACE_ENABLED */
@@ -133253,47 +134128,48 @@ static void yy_reduce(
break;
case 86: /* values ::= VALUES LP nexprlist RP */
{
- yymsp[-3].minor.yy159 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy442,0,0,0,0,0,SF_Values,0,0);
+ yymsp[-3].minor.yy243 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy148,0,0,0,0,0,SF_Values,0,0);
}
break;
case 87: /* values ::= values COMMA LP exprlist RP */
{
- Select *pRight, *pLeft = yymsp[-4].minor.yy159;
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy442,0,0,0,0,0,SF_Values|SF_MultiValue,0,0);
+ Select *pRight, *pLeft = yymsp[-4].minor.yy243;
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy148,0,0,0,0,0,SF_Values|SF_MultiValue,0,0);
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
if( pRight ){
pRight->op = TK_ALL;
pRight->pPrior = pLeft;
- yymsp[-4].minor.yy159 = pRight;
+ yymsp[-4].minor.yy243 = pRight;
}else{
- yymsp[-4].minor.yy159 = pLeft;
+ yymsp[-4].minor.yy243 = pLeft;
}
}
break;
case 88: /* distinct ::= DISTINCT */
-{yymsp[0].minor.yy392 = SF_Distinct;}
+{yymsp[0].minor.yy194 = SF_Distinct;}
break;
case 89: /* distinct ::= ALL */
-{yymsp[0].minor.yy392 = SF_All;}
+{yymsp[0].minor.yy194 = SF_All;}
break;
case 91: /* sclp ::= */
case 119: /* orderby_opt ::= */ yytestcase(yyruleno==119);
case 126: /* groupby_opt ::= */ yytestcase(yyruleno==126);
case 199: /* exprlist ::= */ yytestcase(yyruleno==199);
- case 205: /* eidlist_opt ::= */ yytestcase(yyruleno==205);
-{yymsp[1].minor.yy442 = 0;}
+ case 202: /* paren_exprlist ::= */ yytestcase(yyruleno==202);
+ case 207: /* eidlist_opt ::= */ yytestcase(yyruleno==207);
+{yymsp[1].minor.yy148 = 0;}
break;
case 92: /* selcollist ::= sclp expr as */
{
- yymsp[-2].minor.yy442 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy442, yymsp[-1].minor.yy342.pExpr);
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-2].minor.yy442, &yymsp[0].minor.yy0, 1);
- sqlite3ExprListSetSpan(pParse,yymsp[-2].minor.yy442,&yymsp[-1].minor.yy342);
+ yymsp[-2].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy148, yymsp[-1].minor.yy190.pExpr);
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-2].minor.yy148, &yymsp[0].minor.yy0, 1);
+ sqlite3ExprListSetSpan(pParse,yymsp[-2].minor.yy148,&yymsp[-1].minor.yy190);
}
break;
case 93: /* selcollist ::= sclp STAR */
{
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
- yymsp[-1].minor.yy442 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy442, p);
+ yymsp[-1].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy148, p);
}
break;
case 94: /* selcollist ::= sclp nm DOT STAR */
@@ -133301,70 +134177,70 @@ static void yy_reduce(
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0, &yymsp[0].minor.yy0);
Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
- yymsp[-3].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy442, pDot);
+ yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148, pDot);
}
break;
case 95: /* as ::= AS nm */
case 106: /* dbnm ::= DOT nm */ yytestcase(yyruleno==106);
- case 219: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==219);
- case 220: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==220);
+ case 221: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==221);
+ case 222: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==222);
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
break;
case 97: /* from ::= */
-{yymsp[1].minor.yy347 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy347));}
+{yymsp[1].minor.yy185 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy185));}
break;
case 98: /* from ::= FROM seltablist */
{
- yymsp[-1].minor.yy347 = yymsp[0].minor.yy347;
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy347);
+ yymsp[-1].minor.yy185 = yymsp[0].minor.yy185;
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy185);
}
break;
case 99: /* stl_prefix ::= seltablist joinop */
{
- if( ALWAYS(yymsp[-1].minor.yy347 && yymsp[-1].minor.yy347->nSrc>0) ) yymsp[-1].minor.yy347->a[yymsp[-1].minor.yy347->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy392;
+ if( ALWAYS(yymsp[-1].minor.yy185 && yymsp[-1].minor.yy185->nSrc>0) ) yymsp[-1].minor.yy185->a[yymsp[-1].minor.yy185->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy194;
}
break;
case 100: /* stl_prefix ::= */
-{yymsp[1].minor.yy347 = 0;}
+{yymsp[1].minor.yy185 = 0;}
break;
case 101: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
{
- yymsp[-6].minor.yy347 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy347,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy122,yymsp[0].minor.yy180);
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy347, &yymsp[-2].minor.yy0);
+ yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy185, &yymsp[-2].minor.yy0);
}
break;
case 102: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
{
- yymsp[-8].minor.yy347 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy347,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy122,yymsp[0].minor.yy180);
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy347, yymsp[-4].minor.yy442);
+ yymsp[-8].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy185,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254);
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy185, yymsp[-4].minor.yy148);
}
break;
case 103: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
{
- yymsp[-6].minor.yy347 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy347,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy159,yymsp[-1].minor.yy122,yymsp[0].minor.yy180);
+ yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy243,yymsp[-1].minor.yy72,yymsp[0].minor.yy254);
}
break;
case 104: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
{
- if( yymsp[-6].minor.yy347==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy122==0 && yymsp[0].minor.yy180==0 ){
- yymsp[-6].minor.yy347 = yymsp[-4].minor.yy347;
- }else if( yymsp[-4].minor.yy347->nSrc==1 ){
- yymsp[-6].minor.yy347 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy347,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy122,yymsp[0].minor.yy180);
- if( yymsp[-6].minor.yy347 ){
- struct SrcList_item *pNew = &yymsp[-6].minor.yy347->a[yymsp[-6].minor.yy347->nSrc-1];
- struct SrcList_item *pOld = yymsp[-4].minor.yy347->a;
+ if( yymsp[-6].minor.yy185==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy72==0 && yymsp[0].minor.yy254==0 ){
+ yymsp[-6].minor.yy185 = yymsp[-4].minor.yy185;
+ }else if( yymsp[-4].minor.yy185->nSrc==1 ){
+ yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy72,yymsp[0].minor.yy254);
+ if( yymsp[-6].minor.yy185 ){
+ struct SrcList_item *pNew = &yymsp[-6].minor.yy185->a[yymsp[-6].minor.yy185->nSrc-1];
+ struct SrcList_item *pOld = yymsp[-4].minor.yy185->a;
pNew->zName = pOld->zName;
pNew->zDatabase = pOld->zDatabase;
pNew->pSelect = pOld->pSelect;
pOld->zName = pOld->zDatabase = 0;
pOld->pSelect = 0;
}
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy347);
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy185);
}else{
Select *pSubquery;
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy347);
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy347,0,0,0,0,SF_NestedFrom,0,0);
- yymsp[-6].minor.yy347 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy347,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy122,yymsp[0].minor.yy180);
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy185);
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy185,0,0,0,0,SF_NestedFrom,0,0);
+ yymsp[-6].minor.yy185 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy185,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy72,yymsp[0].minor.yy254);
}
}
break;
@@ -133373,32 +134249,32 @@ static void yy_reduce(
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
break;
case 107: /* fullname ::= nm dbnm */
-{yymsp[-1].minor.yy347 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[-1].minor.yy185 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
case 108: /* joinop ::= COMMA|JOIN */
-{ yymsp[0].minor.yy392 = JT_INNER; }
+{ yymsp[0].minor.yy194 = JT_INNER; }
break;
case 109: /* joinop ::= JOIN_KW JOIN */
-{yymsp[-1].minor.yy392 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
+{yymsp[-1].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
break;
case 110: /* joinop ::= JOIN_KW nm JOIN */
-{yymsp[-2].minor.yy392 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
+{yymsp[-2].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
break;
case 111: /* joinop ::= JOIN_KW nm nm JOIN */
-{yymsp[-3].minor.yy392 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
+{yymsp[-3].minor.yy194 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
break;
case 112: /* on_opt ::= ON expr */
case 129: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==129);
case 136: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==136);
case 195: /* case_else ::= ELSE expr */ yytestcase(yyruleno==195);
-{yymsp[-1].minor.yy122 = yymsp[0].minor.yy342.pExpr;}
+{yymsp[-1].minor.yy72 = yymsp[0].minor.yy190.pExpr;}
break;
case 113: /* on_opt ::= */
case 128: /* having_opt ::= */ yytestcase(yyruleno==128);
case 135: /* where_opt ::= */ yytestcase(yyruleno==135);
case 196: /* case_else ::= */ yytestcase(yyruleno==196);
case 198: /* case_operand ::= */ yytestcase(yyruleno==198);
-{yymsp[1].minor.yy122 = 0;}
+{yymsp[1].minor.yy72 = 0;}
break;
case 115: /* indexed_opt ::= INDEXED BY nm */
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
@@ -133407,116 +134283,116 @@ static void yy_reduce(
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
break;
case 117: /* using_opt ::= USING LP idlist RP */
-{yymsp[-3].minor.yy180 = yymsp[-1].minor.yy180;}
+{yymsp[-3].minor.yy254 = yymsp[-1].minor.yy254;}
break;
case 118: /* using_opt ::= */
case 144: /* idlist_opt ::= */ yytestcase(yyruleno==144);
-{yymsp[1].minor.yy180 = 0;}
+{yymsp[1].minor.yy254 = 0;}
break;
case 120: /* orderby_opt ::= ORDER BY sortlist */
case 127: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==127);
-{yymsp[-2].minor.yy442 = yymsp[0].minor.yy442;}
+{yymsp[-2].minor.yy148 = yymsp[0].minor.yy148;}
break;
case 121: /* sortlist ::= sortlist COMMA expr sortorder */
{
- yymsp[-3].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy442,yymsp[-1].minor.yy342.pExpr);
- sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy442,yymsp[0].minor.yy392);
+ yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148,yymsp[-1].minor.yy190.pExpr);
+ sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy148,yymsp[0].minor.yy194);
}
break;
case 122: /* sortlist ::= expr sortorder */
{
- yymsp[-1].minor.yy442 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy342.pExpr); /*A-overwrites-Y*/
- sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy442,yymsp[0].minor.yy392);
+ yymsp[-1].minor.yy148 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy190.pExpr); /*A-overwrites-Y*/
+ sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy148,yymsp[0].minor.yy194);
}
break;
case 123: /* sortorder ::= ASC */
-{yymsp[0].minor.yy392 = SQLITE_SO_ASC;}
+{yymsp[0].minor.yy194 = SQLITE_SO_ASC;}
break;
case 124: /* sortorder ::= DESC */
-{yymsp[0].minor.yy392 = SQLITE_SO_DESC;}
+{yymsp[0].minor.yy194 = SQLITE_SO_DESC;}
break;
case 125: /* sortorder ::= */
-{yymsp[1].minor.yy392 = SQLITE_SO_UNDEFINED;}
+{yymsp[1].minor.yy194 = SQLITE_SO_UNDEFINED;}
break;
case 130: /* limit_opt ::= */
-{yymsp[1].minor.yy64.pLimit = 0; yymsp[1].minor.yy64.pOffset = 0;}
+{yymsp[1].minor.yy354.pLimit = 0; yymsp[1].minor.yy354.pOffset = 0;}
break;
case 131: /* limit_opt ::= LIMIT expr */
-{yymsp[-1].minor.yy64.pLimit = yymsp[0].minor.yy342.pExpr; yymsp[-1].minor.yy64.pOffset = 0;}
+{yymsp[-1].minor.yy354.pLimit = yymsp[0].minor.yy190.pExpr; yymsp[-1].minor.yy354.pOffset = 0;}
break;
case 132: /* limit_opt ::= LIMIT expr OFFSET expr */
-{yymsp[-3].minor.yy64.pLimit = yymsp[-2].minor.yy342.pExpr; yymsp[-3].minor.yy64.pOffset = yymsp[0].minor.yy342.pExpr;}
+{yymsp[-3].minor.yy354.pLimit = yymsp[-2].minor.yy190.pExpr; yymsp[-3].minor.yy354.pOffset = yymsp[0].minor.yy190.pExpr;}
break;
case 133: /* limit_opt ::= LIMIT expr COMMA expr */
-{yymsp[-3].minor.yy64.pOffset = yymsp[-2].minor.yy342.pExpr; yymsp[-3].minor.yy64.pLimit = yymsp[0].minor.yy342.pExpr;}
+{yymsp[-3].minor.yy354.pOffset = yymsp[-2].minor.yy190.pExpr; yymsp[-3].minor.yy354.pLimit = yymsp[0].minor.yy190.pExpr;}
break;
case 134: /* cmd ::= with DELETE FROM fullname indexed_opt where_opt */
{
- sqlite3WithPush(pParse, yymsp[-5].minor.yy331, 1);
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy347, &yymsp[-1].minor.yy0);
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy347,yymsp[0].minor.yy122);
+ sqlite3WithPush(pParse, yymsp[-5].minor.yy285, 1);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy185, &yymsp[-1].minor.yy0);
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy185,yymsp[0].minor.yy72);
}
break;
case 137: /* cmd ::= with UPDATE orconf fullname indexed_opt SET setlist where_opt */
{
- sqlite3WithPush(pParse, yymsp[-7].minor.yy331, 1);
- sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy347, &yymsp[-3].minor.yy0);
- sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy442,"set list");
- sqlite3Update(pParse,yymsp[-4].minor.yy347,yymsp[-1].minor.yy442,yymsp[0].minor.yy122,yymsp[-5].minor.yy392);
+ sqlite3WithPush(pParse, yymsp[-7].minor.yy285, 1);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy185, &yymsp[-3].minor.yy0);
+ sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy148,"set list");
+ sqlite3Update(pParse,yymsp[-4].minor.yy185,yymsp[-1].minor.yy148,yymsp[0].minor.yy72,yymsp[-5].minor.yy194);
}
break;
case 138: /* setlist ::= setlist COMMA nm EQ expr */
{
- yymsp[-4].minor.yy442 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy442, yymsp[0].minor.yy342.pExpr);
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy442, &yymsp[-2].minor.yy0, 1);
+ yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy148, yymsp[0].minor.yy190.pExpr);
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy148, &yymsp[-2].minor.yy0, 1);
}
break;
case 139: /* setlist ::= nm EQ expr */
{
- yylhsminor.yy442 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy342.pExpr);
- sqlite3ExprListSetName(pParse, yylhsminor.yy442, &yymsp[-2].minor.yy0, 1);
+ yylhsminor.yy148 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy190.pExpr);
+ sqlite3ExprListSetName(pParse, yylhsminor.yy148, &yymsp[-2].minor.yy0, 1);
}
- yymsp[-2].minor.yy442 = yylhsminor.yy442;
+ yymsp[-2].minor.yy148 = yylhsminor.yy148;
break;
case 140: /* cmd ::= with insert_cmd INTO fullname idlist_opt select */
{
- sqlite3WithPush(pParse, yymsp[-5].minor.yy331, 1);
- sqlite3Insert(pParse, yymsp[-2].minor.yy347, yymsp[0].minor.yy159, yymsp[-1].minor.yy180, yymsp[-4].minor.yy392);
+ sqlite3WithPush(pParse, yymsp[-5].minor.yy285, 1);
+ sqlite3Insert(pParse, yymsp[-2].minor.yy185, yymsp[0].minor.yy243, yymsp[-1].minor.yy254, yymsp[-4].minor.yy194);
}
break;
case 141: /* cmd ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */
{
- sqlite3WithPush(pParse, yymsp[-6].minor.yy331, 1);
- sqlite3Insert(pParse, yymsp[-3].minor.yy347, 0, yymsp[-2].minor.yy180, yymsp[-5].minor.yy392);
+ sqlite3WithPush(pParse, yymsp[-6].minor.yy285, 1);
+ sqlite3Insert(pParse, yymsp[-3].minor.yy185, 0, yymsp[-2].minor.yy254, yymsp[-5].minor.yy194);
}
break;
case 145: /* idlist_opt ::= LP idlist RP */
-{yymsp[-2].minor.yy180 = yymsp[-1].minor.yy180;}
+{yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;}
break;
case 146: /* idlist ::= idlist COMMA nm */
-{yymsp[-2].minor.yy180 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy180,&yymsp[0].minor.yy0);}
+{yymsp[-2].minor.yy254 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);}
break;
case 147: /* idlist ::= nm */
-{yymsp[0].minor.yy180 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy254 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
break;
case 148: /* expr ::= LP expr RP */
-{spanSet(&yymsp[-2].minor.yy342,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/ yymsp[-2].minor.yy342.pExpr = yymsp[-1].minor.yy342.pExpr;}
+{spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/ yymsp[-2].minor.yy190.pExpr = yymsp[-1].minor.yy190.pExpr;}
break;
case 149: /* term ::= NULL */
case 154: /* term ::= INTEGER|FLOAT|BLOB */ yytestcase(yyruleno==154);
case 155: /* term ::= STRING */ yytestcase(yyruleno==155);
-{spanExpr(&yymsp[0].minor.yy342,pParse,yymsp[0].major,yymsp[0].minor.yy0);/*A-overwrites-X*/}
+{spanExpr(&yymsp[0].minor.yy190,pParse,yymsp[0].major,yymsp[0].minor.yy0);/*A-overwrites-X*/}
break;
case 150: /* expr ::= ID|INDEXED */
case 151: /* expr ::= JOIN_KW */ yytestcase(yyruleno==151);
-{spanExpr(&yymsp[0].minor.yy342,pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{spanExpr(&yymsp[0].minor.yy190,pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
case 152: /* expr ::= nm DOT nm */
{
Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
- spanSet(&yymsp[-2].minor.yy342,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
- yymsp[-2].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0);
+ spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
+ yymsp[-2].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0);
}
break;
case 153: /* expr ::= nm DOT nm DOT nm */
@@ -133525,70 +134401,70 @@ static void yy_reduce(
Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
Expr *temp3 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3, 0);
- spanSet(&yymsp[-4].minor.yy342,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0);
+ spanSet(&yymsp[-4].minor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0);
}
break;
case 156: /* expr ::= VARIABLE */
{
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
- spanExpr(&yymsp[0].minor.yy342, pParse, TK_VARIABLE, yymsp[0].minor.yy0);
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy342.pExpr);
+ spanExpr(&yymsp[0].minor.yy190, pParse, TK_VARIABLE, yymsp[0].minor.yy0);
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy190.pExpr);
}else{
/* When doing a nested parse, one can include terms in an expression
** that look like this: #1 #2 ... These terms refer to registers
** in the virtual machine. #N is the N-th register. */
Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/
assert( t.n>=2 );
- spanSet(&yymsp[0].minor.yy342, &t, &t);
+ spanSet(&yymsp[0].minor.yy190, &t, &t);
if( pParse->nested==0 ){
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
- yymsp[0].minor.yy342.pExpr = 0;
+ yymsp[0].minor.yy190.pExpr = 0;
}else{
- yymsp[0].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &t);
- if( yymsp[0].minor.yy342.pExpr ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy342.pExpr->iTable);
+ yymsp[0].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &t);
+ if( yymsp[0].minor.yy190.pExpr ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy190.pExpr->iTable);
}
}
}
break;
case 157: /* expr ::= expr COLLATE ID|STRING */
{
- yymsp[-2].minor.yy342.pExpr = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy342.pExpr, &yymsp[0].minor.yy0, 1);
- yymsp[-2].minor.yy342.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
+ yymsp[-2].minor.yy190.pExpr = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy190.pExpr, &yymsp[0].minor.yy0, 1);
+ yymsp[-2].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
}
break;
case 158: /* expr ::= CAST LP expr AS typetoken RP */
{
- spanSet(&yymsp[-5].minor.yy342,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
- yymsp[-5].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy342.pExpr, 0, &yymsp[-1].minor.yy0);
+ spanSet(&yymsp[-5].minor.yy190,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
+ yymsp[-5].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy190.pExpr, 0, &yymsp[-1].minor.yy0);
}
break;
case 159: /* expr ::= ID|INDEXED LP distinct exprlist RP */
{
- if( yymsp[-1].minor.yy442 && yymsp[-1].minor.yy442->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){
+ if( yymsp[-1].minor.yy148 && yymsp[-1].minor.yy148->nExpr>pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){
sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0);
}
- yylhsminor.yy342.pExpr = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy442, &yymsp[-4].minor.yy0);
- spanSet(&yylhsminor.yy342,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
- if( yymsp[-2].minor.yy392==SF_Distinct && yylhsminor.yy342.pExpr ){
- yylhsminor.yy342.pExpr->flags |= EP_Distinct;
+ yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy148, &yymsp[-4].minor.yy0);
+ spanSet(&yylhsminor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
+ if( yymsp[-2].minor.yy194==SF_Distinct && yylhsminor.yy190.pExpr ){
+ yylhsminor.yy190.pExpr->flags |= EP_Distinct;
}
}
- yymsp[-4].minor.yy342 = yylhsminor.yy342;
+ yymsp[-4].minor.yy190 = yylhsminor.yy190;
break;
case 160: /* expr ::= ID|INDEXED LP STAR RP */
{
- yylhsminor.yy342.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0);
- spanSet(&yylhsminor.yy342,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
+ yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0);
+ spanSet(&yylhsminor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
- yymsp[-3].minor.yy342 = yylhsminor.yy342;
+ yymsp[-3].minor.yy190 = yylhsminor.yy190;
break;
case 161: /* term ::= CTIME_KW */
{
- yylhsminor.yy342.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0);
- spanSet(&yylhsminor.yy342, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
+ yylhsminor.yy190.pExpr = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0);
+ spanSet(&yylhsminor.yy190, &yymsp[0].minor.yy0, &yymsp[0].minor.yy0);
}
- yymsp[0].minor.yy342 = yylhsminor.yy342;
+ yymsp[0].minor.yy190 = yylhsminor.yy190;
break;
case 162: /* expr ::= expr AND expr */
case 163: /* expr ::= expr OR expr */ yytestcase(yyruleno==163);
@@ -133598,86 +134474,86 @@ static void yy_reduce(
case 167: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==167);
case 168: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==168);
case 169: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==169);
-{spanBinaryExpr(pParse,yymsp[-1].major,&yymsp[-2].minor.yy342,&yymsp[0].minor.yy342);}
+{spanBinaryExpr(pParse,yymsp[-1].major,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy190);}
break;
case 170: /* likeop ::= LIKE_KW|MATCH */
-{yymsp[0].minor.yy318.eOperator = yymsp[0].minor.yy0; yymsp[0].minor.yy318.bNot = 0;/*A-overwrites-X*/}
+{yymsp[0].minor.yy392.eOperator = yymsp[0].minor.yy0; yymsp[0].minor.yy392.bNot = 0;/*A-overwrites-X*/}
break;
case 171: /* likeop ::= NOT LIKE_KW|MATCH */
-{yymsp[-1].minor.yy318.eOperator = yymsp[0].minor.yy0; yymsp[-1].minor.yy318.bNot = 1;}
+{yymsp[-1].minor.yy392.eOperator = yymsp[0].minor.yy0; yymsp[-1].minor.yy392.bNot = 1;}
break;
case 172: /* expr ::= expr likeop expr */
{
ExprList *pList;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy342.pExpr);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy342.pExpr);
- yymsp[-2].minor.yy342.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy318.eOperator);
- exprNot(pParse, yymsp[-1].minor.yy318.bNot, &yymsp[-2].minor.yy342);
- yymsp[-2].minor.yy342.zEnd = yymsp[0].minor.yy342.zEnd;
- if( yymsp[-2].minor.yy342.pExpr ) yymsp[-2].minor.yy342.pExpr->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy190.pExpr);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy190.pExpr);
+ yymsp[-2].minor.yy190.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy392.eOperator);
+ exprNot(pParse, yymsp[-1].minor.yy392.bNot, &yymsp[-2].minor.yy190);
+ yymsp[-2].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd;
+ if( yymsp[-2].minor.yy190.pExpr ) yymsp[-2].minor.yy190.pExpr->flags |= EP_InfixFunc;
}
break;
case 173: /* expr ::= expr likeop expr ESCAPE expr */
{
ExprList *pList;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy342.pExpr);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy342.pExpr);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy342.pExpr);
- yymsp[-4].minor.yy342.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy318.eOperator);
- exprNot(pParse, yymsp[-3].minor.yy318.bNot, &yymsp[-4].minor.yy342);
- yymsp[-4].minor.yy342.zEnd = yymsp[0].minor.yy342.zEnd;
- if( yymsp[-4].minor.yy342.pExpr ) yymsp[-4].minor.yy342.pExpr->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy190.pExpr);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy190.pExpr);
+ yymsp[-4].minor.yy190.pExpr = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy392.eOperator);
+ exprNot(pParse, yymsp[-3].minor.yy392.bNot, &yymsp[-4].minor.yy190);
+ yymsp[-4].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd;
+ if( yymsp[-4].minor.yy190.pExpr ) yymsp[-4].minor.yy190.pExpr->flags |= EP_InfixFunc;
}
break;
case 174: /* expr ::= expr ISNULL|NOTNULL */
-{spanUnaryPostfix(pParse,yymsp[0].major,&yymsp[-1].minor.yy342,&yymsp[0].minor.yy0);}
+{spanUnaryPostfix(pParse,yymsp[0].major,&yymsp[-1].minor.yy190,&yymsp[0].minor.yy0);}
break;
case 175: /* expr ::= expr NOT NULL */
-{spanUnaryPostfix(pParse,TK_NOTNULL,&yymsp[-2].minor.yy342,&yymsp[0].minor.yy0);}
+{spanUnaryPostfix(pParse,TK_NOTNULL,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy0);}
break;
case 176: /* expr ::= expr IS expr */
{
- spanBinaryExpr(pParse,TK_IS,&yymsp[-2].minor.yy342,&yymsp[0].minor.yy342);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy342.pExpr, yymsp[-2].minor.yy342.pExpr, TK_ISNULL);
+ spanBinaryExpr(pParse,TK_IS,&yymsp[-2].minor.yy190,&yymsp[0].minor.yy190);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy190.pExpr, yymsp[-2].minor.yy190.pExpr, TK_ISNULL);
}
break;
case 177: /* expr ::= expr IS NOT expr */
{
- spanBinaryExpr(pParse,TK_ISNOT,&yymsp[-3].minor.yy342,&yymsp[0].minor.yy342);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy342.pExpr, yymsp[-3].minor.yy342.pExpr, TK_NOTNULL);
+ spanBinaryExpr(pParse,TK_ISNOT,&yymsp[-3].minor.yy190,&yymsp[0].minor.yy190);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy190.pExpr, yymsp[-3].minor.yy190.pExpr, TK_NOTNULL);
}
break;
case 178: /* expr ::= NOT expr */
case 179: /* expr ::= BITNOT expr */ yytestcase(yyruleno==179);
-{spanUnaryPrefix(&yymsp[-1].minor.yy342,pParse,yymsp[-1].major,&yymsp[0].minor.yy342,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
+{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,yymsp[-1].major,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
break;
case 180: /* expr ::= MINUS expr */
-{spanUnaryPrefix(&yymsp[-1].minor.yy342,pParse,TK_UMINUS,&yymsp[0].minor.yy342,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
+{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,TK_UMINUS,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
break;
case 181: /* expr ::= PLUS expr */
-{spanUnaryPrefix(&yymsp[-1].minor.yy342,pParse,TK_UPLUS,&yymsp[0].minor.yy342,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
+{spanUnaryPrefix(&yymsp[-1].minor.yy190,pParse,TK_UPLUS,&yymsp[0].minor.yy190,&yymsp[-1].minor.yy0);/*A-overwrites-B*/}
break;
case 182: /* between_op ::= BETWEEN */
case 185: /* in_op ::= IN */ yytestcase(yyruleno==185);
-{yymsp[0].minor.yy392 = 0;}
+{yymsp[0].minor.yy194 = 0;}
break;
case 184: /* expr ::= expr between_op expr AND expr */
{
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy342.pExpr);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy342.pExpr);
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy342.pExpr, 0, 0);
- if( yymsp[-4].minor.yy342.pExpr ){
- yymsp[-4].minor.yy342.pExpr->x.pList = pList;
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy190.pExpr);
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy190.pExpr, 0, 0);
+ if( yymsp[-4].minor.yy190.pExpr ){
+ yymsp[-4].minor.yy190.pExpr->x.pList = pList;
}else{
sqlite3ExprListDelete(pParse->db, pList);
}
- exprNot(pParse, yymsp[-3].minor.yy392, &yymsp[-4].minor.yy342);
- yymsp[-4].minor.yy342.zEnd = yymsp[0].minor.yy342.zEnd;
+ exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190);
+ yymsp[-4].minor.yy190.zEnd = yymsp[0].minor.yy190.zEnd;
}
break;
case 187: /* expr ::= expr in_op LP exprlist RP */
{
- if( yymsp[-1].minor.yy442==0 ){
+ if( yymsp[-1].minor.yy148==0 ){
/* Expressions of the form
**
** expr1 IN ()
@@ -133686,9 +134562,9 @@ static void yy_reduce(
** simplify to constants 0 (false) and 1 (true), respectively,
** regardless of the value of expr1.
*/
- sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy342.pExpr);
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_INTEGER, 0, 0, &sqlite3IntTokens[yymsp[-3].minor.yy392]);
- }else if( yymsp[-1].minor.yy442->nExpr==1 ){
+ sqlite3ExprDelete(pParse->db, yymsp[-4].minor.yy190.pExpr);
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_INTEGER, 0, 0, &sqlite3IntTokens[yymsp[-3].minor.yy194]);
+ }else if( yymsp[-1].minor.yy148->nExpr==1 ){
/* Expressions of the form:
**
** expr1 IN (?1)
@@ -133705,200 +134581,202 @@ static void yy_reduce(
** affinity or the collating sequence to use for comparison. Otherwise,
** the semantics would be subtly different from IN or NOT IN.
*/
- Expr *pRHS = yymsp[-1].minor.yy442->a[0].pExpr;
- yymsp[-1].minor.yy442->a[0].pExpr = 0;
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy442);
+ Expr *pRHS = yymsp[-1].minor.yy148->a[0].pExpr;
+ yymsp[-1].minor.yy148->a[0].pExpr = 0;
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy148);
/* pRHS cannot be NULL because a malloc error would have been detected
** before now and control would have never reached this point */
if( ALWAYS(pRHS) ){
pRHS->flags &= ~EP_Collate;
pRHS->flags |= EP_Generic;
}
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, yymsp[-3].minor.yy392 ? TK_NE : TK_EQ, yymsp[-4].minor.yy342.pExpr, pRHS, 0);
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, yymsp[-3].minor.yy194 ? TK_NE : TK_EQ, yymsp[-4].minor.yy190.pExpr, pRHS, 0);
}else{
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy342.pExpr, 0, 0);
- if( yymsp[-4].minor.yy342.pExpr ){
- yymsp[-4].minor.yy342.pExpr->x.pList = yymsp[-1].minor.yy442;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy342.pExpr);
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0, 0);
+ if( yymsp[-4].minor.yy190.pExpr ){
+ yymsp[-4].minor.yy190.pExpr->x.pList = yymsp[-1].minor.yy148;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy190.pExpr);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy442);
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy148);
}
- exprNot(pParse, yymsp[-3].minor.yy392, &yymsp[-4].minor.yy342);
+ exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190);
}
- yymsp[-4].minor.yy342.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
+ yymsp[-4].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
}
break;
case 188: /* expr ::= LP select RP */
{
- spanSet(&yymsp[-2].minor.yy342,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/
- yymsp[-2].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy342.pExpr, yymsp[-1].minor.yy159);
+ spanSet(&yymsp[-2].minor.yy190,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/
+ yymsp[-2].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy190.pExpr, yymsp[-1].minor.yy243);
}
break;
case 189: /* expr ::= expr in_op LP select RP */
{
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy342.pExpr, 0, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy342.pExpr, yymsp[-1].minor.yy159);
- exprNot(pParse, yymsp[-3].minor.yy392, &yymsp[-4].minor.yy342);
- yymsp[-4].minor.yy342.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy190.pExpr, yymsp[-1].minor.yy243);
+ exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190);
+ yymsp[-4].minor.yy190.zEnd = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n];
}
break;
- case 190: /* expr ::= expr in_op nm dbnm */
+ case 190: /* expr ::= expr in_op nm dbnm paren_exprlist */
{
- SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);
+ SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0,0);
- yymsp[-3].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy342.pExpr, 0, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-3].minor.yy342.pExpr, pSelect);
- exprNot(pParse, yymsp[-2].minor.yy392, &yymsp[-3].minor.yy342);
- yymsp[-3].minor.yy342.zEnd = yymsp[0].minor.yy0.z ? &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] : &yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n];
+ if( yymsp[0].minor.yy148 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy148);
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy190.pExpr, 0, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy190.pExpr, pSelect);
+ exprNot(pParse, yymsp[-3].minor.yy194, &yymsp[-4].minor.yy190);
+ yymsp[-4].minor.yy190.zEnd = yymsp[-1].minor.yy0.z ? &yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n] : &yymsp[-2].minor.yy0.z[yymsp[-2].minor.yy0.n];
}
break;
case 191: /* expr ::= EXISTS LP select RP */
{
Expr *p;
- spanSet(&yymsp[-3].minor.yy342,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/
- p = yymsp[-3].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0);
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy159);
+ spanSet(&yymsp[-3].minor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-B*/
+ p = yymsp[-3].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0);
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy243);
}
break;
case 192: /* expr ::= CASE case_operand case_exprlist case_else END */
{
- spanSet(&yymsp[-4].minor.yy342,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-C*/
- yymsp[-4].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy122, 0, 0);
- if( yymsp[-4].minor.yy342.pExpr ){
- yymsp[-4].minor.yy342.pExpr->x.pList = yymsp[-1].minor.yy122 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy442,yymsp[-1].minor.yy122) : yymsp[-2].minor.yy442;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy342.pExpr);
+ spanSet(&yymsp[-4].minor.yy190,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-C*/
+ yymsp[-4].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy72, 0, 0);
+ if( yymsp[-4].minor.yy190.pExpr ){
+ yymsp[-4].minor.yy190.pExpr->x.pList = yymsp[-1].minor.yy72 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy148,yymsp[-1].minor.yy72) : yymsp[-2].minor.yy148;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy190.pExpr);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy442);
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy122);
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy148);
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy72);
}
}
break;
case 193: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
- yymsp[-4].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy442, yymsp[-2].minor.yy342.pExpr);
- yymsp[-4].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy442, yymsp[0].minor.yy342.pExpr);
+ yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy148, yymsp[-2].minor.yy190.pExpr);
+ yymsp[-4].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy148, yymsp[0].minor.yy190.pExpr);
}
break;
case 194: /* case_exprlist ::= WHEN expr THEN expr */
{
- yymsp[-3].minor.yy442 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy342.pExpr);
- yymsp[-3].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy442, yymsp[0].minor.yy342.pExpr);
+ yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy190.pExpr);
+ yymsp[-3].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy148, yymsp[0].minor.yy190.pExpr);
}
break;
case 197: /* case_operand ::= expr */
-{yymsp[0].minor.yy122 = yymsp[0].minor.yy342.pExpr; /*A-overwrites-X*/}
+{yymsp[0].minor.yy72 = yymsp[0].minor.yy190.pExpr; /*A-overwrites-X*/}
break;
case 200: /* nexprlist ::= nexprlist COMMA expr */
-{yymsp[-2].minor.yy442 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy442,yymsp[0].minor.yy342.pExpr);}
+{yymsp[-2].minor.yy148 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy148,yymsp[0].minor.yy190.pExpr);}
break;
case 201: /* nexprlist ::= expr */
-{yymsp[0].minor.yy442 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy342.pExpr); /*A-overwrites-Y*/}
+{yymsp[0].minor.yy148 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy190.pExpr); /*A-overwrites-Y*/}
+ break;
+ case 203: /* paren_exprlist ::= LP exprlist RP */
+ case 208: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==208);
+{yymsp[-2].minor.yy148 = yymsp[-1].minor.yy148;}
break;
- case 202: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ case 204: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
{
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
- sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy442, yymsp[-10].minor.yy392,
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy122, SQLITE_SO_ASC, yymsp[-8].minor.yy392);
+ sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy148, yymsp[-10].minor.yy194,
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy72, SQLITE_SO_ASC, yymsp[-8].minor.yy194, SQLITE_IDXTYPE_APPDEF);
}
break;
- case 203: /* uniqueflag ::= UNIQUE */
- case 244: /* raisetype ::= ABORT */ yytestcase(yyruleno==244);
-{yymsp[0].minor.yy392 = OE_Abort;}
+ case 205: /* uniqueflag ::= UNIQUE */
+ case 246: /* raisetype ::= ABORT */ yytestcase(yyruleno==246);
+{yymsp[0].minor.yy194 = OE_Abort;}
break;
- case 204: /* uniqueflag ::= */
-{yymsp[1].minor.yy392 = OE_None;}
+ case 206: /* uniqueflag ::= */
+{yymsp[1].minor.yy194 = OE_None;}
break;
- case 206: /* eidlist_opt ::= LP eidlist RP */
-{yymsp[-2].minor.yy442 = yymsp[-1].minor.yy442;}
- break;
- case 207: /* eidlist ::= eidlist COMMA nm collate sortorder */
+ case 209: /* eidlist ::= eidlist COMMA nm collate sortorder */
{
- yymsp[-4].minor.yy442 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy442, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy392, yymsp[0].minor.yy392);
+ yymsp[-4].minor.yy148 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy148, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy194, yymsp[0].minor.yy194);
}
break;
- case 208: /* eidlist ::= nm collate sortorder */
+ case 210: /* eidlist ::= nm collate sortorder */
{
- yymsp[-2].minor.yy442 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy392, yymsp[0].minor.yy392); /*A-overwrites-Y*/
+ yymsp[-2].minor.yy148 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy194, yymsp[0].minor.yy194); /*A-overwrites-Y*/
}
break;
- case 211: /* cmd ::= DROP INDEX ifexists fullname */
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy347, yymsp[-1].minor.yy392);}
+ case 213: /* cmd ::= DROP INDEX ifexists fullname */
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy185, yymsp[-1].minor.yy194);}
break;
- case 212: /* cmd ::= VACUUM */
- case 213: /* cmd ::= VACUUM nm */ yytestcase(yyruleno==213);
+ case 214: /* cmd ::= VACUUM */
+ case 215: /* cmd ::= VACUUM nm */ yytestcase(yyruleno==215);
{sqlite3Vacuum(pParse);}
break;
- case 214: /* cmd ::= PRAGMA nm dbnm */
+ case 216: /* cmd ::= PRAGMA nm dbnm */
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
break;
- case 215: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
+ case 217: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
break;
- case 216: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ case 218: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
break;
- case 217: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
+ case 219: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
break;
- case 218: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ case 220: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
break;
- case 221: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ case 223: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
{
Token all;
all.z = yymsp[-3].minor.yy0.z;
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy327, &all);
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy145, &all);
}
break;
- case 222: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ case 224: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
{
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy392, yymsp[-4].minor.yy410.a, yymsp[-4].minor.yy410.b, yymsp[-2].minor.yy347, yymsp[0].minor.yy122, yymsp[-10].minor.yy392, yymsp[-8].minor.yy392);
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy194, yymsp[-4].minor.yy332.a, yymsp[-4].minor.yy332.b, yymsp[-2].minor.yy185, yymsp[0].minor.yy72, yymsp[-10].minor.yy194, yymsp[-8].minor.yy194);
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
}
break;
- case 223: /* trigger_time ::= BEFORE */
-{ yymsp[0].minor.yy392 = TK_BEFORE; }
+ case 225: /* trigger_time ::= BEFORE */
+{ yymsp[0].minor.yy194 = TK_BEFORE; }
break;
- case 224: /* trigger_time ::= AFTER */
-{ yymsp[0].minor.yy392 = TK_AFTER; }
+ case 226: /* trigger_time ::= AFTER */
+{ yymsp[0].minor.yy194 = TK_AFTER; }
break;
- case 225: /* trigger_time ::= INSTEAD OF */
-{ yymsp[-1].minor.yy392 = TK_INSTEAD;}
+ case 227: /* trigger_time ::= INSTEAD OF */
+{ yymsp[-1].minor.yy194 = TK_INSTEAD;}
break;
- case 226: /* trigger_time ::= */
-{ yymsp[1].minor.yy392 = TK_BEFORE; }
+ case 228: /* trigger_time ::= */
+{ yymsp[1].minor.yy194 = TK_BEFORE; }
break;
- case 227: /* trigger_event ::= DELETE|INSERT */
- case 228: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==228);
-{yymsp[0].minor.yy410.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy410.b = 0;}
+ case 229: /* trigger_event ::= DELETE|INSERT */
+ case 230: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==230);
+{yymsp[0].minor.yy332.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy332.b = 0;}
break;
- case 229: /* trigger_event ::= UPDATE OF idlist */
-{yymsp[-2].minor.yy410.a = TK_UPDATE; yymsp[-2].minor.yy410.b = yymsp[0].minor.yy180;}
+ case 231: /* trigger_event ::= UPDATE OF idlist */
+{yymsp[-2].minor.yy332.a = TK_UPDATE; yymsp[-2].minor.yy332.b = yymsp[0].minor.yy254;}
break;
- case 230: /* when_clause ::= */
- case 249: /* key_opt ::= */ yytestcase(yyruleno==249);
-{ yymsp[1].minor.yy122 = 0; }
+ case 232: /* when_clause ::= */
+ case 251: /* key_opt ::= */ yytestcase(yyruleno==251);
+{ yymsp[1].minor.yy72 = 0; }
break;
- case 231: /* when_clause ::= WHEN expr */
- case 250: /* key_opt ::= KEY expr */ yytestcase(yyruleno==250);
-{ yymsp[-1].minor.yy122 = yymsp[0].minor.yy342.pExpr; }
+ case 233: /* when_clause ::= WHEN expr */
+ case 252: /* key_opt ::= KEY expr */ yytestcase(yyruleno==252);
+{ yymsp[-1].minor.yy72 = yymsp[0].minor.yy190.pExpr; }
break;
- case 232: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 234: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
- assert( yymsp[-2].minor.yy327!=0 );
- yymsp[-2].minor.yy327->pLast->pNext = yymsp[-1].minor.yy327;
- yymsp[-2].minor.yy327->pLast = yymsp[-1].minor.yy327;
+ assert( yymsp[-2].minor.yy145!=0 );
+ yymsp[-2].minor.yy145->pLast->pNext = yymsp[-1].minor.yy145;
+ yymsp[-2].minor.yy145->pLast = yymsp[-1].minor.yy145;
}
break;
- case 233: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 235: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
- assert( yymsp[-1].minor.yy327!=0 );
- yymsp[-1].minor.yy327->pLast = yymsp[-1].minor.yy327;
+ assert( yymsp[-1].minor.yy145!=0 );
+ yymsp[-1].minor.yy145->pLast = yymsp[-1].minor.yy145;
}
break;
- case 234: /* trnm ::= nm DOT nm */
+ case 236: /* trnm ::= nm DOT nm */
{
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
sqlite3ErrorMsg(pParse,
@@ -133906,195 +134784,195 @@ static void yy_reduce(
"statements within triggers");
}
break;
- case 235: /* tridxby ::= INDEXED BY nm */
+ case 237: /* tridxby ::= INDEXED BY nm */
{
sqlite3ErrorMsg(pParse,
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 236: /* tridxby ::= NOT INDEXED */
+ case 238: /* tridxby ::= NOT INDEXED */
{
sqlite3ErrorMsg(pParse,
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 237: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt */
-{yymsp[-6].minor.yy327 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy442, yymsp[0].minor.yy122, yymsp[-5].minor.yy392);}
+ case 239: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt */
+{yymsp[-6].minor.yy145 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-4].minor.yy0, yymsp[-1].minor.yy148, yymsp[0].minor.yy72, yymsp[-5].minor.yy194);}
break;
- case 238: /* trigger_cmd ::= insert_cmd INTO trnm idlist_opt select */
-{yymsp[-4].minor.yy327 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy180, yymsp[0].minor.yy159, yymsp[-4].minor.yy392);/*A-overwrites-R*/}
+ case 240: /* trigger_cmd ::= insert_cmd INTO trnm idlist_opt select */
+{yymsp[-4].minor.yy145 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy254, yymsp[0].minor.yy243, yymsp[-4].minor.yy194);/*A-overwrites-R*/}
break;
- case 239: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */
-{yymsp[-4].minor.yy327 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy122);}
+ case 241: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt */
+{yymsp[-4].minor.yy145 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[0].minor.yy72);}
break;
- case 240: /* trigger_cmd ::= select */
-{yymsp[0].minor.yy327 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy159); /*A-overwrites-X*/}
+ case 242: /* trigger_cmd ::= select */
+{yymsp[0].minor.yy145 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy243); /*A-overwrites-X*/}
break;
- case 241: /* expr ::= RAISE LP IGNORE RP */
+ case 243: /* expr ::= RAISE LP IGNORE RP */
{
- spanSet(&yymsp[-3].minor.yy342,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
- yymsp[-3].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0);
- if( yymsp[-3].minor.yy342.pExpr ){
- yymsp[-3].minor.yy342.pExpr->affinity = OE_Ignore;
+ spanSet(&yymsp[-3].minor.yy190,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
+ yymsp[-3].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0);
+ if( yymsp[-3].minor.yy190.pExpr ){
+ yymsp[-3].minor.yy190.pExpr->affinity = OE_Ignore;
}
}
break;
- case 242: /* expr ::= RAISE LP raisetype COMMA nm RP */
+ case 244: /* expr ::= RAISE LP raisetype COMMA nm RP */
{
- spanSet(&yymsp[-5].minor.yy342,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
- yymsp[-5].minor.yy342.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
- if( yymsp[-5].minor.yy342.pExpr ) {
- yymsp[-5].minor.yy342.pExpr->affinity = (char)yymsp[-3].minor.yy392;
+ spanSet(&yymsp[-5].minor.yy190,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/
+ yymsp[-5].minor.yy190.pExpr = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
+ if( yymsp[-5].minor.yy190.pExpr ) {
+ yymsp[-5].minor.yy190.pExpr->affinity = (char)yymsp[-3].minor.yy194;
}
}
break;
- case 243: /* raisetype ::= ROLLBACK */
-{yymsp[0].minor.yy392 = OE_Rollback;}
+ case 245: /* raisetype ::= ROLLBACK */
+{yymsp[0].minor.yy194 = OE_Rollback;}
break;
- case 245: /* raisetype ::= FAIL */
-{yymsp[0].minor.yy392 = OE_Fail;}
+ case 247: /* raisetype ::= FAIL */
+{yymsp[0].minor.yy194 = OE_Fail;}
break;
- case 246: /* cmd ::= DROP TRIGGER ifexists fullname */
+ case 248: /* cmd ::= DROP TRIGGER ifexists fullname */
{
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy347,yymsp[-1].minor.yy392);
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy185,yymsp[-1].minor.yy194);
}
break;
- case 247: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ case 249: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
{
- sqlite3Attach(pParse, yymsp[-3].minor.yy342.pExpr, yymsp[-1].minor.yy342.pExpr, yymsp[0].minor.yy122);
+ sqlite3Attach(pParse, yymsp[-3].minor.yy190.pExpr, yymsp[-1].minor.yy190.pExpr, yymsp[0].minor.yy72);
}
break;
- case 248: /* cmd ::= DETACH database_kw_opt expr */
+ case 250: /* cmd ::= DETACH database_kw_opt expr */
{
- sqlite3Detach(pParse, yymsp[0].minor.yy342.pExpr);
+ sqlite3Detach(pParse, yymsp[0].minor.yy190.pExpr);
}
break;
- case 251: /* cmd ::= REINDEX */
+ case 253: /* cmd ::= REINDEX */
{sqlite3Reindex(pParse, 0, 0);}
break;
- case 252: /* cmd ::= REINDEX nm dbnm */
+ case 254: /* cmd ::= REINDEX nm dbnm */
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 253: /* cmd ::= ANALYZE */
+ case 255: /* cmd ::= ANALYZE */
{sqlite3Analyze(pParse, 0, 0);}
break;
- case 254: /* cmd ::= ANALYZE nm dbnm */
+ case 256: /* cmd ::= ANALYZE nm dbnm */
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 255: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+ case 257: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
{
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy347,&yymsp[0].minor.yy0);
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy185,&yymsp[0].minor.yy0);
}
break;
- case 256: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ case 258: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
{
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
}
break;
- case 257: /* add_column_fullname ::= fullname */
+ case 259: /* add_column_fullname ::= fullname */
{
disableLookaside(pParse);
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy347);
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy185);
}
break;
- case 258: /* cmd ::= create_vtab */
+ case 260: /* cmd ::= create_vtab */
{sqlite3VtabFinishParse(pParse,0);}
break;
- case 259: /* cmd ::= create_vtab LP vtabarglist RP */
+ case 261: /* cmd ::= create_vtab LP vtabarglist RP */
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
break;
- case 260: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ case 262: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
{
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy392);
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy194);
}
break;
- case 261: /* vtabarg ::= */
+ case 263: /* vtabarg ::= */
{sqlite3VtabArgInit(pParse);}
break;
- case 262: /* vtabargtoken ::= ANY */
- case 263: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==263);
- case 264: /* lp ::= LP */ yytestcase(yyruleno==264);
+ case 264: /* vtabargtoken ::= ANY */
+ case 265: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==265);
+ case 266: /* lp ::= LP */ yytestcase(yyruleno==266);
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
break;
- case 265: /* with ::= */
-{yymsp[1].minor.yy331 = 0;}
+ case 267: /* with ::= */
+{yymsp[1].minor.yy285 = 0;}
break;
- case 266: /* with ::= WITH wqlist */
-{ yymsp[-1].minor.yy331 = yymsp[0].minor.yy331; }
+ case 268: /* with ::= WITH wqlist */
+{ yymsp[-1].minor.yy285 = yymsp[0].minor.yy285; }
break;
- case 267: /* with ::= WITH RECURSIVE wqlist */
-{ yymsp[-2].minor.yy331 = yymsp[0].minor.yy331; }
+ case 269: /* with ::= WITH RECURSIVE wqlist */
+{ yymsp[-2].minor.yy285 = yymsp[0].minor.yy285; }
break;
- case 268: /* wqlist ::= nm eidlist_opt AS LP select RP */
+ case 270: /* wqlist ::= nm eidlist_opt AS LP select RP */
{
- yymsp[-5].minor.yy331 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy442, yymsp[-1].minor.yy159); /*A-overwrites-X*/
+ yymsp[-5].minor.yy285 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy148, yymsp[-1].minor.yy243); /*A-overwrites-X*/
}
break;
- case 269: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
+ case 271: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
{
- yymsp[-7].minor.yy331 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy331, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy442, yymsp[-1].minor.yy159);
+ yymsp[-7].minor.yy285 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy285, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy148, yymsp[-1].minor.yy243);
}
break;
default:
- /* (270) input ::= cmdlist */ yytestcase(yyruleno==270);
- /* (271) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==271);
- /* (272) cmdlist ::= ecmd */ yytestcase(yyruleno==272);
- /* (273) ecmd ::= SEMI */ yytestcase(yyruleno==273);
- /* (274) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==274);
- /* (275) explain ::= */ yytestcase(yyruleno==275);
- /* (276) trans_opt ::= */ yytestcase(yyruleno==276);
- /* (277) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==277);
- /* (278) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==278);
- /* (279) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==279);
- /* (280) savepoint_opt ::= */ yytestcase(yyruleno==280);
- /* (281) cmd ::= create_table create_table_args */ yytestcase(yyruleno==281);
- /* (282) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==282);
- /* (283) columnlist ::= columnname carglist */ yytestcase(yyruleno==283);
- /* (284) nm ::= ID|INDEXED */ yytestcase(yyruleno==284);
- /* (285) nm ::= STRING */ yytestcase(yyruleno==285);
- /* (286) nm ::= JOIN_KW */ yytestcase(yyruleno==286);
- /* (287) typetoken ::= typename */ yytestcase(yyruleno==287);
- /* (288) typename ::= ID|STRING */ yytestcase(yyruleno==288);
- /* (289) signed ::= plus_num */ yytestcase(yyruleno==289);
- /* (290) signed ::= minus_num */ yytestcase(yyruleno==290);
- /* (291) carglist ::= carglist ccons */ yytestcase(yyruleno==291);
- /* (292) carglist ::= */ yytestcase(yyruleno==292);
- /* (293) ccons ::= NULL onconf */ yytestcase(yyruleno==293);
- /* (294) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==294);
- /* (295) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==295);
- /* (296) conslist ::= tcons */ yytestcase(yyruleno==296);
- /* (297) tconscomma ::= */ yytestcase(yyruleno==297);
- /* (298) defer_subclause_opt ::= defer_subclause */ yytestcase(yyruleno==298);
- /* (299) resolvetype ::= raisetype */ yytestcase(yyruleno==299);
- /* (300) selectnowith ::= oneselect */ yytestcase(yyruleno==300);
- /* (301) oneselect ::= values */ yytestcase(yyruleno==301);
- /* (302) sclp ::= selcollist COMMA */ yytestcase(yyruleno==302);
- /* (303) as ::= ID|STRING */ yytestcase(yyruleno==303);
- /* (304) expr ::= term */ yytestcase(yyruleno==304);
- /* (305) exprlist ::= nexprlist */ yytestcase(yyruleno==305);
- /* (306) nmnum ::= plus_num */ yytestcase(yyruleno==306);
- /* (307) nmnum ::= nm */ yytestcase(yyruleno==307);
- /* (308) nmnum ::= ON */ yytestcase(yyruleno==308);
- /* (309) nmnum ::= DELETE */ yytestcase(yyruleno==309);
- /* (310) nmnum ::= DEFAULT */ yytestcase(yyruleno==310);
- /* (311) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==311);
- /* (312) foreach_clause ::= */ yytestcase(yyruleno==312);
- /* (313) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==313);
- /* (314) trnm ::= nm */ yytestcase(yyruleno==314);
- /* (315) tridxby ::= */ yytestcase(yyruleno==315);
- /* (316) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==316);
- /* (317) database_kw_opt ::= */ yytestcase(yyruleno==317);
- /* (318) kwcolumn_opt ::= */ yytestcase(yyruleno==318);
- /* (319) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==319);
- /* (320) vtabarglist ::= vtabarg */ yytestcase(yyruleno==320);
- /* (321) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==321);
- /* (322) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==322);
- /* (323) anylist ::= */ yytestcase(yyruleno==323);
- /* (324) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==324);
- /* (325) anylist ::= anylist ANY */ yytestcase(yyruleno==325);
+ /* (272) input ::= cmdlist */ yytestcase(yyruleno==272);
+ /* (273) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==273);
+ /* (274) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=274);
+ /* (275) ecmd ::= SEMI */ yytestcase(yyruleno==275);
+ /* (276) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==276);
+ /* (277) explain ::= */ yytestcase(yyruleno==277);
+ /* (278) trans_opt ::= */ yytestcase(yyruleno==278);
+ /* (279) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==279);
+ /* (280) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==280);
+ /* (281) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==281);
+ /* (282) savepoint_opt ::= */ yytestcase(yyruleno==282);
+ /* (283) cmd ::= create_table create_table_args */ yytestcase(yyruleno==283);
+ /* (284) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==284);
+ /* (285) columnlist ::= columnname carglist */ yytestcase(yyruleno==285);
+ /* (286) nm ::= ID|INDEXED */ yytestcase(yyruleno==286);
+ /* (287) nm ::= STRING */ yytestcase(yyruleno==287);
+ /* (288) nm ::= JOIN_KW */ yytestcase(yyruleno==288);
+ /* (289) typetoken ::= typename */ yytestcase(yyruleno==289);
+ /* (290) typename ::= ID|STRING */ yytestcase(yyruleno==290);
+ /* (291) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=291);
+ /* (292) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=292);
+ /* (293) carglist ::= carglist ccons */ yytestcase(yyruleno==293);
+ /* (294) carglist ::= */ yytestcase(yyruleno==294);
+ /* (295) ccons ::= NULL onconf */ yytestcase(yyruleno==295);
+ /* (296) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==296);
+ /* (297) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==297);
+ /* (298) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=298);
+ /* (299) tconscomma ::= */ yytestcase(yyruleno==299);
+ /* (300) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=300);
+ /* (301) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=301);
+ /* (302) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=302);
+ /* (303) oneselect ::= values */ yytestcase(yyruleno==303);
+ /* (304) sclp ::= selcollist COMMA */ yytestcase(yyruleno==304);
+ /* (305) as ::= ID|STRING */ yytestcase(yyruleno==305);
+ /* (306) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=306);
+ /* (307) exprlist ::= nexprlist */ yytestcase(yyruleno==307);
+ /* (308) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=308);
+ /* (309) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=309);
+ /* (310) nmnum ::= ON */ yytestcase(yyruleno==310);
+ /* (311) nmnum ::= DELETE */ yytestcase(yyruleno==311);
+ /* (312) nmnum ::= DEFAULT */ yytestcase(yyruleno==312);
+ /* (313) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==313);
+ /* (314) foreach_clause ::= */ yytestcase(yyruleno==314);
+ /* (315) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==315);
+ /* (316) trnm ::= nm */ yytestcase(yyruleno==316);
+ /* (317) tridxby ::= */ yytestcase(yyruleno==317);
+ /* (318) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==318);
+ /* (319) database_kw_opt ::= */ yytestcase(yyruleno==319);
+ /* (320) kwcolumn_opt ::= */ yytestcase(yyruleno==320);
+ /* (321) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==321);
+ /* (322) vtabarglist ::= vtabarg */ yytestcase(yyruleno==322);
+ /* (323) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==323);
+ /* (324) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==324);
+ /* (325) anylist ::= */ yytestcase(yyruleno==325);
+ /* (326) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==326);
+ /* (327) anylist ::= anylist ANY */ yytestcase(yyruleno==327);
break;
/********** End reduce actions ************************************************/
};
@@ -134103,15 +134981,17 @@ static void yy_reduce(
yysize = yyRuleInfo[yyruleno].nrhs;
yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
if( yyact <= YY_MAX_SHIFTREDUCE ){
- if( yyact>YY_MAX_SHIFT ) yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
- yypParser->yyidx -= yysize - 1;
+ if( yyact>YY_MAX_SHIFT ){
+ yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
+ }
yymsp -= yysize-1;
+ yypParser->yytos = yymsp;
yymsp->stateno = (YYACTIONTYPE)yyact;
yymsp->major = (YYCODETYPE)yygoto;
yyTraceShift(yypParser, yyact);
}else{
assert( yyact == YY_ACCEPT_ACTION );
- yypParser->yyidx -= yysize;
+ yypParser->yytos -= yysize;
yy_accept(yypParser);
}
}
@@ -134129,7 +135009,7 @@ static void yy_parse_failed(
fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
}
#endif
- while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
/* Here code is inserted which will be executed whenever the
** parser fails */
/************ Begin %parse_failure code ***************************************/
@@ -134169,7 +135049,10 @@ static void yy_accept(
fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
}
#endif
- while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+#ifndef YYNOERRORRECOVERY
+ yypParser->yyerrcnt = -1;
+#endif
+ assert( yypParser->yytos==yypParser->yystack );
/* Here code is inserted which will be executed whenever the
** parser accepts */
/*********** Begin %parse_accept code *****************************************/
@@ -134212,28 +135095,8 @@ SQLITE_PRIVATE void sqlite3Parser(
#endif
yyParser *yypParser; /* The parser */
- /* (re)initialize the parser, if necessary */
yypParser = (yyParser*)yyp;
- if( yypParser->yyidx<0 ){
-#if YYSTACKDEPTH<=0
- if( yypParser->yystksz <=0 ){
- yyStackOverflow(yypParser);
- return;
- }
-#endif
- yypParser->yyidx = 0;
-#ifndef YYNOERRORRECOVERY
- yypParser->yyerrcnt = -1;
-#endif
- yypParser->yystack[0].stateno = 0;
- yypParser->yystack[0].major = 0;
-#ifndef NDEBUG
- if( yyTraceFILE ){
- fprintf(yyTraceFILE,"%sInitialize. Empty stack. State 0\n",
- yyTracePrompt);
- }
-#endif
- }
+ assert( yypParser->yytos!=0 );
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
yyendofinput = (yymajor==0);
#endif
@@ -134248,7 +135111,6 @@ SQLITE_PRIVATE void sqlite3Parser(
do{
yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
if( yyact <= YY_MAX_SHIFTREDUCE ){
- if( yyact > YY_MAX_SHIFT ) yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
yy_shift(yypParser,yyact,yymajor,yyminor);
#ifndef YYNOERRORRECOVERY
yypParser->yyerrcnt--;
@@ -134290,7 +135152,7 @@ SQLITE_PRIVATE void sqlite3Parser(
if( yypParser->yyerrcnt<0 ){
yy_syntax_error(yypParser,yymajor,yyminor);
}
- yymx = yypParser->yystack[yypParser->yyidx].major;
+ yymx = yypParser->yytos->major;
if( yymx==YYERRORSYMBOL || yyerrorhit ){
#ifndef NDEBUG
if( yyTraceFILE ){
@@ -134301,18 +135163,20 @@ SQLITE_PRIVATE void sqlite3Parser(
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
yymajor = YYNOCODE;
}else{
- while(
- yypParser->yyidx >= 0 &&
- yymx != YYERRORSYMBOL &&
- (yyact = yy_find_reduce_action(
- yypParser->yystack[yypParser->yyidx].stateno,
+ while( yypParser->yytos >= &yypParser->yystack
+ && yymx != YYERRORSYMBOL
+ && (yyact = yy_find_reduce_action(
+ yypParser->yytos->stateno,
YYERRORSYMBOL)) >= YY_MIN_REDUCE
){
yy_pop_parser_stack(yypParser);
}
- if( yypParser->yyidx < 0 || yymajor==0 ){
+ if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
yy_parse_failed(yypParser);
+#ifndef YYNOERRORRECOVERY
+ yypParser->yyerrcnt = -1;
+#endif
yymajor = YYNOCODE;
}else if( yymx!=YYERRORSYMBOL ){
yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor);
@@ -134349,18 +135213,23 @@ SQLITE_PRIVATE void sqlite3Parser(
yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
if( yyendofinput ){
yy_parse_failed(yypParser);
+#ifndef YYNOERRORRECOVERY
+ yypParser->yyerrcnt = -1;
+#endif
}
yymajor = YYNOCODE;
#endif
}
- }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
+ }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack );
#ifndef NDEBUG
if( yyTraceFILE ){
- int i;
+ yyStackEntry *i;
+ char cDiv = '[';
fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt);
- for(i=1; i<=yypParser->yyidx; i++)
- fprintf(yyTraceFILE,"%c%s", i==1 ? '[' : ' ',
- yyTokenName[yypParser->yystack[i].major]);
+ for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){
+ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]);
+ cDiv = ' ';
+ }
fprintf(yyTraceFILE,"]\n");
}
#endif
@@ -135366,7 +136235,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[];
** to recognize the end of a trigger can be omitted. All we have to do
** is look for a semicolon that is not part of an string or comment.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_complete(const char *zSql){
+SQLITE_API int sqlite3_complete(const char *zSql){
u8 state = 0; /* Current state, using numbers defined in header comment */
u8 token; /* Value of the next token */
@@ -135531,7 +136400,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_complete(const char *zSql){
** above, except that the parameter is required to be UTF-16 encoded, not
** UTF-8.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_complete16(const void *zSql){
+SQLITE_API int sqlite3_complete16(const void *zSql){
sqlite3_value *pVal;
char const *zSql8;
int rc;
@@ -135691,24 +136560,24 @@ SQLITE_API const char sqlite3_version[] = SQLITE_VERSION;
/* IMPLEMENTATION-OF: R-53536-42575 The sqlite3_libversion() function returns
** a pointer to the to the sqlite3_version[] string constant.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_libversion(void){ return sqlite3_version; }
+SQLITE_API const char *sqlite3_libversion(void){ return sqlite3_version; }
/* IMPLEMENTATION-OF: R-63124-39300 The sqlite3_sourceid() function returns a
** pointer to a string constant whose value is the same as the
** SQLITE_SOURCE_ID C preprocessor macro.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
+SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
/* IMPLEMENTATION-OF: R-35210-63508 The sqlite3_libversion_number() function
** returns an integer equal to SQLITE_VERSION_NUMBER.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; }
+SQLITE_API int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; }
/* IMPLEMENTATION-OF: R-20790-14025 The sqlite3_threadsafe() function returns
** zero if and only if SQLite was compiled with mutexing code omitted due to
** the SQLITE_THREADSAFE compile-time option being set to 0.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
+SQLITE_API int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
/*
** When compiling the test fixture or with debugging enabled (on Win32),
@@ -135781,7 +136650,7 @@ SQLITE_API char *sqlite3_data_directory = 0;
** * Recursive calls to this routine from thread X return immediately
** without blocking.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void){
+SQLITE_API int sqlite3_initialize(void){
MUTEX_LOGIC( sqlite3_mutex *pMaster; ) /* The main static mutex */
int rc; /* Result code */
#ifdef SQLITE_EXTRA_INIT
@@ -135947,7 +136816,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void){
** on when SQLite is already shut down. If SQLite is already shut down
** when this routine is invoked, then this routine is a harmless no-op.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void){
+SQLITE_API int sqlite3_shutdown(void){
#ifdef SQLITE_OMIT_WSD
int rc = sqlite3_wsd_init(4096, 24);
if( rc!=SQLITE_OK ){
@@ -136001,7 +136870,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void){
** threadsafe. Failure to heed these warnings can lead to unpredictable
** behavior.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_config(int op, ...){
+SQLITE_API int sqlite3_config(int op, ...){
va_list ap;
int rc = SQLITE_OK;
@@ -136366,7 +137235,7 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
/*
** Return the mutex associated with a database connection.
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3 *db){
+SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -136380,7 +137249,7 @@ SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3 *db){
** Free up as much memory as we can from the given database
** connection.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3 *db){
+SQLITE_API int sqlite3_db_release_memory(sqlite3 *db){
int i;
#ifdef SQLITE_ENABLE_API_ARMOR
@@ -136404,7 +137273,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3 *db){
** Flush any dirty pages in the pager-cache for any attached database
** to disk.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3 *db){
+SQLITE_API int sqlite3_db_cacheflush(sqlite3 *db){
int i;
int rc = SQLITE_OK;
int bSeenBusy = 0;
@@ -136433,7 +137302,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3 *db){
/*
** Configuration settings for an individual database connection
*/
-SQLITE_API int SQLITE_CDECL sqlite3_db_config(sqlite3 *db, int op, ...){
+SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
va_list ap;
int rc;
va_start(ap, op);
@@ -136554,7 +137423,7 @@ static int nocaseCollatingFunc(
/*
** Return the ROWID of the most recent insert
*/
-SQLITE_API sqlite_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3 *db){
+SQLITE_API sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -136567,7 +137436,7 @@ SQLITE_API sqlite_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3 *db){
/*
** Return the number of changes in the most recent call to sqlite3_exec().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3 *db){
+SQLITE_API int sqlite3_changes(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -136580,7 +137449,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3 *db){
/*
** Return the number of changes since the database handle was opened.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_total_changes(sqlite3 *db){
+SQLITE_API int sqlite3_total_changes(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -136682,6 +137551,9 @@ static int sqlite3Close(sqlite3 *db, int forceZombie){
return SQLITE_MISUSE_BKPT;
}
sqlite3_mutex_enter(db->mutex);
+ if( db->mTrace & SQLITE_TRACE_CLOSE ){
+ db->xTrace(SQLITE_TRACE_CLOSE, db->pTraceArg, db, 0);
+ }
/* Force xDisconnect calls on all virtual tables */
disconnectAllVtab(db);
@@ -136728,8 +137600,8 @@ static int sqlite3Close(sqlite3 *db, int forceZombie){
** unclosed resources, and arranges for deallocation when the last
** prepare statement or sqlite3_backup closes.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_close(sqlite3 *db){ return sqlite3Close(db,0); }
-SQLITE_API int SQLITE_STDCALL sqlite3_close_v2(sqlite3 *db){ return sqlite3Close(db,1); }
+SQLITE_API int sqlite3_close(sqlite3 *db){ return sqlite3Close(db,0); }
+SQLITE_API int sqlite3_close_v2(sqlite3 *db){ return sqlite3Close(db,1); }
/*
@@ -137136,7 +138008,7 @@ SQLITE_PRIVATE int sqlite3InvokeBusyHandler(BusyHandler *p){
** This routine sets the busy callback for an Sqlite database to the
** given callback function with the given argument.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(
+SQLITE_API int sqlite3_busy_handler(
sqlite3 *db,
int (*xBusy)(void*,int),
void *pArg
@@ -137159,7 +138031,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(
** given callback function with the given argument. The progress callback will
** be invoked every nOps opcodes.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(
+SQLITE_API void sqlite3_progress_handler(
sqlite3 *db,
int nOps,
int (*xProgress)(void*),
@@ -137190,7 +138062,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(
** This routine installs a default busy handler that waits for the
** specified number of milliseconds before returning 0.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3 *db, int ms){
+SQLITE_API int sqlite3_busy_timeout(sqlite3 *db, int ms){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
#endif
@@ -137206,7 +138078,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3 *db, int ms){
/*
** Cause any pending operation to stop at its earliest opportunity.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_interrupt(sqlite3 *db){
+SQLITE_API void sqlite3_interrupt(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -137322,7 +138194,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
/*
** Create new user functions.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
+SQLITE_API int sqlite3_create_function(
sqlite3 *db,
const char *zFunc,
int nArg,
@@ -137336,7 +138208,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
xFinal, 0);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
+SQLITE_API int sqlite3_create_function_v2(
sqlite3 *db,
const char *zFunc,
int nArg,
@@ -137379,7 +138251,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
}
#ifndef SQLITE_OMIT_UTF16
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
+SQLITE_API int sqlite3_create_function16(
sqlite3 *db,
const void *zFunctionName,
int nArg,
@@ -137419,7 +138291,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
** A global function must exist in order for name resolution to work
** properly.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_overload_function(
+SQLITE_API int sqlite3_overload_function(
sqlite3 *db,
const char *zName,
int nArg
@@ -137450,7 +138322,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_overload_function(
** trace is a pointer to a function that is invoked at the start of each
** SQL statement.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,const char*), void *pArg){
+#ifndef SQLITE_OMIT_DEPRECATED
+SQLITE_API void *sqlite3_trace(sqlite3 *db, void(*xTrace)(void*,const char*), void *pArg){
void *pOld;
#ifdef SQLITE_ENABLE_API_ARMOR
@@ -137461,11 +138334,38 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,
#endif
sqlite3_mutex_enter(db->mutex);
pOld = db->pTraceArg;
- db->xTrace = xTrace;
+ db->mTrace = xTrace ? SQLITE_TRACE_LEGACY : 0;
+ db->xTrace = (int(*)(u32,void*,void*,void*))xTrace;
db->pTraceArg = pArg;
sqlite3_mutex_leave(db->mutex);
return pOld;
}
+#endif /* SQLITE_OMIT_DEPRECATED */
+
+/* Register a trace callback using the version-2 interface.
+*/
+SQLITE_API int sqlite3_trace_v2(
+ sqlite3 *db, /* Trace this connection */
+ unsigned mTrace, /* Mask of events to be traced */
+ int(*xTrace)(unsigned,void*,void*,void*), /* Callback to invoke */
+ void *pArg /* Context */
+){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
+ sqlite3_mutex_enter(db->mutex);
+ if( mTrace==0 ) xTrace = 0;
+ if( xTrace==0 ) mTrace = 0;
+ db->mTrace = mTrace;
+ db->xTrace = xTrace;
+ db->pTraceArg = pArg;
+ sqlite3_mutex_leave(db->mutex);
+ return SQLITE_OK;
+}
+
+#ifndef SQLITE_OMIT_DEPRECATED
/*
** Register a profile function. The pArg from the previously registered
** profile function is returned.
@@ -137474,7 +138374,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,
** profile is a pointer to a function that is invoked at the conclusion of
** each SQL statement that is run.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_profile(
+SQLITE_API void *sqlite3_profile(
sqlite3 *db,
void (*xProfile)(void*,const char*,sqlite_uint64),
void *pArg
@@ -137494,6 +138394,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_profile(
sqlite3_mutex_leave(db->mutex);
return pOld;
}
+#endif /* SQLITE_OMIT_DEPRECATED */
#endif /* SQLITE_OMIT_TRACE */
/*
@@ -137501,7 +138402,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_profile(
** If the invoked function returns non-zero, then the commit becomes a
** rollback.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_commit_hook(
+SQLITE_API void *sqlite3_commit_hook(
sqlite3 *db, /* Attach the hook to this database */
int (*xCallback)(void*), /* Function to invoke on each commit */
void *pArg /* Argument to the function */
@@ -137526,7 +138427,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_commit_hook(
** Register a callback to be invoked each time a row is updated,
** inserted or deleted using this database connection.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
+SQLITE_API void *sqlite3_update_hook(
sqlite3 *db, /* Attach the hook to this database */
void (*xCallback)(void*,int,char const *,char const *,sqlite_int64),
void *pArg /* Argument to the function */
@@ -137551,7 +138452,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
** Register a callback to be invoked each time a transaction is rolled
** back by this database connection.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(
+SQLITE_API void *sqlite3_rollback_hook(
sqlite3 *db, /* Attach the hook to this database */
void (*xCallback)(void*), /* Callback function */
void *pArg /* Argument to the function */
@@ -137577,7 +138478,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(
** Register a callback to be invoked each time a row is updated,
** inserted or deleted using this database connection.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_preupdate_hook(
+SQLITE_API void *sqlite3_preupdate_hook(
sqlite3 *db, /* Attach the hook to this database */
void(*xCallback)( /* Callback function */
void*,sqlite3*,int,char const*,char const*,sqlite3_int64,sqlite3_int64),
@@ -137626,7 +138527,7 @@ SQLITE_PRIVATE int sqlite3WalDefaultHook(
** using sqlite3_wal_hook() disables the automatic checkpoint mechanism
** configured by this function.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame){
+SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame){
#ifdef SQLITE_OMIT_WAL
UNUSED_PARAMETER(db);
UNUSED_PARAMETER(nFrame);
@@ -137647,7 +138548,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame
** Register a callback to be invoked each time a transaction is written
** into the write-ahead-log by this database connection.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
+SQLITE_API void *sqlite3_wal_hook(
sqlite3 *db, /* Attach the hook to this db handle */
int(*xCallback)(void *, sqlite3*, const char*, int),
void *pArg /* First argument passed to xCallback() */
@@ -137674,7 +138575,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
/*
** Checkpoint database zDb.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
+SQLITE_API int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
const char *zDb, /* Name of attached database (or NULL) */
int eMode, /* SQLITE_CHECKPOINT_* value */
@@ -137729,7 +138630,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
** to contains a zero-length string, all attached databases are
** checkpointed.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
+SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
/* EVIDENCE-OF: R-41613-20553 The sqlite3_wal_checkpoint(D,X) is equivalent to
** sqlite3_wal_checkpoint_v2(D,X,SQLITE_CHECKPOINT_PASSIVE,0,0). */
return sqlite3_wal_checkpoint_v2(db,zDb,SQLITE_CHECKPOINT_PASSIVE,0,0);
@@ -137820,7 +138721,7 @@ SQLITE_PRIVATE int sqlite3TempInMemory(const sqlite3 *db){
** Return UTF-8 encoded English language explanation of the most recent
** error.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3 *db){
+SQLITE_API const char *sqlite3_errmsg(sqlite3 *db){
const char *z;
if( !db ){
return sqlite3ErrStr(SQLITE_NOMEM_BKPT);
@@ -137848,7 +138749,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3 *db){
** Return UTF-16 encoded English language explanation of the most recent
** error.
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3 *db){
+SQLITE_API const void *sqlite3_errmsg16(sqlite3 *db){
static const u16 outOfMem[] = {
'o', 'u', 't', ' ', 'o', 'f', ' ', 'm', 'e', 'm', 'o', 'r', 'y', 0
};
@@ -137893,7 +138794,7 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3 *db){
** Return the most recent error code generated by an SQLite routine. If NULL is
** passed to this function, we assume a malloc() failed during sqlite3_open().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db){
+SQLITE_API int sqlite3_errcode(sqlite3 *db){
if( db && !sqlite3SafetyCheckSickOrOk(db) ){
return SQLITE_MISUSE_BKPT;
}
@@ -137902,7 +138803,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db){
}
return db->errCode & db->errMask;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db){
+SQLITE_API int sqlite3_extended_errcode(sqlite3 *db){
if( db && !sqlite3SafetyCheckSickOrOk(db) ){
return SQLITE_MISUSE_BKPT;
}
@@ -137911,7 +138812,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db){
}
return db->errCode;
}
-SQLITE_API int SQLITE_STDCALL sqlite3_system_errno(sqlite3 *db){
+SQLITE_API int sqlite3_system_errno(sqlite3 *db){
return db ? db->iSysErrno : 0;
}
@@ -137920,7 +138821,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_system_errno(sqlite3 *db){
** argument. For now, this simply calls the internal sqlite3ErrStr()
** function.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int rc){
+SQLITE_API const char *sqlite3_errstr(int rc){
return sqlite3ErrStr(rc);
}
@@ -138068,7 +138969,7 @@ static const int aHardLimit[] = {
** It merely prevents new constructs that exceed the limit
** from forming.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
+SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
int oldLimit;
#ifdef SQLITE_ENABLE_API_ARMOR
@@ -138692,14 +139593,14 @@ opendb_out:
/*
** Open a new database handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_open(
+SQLITE_API int sqlite3_open(
const char *zFilename,
sqlite3 **ppDb
){
return openDatabase(zFilename, ppDb,
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);
}
-SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
+SQLITE_API int sqlite3_open_v2(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb, /* OUT: SQLite db handle */
int flags, /* Flags */
@@ -138712,7 +139613,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
/*
** Open a new database handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_open16(
+SQLITE_API int sqlite3_open16(
const void *zFilename,
sqlite3 **ppDb
){
@@ -138751,7 +139652,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_open16(
/*
** Register a new collation sequence with the database handle db.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation(
+SQLITE_API int sqlite3_create_collation(
sqlite3* db,
const char *zName,
int enc,
@@ -138764,7 +139665,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation(
/*
** Register a new collation sequence with the database handle db.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
+SQLITE_API int sqlite3_create_collation_v2(
sqlite3* db,
const char *zName,
int enc,
@@ -138789,7 +139690,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
/*
** Register a new collation sequence with the database handle db.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
+SQLITE_API int sqlite3_create_collation16(
sqlite3* db,
const void *zName,
int enc,
@@ -138819,7 +139720,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
** Register a collation sequence factory callback with the database handle
** db. Replace any previously installed collation sequence factory.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed(
+SQLITE_API int sqlite3_collation_needed(
sqlite3 *db,
void *pCollNeededArg,
void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*)
@@ -138840,7 +139741,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed(
** Register a collation sequence factory callback with the database handle
** db. Replace any previously installed collation sequence factory.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
+SQLITE_API int sqlite3_collation_needed16(
sqlite3 *db,
void *pCollNeededArg,
void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*)
@@ -138862,7 +139763,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
** This function is now an anachronism. It used to be used to recover from a
** malloc() failure, but SQLite now does this automatically.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_global_recover(void){
+SQLITE_API int sqlite3_global_recover(void){
return SQLITE_OK;
}
#endif
@@ -138873,7 +139774,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_global_recover(void){
** by default. Autocommit is disabled by a BEGIN statement and reenabled
** by the next COMMIT or ROLLBACK.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_autocommit(sqlite3 *db){
+SQLITE_API int sqlite3_get_autocommit(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -138930,7 +139831,7 @@ SQLITE_PRIVATE int sqlite3IoerrnomemError(int lineno){
** SQLite no longer uses thread-specific data so this routine is now a
** no-op. It is retained for historical compatibility.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_thread_cleanup(void){
+SQLITE_API void sqlite3_thread_cleanup(void){
}
#endif
@@ -138938,7 +139839,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_thread_cleanup(void){
** Return meta information about a specific column of a database table.
** See comment in sqlite3.h (sqlite.h.in) for details.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_table_column_metadata(
+SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
const char *zDbName, /* Database name or NULL */
const char *zTableName, /* Table name */
@@ -139056,7 +139957,7 @@ error_out:
/*
** Sleep for a little while. Return the amount of time slept.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_sleep(int ms){
+SQLITE_API int sqlite3_sleep(int ms){
sqlite3_vfs *pVfs;
int rc;
pVfs = sqlite3_vfs_find(0);
@@ -139072,7 +139973,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_sleep(int ms){
/*
** Enable or disable the extended result codes.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3 *db, int onoff){
+SQLITE_API int sqlite3_extended_result_codes(sqlite3 *db, int onoff){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
#endif
@@ -139085,7 +139986,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3 *db, int ono
/*
** Invoke the xFileControl method on a particular database.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){
+SQLITE_API int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){
int rc = SQLITE_ERROR;
Btree *pBtree;
@@ -139125,7 +140026,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3 *db, const char *zDbN
/*
** Interface to the testing logic.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...){
+SQLITE_API int sqlite3_test_control(int op, ...){
int rc = 0;
#ifdef SQLITE_OMIT_BUILTIN_TEST
UNUSED_PARAMETER(op);
@@ -139470,7 +140371,7 @@ SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...){
** parameter if it exists. If the parameter does not exist, this routine
** returns a NULL pointer.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_uri_parameter(const char *zFilename, const char *zParam){
+SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam){
if( zFilename==0 || zParam==0 ) return 0;
zFilename += sqlite3Strlen30(zFilename) + 1;
while( zFilename[0] ){
@@ -139485,7 +140386,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_uri_parameter(const char *zFilenam
/*
** Return a boolean value for a query parameter.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_uri_boolean(const char *zFilename, const char *zParam, int bDflt){
+SQLITE_API int sqlite3_uri_boolean(const char *zFilename, const char *zParam, int bDflt){
const char *z = sqlite3_uri_parameter(zFilename, zParam);
bDflt = bDflt!=0;
return z ? sqlite3GetBoolean(z, bDflt) : bDflt;
@@ -139494,7 +140395,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_uri_boolean(const char *zFilename, const c
/*
** Return a 64-bit integer value for a query parameter.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_uri_int64(
+SQLITE_API sqlite3_int64 sqlite3_uri_int64(
const char *zFilename, /* Filename as passed to xOpen */
const char *zParam, /* URI parameter sought */
sqlite3_int64 bDflt /* return if parameter is missing */
@@ -139526,7 +140427,7 @@ SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3 *db, const char *zDbName){
** Return the filename of the database associated with a database
** connection.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const char *zDbName){
+SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){
Btree *pBt;
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
@@ -139542,7 +140443,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const cha
** Return 1 if database is read-only or 0 if read/write. Return -1 if
** no such database exists.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbName){
+SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){
Btree *pBt;
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
@@ -139559,7 +140460,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbNa
** Obtain a snapshot handle for the snapshot of database zDb currently
** being read by handle db.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_snapshot_get(
+SQLITE_API int sqlite3_snapshot_get(
sqlite3 *db,
const char *zDb,
sqlite3_snapshot **ppSnapshot
@@ -139594,7 +140495,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_snapshot_get(
/*
** Open a read-transaction on the snapshot idendified by pSnapshot.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_snapshot_open(
+SQLITE_API int sqlite3_snapshot_open(
sqlite3 *db,
const char *zDb,
sqlite3_snapshot *pSnapshot
@@ -139631,7 +140532,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_snapshot_open(
/*
** Free a snapshot handle obtained from sqlite3_snapshot_get().
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3_snapshot *pSnapshot){
+SQLITE_API void sqlite3_snapshot_free(sqlite3_snapshot *pSnapshot){
sqlite3_free(pSnapshot);
}
#endif /* SQLITE_ENABLE_SNAPSHOT */
@@ -139785,7 +140686,7 @@ static void leaveMutex(void){
** on the same "db". If xNotify==0 then any prior callbacks are immediately
** cancelled.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_unlock_notify(
+SQLITE_API int sqlite3_unlock_notify(
sqlite3 *db,
void (*xNotify)(void **, int),
void *pArg
@@ -146788,7 +147689,7 @@ SQLITE_PRIVATE int sqlite3Fts3Corrupt(){
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_fts3_init(
+SQLITE_API int sqlite3_fts3_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -149944,7 +150845,11 @@ SQLITE_PRIVATE int sqlite3Fts3InitTokenizer(
#ifdef SQLITE_TEST
-#include <tcl.h>
+#if defined(INCLUDE_SQLITE_TCL_H)
+# include "sqlite_tcl.h"
+#else
+# include "tcl.h"
+#endif
/* #include <string.h> */
/*
@@ -161883,6 +162788,53 @@ static RtreeValue rtreeValueUp(sqlite3_value *v){
}
#endif /* !defined(SQLITE_RTREE_INT_ONLY) */
+/*
+** A constraint has failed while inserting a row into an rtree table.
+** Assuming no OOM error occurs, this function sets the error message
+** (at pRtree->base.zErrMsg) to an appropriate value and returns
+** SQLITE_CONSTRAINT.
+**
+** Parameter iCol is the index of the leftmost column involved in the
+** constraint failure. If it is 0, then the constraint that failed is
+** the unique constraint on the id column. Otherwise, it is the rtree
+** (c1<=c2) constraint on columns iCol and iCol+1 that has failed.
+**
+** If an OOM occurs, SQLITE_NOMEM is returned instead of SQLITE_CONSTRAINT.
+*/
+static int rtreeConstraintError(Rtree *pRtree, int iCol){
+ sqlite3_stmt *pStmt = 0;
+ char *zSql;
+ int rc;
+
+ assert( iCol==0 || iCol%2 );
+ zSql = sqlite3_mprintf("SELECT * FROM %Q.%Q", pRtree->zDb, pRtree->zName);
+ if( zSql ){
+ rc = sqlite3_prepare_v2(pRtree->db, zSql, -1, &pStmt, 0);
+ }else{
+ rc = SQLITE_NOMEM;
+ }
+ sqlite3_free(zSql);
+
+ if( rc==SQLITE_OK ){
+ if( iCol==0 ){
+ const char *zCol = sqlite3_column_name(pStmt, 0);
+ pRtree->base.zErrMsg = sqlite3_mprintf(
+ "UNIQUE constraint failed: %s.%s", pRtree->zName, zCol
+ );
+ }else{
+ const char *zCol1 = sqlite3_column_name(pStmt, iCol);
+ const char *zCol2 = sqlite3_column_name(pStmt, iCol+1);
+ pRtree->base.zErrMsg = sqlite3_mprintf(
+ "rtree constraint failed: %s.(%s<=%s)", pRtree->zName, zCol1, zCol2
+ );
+ }
+ }
+
+ sqlite3_finalize(pStmt);
+ return (rc==SQLITE_OK ? SQLITE_CONSTRAINT : rc);
+}
+
+
/*
** The xUpdate method for rtree module virtual tables.
@@ -161933,7 +162885,7 @@ static int rtreeUpdate(
cell.aCoord[ii].f = rtreeValueDown(azData[ii+3]);
cell.aCoord[ii+1].f = rtreeValueUp(azData[ii+4]);
if( cell.aCoord[ii].f>cell.aCoord[ii+1].f ){
- rc = SQLITE_CONSTRAINT;
+ rc = rtreeConstraintError(pRtree, ii+1);
goto constraint;
}
}
@@ -161944,7 +162896,7 @@ static int rtreeUpdate(
cell.aCoord[ii].i = sqlite3_value_int(azData[ii+3]);
cell.aCoord[ii+1].i = sqlite3_value_int(azData[ii+4]);
if( cell.aCoord[ii].i>cell.aCoord[ii+1].i ){
- rc = SQLITE_CONSTRAINT;
+ rc = rtreeConstraintError(pRtree, ii+1);
goto constraint;
}
}
@@ -161965,7 +162917,7 @@ static int rtreeUpdate(
if( sqlite3_vtab_on_conflict(pRtree->db)==SQLITE_REPLACE ){
rc = rtreeDeleteRowid(pRtree, cell.iRowid);
}else{
- rc = SQLITE_CONSTRAINT;
+ rc = rtreeConstraintError(pRtree, 0);
goto constraint;
}
}
@@ -162048,6 +163000,11 @@ static int rtreeQueryStat1(sqlite3 *db, Rtree *pRtree){
int rc;
i64 nRow = 0;
+ if( sqlite3_table_column_metadata(db,pRtree->zDb,"sqlite_stat1",
+ 0,0,0,0,0,0)==SQLITE_ERROR ){
+ pRtree->nRowEst = RTREE_DEFAULT_ROWEST;
+ return SQLITE_OK;
+ }
zSql = sqlite3_mprintf(zFmt, pRtree->zDb, pRtree->zName);
if( zSql==0 ){
rc = SQLITE_NOMEM;
@@ -162533,7 +163490,7 @@ static void geomCallback(sqlite3_context *ctx, int nArg, sqlite3_value **aArg){
/*
** Register a new geometry function for use with the r-tree MATCH operator.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_geometry_callback(
+SQLITE_API int sqlite3_rtree_geometry_callback(
sqlite3 *db, /* Register SQL function on this connection */
const char *zGeom, /* Name of the new SQL function */
int (*xGeom)(sqlite3_rtree_geometry*,int,RtreeDValue*,int*), /* Callback */
@@ -162557,7 +163514,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_rtree_geometry_callback(
** Register a new 2nd-generation geometry function for use with the
** r-tree MATCH operator.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_query_callback(
+SQLITE_API int sqlite3_rtree_query_callback(
sqlite3 *db, /* Register SQL function on this connection */
const char *zQueryFunc, /* Name of new SQL function */
int (*xQueryFunc)(sqlite3_rtree_query_info*), /* Callback */
@@ -162582,7 +163539,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_rtree_query_callback(
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_init(
+SQLITE_API int sqlite3_rtree_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -163133,7 +164090,7 @@ SQLITE_PRIVATE int sqlite3IcuInit(sqlite3 *db){
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_icu_init(
+SQLITE_API int sqlite3_icu_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -163813,7 +164770,7 @@ typedef struct sqlite3rbu sqlite3rbu;
** not work out of the box with zipvfs. Refer to the comment describing
** the zipvfs_create_vfs() API below for details on using RBU with zipvfs.
*/
-SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_open(
+SQLITE_API sqlite3rbu *sqlite3rbu_open(
const char *zTarget,
const char *zRbu,
const char *zState
@@ -163846,7 +164803,7 @@ SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_open(
** a description of the complications associated with using RBU with
** zipvfs databases.
*/
-SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_vacuum(
+SQLITE_API sqlite3rbu *sqlite3rbu_vacuum(
const char *zTarget,
const char *zState
);
@@ -163882,7 +164839,7 @@ SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_vacuum(
** Database handles returned by this function remain valid until the next
** call to any sqlite3rbu_xxx() function other than sqlite3rbu_db().
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3rbu_db(sqlite3rbu*, int bRbu);
+SQLITE_API sqlite3 *sqlite3rbu_db(sqlite3rbu*, int bRbu);
/*
** Do some work towards applying the RBU update to the target db.
@@ -163896,7 +164853,7 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3rbu_db(sqlite3rbu*, int bRbu);
** SQLITE_OK, all subsequent calls on the same RBU handle are no-ops
** that immediately return the same value.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_step(sqlite3rbu *pRbu);
+SQLITE_API int sqlite3rbu_step(sqlite3rbu *pRbu);
/*
** Force RBU to save its state to disk.
@@ -163908,7 +164865,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3rbu_step(sqlite3rbu *pRbu);
**
** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_savestate(sqlite3rbu *pRbu);
+SQLITE_API int sqlite3rbu_savestate(sqlite3rbu *pRbu);
/*
** Close an RBU handle.
@@ -163928,14 +164885,14 @@ SQLITE_API int SQLITE_STDCALL sqlite3rbu_savestate(sqlite3rbu *pRbu);
** update has been partially applied, or SQLITE_DONE if it has been
** completely applied.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_close(sqlite3rbu *pRbu, char **pzErrmsg);
+SQLITE_API int sqlite3rbu_close(sqlite3rbu *pRbu, char **pzErrmsg);
/*
** Return the total number of key-value operations (inserts, deletes or
** updates) that have been performed on the target database since the
** current RBU update was started.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3rbu_progress(sqlite3rbu *pRbu);
+SQLITE_API sqlite3_int64 sqlite3rbu_progress(sqlite3rbu *pRbu);
/*
** Obtain permyriadage (permyriadage is to 10000 as percentage is to 100)
@@ -163977,7 +164934,45 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3rbu_progress(sqlite3rbu *pRbu);
** table exists but is not correctly populated, the value of the *pnOne
** output variable during stage 1 is undefined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3rbu_bp_progress(sqlite3rbu *pRbu, int *pnOne, int *pnTwo);
+SQLITE_API void sqlite3rbu_bp_progress(sqlite3rbu *pRbu, int *pnOne, int *pnTwo);
+
+/*
+** Obtain an indication as to the current stage of an RBU update or vacuum.
+** This function always returns one of the SQLITE_RBU_STATE_XXX constants
+** defined in this file. Return values should be interpreted as follows:
+**
+** SQLITE_RBU_STATE_OAL:
+** RBU is currently building a *-oal file. The next call to sqlite3rbu_step()
+** may either add further data to the *-oal file, or compute data that will
+** be added by a subsequent call.
+**
+** SQLITE_RBU_STATE_MOVE:
+** RBU has finished building the *-oal file. The next call to sqlite3rbu_step()
+** will move the *-oal file to the equivalent *-wal path. If the current
+** operation is an RBU update, then the updated version of the database
+** file will become visible to ordinary SQLite clients following the next
+** call to sqlite3rbu_step().
+**
+** SQLITE_RBU_STATE_CHECKPOINT:
+** RBU is currently performing an incremental checkpoint. The next call to
+** sqlite3rbu_step() will copy a page of data from the *-wal file into
+** the target database file.
+**
+** SQLITE_RBU_STATE_DONE:
+** The RBU operation has finished. Any subsequent calls to sqlite3rbu_step()
+** will immediately return SQLITE_DONE.
+**
+** SQLITE_RBU_STATE_ERROR:
+** An error has occurred. Any subsequent calls to sqlite3rbu_step() will
+** immediately return the SQLite error code associated with the error.
+*/
+#define SQLITE_RBU_STATE_OAL 1
+#define SQLITE_RBU_STATE_MOVE 2
+#define SQLITE_RBU_STATE_CHECKPOINT 3
+#define SQLITE_RBU_STATE_DONE 4
+#define SQLITE_RBU_STATE_ERROR 5
+
+SQLITE_API int sqlite3rbu_state(sqlite3rbu *pRbu);
/*
** Create an RBU VFS named zName that accesses the underlying file-system
@@ -164021,7 +165016,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3rbu_bp_progress(sqlite3rbu *pRbu, int *pnO
** file-system via "rbu" all the time, even if it only uses RBU functionality
** occasionally.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_create_vfs(const char *zName, const char *zParent);
+SQLITE_API int sqlite3rbu_create_vfs(const char *zName, const char *zParent);
/*
** Deregister and destroy an RBU vfs created by an earlier call to
@@ -164031,7 +165026,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3rbu_create_vfs(const char *zName, const cha
** before all database handles that use it have been closed, the results
** are undefined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3rbu_destroy_vfs(const char *zName);
+SQLITE_API void sqlite3rbu_destroy_vfs(const char *zName);
#if 0
} /* end of the 'extern "C"' block */
@@ -164874,12 +165869,14 @@ static int rbuObjIterFirst(sqlite3rbu *p, RbuObjIter *pIter){
int rc;
memset(pIter, 0, sizeof(RbuObjIter));
- rc = prepareAndCollectError(p->dbRbu, &pIter->pTblIter, &p->zErrmsg,
+ rc = prepareFreeAndCollectError(p->dbRbu, &pIter->pTblIter, &p->zErrmsg,
+ sqlite3_mprintf(
"SELECT rbu_target_name(name, type='view') AS target, name "
"FROM sqlite_master "
"WHERE type IN ('table', 'view') AND target IS NOT NULL "
+ " %s "
"ORDER BY name"
- );
+ , rbuIsVacuum(p) ? "AND rootpage!=0 AND rootpage IS NOT NULL" : ""));
if( rc==SQLITE_OK ){
rc = prepareAndCollectError(p->dbMain, &pIter->pIdxIter, &p->zErrmsg,
@@ -166458,9 +167455,9 @@ static void rbuFileSuffix3(const char *zBase, char *z){
#endif
{
int i, sz;
- sz = sqlite3Strlen30(z);
+ sz = (int)strlen(z)&0xffffff;
for(i=sz-1; i>0 && z[i]!='/' && z[i]!='.'; i--){}
- if( z[i]=='.' && ALWAYS(sz>i+4) ) memmove(&z[i+1], &z[sz-3], 4);
+ if( z[i]=='.' && sz>i+4 ) memmove(&z[i+1], &z[sz-3], 4);
}
#endif
}
@@ -167123,7 +168120,7 @@ static void rbuCreateTargetSchema(sqlite3rbu *p){
/*
** Step the RBU object.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_step(sqlite3rbu *p){
+SQLITE_API int sqlite3rbu_step(sqlite3rbu *p){
if( p ){
switch( p->eStage ){
case RBU_STAGE_OAL: {
@@ -167506,30 +168503,7 @@ static sqlite3rbu *openRbuHandle(
if( p->rc==SQLITE_OK ){
if( p->eStage==RBU_STAGE_OAL ){
sqlite3 *db = p->dbMain;
-
- if( pState->eStage==0 && rbuIsVacuum(p) ){
- rbuCopyPragma(p, "page_size");
- rbuCopyPragma(p, "auto_vacuum");
- }
-
- /* Open transactions both databases. The *-oal file is opened or
- ** created at this point. */
- if( p->rc==SQLITE_OK ){
- p->rc = sqlite3_exec(db, "BEGIN IMMEDIATE", 0, 0, &p->zErrmsg);
- }
- if( p->rc==SQLITE_OK ){
- p->rc = sqlite3_exec(p->dbRbu, "BEGIN", 0, 0, &p->zErrmsg);
- }
-
- /* Check if the main database is a zipvfs db. If it is, set the upper
- ** level pager to use "journal_mode=off". This prevents it from
- ** generating a large journal using a temp file. */
- if( p->rc==SQLITE_OK ){
- int frc = sqlite3_file_control(db, "main", SQLITE_FCNTL_ZIPVFS, 0);
- if( frc==SQLITE_OK ){
- p->rc = sqlite3_exec(db, "PRAGMA journal_mode=off",0,0,&p->zErrmsg);
- }
- }
+ p->rc = sqlite3_exec(p->dbRbu, "BEGIN", 0, 0, &p->zErrmsg);
/* Point the object iterator at the first object */
if( p->rc==SQLITE_OK ){
@@ -167540,12 +168514,34 @@ static sqlite3rbu *openRbuHandle(
** update finished. */
if( p->rc==SQLITE_OK && p->objiter.zTbl==0 ){
p->rc = SQLITE_DONE;
- }
+ p->eStage = RBU_STAGE_DONE;
+ }else{
+ if( p->rc==SQLITE_OK && pState->eStage==0 && rbuIsVacuum(p) ){
+ rbuCopyPragma(p, "page_size");
+ rbuCopyPragma(p, "auto_vacuum");
+ }
- if( p->rc==SQLITE_OK ){
- rbuSetupOal(p, pState);
- }
+ /* Open transactions both databases. The *-oal file is opened or
+ ** created at this point. */
+ if( p->rc==SQLITE_OK ){
+ p->rc = sqlite3_exec(db, "BEGIN IMMEDIATE", 0, 0, &p->zErrmsg);
+ }
+ /* Check if the main database is a zipvfs db. If it is, set the upper
+ ** level pager to use "journal_mode=off". This prevents it from
+ ** generating a large journal using a temp file. */
+ if( p->rc==SQLITE_OK ){
+ int frc = sqlite3_file_control(db, "main", SQLITE_FCNTL_ZIPVFS, 0);
+ if( frc==SQLITE_OK ){
+ p->rc = sqlite3_exec(
+ db, "PRAGMA journal_mode=off",0,0,&p->zErrmsg);
+ }
+ }
+
+ if( p->rc==SQLITE_OK ){
+ rbuSetupOal(p, pState);
+ }
+ }
}else if( p->eStage==RBU_STAGE_MOVE ){
/* no-op */
}else if( p->eStage==RBU_STAGE_CKPT ){
@@ -167566,7 +168562,7 @@ static sqlite3rbu *openRbuHandle(
/*
** Open and return a new RBU handle.
*/
-SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_open(
+SQLITE_API sqlite3rbu *sqlite3rbu_open(
const char *zTarget,
const char *zRbu,
const char *zState
@@ -167578,7 +168574,7 @@ SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_open(
/*
** Open a handle to begin or resume an RBU VACUUM operation.
*/
-SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_vacuum(
+SQLITE_API sqlite3rbu *sqlite3rbu_vacuum(
const char *zTarget,
const char *zState
){
@@ -167589,7 +168585,7 @@ SQLITE_API sqlite3rbu *SQLITE_STDCALL sqlite3rbu_vacuum(
/*
** Return the database handle used by pRbu.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3rbu_db(sqlite3rbu *pRbu, int bRbu){
+SQLITE_API sqlite3 *sqlite3rbu_db(sqlite3rbu *pRbu, int bRbu){
sqlite3 *db = 0;
if( pRbu ){
db = (bRbu ? pRbu->dbRbu : pRbu->dbMain);
@@ -167621,7 +168617,7 @@ static void rbuEditErrmsg(sqlite3rbu *p){
/*
** Close the RBU handle.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_close(sqlite3rbu *p, char **pzErrmsg){
+SQLITE_API int sqlite3rbu_close(sqlite3rbu *p, char **pzErrmsg){
int rc;
if( p ){
@@ -167672,7 +168668,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3rbu_close(sqlite3rbu *p, char **pzErrmsg){
** updates) that have been performed on the target database since the
** current RBU update was started.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3rbu_progress(sqlite3rbu *pRbu){
+SQLITE_API sqlite3_int64 sqlite3rbu_progress(sqlite3rbu *pRbu){
return pRbu->nProgress;
}
@@ -167680,7 +168676,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3rbu_progress(sqlite3rbu *pRbu){
** Return permyriadage progress indications for the two main stages of
** an RBU update.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3rbu_bp_progress(sqlite3rbu *p, int *pnOne, int *pnTwo){
+SQLITE_API void sqlite3rbu_bp_progress(sqlite3rbu *p, int *pnOne, int *pnTwo){
const int MAX_PROGRESS = 10000;
switch( p->eStage ){
case RBU_STAGE_OAL:
@@ -167712,9 +168708,39 @@ SQLITE_API void SQLITE_STDCALL sqlite3rbu_bp_progress(sqlite3rbu *p, int *pnOne,
}
}
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_savestate(sqlite3rbu *p){
+/*
+** Return the current state of the RBU vacuum or update operation.
+*/
+SQLITE_API int sqlite3rbu_state(sqlite3rbu *p){
+ int aRes[] = {
+ 0, SQLITE_RBU_STATE_OAL, SQLITE_RBU_STATE_MOVE,
+ 0, SQLITE_RBU_STATE_CHECKPOINT, SQLITE_RBU_STATE_DONE
+ };
+
+ assert( RBU_STAGE_OAL==1 );
+ assert( RBU_STAGE_MOVE==2 );
+ assert( RBU_STAGE_CKPT==4 );
+ assert( RBU_STAGE_DONE==5 );
+ assert( aRes[RBU_STAGE_OAL]==SQLITE_RBU_STATE_OAL );
+ assert( aRes[RBU_STAGE_MOVE]==SQLITE_RBU_STATE_MOVE );
+ assert( aRes[RBU_STAGE_CKPT]==SQLITE_RBU_STATE_CHECKPOINT );
+ assert( aRes[RBU_STAGE_DONE]==SQLITE_RBU_STATE_DONE );
+
+ if( p->rc!=SQLITE_OK && p->rc!=SQLITE_DONE ){
+ return SQLITE_RBU_STATE_ERROR;
+ }else{
+ assert( p->rc!=SQLITE_DONE || p->eStage==RBU_STAGE_DONE );
+ assert( p->eStage==RBU_STAGE_OAL
+ || p->eStage==RBU_STAGE_MOVE
+ || p->eStage==RBU_STAGE_CKPT
+ || p->eStage==RBU_STAGE_DONE
+ );
+ return aRes[p->eStage];
+ }
+}
+
+SQLITE_API int sqlite3rbu_savestate(sqlite3rbu *p){
int rc = p->rc;
-
if( rc==SQLITE_DONE ) return SQLITE_OK;
assert( p->eStage>=RBU_STAGE_OAL && p->eStage<=RBU_STAGE_DONE );
@@ -168540,7 +169566,7 @@ static int rbuVfsGetLastError(sqlite3_vfs *pVfs, int a, char *b){
** Deregister and destroy an RBU vfs created by an earlier call to
** sqlite3rbu_create_vfs().
*/
-SQLITE_API void SQLITE_STDCALL sqlite3rbu_destroy_vfs(const char *zName){
+SQLITE_API void sqlite3rbu_destroy_vfs(const char *zName){
sqlite3_vfs *pVfs = sqlite3_vfs_find(zName);
if( pVfs && pVfs->xOpen==rbuVfsOpen ){
sqlite3_mutex_free(((rbu_vfs*)pVfs)->mutex);
@@ -168554,7 +169580,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3rbu_destroy_vfs(const char *zName){
** via existing VFS zParent. The new object is registered as a non-default
** VFS with SQLite before returning.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3rbu_create_vfs(const char *zName, const char *zParent){
+SQLITE_API int sqlite3rbu_create_vfs(const char *zName, const char *zParent){
/* Template for VFS */
static sqlite3_vfs vfs_template = {
@@ -168696,10 +169722,10 @@ SQLITE_API int SQLITE_STDCALL sqlite3rbu_create_vfs(const char *zName, const cha
*/
#define VTAB_SCHEMA \
"CREATE TABLE xx( " \
- " name STRING, /* Name of table or index */" \
- " path INTEGER, /* Path to page from root */" \
+ " name TEXT, /* Name of table or index */" \
+ " path TEXT, /* Path to page from root */" \
" pageno INTEGER, /* Page number */" \
- " pagetype STRING, /* 'internal', 'leaf' or 'overflow' */" \
+ " pagetype TEXT, /* 'internal', 'leaf' or 'overflow' */" \
" ncell INTEGER, /* Cells on page (0 for overflow) */" \
" payload INTEGER, /* Bytes of payload on this page */" \
" unused INTEGER, /* Bytes of unused space on this page */" \
@@ -170799,7 +171825,7 @@ static int sessionDiffFindModified(
return rc;
}
-SQLITE_API int SQLITE_STDCALL sqlite3session_diff(
+SQLITE_API int sqlite3session_diff(
sqlite3_session *pSession,
const char *zFrom,
const char *zTbl,
@@ -170893,7 +171919,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_diff(
** Create a session object. This session object will record changes to
** database zDb attached to connection db.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_create(
+SQLITE_API int sqlite3session_create(
sqlite3 *db, /* Database handle */
const char *zDb, /* Name of db (e.g. "main") */
sqlite3_session **ppSession /* OUT: New session object */
@@ -170955,7 +171981,7 @@ static void sessionDeleteTable(SessionTable *pList){
/*
** Delete a session object previously allocated using sqlite3session_create().
*/
-SQLITE_API void SQLITE_STDCALL sqlite3session_delete(sqlite3_session *pSession){
+SQLITE_API void sqlite3session_delete(sqlite3_session *pSession){
sqlite3 *db = pSession->db;
sqlite3_session *pHead;
sqlite3_session **pp;
@@ -170984,7 +172010,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3session_delete(sqlite3_session *pSession){
/*
** Set a table filter on a Session Object.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3session_table_filter(
+SQLITE_API void sqlite3session_table_filter(
sqlite3_session *pSession,
int(*xFilter)(void*, const char*),
void *pCtx /* First argument passed to xFilter */
@@ -171002,7 +172028,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3session_table_filter(
** not matter if the PRIMARY KEY is an "INTEGER PRIMARY KEY" (rowid alias)
** or not.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_attach(
+SQLITE_API int sqlite3session_attach(
sqlite3_session *pSession, /* Session object */
const char *zName /* Table name */
){
@@ -171692,7 +172718,7 @@ static int sessionGenerateChangeset(
** It is the responsibility of the caller to eventually free the buffer
** using sqlite3_free().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_changeset(
+SQLITE_API int sqlite3session_changeset(
sqlite3_session *pSession, /* Session object */
int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
void **ppChangeset /* OUT: Buffer containing changeset */
@@ -171703,7 +172729,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_changeset(
/*
** Streaming version of sqlite3session_changeset().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_changeset_strm(
+SQLITE_API int sqlite3session_changeset_strm(
sqlite3_session *pSession,
int (*xOutput)(void *pOut, const void *pData, int nData),
void *pOut
@@ -171714,7 +172740,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_changeset_strm(
/*
** Streaming version of sqlite3session_patchset().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_patchset_strm(
+SQLITE_API int sqlite3session_patchset_strm(
sqlite3_session *pSession,
int (*xOutput)(void *pOut, const void *pData, int nData),
void *pOut
@@ -171729,7 +172755,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_patchset_strm(
** It is the responsibility of the caller to eventually free the buffer
** using sqlite3_free().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_patchset(
+SQLITE_API int sqlite3session_patchset(
sqlite3_session *pSession, /* Session object */
int *pnPatchset, /* OUT: Size of buffer at *ppChangeset */
void **ppPatchset /* OUT: Buffer containing changeset */
@@ -171740,7 +172766,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_patchset(
/*
** Enable or disable the session object passed as the first argument.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_enable(sqlite3_session *pSession, int bEnable){
+SQLITE_API int sqlite3session_enable(sqlite3_session *pSession, int bEnable){
int ret;
sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db));
if( bEnable>=0 ){
@@ -171754,7 +172780,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_enable(sqlite3_session *pSession, i
/*
** Enable or disable the session object passed as the first argument.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_indirect(sqlite3_session *pSession, int bIndirect){
+SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect){
int ret;
sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db));
if( bIndirect>=0 ){
@@ -171769,7 +172795,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3session_indirect(sqlite3_session *pSession,
** Return true if there have been no changes to monitored tables recorded
** by the session object passed as the only argument.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3session_isempty(sqlite3_session *pSession){
+SQLITE_API int sqlite3session_isempty(sqlite3_session *pSession){
int ret = 0;
SessionTable *pTab;
@@ -171819,7 +172845,7 @@ static int sessionChangesetStart(
/*
** Create an iterator used to iterate through the contents of a changeset.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_start(
+SQLITE_API int sqlite3changeset_start(
sqlite3_changeset_iter **pp, /* OUT: Changeset iterator handle */
int nChangeset, /* Size of buffer pChangeset in bytes */
void *pChangeset /* Pointer to buffer containing changeset */
@@ -171830,7 +172856,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_start(
/*
** Streaming version of sqlite3changeset_start().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_start_strm(
+SQLITE_API int sqlite3changeset_start_strm(
sqlite3_changeset_iter **pp, /* OUT: Changeset iterator handle */
int (*xInput)(void *pIn, void *pData, int *pnData),
void *pIn
@@ -172251,7 +173277,7 @@ static int sessionChangesetNext(
** This function may not be called on iterators passed to a conflict handler
** callback by changeset_apply().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_next(sqlite3_changeset_iter *p){
+SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *p){
return sessionChangesetNext(p, 0, 0);
}
@@ -172260,7 +173286,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_next(sqlite3_changeset_iter *p){
** from a changeset iterator. It may only be called after changeset_next()
** has returned SQLITE_ROW.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_op(
+SQLITE_API int sqlite3changeset_op(
sqlite3_changeset_iter *pIter, /* Iterator handle */
const char **pzTab, /* OUT: Pointer to table name */
int *pnCol, /* OUT: Number of columns in table */
@@ -172280,7 +173306,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_op(
** to. This function may only be called after changeset_next() returns
** SQLITE_ROW.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_pk(
+SQLITE_API int sqlite3changeset_pk(
sqlite3_changeset_iter *pIter, /* Iterator object */
unsigned char **pabPK, /* OUT: Array of boolean - true for PK cols */
int *pnCol /* OUT: Number of entries in output array */
@@ -172303,7 +173329,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_pk(
** If value iVal is out-of-range, SQLITE_RANGE is returned and *ppValue is
** not modified. Otherwise, SQLITE_OK.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_old(
+SQLITE_API int sqlite3changeset_old(
sqlite3_changeset_iter *pIter, /* Changeset iterator */
int iVal, /* Index of old.* value to retrieve */
sqlite3_value **ppValue /* OUT: Old value (or NULL pointer) */
@@ -172331,7 +173357,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_old(
** If value iVal is out-of-range, SQLITE_RANGE is returned and *ppValue is
** not modified. Otherwise, SQLITE_OK.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_new(
+SQLITE_API int sqlite3changeset_new(
sqlite3_changeset_iter *pIter, /* Changeset iterator */
int iVal, /* Index of new.* value to retrieve */
sqlite3_value **ppValue /* OUT: New value (or NULL pointer) */
@@ -172365,7 +173391,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_new(
** If value iVal is out-of-range or some other error occurs, an SQLite error
** code is returned. Otherwise, SQLITE_OK.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_conflict(
+SQLITE_API int sqlite3changeset_conflict(
sqlite3_changeset_iter *pIter, /* Changeset iterator */
int iVal, /* Index of conflict record value to fetch */
sqlite3_value **ppValue /* OUT: Value from conflicting row */
@@ -172388,7 +173414,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_conflict(
**
** In all other cases this function returns SQLITE_MISUSE.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_fk_conflicts(
+SQLITE_API int sqlite3changeset_fk_conflicts(
sqlite3_changeset_iter *pIter, /* Changeset iterator */
int *pnOut /* OUT: Number of FK violations */
){
@@ -172406,7 +173432,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_fk_conflicts(
** This function may not be called on iterators passed to a conflict handler
** callback by changeset_apply().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_finalize(sqlite3_changeset_iter *p){
+SQLITE_API int sqlite3changeset_finalize(sqlite3_changeset_iter *p){
int rc = SQLITE_OK;
if( p ){
int i; /* Used to iterate through p->apValue[] */
@@ -172580,7 +173606,7 @@ static int sessionChangesetInvert(
/*
** Invert a changeset object.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_invert(
+SQLITE_API int sqlite3changeset_invert(
int nChangeset, /* Number of bytes in input */
const void *pChangeset, /* Input changeset */
int *pnInverted, /* OUT: Number of bytes in output changeset */
@@ -172599,7 +173625,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_invert(
/*
** Streaming version of sqlite3changeset_invert().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_invert_strm(
+SQLITE_API int sqlite3changeset_invert_strm(
int (*xInput)(void *pIn, void *pData, int *pnData),
void *pIn,
int (*xOutput)(void *pOut, const void *pData, int nData),
@@ -173479,7 +174505,7 @@ static int sessionChangesetApply(
** attached to handle "db". Invoke the supplied conflict handler callback
** to resolve any conflicts encountered while applying the change.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_apply(
+SQLITE_API int sqlite3changeset_apply(
sqlite3 *db, /* Apply change to "main" db of this handle */
int nChangeset, /* Size of changeset in bytes */
void *pChangeset, /* Changeset blob */
@@ -173507,7 +174533,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_apply(
** attached to handle "db". Invoke the supplied conflict handler callback
** to resolve any conflicts encountered while applying the change.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_apply_strm(
+SQLITE_API int sqlite3changeset_apply_strm(
sqlite3 *db, /* Apply change to "main" db of this handle */
int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
void *pIn, /* First arg for xInput */
@@ -173842,7 +174868,7 @@ static int sessionChangegroupOutput(
/*
** Allocate a new, empty, sqlite3_changegroup.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changegroup_new(sqlite3_changegroup **pp){
+SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp){
int rc = SQLITE_OK; /* Return code */
sqlite3_changegroup *p; /* New object */
p = (sqlite3_changegroup*)sqlite3_malloc(sizeof(sqlite3_changegroup));
@@ -173859,7 +174885,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changegroup_new(sqlite3_changegroup **pp){
** Add the changeset currently stored in buffer pData, size nData bytes,
** to changeset-group p.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changegroup_add(sqlite3_changegroup *pGrp, int nData, void *pData){
+SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup *pGrp, int nData, void *pData){
sqlite3_changeset_iter *pIter; /* Iterator opened on pData/nData */
int rc; /* Return code */
@@ -173875,7 +174901,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changegroup_add(sqlite3_changegroup *pGrp,
** Obtain a buffer containing a changeset representing the concatenation
** of all changesets added to the group so far.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changegroup_output(
+SQLITE_API int sqlite3changegroup_output(
sqlite3_changegroup *pGrp,
int *pnData,
void **ppData
@@ -173886,7 +174912,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changegroup_output(
/*
** Streaming versions of changegroup_add().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changegroup_add_strm(
+SQLITE_API int sqlite3changegroup_add_strm(
sqlite3_changegroup *pGrp,
int (*xInput)(void *pIn, void *pData, int *pnData),
void *pIn
@@ -173905,7 +174931,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changegroup_add_strm(
/*
** Streaming versions of changegroup_output().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changegroup_output_strm(
+SQLITE_API int sqlite3changegroup_output_strm(
sqlite3_changegroup *pGrp,
int (*xOutput)(void *pOut, const void *pData, int nData),
void *pOut
@@ -173916,7 +174942,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changegroup_output_strm(
/*
** Delete a changegroup object.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3changegroup_delete(sqlite3_changegroup *pGrp){
+SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup *pGrp){
if( pGrp ){
sessionDeleteTable(pGrp->pList);
sqlite3_free(pGrp);
@@ -173926,7 +174952,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3changegroup_delete(sqlite3_changegroup *pG
/*
** Combine two changesets together.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_concat(
+SQLITE_API int sqlite3changeset_concat(
int nLeft, /* Number of bytes in lhs input */
void *pLeft, /* Lhs input changeset */
int nRight /* Number of bytes in rhs input */,
@@ -173955,7 +174981,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3changeset_concat(
/*
** Streaming version of sqlite3changeset_concat().
*/
-SQLITE_API int SQLITE_STDCALL sqlite3changeset_concat_strm(
+SQLITE_API int sqlite3changeset_concat_strm(
int (*xInputA)(void *pIn, void *pData, int *pnData),
void *pInA,
int (*xInputB)(void *pIn, void *pData, int *pnData),
@@ -175199,6 +176225,26 @@ static void jsonTest1Func(
****************************************************************************/
/*
+** Implementation of the json_QUOTE(VALUE) function. Return a JSON value
+** corresponding to the SQL value input. Mostly this means putting
+** double-quotes around strings and returning the unquoted string "null"
+** when given a NULL input.
+*/
+static void jsonQuoteFunc(
+ sqlite3_context *ctx,
+ int argc,
+ sqlite3_value **argv
+){
+ JsonString jx;
+ UNUSED_PARAM(argc);
+
+ jsonInit(&jx, ctx);
+ jsonAppendValue(&jx, argv[0]);
+ jsonResult(&jx);
+ sqlite3_result_subtype(ctx, JSON_SUBTYPE);
+}
+
+/*
** Implementation of the json_array(VALUE,...) function. Return a JSON
** array that contains all values given in arguments. Or if any argument
** is a BLOB, throw an error.
@@ -176111,6 +177157,7 @@ SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){
{ "json_extract", -1, 0, jsonExtractFunc },
{ "json_insert", -1, 0, jsonSetFunc },
{ "json_object", -1, 0, jsonObjectFunc },
+ { "json_quote", 1, 0, jsonQuoteFunc },
{ "json_remove", -1, 0, jsonRemoveFunc },
{ "json_replace", -1, 0, jsonReplaceFunc },
{ "json_set", -1, 1, jsonSetFunc },
@@ -176166,7 +177213,7 @@ SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_json_init(
+SQLITE_API int sqlite3_json_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -176511,7 +177558,7 @@ struct Fts5ExtensionApi {
** behaviour. The structure methods are expected to function as follows:
**
** xCreate:
-** This function is used to allocate and inititalize a tokenizer instance.
+** This function is used to allocate and initialize a tokenizer instance.
** A tokenizer instance is required to actually tokenize text.
**
** The first argument passed to this function is a copy of the (void*)
@@ -176771,7 +177818,6 @@ struct fts5_api {
#endif /* _FTS5_H */
-
/*
** 2014 May 31
**
@@ -177460,7 +178506,6 @@ static int sqlite3Fts5ExprPopulatePoslists(
Fts5Config*, Fts5Expr*, Fts5PoslistPopulator*, int, const char*, int
);
static void sqlite3Fts5ExprCheckPoslists(Fts5Expr*, i64);
-static void sqlite3Fts5ExprClearEof(Fts5Expr*);
static int sqlite3Fts5ExprClonePhrase(Fts5Expr*, int, Fts5Expr**);
@@ -177876,9 +178921,9 @@ typedef struct fts5yyStackEntry fts5yyStackEntry;
/* The state of the parser is completely contained in an instance of
** the following structure */
struct fts5yyParser {
- int fts5yyidx; /* Index of top element in stack */
+ fts5yyStackEntry *fts5yytos; /* Pointer to top element of the stack */
#ifdef fts5YYTRACKMAXSTACKDEPTH
- int fts5yyidxMax; /* Maximum value of fts5yyidx */
+ int fts5yyhwm; /* High-water mark of the stack */
#endif
#ifndef fts5YYNOERRORRECOVERY
int fts5yyerrcnt; /* Shifts left before out of the error */
@@ -177887,6 +178932,7 @@ struct fts5yyParser {
#if fts5YYSTACKDEPTH<=0
int fts5yystksz; /* Current side of the stack */
fts5yyStackEntry *fts5yystack; /* The parser's stack */
+ fts5yyStackEntry fts5yystk0; /* First stack entry */
#else
fts5yyStackEntry fts5yystack[fts5YYSTACKDEPTH]; /* The parser's stack */
#endif
@@ -177973,24 +179019,34 @@ static const char *const fts5yyRuleName[] = {
#if fts5YYSTACKDEPTH<=0
/*
-** Try to increase the size of the parser stack.
+** Try to increase the size of the parser stack. Return the number
+** of errors. Return 0 on success.
*/
-static void fts5yyGrowStack(fts5yyParser *p){
+static int fts5yyGrowStack(fts5yyParser *p){
int newSize;
+ int idx;
fts5yyStackEntry *pNew;
newSize = p->fts5yystksz*2 + 100;
- pNew = realloc(p->fts5yystack, newSize*sizeof(pNew[0]));
+ idx = p->fts5yytos ? (int)(p->fts5yytos - p->fts5yystack) : 0;
+ if( p->fts5yystack==&p->fts5yystk0 ){
+ pNew = malloc(newSize*sizeof(pNew[0]));
+ if( pNew ) pNew[0] = p->fts5yystk0;
+ }else{
+ pNew = realloc(p->fts5yystack, newSize*sizeof(pNew[0]));
+ }
if( pNew ){
p->fts5yystack = pNew;
- p->fts5yystksz = newSize;
+ p->fts5yytos = &p->fts5yystack[idx];
#ifndef NDEBUG
if( fts5yyTraceFILE ){
- fprintf(fts5yyTraceFILE,"%sStack grows to %d entries!\n",
- fts5yyTracePrompt, p->fts5yystksz);
+ fprintf(fts5yyTraceFILE,"%sStack grows from %d to %d entries.\n",
+ fts5yyTracePrompt, p->fts5yystksz, newSize);
}
#endif
+ p->fts5yystksz = newSize;
}
+ return pNew==0;
}
#endif
@@ -178019,15 +179075,24 @@ static void *sqlite3Fts5ParserAlloc(void *(*mallocProc)(fts5YYMALLOCARGTYPE)){
fts5yyParser *pParser;
pParser = (fts5yyParser*)(*mallocProc)( (fts5YYMALLOCARGTYPE)sizeof(fts5yyParser) );
if( pParser ){
- pParser->fts5yyidx = -1;
#ifdef fts5YYTRACKMAXSTACKDEPTH
- pParser->fts5yyidxMax = 0;
+ pParser->fts5yyhwm = 0;
#endif
#if fts5YYSTACKDEPTH<=0
+ pParser->fts5yytos = NULL;
pParser->fts5yystack = NULL;
pParser->fts5yystksz = 0;
- fts5yyGrowStack(pParser);
+ if( fts5yyGrowStack(pParser) ){
+ pParser->fts5yystack = &pParser->fts5yystk0;
+ pParser->fts5yystksz = 1;
+ }
+#endif
+#ifndef fts5YYNOERRORRECOVERY
+ pParser->fts5yyerrcnt = -1;
#endif
+ pParser->fts5yytos = pParser->fts5yystack;
+ pParser->fts5yystack[0].stateno = 0;
+ pParser->fts5yystack[0].major = 0;
}
return pParser;
}
@@ -178099,8 +179164,9 @@ static void fts5yy_destructor(
*/
static void fts5yy_pop_parser_stack(fts5yyParser *pParser){
fts5yyStackEntry *fts5yytos;
- assert( pParser->fts5yyidx>=0 );
- fts5yytos = &pParser->fts5yystack[pParser->fts5yyidx--];
+ assert( pParser->fts5yytos!=0 );
+ assert( pParser->fts5yytos > pParser->fts5yystack );
+ fts5yytos = pParser->fts5yytos--;
#ifndef NDEBUG
if( fts5yyTraceFILE ){
fprintf(fts5yyTraceFILE,"%sPopping %s\n",
@@ -178127,9 +179193,9 @@ static void sqlite3Fts5ParserFree(
#ifndef fts5YYPARSEFREENEVERNULL
if( pParser==0 ) return;
#endif
- while( pParser->fts5yyidx>=0 ) fts5yy_pop_parser_stack(pParser);
+ while( pParser->fts5yytos>pParser->fts5yystack ) fts5yy_pop_parser_stack(pParser);
#if fts5YYSTACKDEPTH<=0
- free(pParser->fts5yystack);
+ if( pParser->fts5yystack!=&pParser->fts5yystk0 ) free(pParser->fts5yystack);
#endif
(*freeProc)((void*)pParser);
}
@@ -178140,7 +179206,7 @@ static void sqlite3Fts5ParserFree(
#ifdef fts5YYTRACKMAXSTACKDEPTH
static int sqlite3Fts5ParserStackPeak(void *p){
fts5yyParser *pParser = (fts5yyParser*)p;
- return pParser->fts5yyidxMax;
+ return pParser->fts5yyhwm;
}
#endif
@@ -178153,7 +179219,7 @@ static unsigned int fts5yy_find_shift_action(
fts5YYCODETYPE iLookAhead /* The look-ahead token */
){
int i;
- int stateno = pParser->fts5yystack[pParser->fts5yyidx].stateno;
+ int stateno = pParser->fts5yytos->stateno;
if( stateno>=fts5YY_MIN_REDUCE ) return stateno;
assert( stateno <= fts5YY_SHIFT_COUNT );
@@ -178246,13 +179312,13 @@ static int fts5yy_find_reduce_action(
*/
static void fts5yyStackOverflow(fts5yyParser *fts5yypParser){
sqlite3Fts5ParserARG_FETCH;
- fts5yypParser->fts5yyidx--;
+ fts5yypParser->fts5yytos--;
#ifndef NDEBUG
if( fts5yyTraceFILE ){
fprintf(fts5yyTraceFILE,"%sStack Overflow!\n",fts5yyTracePrompt);
}
#endif
- while( fts5yypParser->fts5yyidx>=0 ) fts5yy_pop_parser_stack(fts5yypParser);
+ while( fts5yypParser->fts5yytos>fts5yypParser->fts5yystack ) fts5yy_pop_parser_stack(fts5yypParser);
/* Here code is inserted which will execute if the parser
** stack every overflows */
/******** Begin %stack_overflow code ******************************************/
@@ -178270,11 +179336,11 @@ static void fts5yyTraceShift(fts5yyParser *fts5yypParser, int fts5yyNewState){
if( fts5yyTraceFILE ){
if( fts5yyNewState<fts5YYNSTATE ){
fprintf(fts5yyTraceFILE,"%sShift '%s', go to state %d\n",
- fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx].major],
+ fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yytos->major],
fts5yyNewState);
}else{
fprintf(fts5yyTraceFILE,"%sShift '%s'\n",
- fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx].major]);
+ fts5yyTracePrompt,fts5yyTokenName[fts5yypParser->fts5yytos->major]);
}
}
}
@@ -178292,27 +179358,30 @@ static void fts5yy_shift(
sqlite3Fts5ParserFTS5TOKENTYPE fts5yyMinor /* The minor token to shift in */
){
fts5yyStackEntry *fts5yytos;
- fts5yypParser->fts5yyidx++;
+ fts5yypParser->fts5yytos++;
#ifdef fts5YYTRACKMAXSTACKDEPTH
- if( fts5yypParser->fts5yyidx>fts5yypParser->fts5yyidxMax ){
- fts5yypParser->fts5yyidxMax = fts5yypParser->fts5yyidx;
+ if( (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack)>fts5yypParser->fts5yyhwm ){
+ fts5yypParser->fts5yyhwm++;
+ assert( fts5yypParser->fts5yyhwm == (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack) );
}
#endif
#if fts5YYSTACKDEPTH>0
- if( fts5yypParser->fts5yyidx>=fts5YYSTACKDEPTH ){
+ if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5YYSTACKDEPTH] ){
fts5yyStackOverflow(fts5yypParser);
return;
}
#else
- if( fts5yypParser->fts5yyidx>=fts5yypParser->fts5yystksz ){
- fts5yyGrowStack(fts5yypParser);
- if( fts5yypParser->fts5yyidx>=fts5yypParser->fts5yystksz ){
+ if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5yypParser->fts5yystksz] ){
+ if( fts5yyGrowStack(fts5yypParser) ){
fts5yyStackOverflow(fts5yypParser);
return;
}
}
#endif
- fts5yytos = &fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx];
+ if( fts5yyNewState > fts5YY_MAX_SHIFT ){
+ fts5yyNewState += fts5YY_MIN_REDUCE - fts5YY_MIN_SHIFTREDUCE;
+ }
+ fts5yytos = fts5yypParser->fts5yytos;
fts5yytos->stateno = (fts5YYACTIONTYPE)fts5yyNewState;
fts5yytos->major = (fts5YYCODETYPE)fts5yyMajor;
fts5yytos->minor.fts5yy0 = fts5yyMinor;
@@ -178367,7 +179436,7 @@ static void fts5yy_reduce(
fts5yyStackEntry *fts5yymsp; /* The top of the parser's stack */
int fts5yysize; /* Amount to pop the stack */
sqlite3Fts5ParserARG_FETCH;
- fts5yymsp = &fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx];
+ fts5yymsp = fts5yypParser->fts5yytos;
#ifndef NDEBUG
if( fts5yyTraceFILE && fts5yyruleno<(int)(sizeof(fts5yyRuleName)/sizeof(fts5yyRuleName[0])) ){
fts5yysize = fts5yyRuleInfo[fts5yyruleno].nrhs;
@@ -178381,22 +179450,23 @@ static void fts5yy_reduce(
** enough on the stack to push the LHS value */
if( fts5yyRuleInfo[fts5yyruleno].nrhs==0 ){
#ifdef fts5YYTRACKMAXSTACKDEPTH
- if( fts5yypParser->fts5yyidx>fts5yypParser->fts5yyidxMax ){
- fts5yypParser->fts5yyidxMax = fts5yypParser->fts5yyidx;
+ if( (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack)>fts5yypParser->fts5yyhwm ){
+ fts5yypParser->fts5yyhwm++;
+ assert( fts5yypParser->fts5yyhwm == (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack));
}
#endif
#if fts5YYSTACKDEPTH>0
- if( fts5yypParser->fts5yyidx>=fts5YYSTACKDEPTH-1 ){
+ if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5YYSTACKDEPTH-1] ){
fts5yyStackOverflow(fts5yypParser);
return;
}
#else
- if( fts5yypParser->fts5yyidx>=fts5yypParser->fts5yystksz-1 ){
- fts5yyGrowStack(fts5yypParser);
- if( fts5yypParser->fts5yyidx>=fts5yypParser->fts5yystksz-1 ){
+ if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5yypParser->fts5yystksz-1] ){
+ if( fts5yyGrowStack(fts5yypParser) ){
fts5yyStackOverflow(fts5yypParser);
return;
}
+ fts5yymsp = fts5yypParser->fts5yytos;
}
#endif
}
@@ -178537,15 +179607,17 @@ static void fts5yy_reduce(
fts5yysize = fts5yyRuleInfo[fts5yyruleno].nrhs;
fts5yyact = fts5yy_find_reduce_action(fts5yymsp[-fts5yysize].stateno,(fts5YYCODETYPE)fts5yygoto);
if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){
- if( fts5yyact>fts5YY_MAX_SHIFT ) fts5yyact += fts5YY_MIN_REDUCE - fts5YY_MIN_SHIFTREDUCE;
- fts5yypParser->fts5yyidx -= fts5yysize - 1;
+ if( fts5yyact>fts5YY_MAX_SHIFT ){
+ fts5yyact += fts5YY_MIN_REDUCE - fts5YY_MIN_SHIFTREDUCE;
+ }
fts5yymsp -= fts5yysize-1;
+ fts5yypParser->fts5yytos = fts5yymsp;
fts5yymsp->stateno = (fts5YYACTIONTYPE)fts5yyact;
fts5yymsp->major = (fts5YYCODETYPE)fts5yygoto;
fts5yyTraceShift(fts5yypParser, fts5yyact);
}else{
assert( fts5yyact == fts5YY_ACCEPT_ACTION );
- fts5yypParser->fts5yyidx -= fts5yysize;
+ fts5yypParser->fts5yytos -= fts5yysize;
fts5yy_accept(fts5yypParser);
}
}
@@ -178563,7 +179635,7 @@ static void fts5yy_parse_failed(
fprintf(fts5yyTraceFILE,"%sFail!\n",fts5yyTracePrompt);
}
#endif
- while( fts5yypParser->fts5yyidx>=0 ) fts5yy_pop_parser_stack(fts5yypParser);
+ while( fts5yypParser->fts5yytos>fts5yypParser->fts5yystack ) fts5yy_pop_parser_stack(fts5yypParser);
/* Here code is inserted which will be executed whenever the
** parser fails */
/************ Begin %parse_failure code ***************************************/
@@ -178604,7 +179676,10 @@ static void fts5yy_accept(
fprintf(fts5yyTraceFILE,"%sAccept!\n",fts5yyTracePrompt);
}
#endif
- while( fts5yypParser->fts5yyidx>=0 ) fts5yy_pop_parser_stack(fts5yypParser);
+#ifndef fts5YYNOERRORRECOVERY
+ fts5yypParser->fts5yyerrcnt = -1;
+#endif
+ assert( fts5yypParser->fts5yytos==fts5yypParser->fts5yystack );
/* Here code is inserted which will be executed whenever the
** parser accepts */
/*********** Begin %parse_accept code *****************************************/
@@ -178647,28 +179722,8 @@ static void sqlite3Fts5Parser(
#endif
fts5yyParser *fts5yypParser; /* The parser */
- /* (re)initialize the parser, if necessary */
fts5yypParser = (fts5yyParser*)fts5yyp;
- if( fts5yypParser->fts5yyidx<0 ){
-#if fts5YYSTACKDEPTH<=0
- if( fts5yypParser->fts5yystksz <=0 ){
- fts5yyStackOverflow(fts5yypParser);
- return;
- }
-#endif
- fts5yypParser->fts5yyidx = 0;
-#ifndef fts5YYNOERRORRECOVERY
- fts5yypParser->fts5yyerrcnt = -1;
-#endif
- fts5yypParser->fts5yystack[0].stateno = 0;
- fts5yypParser->fts5yystack[0].major = 0;
-#ifndef NDEBUG
- if( fts5yyTraceFILE ){
- fprintf(fts5yyTraceFILE,"%sInitialize. Empty stack. State 0\n",
- fts5yyTracePrompt);
- }
-#endif
- }
+ assert( fts5yypParser->fts5yytos!=0 );
#if !defined(fts5YYERRORSYMBOL) && !defined(fts5YYNOERRORRECOVERY)
fts5yyendofinput = (fts5yymajor==0);
#endif
@@ -178683,7 +179738,6 @@ static void sqlite3Fts5Parser(
do{
fts5yyact = fts5yy_find_shift_action(fts5yypParser,(fts5YYCODETYPE)fts5yymajor);
if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){
- if( fts5yyact > fts5YY_MAX_SHIFT ) fts5yyact += fts5YY_MIN_REDUCE - fts5YY_MIN_SHIFTREDUCE;
fts5yy_shift(fts5yypParser,fts5yyact,fts5yymajor,fts5yyminor);
#ifndef fts5YYNOERRORRECOVERY
fts5yypParser->fts5yyerrcnt--;
@@ -178725,7 +179779,7 @@ static void sqlite3Fts5Parser(
if( fts5yypParser->fts5yyerrcnt<0 ){
fts5yy_syntax_error(fts5yypParser,fts5yymajor,fts5yyminor);
}
- fts5yymx = fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx].major;
+ fts5yymx = fts5yypParser->fts5yytos->major;
if( fts5yymx==fts5YYERRORSYMBOL || fts5yyerrorhit ){
#ifndef NDEBUG
if( fts5yyTraceFILE ){
@@ -178736,18 +179790,20 @@ static void sqlite3Fts5Parser(
fts5yy_destructor(fts5yypParser, (fts5YYCODETYPE)fts5yymajor, &fts5yyminorunion);
fts5yymajor = fts5YYNOCODE;
}else{
- while(
- fts5yypParser->fts5yyidx >= 0 &&
- fts5yymx != fts5YYERRORSYMBOL &&
- (fts5yyact = fts5yy_find_reduce_action(
- fts5yypParser->fts5yystack[fts5yypParser->fts5yyidx].stateno,
+ while( fts5yypParser->fts5yytos >= &fts5yypParser->fts5yystack
+ && fts5yymx != fts5YYERRORSYMBOL
+ && (fts5yyact = fts5yy_find_reduce_action(
+ fts5yypParser->fts5yytos->stateno,
fts5YYERRORSYMBOL)) >= fts5YY_MIN_REDUCE
){
fts5yy_pop_parser_stack(fts5yypParser);
}
- if( fts5yypParser->fts5yyidx < 0 || fts5yymajor==0 ){
+ if( fts5yypParser->fts5yytos < fts5yypParser->fts5yystack || fts5yymajor==0 ){
fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
fts5yy_parse_failed(fts5yypParser);
+#ifndef fts5YYNOERRORRECOVERY
+ fts5yypParser->fts5yyerrcnt = -1;
+#endif
fts5yymajor = fts5YYNOCODE;
}else if( fts5yymx!=fts5YYERRORSYMBOL ){
fts5yy_shift(fts5yypParser,fts5yyact,fts5YYERRORSYMBOL,fts5yyminor);
@@ -178784,18 +179840,23 @@ static void sqlite3Fts5Parser(
fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
if( fts5yyendofinput ){
fts5yy_parse_failed(fts5yypParser);
+#ifndef fts5YYNOERRORRECOVERY
+ fts5yypParser->fts5yyerrcnt = -1;
+#endif
}
fts5yymajor = fts5YYNOCODE;
#endif
}
- }while( fts5yymajor!=fts5YYNOCODE && fts5yypParser->fts5yyidx>=0 );
+ }while( fts5yymajor!=fts5YYNOCODE && fts5yypParser->fts5yytos>fts5yypParser->fts5yystack );
#ifndef NDEBUG
if( fts5yyTraceFILE ){
- int i;
+ fts5yyStackEntry *i;
+ char cDiv = '[';
fprintf(fts5yyTraceFILE,"%sReturn. Stack=",fts5yyTracePrompt);
- for(i=1; i<=fts5yypParser->fts5yyidx; i++)
- fprintf(fts5yyTraceFILE,"%c%s", i==1 ? '[' : ' ',
- fts5yyTokenName[fts5yypParser->fts5yystack[i].major]);
+ for(i=&fts5yypParser->fts5yystack[1]; i<=fts5yypParser->fts5yytos; i++){
+ fprintf(fts5yyTraceFILE,"%c%s", cDiv, fts5yyTokenName[i->major]);
+ cDiv = ' ';
+ }
fprintf(fts5yyTraceFILE,"]\n");
}
#endif
@@ -183339,17 +184400,6 @@ static void sqlite3Fts5ExprCheckPoslists(Fts5Expr *pExpr, i64 iRowid){
fts5ExprCheckPoslists(pExpr->pRoot, iRowid);
}
-static void fts5ExprClearEof(Fts5ExprNode *pNode){
- int i;
- for(i=0; i<pNode->nChild; i++){
- fts5ExprClearEof(pNode->apChild[i]);
- }
- pNode->bEof = 0;
-}
-static void sqlite3Fts5ExprClearEof(Fts5Expr *pExpr){
- fts5ExprClearEof(pExpr->pRoot);
-}
-
/*
** This function is only called for detail=columns tables.
*/
@@ -191567,7 +192617,6 @@ static int fts5FilterMethod(
pCsr->ePlan = FTS5_PLAN_SOURCE;
pCsr->pExpr = pTab->pSortCsr->pExpr;
rc = fts5CursorFirst(pTab, pCsr, bDesc);
- sqlite3Fts5ExprClearEof(pCsr->pExpr);
}else if( pMatch ){
const char *zExpr = (const char*)sqlite3_value_text(apVal[0]);
if( zExpr==0 ) zExpr = "";
@@ -192996,7 +194045,7 @@ static void fts5SourceIdFunc(
){
assert( nArg==0 );
UNUSED_PARAM2(nArg, apUnused);
- sqlite3_result_text(pCtx, "fts5: 2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2", -1, SQLITE_TRANSIENT);
+ sqlite3_result_text(pCtx, "fts5: 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6", -1, SQLITE_TRANSIENT);
}
static int fts5Init(sqlite3 *db){
@@ -193084,7 +194133,7 @@ static int fts5Init(sqlite3 *db){
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_fts_init(
+SQLITE_API int sqlite3_fts_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -193097,7 +194146,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_fts_init(
#ifdef _WIN32
__declspec(dllexport)
#endif
-SQLITE_API int SQLITE_STDCALL sqlite3_fts5_init(
+SQLITE_API int sqlite3_fts5_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
@@ -193361,7 +194410,11 @@ static int sqlite3Fts5CreateTable(
char *zErr = 0;
rc = fts5ExecPrintf(pConfig->db, &zErr, "CREATE TABLE %Q.'%q_%q'(%s)%s",
- pConfig->zDb, pConfig->zName, zPost, zDefn, bWithout?" WITHOUT ROWID":""
+ pConfig->zDb, pConfig->zName, zPost, zDefn,
+#ifndef SQLITE_FTS5_NO_WITHOUT_ROWID
+ bWithout?" WITHOUT ROWID":
+#endif
+ ""
);
if( zErr ){
*pzErr = sqlite3_mprintf(
diff --git a/src/3rdparty/sqlite3/sqlite3.h b/src/3rdparty/sqlite3/sqlite3.h
index 313b5ec3c..cfbba628e 100644
--- a/src/3rdparty/sqlite3/sqlite3.h
+++ b/src/3rdparty/sqlite3/sqlite3.h
@@ -30,8 +30,8 @@
** the version number) and changes its name to "sqlite3.h" as
** part of the build process.
*/
-#ifndef _SQLITE3_H_
-#define _SQLITE3_H_
+#ifndef SQLITE3_H
+#define SQLITE3_H
#include <stdarg.h> /* Needed for the definition of va_list */
/*
@@ -54,8 +54,17 @@ extern "C" {
#ifndef SQLITE_CDECL
# define SQLITE_CDECL
#endif
+#ifndef SQLITE_APICALL
+# define SQLITE_APICALL
+#endif
#ifndef SQLITE_STDCALL
-# define SQLITE_STDCALL
+# define SQLITE_STDCALL SQLITE_APICALL
+#endif
+#ifndef SQLITE_CALLBACK
+# define SQLITE_CALLBACK
+#endif
+#ifndef SQLITE_SYSAPI
+# define SQLITE_SYSAPI
#endif
/*
@@ -111,9 +120,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.13.0"
-#define SQLITE_VERSION_NUMBER 3013000
-#define SQLITE_SOURCE_ID "2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2"
+#define SQLITE_VERSION "3.14.2"
+#define SQLITE_VERSION_NUMBER 3014002
+#define SQLITE_SOURCE_ID "2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -146,9 +155,9 @@ extern "C" {
** See also: [sqlite_version()] and [sqlite_source_id()].
*/
SQLITE_API SQLITE_EXTERN const char sqlite3_version[];
-SQLITE_API const char *SQLITE_STDCALL sqlite3_libversion(void);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sourceid(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_libversion_number(void);
+SQLITE_API const char *sqlite3_libversion(void);
+SQLITE_API const char *sqlite3_sourceid(void);
+SQLITE_API int sqlite3_libversion_number(void);
/*
** CAPI3REF: Run-Time Library Compilation Options Diagnostics
@@ -173,8 +182,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_libversion_number(void);
** [sqlite_compileoption_get()] and the [compile_options pragma].
*/
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
-SQLITE_API int SQLITE_STDCALL sqlite3_compileoption_used(const char *zOptName);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N);
+SQLITE_API int sqlite3_compileoption_used(const char *zOptName);
+SQLITE_API const char *sqlite3_compileoption_get(int N);
#endif
/*
@@ -213,7 +222,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_compileoption_get(int N);
**
** See the [threading mode] documentation for additional information.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_threadsafe(void);
+SQLITE_API int sqlite3_threadsafe(void);
/*
** CAPI3REF: Database Connection Handle
@@ -310,8 +319,8 @@ typedef sqlite_uint64 sqlite3_uint64;
** ^Calling sqlite3_close() or sqlite3_close_v2() with a NULL pointer
** argument is a harmless no-op.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_close(sqlite3*);
-SQLITE_API int SQLITE_STDCALL sqlite3_close_v2(sqlite3*);
+SQLITE_API int sqlite3_close(sqlite3*);
+SQLITE_API int sqlite3_close_v2(sqlite3*);
/*
** The type for a callback function.
@@ -382,7 +391,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
** </ul>
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_exec(
+SQLITE_API int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
@@ -506,6 +515,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_exec(
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
+#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
/*
** CAPI3REF: Flags For File Open Operations
@@ -1036,6 +1046,16 @@ struct sqlite3_io_methods {
typedef struct sqlite3_mutex sqlite3_mutex;
/*
+** CAPI3REF: Loadable Extension Thunk
+**
+** A pointer to the opaque sqlite3_api_routines structure is passed as
+** the third parameter to entry points of [loadable extensions]. This
+** structure must be typedefed in order to work around compiler warnings
+** on some platforms.
+*/
+typedef struct sqlite3_api_routines sqlite3_api_routines;
+
+/*
** CAPI3REF: OS Interface Object
**
** An instance of the sqlite3_vfs object defines the interface between
@@ -1370,10 +1390,10 @@ struct sqlite3_vfs {
** must return [SQLITE_OK] on success and some other [error code] upon
** failure.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_initialize(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_shutdown(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_os_init(void);
-SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
+SQLITE_API int sqlite3_initialize(void);
+SQLITE_API int sqlite3_shutdown(void);
+SQLITE_API int sqlite3_os_init(void);
+SQLITE_API int sqlite3_os_end(void);
/*
** CAPI3REF: Configuring The SQLite Library
@@ -1406,7 +1426,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_os_end(void);
** ^If the option is unknown or SQLite is unable to set the option
** then this routine returns a non-zero [error code].
*/
-SQLITE_API int SQLITE_CDECL sqlite3_config(int, ...);
+SQLITE_API int sqlite3_config(int, ...);
/*
** CAPI3REF: Configure database connections
@@ -1425,7 +1445,7 @@ SQLITE_API int SQLITE_CDECL sqlite3_config(int, ...);
** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
** the call is considered successful.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_db_config(sqlite3*, int op, ...);
+SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...);
/*
** CAPI3REF: Memory Allocation Routines
@@ -1939,7 +1959,7 @@ struct sqlite3_mem_methods {
** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
** There should be two additional arguments.
** When the first argument to this interface is 1, then only the C-API is
-** enabled and the SQL function remains disabled. If the first argment to
+** enabled and the SQL function remains disabled. If the first argument to
** this interface is 0, then both the C-API and the SQL function are disabled.
** If the first argument is -1, then no changes are made to state of either the
** C-API or the SQL function.
@@ -1966,7 +1986,7 @@ struct sqlite3_mem_methods {
** [extended result codes] feature of SQLite. ^The extended result
** codes are disabled by default for historical compatibility.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3*, int onoff);
+SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
/*
** CAPI3REF: Last Insert Rowid
@@ -2018,7 +2038,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_extended_result_codes(sqlite3*, int onoff)
** unpredictable and might not equal either the old or the new
** last insert [rowid].
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
/*
** CAPI3REF: Count The Number Of Rows Modified
@@ -2071,7 +2091,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_last_insert_rowid(sqlite3*);
** while [sqlite3_changes()] is running then the value returned
** is unpredictable and not meaningful.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3*);
+SQLITE_API int sqlite3_changes(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
@@ -2095,7 +2115,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_changes(sqlite3*);
** while [sqlite3_total_changes()] is running then the value
** returned is unpredictable and not meaningful.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_total_changes(sqlite3*);
+SQLITE_API int sqlite3_total_changes(sqlite3*);
/*
** CAPI3REF: Interrupt A Long-Running Query
@@ -2135,7 +2155,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_total_changes(sqlite3*);
** If the database connection closes while [sqlite3_interrupt()]
** is running then bad things will likely happen.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_interrupt(sqlite3*);
+SQLITE_API void sqlite3_interrupt(sqlite3*);
/*
** CAPI3REF: Determine If An SQL Statement Is Complete
@@ -2170,8 +2190,8 @@ SQLITE_API void SQLITE_STDCALL sqlite3_interrupt(sqlite3*);
** The input to [sqlite3_complete16()] must be a zero-terminated
** UTF-16 string in native byte order.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_complete(const char *sql);
-SQLITE_API int SQLITE_STDCALL sqlite3_complete16(const void *sql);
+SQLITE_API int sqlite3_complete(const char *sql);
+SQLITE_API int sqlite3_complete16(const void *sql);
/*
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
@@ -2232,7 +2252,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_complete16(const void *sql);
** A busy handler must not close the database connection
** or [prepared statement] that invoked the busy handler.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
+SQLITE_API int sqlite3_busy_handler(sqlite3*,int(*)(void*,int),void*);
/*
** CAPI3REF: Set A Busy Timeout
@@ -2255,7 +2275,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_handler(sqlite3*, int(*)(void*,int),
**
** See also: [PRAGMA busy_timeout]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3*, int ms);
+SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
/*
** CAPI3REF: Convenience Routines For Running Queries
@@ -2330,7 +2350,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_busy_timeout(sqlite3*, int ms);
** reflected in subsequent calls to [sqlite3_errcode()] or
** [sqlite3_errmsg()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
+SQLITE_API int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
@@ -2338,7 +2358,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_get_table(
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
-SQLITE_API void SQLITE_STDCALL sqlite3_free_table(char **result);
+SQLITE_API void sqlite3_free_table(char **result);
/*
** CAPI3REF: Formatted String Printing Functions
@@ -2444,10 +2464,10 @@ SQLITE_API void SQLITE_STDCALL sqlite3_free_table(char **result);
** addition that after the string has been read and copied into
** the result, [sqlite3_free()] is called on the input string.)^
*/
-SQLITE_API char *SQLITE_CDECL sqlite3_mprintf(const char*,...);
-SQLITE_API char *SQLITE_STDCALL sqlite3_vmprintf(const char*, va_list);
-SQLITE_API char *SQLITE_CDECL sqlite3_snprintf(int,char*,const char*, ...);
-SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list);
+SQLITE_API char *sqlite3_mprintf(const char*,...);
+SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
+SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
+SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
/*
** CAPI3REF: Memory Allocation Subsystem
@@ -2537,12 +2557,12 @@ SQLITE_API char *SQLITE_STDCALL sqlite3_vsnprintf(int,char*,const char*, va_list
** a block of memory after it has been released using
** [sqlite3_free()] or [sqlite3_realloc()].
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc(int);
-SQLITE_API void *SQLITE_STDCALL sqlite3_malloc64(sqlite3_uint64);
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc(void*, int);
-SQLITE_API void *SQLITE_STDCALL sqlite3_realloc64(void*, sqlite3_uint64);
-SQLITE_API void SQLITE_STDCALL sqlite3_free(void*);
-SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void*);
+SQLITE_API void *sqlite3_malloc(int);
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
+SQLITE_API void *sqlite3_realloc(void*, int);
+SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
+SQLITE_API void sqlite3_free(void*);
+SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
/*
** CAPI3REF: Memory Allocator Statistics
@@ -2567,8 +2587,8 @@ SQLITE_API sqlite3_uint64 SQLITE_STDCALL sqlite3_msize(void*);
** by [sqlite3_memory_highwater(1)] is the high-water mark
** prior to the reset.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_used(void);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_highwater(int resetFlag);
+SQLITE_API sqlite3_int64 sqlite3_memory_used(void);
+SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
/*
** CAPI3REF: Pseudo-Random Number Generator
@@ -2591,7 +2611,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_memory_highwater(int resetFlag);
** internally and without recourse to the [sqlite3_vfs] xRandomness
** method.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_randomness(int N, void *P);
+SQLITE_API void sqlite3_randomness(int N, void *P);
/*
** CAPI3REF: Compile-Time Authorization Callbacks
@@ -2674,7 +2694,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_randomness(int N, void *P);
** as stated in the previous paragraph, sqlite3_step() invokes
** sqlite3_prepare_v2() to reprepare a statement after a schema change.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
+SQLITE_API int sqlite3_set_authorizer(
sqlite3*,
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pUserData
@@ -2754,6 +2774,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
** CAPI3REF: Tracing And Profiling Functions
** METHOD: sqlite3
**
+** These routines are deprecated. Use the [sqlite3_trace_v2()] interface
+** instead of the routines described here.
+**
** These routines register callback functions that can be used for
** tracing and profiling the execution of SQL statements.
**
@@ -2779,11 +2802,105 @@ SQLITE_API int SQLITE_STDCALL sqlite3_set_authorizer(
** sqlite3_profile() function is considered experimental and is
** subject to change in future versions of SQLite.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
-SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_profile(sqlite3*,
+SQLITE_API SQLITE_DEPRECATED void *sqlite3_trace(sqlite3*,
+ void(*xTrace)(void*,const char*), void*);
+SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
/*
+** CAPI3REF: SQL Trace Event Codes
+** KEYWORDS: SQLITE_TRACE
+**
+** These constants identify classes of events that can be monitored
+** using the [sqlite3_trace_v2()] tracing logic. The third argument
+** to [sqlite3_trace_v2()] is an OR-ed combination of one or more of
+** the following constants. ^The first argument to the trace callback
+** is one of the following constants.
+**
+** New tracing constants may be added in future releases.
+**
+** ^A trace callback has four arguments: xCallback(T,C,P,X).
+** ^The T argument is one of the integer type codes above.
+** ^The C argument is a copy of the context pointer passed in as the
+** fourth argument to [sqlite3_trace_v2()].
+** The P and X arguments are pointers whose meanings depend on T.
+**
+** <dl>
+** [[SQLITE_TRACE_STMT]] <dt>SQLITE_TRACE_STMT</dt>
+** <dd>^An SQLITE_TRACE_STMT callback is invoked when a prepared statement
+** first begins running and possibly at other times during the
+** execution of the prepared statement, such as at the start of each
+** trigger subprogram. ^The P argument is a pointer to the
+** [prepared statement]. ^The X argument is a pointer to a string which
+** is the unexpanded SQL text of the prepared statement or an SQL comment
+** that indicates the invocation of a trigger. ^The callback can compute
+** the same text that would have been returned by the legacy [sqlite3_trace()]
+** interface by using the X argument when X begins with "--" and invoking
+** [sqlite3_expanded_sql(P)] otherwise.
+**
+** [[SQLITE_TRACE_PROFILE]] <dt>SQLITE_TRACE_PROFILE</dt>
+** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
+** information as is provided by the [sqlite3_profile()] callback.
+** ^The P argument is a pointer to the [prepared statement] and the
+** X argument points to a 64-bit integer which is the estimated of
+** the number of nanosecond that the prepared statement took to run.
+** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
+**
+** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
+** <dd>^An SQLITE_TRACE_ROW callback is invoked whenever a prepared
+** statement generates a single row of result.
+** ^The P argument is a pointer to the [prepared statement] and the
+** X argument is unused.
+**
+** [[SQLITE_TRACE_CLOSE]] <dt>SQLITE_TRACE_CLOSE</dt>
+** <dd>^An SQLITE_TRACE_CLOSE callback is invoked when a database
+** connection closes.
+** ^The P argument is a pointer to the [database connection] object
+** and the X argument is unused.
+** </dl>
+*/
+#define SQLITE_TRACE_STMT 0x01
+#define SQLITE_TRACE_PROFILE 0x02
+#define SQLITE_TRACE_ROW 0x04
+#define SQLITE_TRACE_CLOSE 0x08
+
+/*
+** CAPI3REF: SQL Trace Hook
+** METHOD: sqlite3
+**
+** ^The sqlite3_trace_v2(D,M,X,P) interface registers a trace callback
+** function X against [database connection] D, using property mask M
+** and context pointer P. ^If the X callback is
+** NULL or if the M mask is zero, then tracing is disabled. The
+** M argument should be the bitwise OR-ed combination of
+** zero or more [SQLITE_TRACE] constants.
+**
+** ^Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
+** (cancels) any prior calls to sqlite3_trace() or sqlite3_trace_v2().
+**
+** ^The X callback is invoked whenever any of the events identified by
+** mask M occur. ^The integer return value from the callback is currently
+** ignored, though this may change in future releases. Callback
+** implementations should return zero to ensure future compatibility.
+**
+** ^A trace callback is invoked with four arguments: callback(T,C,P,X).
+** ^The T argument is one of the [SQLITE_TRACE]
+** constants to indicate why the callback was invoked.
+** ^The C argument is a copy of the context pointer.
+** The P and X arguments are pointers whose meanings depend on T.
+**
+** The sqlite3_trace_v2() interface is intended to replace the legacy
+** interfaces [sqlite3_trace()] and [sqlite3_profile()], both of which
+** are deprecated.
+*/
+SQLITE_API int sqlite3_trace_v2(
+ sqlite3*,
+ unsigned uMask,
+ int(*xCallback)(unsigned,void*,void*,void*),
+ void *pCtx
+);
+
+/*
** CAPI3REF: Query Progress Callbacks
** METHOD: sqlite3
**
@@ -2815,7 +2932,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_profile(sqlite3*,
** database connections for the meaning of "modify" in this paragraph.
**
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
+SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
/*
** CAPI3REF: Opening A New Database Connection
@@ -3044,15 +3161,15 @@ SQLITE_API void SQLITE_STDCALL sqlite3_progress_handler(sqlite3*, int, int(*)(vo
**
** See also: [sqlite3_temp_directory]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_open(
+SQLITE_API int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_open16(
+SQLITE_API int sqlite3_open16(
const void *filename, /* Database filename (UTF-16) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
+SQLITE_API int sqlite3_open_v2(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb, /* OUT: SQLite db handle */
int flags, /* Flags */
@@ -3098,9 +3215,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_open_v2(
** VFS method, then the behavior of this routine is undefined and probably
** undesirable.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_uri_parameter(const char *zFilename, const char *zParam);
-SQLITE_API int SQLITE_STDCALL sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
+SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
+SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
+SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
/*
@@ -3144,11 +3261,11 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_uri_int64(const char*, const cha
** was invoked incorrectly by the application. In that case, the
** error code and message may or may not be set.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_errcode(sqlite3 *db);
-SQLITE_API int SQLITE_STDCALL sqlite3_extended_errcode(sqlite3 *db);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errmsg(sqlite3*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_errmsg16(sqlite3*);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_errstr(int);
+SQLITE_API int sqlite3_errcode(sqlite3 *db);
+SQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
+SQLITE_API const char *sqlite3_errmsg(sqlite3*);
+SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
+SQLITE_API const char *sqlite3_errstr(int);
/*
** CAPI3REF: Prepared Statement Object
@@ -3216,7 +3333,7 @@ typedef struct sqlite3_stmt sqlite3_stmt;
**
** New run-time limit categories may be added in future releases.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_limit(sqlite3*, int id, int newVal);
+SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
/*
** CAPI3REF: Run-Time Limit Categories
@@ -3368,28 +3485,28 @@ SQLITE_API int SQLITE_STDCALL sqlite3_limit(sqlite3*, int id, int newVal);
** </li>
** </ol>
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare(
+SQLITE_API int sqlite3_prepare(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare_v2(
+SQLITE_API int sqlite3_prepare_v2(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16(
+SQLITE_API int sqlite3_prepare16(
sqlite3 *db, /* Database handle */
const void *zSql, /* SQL statement, UTF-16 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const void **pzTail /* OUT: Pointer to unused portion of zSql */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_prepare16_v2(
+SQLITE_API int sqlite3_prepare16_v2(
sqlite3 *db, /* Database handle */
const void *zSql, /* SQL statement, UTF-16 encoded */
int nByte, /* Maximum length of zSql in bytes. */
@@ -3401,11 +3518,35 @@ SQLITE_API int SQLITE_STDCALL sqlite3_prepare16_v2(
** CAPI3REF: Retrieving Statement SQL
** METHOD: sqlite3_stmt
**
-** ^This interface can be used to retrieve a saved copy of the original
-** SQL text used to create a [prepared statement] if that statement was
-** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
+** ^The sqlite3_sql(P) interface returns a pointer to a copy of the UTF-8
+** SQL text used to create [prepared statement] P if P was
+** created by either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
+** ^The sqlite3_expanded_sql(P) interface returns a pointer to a UTF-8
+** string containing the SQL text of prepared statement P with
+** [bound parameters] expanded.
+**
+** ^(For example, if a prepared statement is created using the SQL
+** text "SELECT $abc,:xyz" and if parameter $abc is bound to integer 2345
+** and parameter :xyz is unbound, then sqlite3_sql() will return
+** the original string, "SELECT $abc,:xyz" but sqlite3_expanded_sql()
+** will return "SELECT 2345,NULL".)^
+**
+** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
+** is available to hold the result, or if the result would exceed the
+** the maximum string length determined by the [SQLITE_LIMIT_LENGTH].
+**
+** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
+** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
+** option causes sqlite3_expanded_sql() to always return NULL.
+**
+** ^The string returned by sqlite3_sql(P) is managed by SQLite and is
+** automatically freed when the prepared statement is finalized.
+** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
+** is obtained from [sqlite3_malloc()] and must be free by the application
+** by passing it to [sqlite3_free()].
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_sql(sqlite3_stmt *pStmt);
+SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
+SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Determine If An SQL Statement Writes The Database
@@ -3437,7 +3578,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_sql(sqlite3_stmt *pStmt);
** change the configuration of a database connection, they do not make
** changes to the content of the database files on disk.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
@@ -3458,7 +3599,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
** for example, in diagnostic routines to search for prepared
** statements that are holding a transaction open.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_busy(sqlite3_stmt*);
+SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt*);
/*
** CAPI3REF: Dynamically Typed Value Object
@@ -3622,20 +3763,20 @@ typedef struct sqlite3_context sqlite3_context;
** See also: [sqlite3_bind_parameter_count()],
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
+SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_double(sqlite3_stmt*, int, double);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int(sqlite3_stmt*, int, int);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_null(sqlite3_stmt*, int);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
+SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
+SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
+SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
+SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
+SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
+SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
+SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
void(*)(void*), unsigned char encoding);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
+SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
+SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
+SQLITE_API int sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
/*
** CAPI3REF: Number Of SQL Parameters
@@ -3656,7 +3797,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite
** [sqlite3_bind_parameter_name()], and
** [sqlite3_bind_parameter_index()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt*);
+SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*);
/*
** CAPI3REF: Name Of A Host Parameter
@@ -3684,7 +3825,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_count(sqlite3_stmt*);
** [sqlite3_bind_parameter_count()], and
** [sqlite3_bind_parameter_index()].
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_bind_parameter_name(sqlite3_stmt*, int);
+SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
/*
** CAPI3REF: Index Of A Parameter With A Given Name
@@ -3701,7 +3842,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_bind_parameter_name(sqlite3_stmt*,
** [sqlite3_bind_parameter_count()], and
** [sqlite3_bind_parameter_name()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
+SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
/*
** CAPI3REF: Reset All Bindings On A Prepared Statement
@@ -3711,7 +3852,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_bind_parameter_index(sqlite3_stmt*, const
** the [sqlite3_bind_blob | bindings] on a [prepared statement].
** ^Use this routine to reset all host parameters to NULL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt*);
+SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*);
/*
** CAPI3REF: Number Of Columns In A Result Set
@@ -3723,7 +3864,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_clear_bindings(sqlite3_stmt*);
**
** See also: [sqlite3_data_count()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Column Names In A Result Set
@@ -3752,8 +3893,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_column_count(sqlite3_stmt *pStmt);
** then the name of the column is unspecified and may change from
** one release of SQLite to the next.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_name(sqlite3_stmt*, int N);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt*, int N);
+SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N);
+SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
/*
** CAPI3REF: Source Of Data In A Query Result
@@ -3801,12 +3942,12 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_name16(sqlite3_stmt*, int N
** for the same [prepared statement] and result column
** at the same time then the results are undefined.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_database_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_database_name16(sqlite3_stmt*,int);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_table_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_table_name16(sqlite3_stmt*,int);
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_origin_name(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
/*
** CAPI3REF: Declared Datatype Of A Query Result
@@ -3838,8 +3979,8 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_origin_name16(sqlite3_stmt*
** is associated with individual values, not with the containers
** used to hold those values.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_column_decltype(sqlite3_stmt*,int);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt*,int);
+SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int);
+SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
/*
** CAPI3REF: Evaluate An SQL Statement
@@ -3919,7 +4060,7 @@ SQLITE_API const void *SQLITE_STDCALL sqlite3_column_decltype16(sqlite3_stmt*,in
** then the more specific [error codes] are returned directly
** by sqlite3_step(). The use of the "v2" interface is recommended.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt*);
+SQLITE_API int sqlite3_step(sqlite3_stmt*);
/*
** CAPI3REF: Number of columns in a result set
@@ -3940,7 +4081,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_step(sqlite3_stmt*);
**
** See also: [sqlite3_column_count()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_data_count(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Fundamental Datatypes
@@ -4130,16 +4271,16 @@ SQLITE_API int SQLITE_STDCALL sqlite3_data_count(sqlite3_stmt *pStmt);
** pointer. Subsequent calls to [sqlite3_errcode()] will return
** [SQLITE_NOMEM].)^
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_blob(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
-SQLITE_API double SQLITE_STDCALL sqlite3_column_double(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_int(sqlite3_stmt*, int iCol);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_column_int64(sqlite3_stmt*, int iCol);
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_column_text(sqlite3_stmt*, int iCol);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_column_text16(sqlite3_stmt*, int iCol);
-SQLITE_API int SQLITE_STDCALL sqlite3_column_type(sqlite3_stmt*, int iCol);
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt*, int iCol);
+SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
+SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol);
+SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
+SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
+SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
+SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
+SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
/*
** CAPI3REF: Destroy A Prepared Statement Object
@@ -4167,7 +4308,7 @@ SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_column_value(sqlite3_stmt*, int
** statement after it has been finalized can result in undefined and
** undesirable behavior such as segfaults and heap corruption.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Reset A Prepared Statement Object
@@ -4194,7 +4335,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_finalize(sqlite3_stmt *pStmt);
** ^The [sqlite3_reset(S)] interface does not change the values
** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt);
+SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Create Or Redefine SQL Functions
@@ -4294,7 +4435,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_reset(sqlite3_stmt *pStmt);
** close the database connection nor finalize or reset the prepared
** statement in which the function is running.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
+SQLITE_API int sqlite3_create_function(
sqlite3 *db,
const char *zFunctionName,
int nArg,
@@ -4304,7 +4445,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function(
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
+SQLITE_API int sqlite3_create_function16(
sqlite3 *db,
const void *zFunctionName,
int nArg,
@@ -4314,7 +4455,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function16(
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
+SQLITE_API int sqlite3_create_function_v2(
sqlite3 *db,
const char *zFunctionName,
int nArg,
@@ -4360,12 +4501,12 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_function_v2(
** these functions, we will not explain what they do.
*/
#ifndef SQLITE_OMIT_DEPRECATED
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_aggregate_count(sqlite3_context*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_expired(sqlite3_stmt*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_global_recover(void);
-SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_thread_cleanup(void);
-SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
+SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void);
+SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
+SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
void*,sqlite3_int64);
#endif
@@ -4415,18 +4556,18 @@ SQLITE_API SQLITE_DEPRECATED int SQLITE_STDCALL sqlite3_memory_alarm(void(*)(voi
** These routines must be called from the same thread as
** the SQL function that supplied the [sqlite3_value*] parameters.
*/
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_blob(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_bytes16(sqlite3_value*);
-SQLITE_API double SQLITE_STDCALL sqlite3_value_double(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_int(sqlite3_value*);
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_value_int64(sqlite3_value*);
-SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_value_text(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16le(sqlite3_value*);
-SQLITE_API const void *SQLITE_STDCALL sqlite3_value_text16be(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_type(sqlite3_value*);
-SQLITE_API int SQLITE_STDCALL sqlite3_value_numeric_type(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
+SQLITE_API double sqlite3_value_double(sqlite3_value*);
+SQLITE_API int sqlite3_value_int(sqlite3_value*);
+SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
+SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
+SQLITE_API int sqlite3_value_type(sqlite3_value*);
+SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
/*
** CAPI3REF: Finding The Subtype Of SQL Values
@@ -4442,7 +4583,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_value_numeric_type(sqlite3_value*);
** from the result of one [application-defined SQL function] into the
** input of another.
*/
-SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value*);
+SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
/*
** CAPI3REF: Copy And Free SQL Values
@@ -4458,8 +4599,8 @@ SQLITE_API unsigned int SQLITE_STDCALL sqlite3_value_subtype(sqlite3_value*);
** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
** then sqlite3_value_free(V) is a harmless no-op.
*/
-SQLITE_API sqlite3_value *SQLITE_STDCALL sqlite3_value_dup(const sqlite3_value*);
-SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
+SQLITE_API sqlite3_value *sqlite3_value_dup(const sqlite3_value*);
+SQLITE_API void sqlite3_value_free(sqlite3_value*);
/*
** CAPI3REF: Obtain Aggregate Function Context
@@ -4504,7 +4645,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_value_free(sqlite3_value*);
** This routine must be called from the same thread in which
** the aggregate SQL function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context*, int nBytes);
+SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
/*
** CAPI3REF: User Data For Functions
@@ -4519,7 +4660,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_aggregate_context(sqlite3_context*, int
** This routine must be called from the same thread in which
** the application-defined function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context*);
+SQLITE_API void *sqlite3_user_data(sqlite3_context*);
/*
** CAPI3REF: Database Connection For Functions
@@ -4531,7 +4672,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_user_data(sqlite3_context*);
** and [sqlite3_create_function16()] routines that originally
** registered the application defined function.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
+SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
/*
** CAPI3REF: Function Auxiliary Data
@@ -4563,12 +4704,13 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
** SQLite will invoke the destructor function X with parameter P exactly
** once, when the metadata is discarded.
** SQLite is free to discard the metadata at any time, including: <ul>
-** <li> when the corresponding function parameter changes, or
-** <li> when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
-** SQL statement, or
-** <li> when sqlite3_set_auxdata() is invoked again on the same parameter, or
-** <li> during the original sqlite3_set_auxdata() call when a memory
-** allocation error occurs. </ul>)^
+** <li> ^(when the corresponding function parameter changes)^, or
+** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
+** SQL statement)^, or
+** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
+** parameter)^, or
+** <li> ^(during the original sqlite3_set_auxdata() call when a memory
+** allocation error occurs.)^ </ul>
**
** Note the last bullet in particular. The destructor X in
** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
@@ -4584,8 +4726,8 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_context_db_handle(sqlite3_context*);
** These routines must be called from the same thread in which
** the SQL function is running.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_get_auxdata(sqlite3_context*, int N);
-SQLITE_API void SQLITE_STDCALL sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
+SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
+SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
/*
@@ -4721,27 +4863,27 @@ typedef void (*sqlite3_destructor_type)(void*);
** than the one containing the application-defined function that received
** the [sqlite3_context] pointer, the results are undefined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_blob64(sqlite3_context*,const void*,
+SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
sqlite3_uint64,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_double(sqlite3_context*, double);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error(sqlite3_context*, const char*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error16(sqlite3_context*, const void*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_toobig(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_nomem(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_error_code(sqlite3_context*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int(sqlite3_context*, int);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_null(sqlite3_context*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
+SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
+SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
+SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*);
+SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*);
+SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int);
+SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
+SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
+SQLITE_API void sqlite3_result_null(sqlite3_context*);
+SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
void(*)(void*), unsigned char encoding);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
-SQLITE_API void SQLITE_STDCALL sqlite3_result_value(sqlite3_context*, sqlite3_value*);
-SQLITE_API void SQLITE_STDCALL sqlite3_result_zeroblob(sqlite3_context*, int n);
-SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
+SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
+SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
+SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
+SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
+SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
/*
@@ -4756,7 +4898,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_result_zeroblob64(sqlite3_context*, sqlite
** The number of subtype bytes preserved by SQLite might increase
** in future releases of SQLite.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_result_subtype(sqlite3_context*,unsigned int);
+SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
/*
** CAPI3REF: Define New Collating Sequences
@@ -4838,14 +4980,14 @@ SQLITE_API void SQLITE_STDCALL sqlite3_result_subtype(sqlite3_context*,unsigned
**
** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation(
+SQLITE_API int sqlite3_create_collation(
sqlite3*,
const char *zName,
int eTextRep,
void *pArg,
int(*xCompare)(void*,int,const void*,int,const void*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
+SQLITE_API int sqlite3_create_collation_v2(
sqlite3*,
const char *zName,
int eTextRep,
@@ -4853,7 +4995,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation_v2(
int(*xCompare)(void*,int,const void*,int,const void*),
void(*xDestroy)(void*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
+SQLITE_API int sqlite3_create_collation16(
sqlite3*,
const void *zName,
int eTextRep,
@@ -4888,12 +5030,12 @@ SQLITE_API int SQLITE_STDCALL sqlite3_create_collation16(
** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
** [sqlite3_create_collation_v2()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed(
+SQLITE_API int sqlite3_collation_needed(
sqlite3*,
void*,
void(*)(void*,sqlite3*,int eTextRep,const char*)
);
-SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
+SQLITE_API int sqlite3_collation_needed16(
sqlite3*,
void*,
void(*)(void*,sqlite3*,int eTextRep,const void*)
@@ -4907,11 +5049,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_collation_needed16(
** The code to implement this API is not available in the public release
** of SQLite.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_key(
+SQLITE_API int sqlite3_key(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The key */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_key_v2(
+SQLITE_API int sqlite3_key_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The key */
@@ -4925,11 +5067,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_key_v2(
** The code to implement this API is not available in the public release
** of SQLite.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rekey(
+SQLITE_API int sqlite3_rekey(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The new key */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_rekey_v2(
+SQLITE_API int sqlite3_rekey_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The new key */
@@ -4939,7 +5081,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_rekey_v2(
** Specify the activation key for a SEE database. Unless
** activated, none of the SEE routines will work.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_activate_see(
+SQLITE_API void sqlite3_activate_see(
const char *zPassPhrase /* Activation phrase */
);
#endif
@@ -4949,7 +5091,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_activate_see(
** Specify the activation key for a CEROD database. Unless
** activated, none of the CEROD routines will work.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_activate_cerod(
+SQLITE_API void sqlite3_activate_cerod(
const char *zPassPhrase /* Activation phrase */
);
#endif
@@ -4971,7 +5113,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_activate_cerod(
** all, then the behavior of sqlite3_sleep() may deviate from the description
** in the previous paragraphs.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_sleep(int);
+SQLITE_API int sqlite3_sleep(int);
/*
** CAPI3REF: Name Of The Folder Holding Temporary Files
@@ -5090,7 +5232,7 @@ SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
** connection while this routine is running, then the return value
** is undefined.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_get_autocommit(sqlite3*);
+SQLITE_API int sqlite3_get_autocommit(sqlite3*);
/*
** CAPI3REF: Find The Database Handle Of A Prepared Statement
@@ -5103,7 +5245,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_get_autocommit(sqlite3*);
** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
** create the statement in the first place.
*/
-SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt*);
+SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
/*
** CAPI3REF: Return The Filename For A Database Connection
@@ -5120,7 +5262,7 @@ SQLITE_API sqlite3 *SQLITE_STDCALL sqlite3_db_handle(sqlite3_stmt*);
** will be an absolute pathname, even if the filename used
** to open the database originally was a URI or relative pathname.
*/
-SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const char *zDbName);
+SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName);
/*
** CAPI3REF: Determine if a database is read-only
@@ -5130,7 +5272,7 @@ SQLITE_API const char *SQLITE_STDCALL sqlite3_db_filename(sqlite3 *db, const cha
** of connection D is read-only, 0 if it is read/write, or -1 if N is not
** the name of a database on connection D.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
+SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
/*
** CAPI3REF: Find the next prepared statement
@@ -5146,7 +5288,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_readonly(sqlite3 *db, const char *zDbNa
** [sqlite3_next_stmt(D,S)] must refer to an open database
** connection and in particular must not be a NULL pointer.
*/
-SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
+SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
/*
** CAPI3REF: Commit And Rollback Notification Callbacks
@@ -5195,8 +5337,8 @@ SQLITE_API sqlite3_stmt *SQLITE_STDCALL sqlite3_next_stmt(sqlite3 *pDb, sqlite3_
**
** See also the [sqlite3_update_hook()] interface.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
-SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
+SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
+SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
/*
** CAPI3REF: Data Change Notification Callbacks
@@ -5247,7 +5389,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_rollback_hook(sqlite3*, void(*)(void *),
** See also the [sqlite3_commit_hook()], [sqlite3_rollback_hook()],
** and [sqlite3_preupdate_hook()] interfaces.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
+SQLITE_API void *sqlite3_update_hook(
sqlite3*,
void(*)(void *,int ,char const *,char const *,sqlite3_int64),
void*
@@ -5287,7 +5429,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_update_hook(
**
** See Also: [SQLite Shared-Cache Mode]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_shared_cache(int);
+SQLITE_API int sqlite3_enable_shared_cache(int);
/*
** CAPI3REF: Attempt To Free Heap Memory
@@ -5303,7 +5445,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_shared_cache(int);
**
** See also: [sqlite3_db_release_memory()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_release_memory(int);
+SQLITE_API int sqlite3_release_memory(int);
/*
** CAPI3REF: Free Memory Used By A Database Connection
@@ -5317,7 +5459,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_release_memory(int);
**
** See also: [sqlite3_release_memory()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3*);
+SQLITE_API int sqlite3_db_release_memory(sqlite3*);
/*
** CAPI3REF: Impose A Limit On Heap Size
@@ -5369,7 +5511,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_release_memory(sqlite3*);
** The circumstances under which SQLite will enforce the soft heap limit may
** changes in future releases of SQLite.
*/
-SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64 N);
+SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
/*
** CAPI3REF: Deprecated Soft Heap Limit Interface
@@ -5380,7 +5522,7 @@ SQLITE_API sqlite3_int64 SQLITE_STDCALL sqlite3_soft_heap_limit64(sqlite3_int64
** only. All new applications should use the
** [sqlite3_soft_heap_limit64()] interface rather than this one.
*/
-SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
+SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
/*
@@ -5395,7 +5537,7 @@ SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
** column exists. ^The sqlite3_table_column_metadata() interface returns
** SQLITE_ERROR and if the specified column does not exist.
** ^If the column-name parameter to sqlite3_table_column_metadata() is a
-** NULL pointer, then this routine simply checks for the existance of the
+** NULL pointer, then this routine simply checks for the existence of the
** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
** does not.
**
@@ -5450,7 +5592,7 @@ SQLITE_API SQLITE_DEPRECATED void SQLITE_STDCALL sqlite3_soft_heap_limit(int N);
** parsed, if that has not already been done, and returns an error if
** any errors are encountered while loading the schema.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_table_column_metadata(
+SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
const char *zDbName, /* Database name or NULL */
const char *zTableName, /* Table name */
@@ -5506,7 +5648,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_table_column_metadata(
**
** See also the [load_extension() SQL function].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
+SQLITE_API int sqlite3_load_extension(
sqlite3 *db, /* Load the extension into this database connection */
const char *zFile, /* Name of the shared library containing extension */
const char *zProc, /* Entry point. Derived from zFile if 0 */
@@ -5529,8 +5671,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
**
** ^This interface enables or disables both the C-API
** [sqlite3_load_extension()] and the SQL function [load_extension()].
-** Use [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],..)
-** to enable or disable only the C-API.
+** ^(Use [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],..)
+** to enable or disable only the C-API.)^
**
** <b>Security warning:</b> It is recommended that extension loading
** be disabled using the [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method
@@ -5538,7 +5680,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_load_extension(
** remains disabled. This will prevent SQL injections from giving attackers
** access to extension loading capabilities.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int onoff);
+SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
/*
** CAPI3REF: Automatically Load Statically Linked Extensions
@@ -5550,7 +5692,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int ono
**
** ^(Even though the function prototype shows that xEntryPoint() takes
** no arguments and returns void, SQLite invokes xEntryPoint() with three
-** arguments and expects and integer result as if the signature of the
+** arguments and expects an integer result as if the signature of the
** entry point where as follows:
**
** <blockquote><pre>
@@ -5576,7 +5718,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_enable_load_extension(sqlite3 *db, int ono
** See also: [sqlite3_reset_auto_extension()]
** and [sqlite3_cancel_auto_extension()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xEntryPoint)(void));
+SQLITE_API int sqlite3_auto_extension(void(*xEntryPoint)(void));
/*
** CAPI3REF: Cancel Automatic Extension Loading
@@ -5588,7 +5730,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_auto_extension(void (*xEntryPoint)(void));
** unregistered and it returns 0 if X was not on the list of initialization
** routines.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xEntryPoint)(void));
+SQLITE_API int sqlite3_cancel_auto_extension(void(*xEntryPoint)(void));
/*
** CAPI3REF: Reset Automatic Extension Loading
@@ -5596,7 +5738,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_cancel_auto_extension(void (*xEntryPoint)(
** ^This interface disables all automatic extensions previously
** registered using [sqlite3_auto_extension()].
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_reset_auto_extension(void);
+SQLITE_API void sqlite3_reset_auto_extension(void);
/*
** The interface to the virtual-table mechanism is currently considered
@@ -5841,13 +5983,13 @@ struct sqlite3_index_info {
** interface is equivalent to sqlite3_create_module_v2() with a NULL
** destructor.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module(
+SQLITE_API int sqlite3_create_module(
sqlite3 *db, /* SQLite connection to register module with */
const char *zName, /* Name of the module */
const sqlite3_module *p, /* Methods for the module */
void *pClientData /* Client data for xCreate/xConnect */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_create_module_v2(
+SQLITE_API int sqlite3_create_module_v2(
sqlite3 *db, /* SQLite connection to register module with */
const char *zName, /* Name of the module */
const sqlite3_module *p, /* Methods for the module */
@@ -5910,7 +6052,7 @@ struct sqlite3_vtab_cursor {
** to declare the format (the names and datatypes of the columns) of
** the virtual tables they implement.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3*, const char *zSQL);
+SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
/*
** CAPI3REF: Overload A Function For A Virtual Table
@@ -5929,7 +6071,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_declare_vtab(sqlite3*, const char *zSQL);
** purpose is to be a placeholder function that can be overloaded
** by a [virtual table].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
+SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
/*
** The interface to the virtual-table mechanism defined above (back up
@@ -6028,7 +6170,7 @@ typedef struct sqlite3_blob sqlite3_blob;
** To avoid a resource leak, every open [BLOB handle] should eventually
** be released by a call to [sqlite3_blob_close()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_open(
+SQLITE_API int sqlite3_blob_open(
sqlite3*,
const char *zDb,
const char *zTable,
@@ -6061,7 +6203,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_open(
**
** ^This function sets the database handle error code and message.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
+SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
/*
** CAPI3REF: Close A BLOB Handle
@@ -6084,7 +6226,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64)
** is passed a valid open blob handle, the values returned by the
** sqlite3_errcode() and sqlite3_errmsg() functions are set before returning.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_close(sqlite3_blob *);
+SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
/*
** CAPI3REF: Return The Size Of An Open BLOB
@@ -6100,7 +6242,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_close(sqlite3_blob *);
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
** to this routine results in undefined and probably undesirable behavior.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *);
+SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *);
/*
** CAPI3REF: Read Data From A BLOB Incrementally
@@ -6129,7 +6271,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_bytes(sqlite3_blob *);
**
** See also: [sqlite3_blob_write()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
+SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
/*
** CAPI3REF: Write Data Into A BLOB Incrementally
@@ -6171,7 +6313,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_read(sqlite3_blob *, void *Z, int N,
**
** See also: [sqlite3_blob_read()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
+SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
/*
** CAPI3REF: Virtual File System Objects
@@ -6202,9 +6344,9 @@ SQLITE_API int SQLITE_STDCALL sqlite3_blob_write(sqlite3_blob *, const void *z,
** ^(If the default VFS is unregistered, another VFS is chosen as
** the default. The choice for the new VFS is arbitrary.)^
*/
-SQLITE_API sqlite3_vfs *SQLITE_STDCALL sqlite3_vfs_find(const char *zVfsName);
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
-SQLITE_API int SQLITE_STDCALL sqlite3_vfs_unregister(sqlite3_vfs*);
+SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
+SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
+SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
/*
** CAPI3REF: Mutexes
@@ -6320,11 +6462,11 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vfs_unregister(sqlite3_vfs*);
**
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_mutex_alloc(int);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_free(sqlite3_mutex*);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_enter(sqlite3_mutex*);
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_try(sqlite3_mutex*);
-SQLITE_API void SQLITE_STDCALL sqlite3_mutex_leave(sqlite3_mutex*);
+SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int);
+SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*);
+SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*);
+SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
/*
** CAPI3REF: Mutex Methods Object
@@ -6434,8 +6576,8 @@ struct sqlite3_mutex_methods {
** interface should also return 1 when given a NULL pointer.
*/
#ifndef NDEBUG
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_held(sqlite3_mutex*);
-SQLITE_API int SQLITE_STDCALL sqlite3_mutex_notheld(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
+SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
#endif
/*
@@ -6475,7 +6617,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_mutex_notheld(sqlite3_mutex*);
** ^If the [threading mode] is Single-thread or Multi-thread then this
** routine returns a NULL pointer.
*/
-SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3*);
+SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
/*
** CAPI3REF: Low-Level Control Of Database Files
@@ -6510,7 +6652,7 @@ SQLITE_API sqlite3_mutex *SQLITE_STDCALL sqlite3_db_mutex(sqlite3*);
**
** See also: [SQLITE_FCNTL_LOCKSTATE]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
+SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
/*
** CAPI3REF: Testing Interface
@@ -6529,7 +6671,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_file_control(sqlite3*, const char *zDbName
** Unlike most of the SQLite API, this function is not guaranteed to
** operate consistently from one release to the next.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...);
+SQLITE_API int sqlite3_test_control(int op, ...);
/*
** CAPI3REF: Testing Interface Operation Codes
@@ -6592,8 +6734,8 @@ SQLITE_API int SQLITE_CDECL sqlite3_test_control(int op, ...);
**
** See also: [sqlite3_db_status()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
-SQLITE_API int SQLITE_STDCALL sqlite3_status64(
+SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
+SQLITE_API int sqlite3_status64(
int op,
sqlite3_int64 *pCurrent,
sqlite3_int64 *pHighwater,
@@ -6718,7 +6860,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_status64(
**
** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
+SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
/*
** CAPI3REF: Status Parameters for database connections
@@ -6764,6 +6906,18 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
** memory used by all pager caches associated with the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
**
+** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
+** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
+** <dd>This parameter is similar to DBSTATUS_CACHE_USED, except that if a
+** pager cache is shared between two or more connections the bytes of heap
+** memory used by that pager cache is divided evenly between the attached
+** connections.)^ In other words, if none of the pager caches associated
+** with the database connection are shared, this request returns the same
+** value as DBSTATUS_CACHE_USED. Or, if one or more or the pager caches are
+** shared, the value returned by this call will be smaller than that returned
+** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
+** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.
+**
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
** <dd>This parameter returns the approximate number of bytes of heap
** memory used to store the schema for all databases associated
@@ -6821,7 +6975,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
#define SQLITE_DBSTATUS_CACHE_MISS 8
#define SQLITE_DBSTATUS_CACHE_WRITE 9
#define SQLITE_DBSTATUS_DEFERRED_FKS 10
-#define SQLITE_DBSTATUS_MAX 10 /* Largest defined DBSTATUS */
+#define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
+#define SQLITE_DBSTATUS_MAX 11 /* Largest defined DBSTATUS */
/*
@@ -6848,7 +7003,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_status(sqlite3*, int op, int *pCur, int
**
** See also: [sqlite3_status()] and [sqlite3_db_status()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
+SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
/*
** CAPI3REF: Status Parameters for prepared statements
@@ -7317,16 +7472,16 @@ typedef struct sqlite3_backup sqlite3_backup;
** same time as another thread is invoking sqlite3_backup_step() it is
** possible that they return invalid values.
*/
-SQLITE_API sqlite3_backup *SQLITE_STDCALL sqlite3_backup_init(
+SQLITE_API sqlite3_backup *sqlite3_backup_init(
sqlite3 *pDest, /* Destination database handle */
const char *zDestName, /* Destination database name */
sqlite3 *pSource, /* Source database handle */
const char *zSourceName /* Source database name */
);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_step(sqlite3_backup *p, int nPage);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_finish(sqlite3_backup *p);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_remaining(sqlite3_backup *p);
-SQLITE_API int SQLITE_STDCALL sqlite3_backup_pagecount(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage);
+SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p);
+SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
/*
** CAPI3REF: Unlock Notification
@@ -7443,7 +7598,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_backup_pagecount(sqlite3_backup *p);
** the special "DROP TABLE/INDEX" case, the extended error code is just
** SQLITE_LOCKED.)^
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_unlock_notify(
+SQLITE_API int sqlite3_unlock_notify(
sqlite3 *pBlocked, /* Waiting connection */
void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */
void *pNotifyArg /* Argument to pass to xNotify */
@@ -7458,8 +7613,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_unlock_notify(
** strings in a case-independent fashion, using the same definition of "case
** independence" that SQLite uses internally when comparing identifiers.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stricmp(const char *, const char *);
-SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *, const char *, int);
+SQLITE_API int sqlite3_stricmp(const char *, const char *);
+SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
/*
** CAPI3REF: String Globbing
@@ -7476,7 +7631,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strnicmp(const char *, const char *, int);
**
** See also: [sqlite3_strlike()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zStr);
+SQLITE_API int sqlite3_strglob(const char *zGlob, const char *zStr);
/*
** CAPI3REF: String LIKE Matching
@@ -7499,7 +7654,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strglob(const char *zGlob, const char *zSt
**
** See also: [sqlite3_strglob()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
+SQLITE_API int sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
/*
** CAPI3REF: Error Logging Interface
@@ -7522,7 +7677,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_strlike(const char *zGlob, const char *zSt
** a few hundred characters, it will be truncated to the length of the
** buffer.
*/
-SQLITE_API void SQLITE_CDECL sqlite3_log(int iErrCode, const char *zFormat, ...);
+SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
/*
** CAPI3REF: Write-Ahead Log Commit Hook
@@ -7558,7 +7713,7 @@ SQLITE_API void SQLITE_CDECL sqlite3_log(int iErrCode, const char *zFormat, ...)
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
** overwrite any prior [sqlite3_wal_hook()] settings.
*/
-SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
+SQLITE_API void *sqlite3_wal_hook(
sqlite3*,
int(*)(void *,sqlite3*,const char*,int),
void*
@@ -7593,7 +7748,7 @@ SQLITE_API void *SQLITE_STDCALL sqlite3_wal_hook(
** is only necessary if the default setting is found to be suboptimal
** for a particular application.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
+SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
/*
** CAPI3REF: Checkpoint a database
@@ -7615,7 +7770,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
** start a callback but which do not need the full power (and corresponding
** complication) of [sqlite3_wal_checkpoint_v2()].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
+SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
/*
** CAPI3REF: Checkpoint a database
@@ -7709,7 +7864,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint(sqlite3 *db, const char *zD
** ^The [PRAGMA wal_checkpoint] command can be used to invoke this interface
** from SQL.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
+SQLITE_API int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
const char *zDb, /* Name of attached database (or NULL) */
int eMode, /* SQLITE_CHECKPOINT_* value */
@@ -7745,7 +7900,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_wal_checkpoint_v2(
** this function. (See [SQLITE_VTAB_CONSTRAINT_SUPPORT].) Further options
** may be added in the future.
*/
-SQLITE_API int SQLITE_CDECL sqlite3_vtab_config(sqlite3*, int op, ...);
+SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
/*
** CAPI3REF: Virtual Table Configuration Options
@@ -7798,7 +7953,7 @@ SQLITE_API int SQLITE_CDECL sqlite3_vtab_config(sqlite3*, int op, ...);
** of the SQL statement that triggered the call to the [xUpdate] method of the
** [virtual table].
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *);
+SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
/*
** CAPI3REF: Conflict resolution modes
@@ -7903,7 +8058,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_vtab_on_conflict(sqlite3 *);
**
** See also: [sqlite3_stmt_scanstatus_reset()]
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
+SQLITE_API int sqlite3_stmt_scanstatus(
sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
int idx, /* Index of loop to report on */
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
@@ -7919,7 +8074,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_stmt_scanstatus(
** This API is only available if the library is built with pre-processor
** symbol [SQLITE_ENABLE_STMT_SCANSTATUS] defined.
*/
-SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
+SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
/*
** CAPI3REF: Flush caches to disk mid-transaction
@@ -7951,7 +8106,7 @@ SQLITE_API void SQLITE_STDCALL sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
** ^This function does not set the database handle error code or message
** returned by the [sqlite3_errcode()] and [sqlite3_errmsg()] functions.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
+SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
/*
** CAPI3REF: The pre-update hook.
@@ -7977,7 +8132,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
** ^The second parameter to the preupdate callback is a pointer to
** the [database connection] that registered the preupdate hook.
** ^The third parameter to the preupdate callback is one of the constants
-** [SQLITE_INSERT], [SQLITE_DELETE], or [SQLITE_UPDATE] to indentify the
+** [SQLITE_INSERT], [SQLITE_DELETE], or [SQLITE_UPDATE] to identify the
** kind of update operation that is about to occur.
** ^(The fourth parameter to the preupdate callback is the name of the
** database within the database connection that is being modified. This
@@ -8031,7 +8186,7 @@ SQLITE_API int SQLITE_STDCALL sqlite3_db_cacheflush(sqlite3*);
**
** See also: [sqlite3_update_hook()]
*/
-SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_preupdate_hook(
+SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_preupdate_hook(
sqlite3 *db,
void(*xPreUpdate)(
void *pCtx, /* Copy of third arg to preupdate_hook() */
@@ -8044,10 +8199,10 @@ SQLITE_API SQLITE_EXPERIMENTAL void *SQLITE_STDCALL sqlite3_preupdate_hook(
),
void*
);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_old(sqlite3 *, int, sqlite3_value **);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_count(sqlite3 *);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_depth(sqlite3 *);
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_old(sqlite3 *, int, sqlite3_value **);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_count(sqlite3 *);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_depth(sqlite3 *);
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
/*
** CAPI3REF: Low-level system error code
@@ -8059,7 +8214,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_preupdate_new(sqlite3
** called to get back the underlying "errno" that caused the problem, such
** as ENOSPC, EAUTH, EISDIR, and so forth.
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_system_errno(sqlite3*);
+SQLITE_API int sqlite3_system_errno(sqlite3*);
/*
** CAPI3REF: Database Snapshot
@@ -8109,7 +8264,7 @@ typedef struct sqlite3_snapshot sqlite3_snapshot;
** The [sqlite3_snapshot_get()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_get(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot **ppSnapshot
@@ -8147,7 +8302,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_get(
** The [sqlite3_snapshot_open()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_open(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot *pSnapshot
@@ -8164,7 +8319,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_open(
** The [sqlite3_snapshot_free()] interface is only available when the
** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
*/
-SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3_snapshot*);
+SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
/*
** CAPI3REF: Compare the ages of two snapshot handles.
@@ -8188,7 +8343,7 @@ SQLITE_API SQLITE_EXPERIMENTAL void SQLITE_STDCALL sqlite3_snapshot_free(sqlite3
** snapshot than P2, zero if the two handles refer to the same database
** snapshot, and a positive value if P1 is a newer snapshot than P2.
*/
-SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_cmp(
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
sqlite3_snapshot *p1,
sqlite3_snapshot *p2
);
@@ -8204,7 +8359,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int SQLITE_STDCALL sqlite3_snapshot_cmp(
#ifdef __cplusplus
} /* End of the 'extern "C"' block */
#endif
-#endif /* _SQLITE3_H_ */
+#endif /* SQLITE3_H */
/******** Begin file sqlite3rtree.h *********/
/*
@@ -8246,7 +8401,7 @@ typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info;
**
** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...)
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_geometry_callback(
+SQLITE_API int sqlite3_rtree_geometry_callback(
sqlite3 *db,
const char *zGeom,
int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*),
@@ -8272,7 +8427,7 @@ struct sqlite3_rtree_geometry {
**
** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...)
*/
-SQLITE_API int SQLITE_STDCALL sqlite3_rtree_query_callback(
+SQLITE_API int sqlite3_rtree_query_callback(
sqlite3 *db,
const char *zQueryFunc,
int (*xQueryFunc)(sqlite3_rtree_query_info*),
@@ -9924,7 +10079,7 @@ struct Fts5ExtensionApi {
** behaviour. The structure methods are expected to function as follows:
**
** xCreate:
-** This function is used to allocate and inititalize a tokenizer instance.
+** This function is used to allocate and initialize a tokenizer instance.
** A tokenizer instance is required to actually tokenize text.
**
** The first argument passed to this function is a copy of the (void*)
@@ -10184,5 +10339,4 @@ struct fts5_api {
#endif /* _FTS5_H */
-
/******** End of fts5.h *********/
diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp
index c15fe5013..ab9338b9e 100644
--- a/src/cmd/cmd.cpp
+++ b/src/cmd/cmd.cpp
@@ -29,6 +29,7 @@
#include "syncengine.h"
#include "syncjournaldb.h"
#include "config.h"
+#include "connectionvalidator.h"
#include "cmd.h"
@@ -41,10 +42,14 @@
#include <windows.h>
#else
#include <termios.h>
+#include <unistd.h>
#endif
using namespace OCC;
+
+static void nullMessageHandler(QtMsgType, const char *) {}
+
struct CmdOptions {
QString source_dir;
QString target_url;
@@ -68,6 +73,8 @@ struct CmdOptions {
// So we have to use a global variable
CmdOptions *opts = 0;
+const qint64 timeoutToUseMsec = qMax(1000, ConnectionValidator::DefaultCallingIntervalMsec - 5*1000);
+
class EchoDisabler
{
public:
@@ -274,6 +281,12 @@ void selectiveSyncFixup(OCC::SyncJournalDb *journal, const QStringList &newList)
int main(int argc, char **argv) {
QCoreApplication app(argc, argv);
+#ifdef Q_OS_WIN
+ // Ensure OpenSSL config file is only loaded from app directory
+ QString opensslConf = QCoreApplication::applicationDirPath()+QString("/openssl.cnf");
+ qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit());
+#endif
+
qsrand(QTime::currentTime().msec() * QCoreApplication::applicationPid());
CmdOptions options;
@@ -288,6 +301,11 @@ int main(int argc, char **argv) {
parseOptions( app.arguments(), &options );
+ csync_set_log_level(options.silent ? 1 : 11);
+ if (options.silent) {
+ qInstallMsgHandler(nullMessageHandler);
+ }
+
AccountPtr account = Account::create();
if( !account ) {
@@ -381,13 +399,29 @@ int main(int argc, char **argv) {
account->setCredentials(cred);
account->setSslErrorHandler(sslErrorHandler);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+ //obtain capabilities using event loop
+ QEventLoop loop;
+
+ JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
+ job->setTimeout(timeoutToUseMsec);
+ QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QVariantMap &json) {
+ auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities");
+ qDebug() << "Server capabilities" << caps;
+ account->setCapabilities(caps.toMap());
+ loop.quit();
+ });
+ job->start();
+
+ loop.exec();
+#endif
+
// much lower age than the default since this utility is usually made to be run right after a change in the tests
SyncEngine::minimumFileAgeForUpload = 0;
int restartCount = 0;
restart_sync:
- csync_set_log_level(options.silent ? 1 : 11);
opts = &options;
@@ -441,7 +475,7 @@ restart_sync:
selectiveSyncFixup(&db, selectiveSyncList);
}
- SyncEngine engine(account, options.source_dir, QUrl(options.target_url), folder, &db);
+ SyncEngine engine(account, options.source_dir, folder, &db);
engine.setIgnoreHiddenFiles(options.ignoreHiddenFiles);
QObject::connect(&engine, SIGNAL(finished(bool)), &app, SLOT(quit()));
QObject::connect(&engine, SIGNAL(transmissionProgress(ProgressInfo)), &cmd, SLOT(transmissionProgressSlot()));
diff --git a/src/cmd/simplesslerrorhandler.cpp b/src/cmd/simplesslerrorhandler.cpp
index 4d3f545ec..a9d760532 100644
--- a/src/cmd/simplesslerrorhandler.cpp
+++ b/src/cmd/simplesslerrorhandler.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/cmd/simplesslerrorhandler.h b/src/cmd/simplesslerrorhandler.h
index 69d223419..05ee5ed42 100644
--- a/src/cmd/simplesslerrorhandler.h
+++ b/src/cmd/simplesslerrorhandler.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 1bb50b864..d38d14b52 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -70,9 +70,9 @@ set(client_SRCS
activityitemdelegate.cpp
selectivesyncdialog.cpp
settingsdialog.cpp
- share.cpp
sharedialog.cpp
sharelinkwidget.cpp
+ sharemanager.cpp
shareusergroupwidget.cpp
sharee.cpp
socketapi.cpp
@@ -94,22 +94,26 @@ set(client_SRCS
servernotificationhandler.cpp
creds/credentialsfactory.cpp
creds/httpcredentialsgui.cpp
- creds/shibbolethcredentials.cpp
- creds/shibboleth/shibbolethwebview.cpp
- creds/shibboleth/shibbolethuserjob.cpp
wizard/postfixlineedit.cpp
wizard/abstractcredswizardpage.cpp
wizard/owncloudadvancedsetuppage.cpp
wizard/owncloudconnectionmethoddialog.cpp
wizard/owncloudhttpcredspage.cpp
wizard/owncloudsetuppage.cpp
- wizard/owncloudshibbolethcredspage.cpp
wizard/owncloudwizardcommon.cpp
wizard/owncloudwizard.cpp
wizard/owncloudwizardresultpage.cpp
../3rdparty/qjson/json.cpp
)
+IF(NOT NO_SHIBBOLETH)
+ list(APPEND client_SRCS
+ creds/shibbolethcredentials.cpp
+ creds/shibboleth/shibbolethwebview.cpp
+ creds/shibboleth/shibbolethuserjob.cpp
+ wizard/owncloudshibbolethcredspage.cpp
+ )
+endif()
set(updater_SRCS
updater/ocupdater.cpp
@@ -195,6 +199,9 @@ IF( WIN32 )
${CMAKE_CURRENT_BINARY_DIR}/version.rc
@ONLY)
set(client_version ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+ IF(NOT MSVC)
+ set(client_manifest ${CMAKE_CURRENT_SOURCE_DIR}/manifest-mingw.rc)
+ ENDIF()
ENDIF()
set( final_src
@@ -202,6 +209,7 @@ set( final_src
${client_SRCS}
${client_UI_SRCS}
${client_version}
+ ${client_manifest}
${guiMoc}
${client_I18N}
${3rdparty_SRC}
@@ -232,6 +240,9 @@ set(ownCloud ${ownCloud_old})
if (WITH_DBUS)
set(ADDITIONAL_APP_MODULES DBus)
endif(WITH_DBUS)
+if (NOT NO_SHIBBOLETH)
+ list(APPEND ADDITIONAL_APP_MODULES WebKitWidgets)
+endif()
if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
@@ -250,14 +261,14 @@ if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
# add_executable( ${APPLICATION_EXECUTABLE} main.cpp ${final_src})
add_executable( ${APPLICATION_EXECUTABLE} WIN32 main.cpp ${final_src})
- qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml WebKitWidgets Sql ${ADDITIONAL_APP_MODULES})
+ qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml Sql ${ADDITIONAL_APP_MODULES})
else()
# set(CMAKE_INSTALL_PREFIX ".") # Examples use /Applications. hurmpf.
set(MACOSX_BUNDLE_ICON_FILE "ownCloud.icns")
# we must add MACOSX_BUNDLE only if building a bundle
add_executable( ${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp ${final_src})
- qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml WebKitWidgets Sql ${ADDITIONAL_APP_MODULES})
+ qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml Sql ${ADDITIONAL_APP_MODULES})
set (QM_DIR ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/Translations)
install(FILES ${client_I18N} DESTINATION ${QM_DIR})
diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp
index e4b386d76..0c1275c60 100644
--- a/src/gui/accountmanager.cpp
+++ b/src/gui/accountmanager.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -44,7 +45,7 @@ AccountManager *AccountManager::instance()
bool AccountManager::restore()
{
- auto settings = Account::settingsWithGroup(QLatin1String(accountsC));
+ auto settings = Utility::settingsWithGroup(QLatin1String(accountsC));
// If there are no accounts, check the old format.
if (settings->childGroups().isEmpty()
@@ -69,9 +70,7 @@ bool AccountManager::restore()
bool AccountManager::restoreFromLegacySettings()
{
// try to open the correctly themed settings
- auto settings = Account::settingsWithGroup(Theme::instance()->appName());
-
- bool migratedCreds = false;
+ auto settings = Utility::settingsWithGroup(Theme::instance()->appName());
// if the settings file could not be opened, the childKeys list is empty
// then try to load settings from a very old place
@@ -102,7 +101,6 @@ bool AccountManager::restoreFromLegacySettings()
qDebug() << "Migrate oC config if " << oCUrl << " == " << overrideUrl << ":"
<< (oCUrl == overrideUrl ? "Yes" : "No");
if( oCUrl == overrideUrl ) {
- migratedCreds = true;
settings.reset( oCSettings );
} else {
delete oCSettings;
@@ -114,9 +112,6 @@ bool AccountManager::restoreFromLegacySettings()
// Try to load the single account.
if (!settings->childKeys().isEmpty()) {
if (auto acc = loadAccountHelper(*settings)) {
- if (migratedCreds) {
- acc->setMigrated(true);
- }
addAccount(acc);
return true;
}
@@ -126,7 +121,7 @@ bool AccountManager::restoreFromLegacySettings()
void AccountManager::save(bool saveCredentials)
{
- auto settings = Account::settingsWithGroup(QLatin1String(accountsC));
+ auto settings = Utility::settingsWithGroup(QLatin1String(accountsC));
settings->setValue(QLatin1String(versionC), 2);
foreach (const auto &acc, _accounts) {
settings->beginGroup(acc->account()->id());
@@ -142,7 +137,7 @@ void AccountManager::save(bool saveCredentials)
void AccountManager::saveAccount(Account* a)
{
qDebug() << "Saving account" << a->url().toString();
- auto settings = Account::settingsWithGroup(QLatin1String(accountsC));
+ auto settings = Utility::settingsWithGroup(QLatin1String(accountsC));
settings->beginGroup(a->id());
saveAccountHelper(a, *settings, false); // don't save credentials they might not have been loaded yet
settings->endGroup();
@@ -154,7 +149,7 @@ void AccountManager::saveAccount(Account* a)
void AccountManager::saveAccountState(AccountState* a)
{
qDebug() << "Saving account state" << a->account()->url().toString();
- auto settings = Account::settingsWithGroup(QLatin1String(accountsC));
+ auto settings = Utility::settingsWithGroup(QLatin1String(accountsC));
settings->beginGroup(a->account()->id());
a->writeToSettings(*settings);
settings->endGroup();
@@ -209,20 +204,25 @@ void AccountManager::saveAccountHelper(Account* acc, QSettings& settings, bool s
AccountPtr AccountManager::loadAccountHelper(QSettings& settings)
{
+ auto urlConfig = settings.value(QLatin1String(urlC));
+ if (!urlConfig.isValid()) {
+ // No URL probably means a corrupted entry in the account settings
+ qDebug() << "No URL for account " << settings.group();
+ return AccountPtr();
+ }
+
auto acc = createAccount();
QString authType = settings.value(QLatin1String(authTypeC)).toString();
QString overrideUrl = Theme::instance()->overrideServerUrl();
- if( !overrideUrl.isEmpty() ) {
- // if there is a overrideUrl, don't even bother reading from the config as all the accounts
- // must use the overrideUrl
+ QString forceAuth = Theme::instance()->forceConfigAuthType();
+ if(!forceAuth.isEmpty() && !overrideUrl.isEmpty() ) {
+ // If forceAuth is set, this might also mean the overrideURL has changed.
+ // See enterprise issues #1126
acc->setUrl(overrideUrl);
- auto forceAuth = Theme::instance()->forceConfigAuthType();
- if (!forceAuth.isEmpty()) {
- authType = forceAuth;
- }
+ authType = forceAuth;
} else {
- acc->setUrl(settings.value(QLatin1String(urlC)).toUrl());
+ acc->setUrl(urlConfig.toUrl());
}
acc->_serverVersion = settings.value(QLatin1String(serverVersionC)).toString();
@@ -275,7 +275,7 @@ void AccountManager::deleteAccount(AccountState* account)
auto copy = *it; // keep a reference to the shared pointer so it does not delete it just yet
_accounts.erase(it);
- auto settings = Account::settingsWithGroup(QLatin1String(accountsC));
+ auto settings = Utility::settingsWithGroup(QLatin1String(accountsC));
settings->remove(account->account()->id());
emit accountRemoved(account);
diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h
index c500ef51e..70a625da1 100644
--- a/src/gui/accountmanager.h
+++ b/src/gui/accountmanager.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index 7fee56b98..c9dc99269 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -117,6 +118,10 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) :
connect(ui->selectiveSyncApply, SIGNAL(clicked()), _model, SLOT(slotApplySelectiveSync()));
connect(ui->selectiveSyncCancel, SIGNAL(clicked()), _model, SLOT(resetFolders()));
+ connect(ui->bigFolderApply, SIGNAL(clicked(bool)), _model, SLOT(slotApplySelectiveSync()));
+ connect(ui->bigFolderSyncAll, SIGNAL(clicked(bool)), _model, SLOT(slotSyncAllPendingBigFolders()));
+ connect(ui->bigFolderSyncNone, SIGNAL(clicked(bool)), _model, SLOT(slotSyncNoPendingBigFolders()));
+
connect(FolderMan::instance(), SIGNAL(folderListChanged(Folder::Map)), _model, SLOT(resetFolders()));
connect(this, SIGNAL(folderChanged()), _model, SLOT(resetFolders()));
@@ -142,10 +147,6 @@ void AccountSettings::createAccountToolbox()
menu->addAction(_addAccountAction);
connect(_addAccountAction, SIGNAL(triggered(bool)), SLOT(slotOpenAccountWizard()));
- QAction *openInBrowser = new QAction(tr("Open in browser"), this);
- menu->addAction(openInBrowser);
- connect(openInBrowser, SIGNAL(triggered(bool)), SLOT(slotOpenInBrowser()));
-
_toggleSignInOutAction = new QAction(tr("Log out"), this);
connect(_toggleSignInOutAction, SIGNAL(triggered(bool)), SLOT(slotToggleSignInState()));
menu->addAction(_toggleSignInOutAction);
@@ -194,11 +195,6 @@ void AccountSettings::slotToggleSignInState()
}
}
-void AccountSettings::slotOpenInBrowser()
-{
- QDesktopServices::openUrl(_accountState->account()->url());
-}
-
void AccountSettings::doExpand()
{
ui->_folderList->expandToDepth(0);
@@ -326,7 +322,7 @@ void AccountSettings::slotFolderWizardAccepted()
// The user already accepted the selective sync dialog. everything is in the white list
f->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList,
QStringList() << QLatin1String("/"));
- folderMan->slotScheduleAllFolders();
+ folderMan->scheduleAllFolders();
emit folderChanged();
}
}
@@ -365,7 +361,7 @@ void AccountSettings::slotRemoveCurrentFolder()
return;
}
- folderMan->slotRemoveFolder( folderMan->folder(alias) );
+ folderMan->removeFolder( folderMan->folder(alias) );
_model->removeRow(row);
// single folder fix to show add-button and hide remove-button
@@ -473,7 +469,7 @@ void AccountSettings::slotSyncCurrentFolderNow()
QString alias = _model->data( selected, FolderStatusDelegate::FolderAliasRole ).toString();
FolderMan *folderMan = FolderMan::instance();
- folderMan->slotScheduleSync(folderMan->folder(alias));
+ folderMan->scheduleFolder(folderMan->folder(alias));
}
void AccountSettings::slotOpenOC()
@@ -644,12 +640,13 @@ void AccountSettings::refreshSelectiveSyncStatus()
}
if (msg.isEmpty()) {
- ui->selectiveSyncNotification->setVisible(false);
- ui->selectiveSyncNotification->setText(QString());
+ ui->selectiveSyncButtons->setVisible(true);
+ ui->bigFolderUi->setVisible(false);
} else {
- ui->selectiveSyncNotification->setVisible(true);
QString wholeMsg = tr("There are new folders that were not synchronized because they are too big: ") + msg;
ui->selectiveSyncNotification->setText(wholeMsg);
+ ui->selectiveSyncButtons->setVisible(false);
+ ui->bigFolderUi->setVisible(true);
shouldBeVisible = true;
}
diff --git a/src/gui/accountsettings.h b/src/gui/accountsettings.h
index 6904be022..c936580ac 100644
--- a/src/gui/accountsettings.h
+++ b/src/gui/accountsettings.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -77,7 +78,6 @@ protected slots:
void slotFolderWizardRejected();
void slotDeleteAccount();
void slotToggleSignInState();
- void slotOpenInBrowser();
void slotOpenAccountWizard();
void slotAccountAdded(AccountState *);
void refreshSelectiveSyncStatus();
diff --git a/src/gui/accountsettings.ui b/src/gui/accountsettings.ui
index 8cc236cef..f100d3752 100644
--- a/src/gui/accountsettings.ui
+++ b/src/gui/accountsettings.ui
@@ -154,44 +154,105 @@
</widget>
</item>
<item>
- <widget class="QLabel" name="selectiveSyncNotification">
- <property name="styleSheet">
- <string notr="true">color: red</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
+ <widget class="QWidget" name="bigFolderUi" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <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>
+ <item>
+ <widget class="QLabel" name="selectiveSyncNotification">
+ <property name="styleSheet">
+ <string notr="true">color: red</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QPushButton" name="bigFolderSyncAll">
+ <property name="text">
+ <string>Synchronize all</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="bigFolderSyncNone">
+ <property name="text">
+ <string>Synchronize none</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="bigFolderApply">
+ <property name="text">
+ <string>Apply manual changes</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
</widget>
</item>
</layout>
</item>
<item>
- <widget class="QPushButton" name="selectiveSyncCancel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Cancel</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="selectiveSyncApply">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Apply</string>
- </property>
+ <widget class="QWidget" name="selectiveSyncButtons" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <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>
+ <item>
+ <widget class="QPushButton" name="selectiveSyncCancel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="selectiveSyncApply">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Apply</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
</layout>
diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp
index a368a2193..38bae16a9 100644
--- a/src/gui/accountstate.cpp
+++ b/src/gui/accountstate.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -306,7 +307,7 @@ void AccountState::slotCredentialsAsked(AbstractCredentials* credentials)
std::unique_ptr<QSettings> AccountState::settings()
{
- auto s = _account->settingsWithGroup(QLatin1String("Accounts"));
+ auto s = Utility::settingsWithGroup(QLatin1String("Accounts"));
s->beginGroup(_account->id());
return s;
}
diff --git a/src/gui/accountstate.h b/src/gui/accountstate.h
index 61489c30c..ed7f03376 100644
--- a/src/gui/accountstate.h
+++ b/src/gui/accountstate.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/activitydata.cpp b/src/gui/activitydata.cpp
index 954383841..cd67c9494 100644
--- a/src/gui/activitydata.cpp
+++ b/src/gui/activitydata.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/activitydata.h b/src/gui/activitydata.h
index d6ba7d770..7817f5672 100644
--- a/src/gui/activitydata.h
+++ b/src/gui/activitydata.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/activitylistmodel.cpp b/src/gui/activitylistmodel.cpp
index 26762a3fc..7c83434be 100644
--- a/src/gui/activitylistmodel.cpp
+++ b/src/gui/activitylistmodel.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/activitylistmodel.h b/src/gui/activitylistmodel.h
index 89e5e46ad..f370144aa 100644
--- a/src/gui/activitylistmodel.h
+++ b/src/gui/activitylistmodel.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/activitywidget.cpp b/src/gui/activitywidget.cpp
index 7b0cc511b..8d0efef27 100644
--- a/src/gui/activitywidget.cpp
+++ b/src/gui/activitywidget.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -616,7 +617,7 @@ void ActivitySettings::slotCopyToClipboard()
message = tr("The sync activity list has been copied to the clipboard.");
} else if(idx == 2 ) {
// issues Widget
- message = tr("The list of unsynched items has been copied to the clipboard.");
+ message = tr("The list of unsynced items has been copied to the clipboard.");
_protocolWidget->storeSyncIssues(ts);
}
diff --git a/src/gui/activitywidget.h b/src/gui/activitywidget.h
index 1b74ff9ba..a60f51d4f 100644
--- a/src/gui/activitywidget.h
+++ b/src/gui/activitywidget.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/addcertificatedialog.cpp b/src/gui/addcertificatedialog.cpp
index bfdbe333e..34e0fc242 100644
--- a/src/gui/addcertificatedialog.cpp
+++ b/src/gui/addcertificatedialog.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/addcertificatedialog.h b/src/gui/addcertificatedialog.h
index 26baf6f2e..1840f5007 100644
--- a/src/gui/addcertificatedialog.h
+++ b/src/gui/addcertificatedialog.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/application.cpp b/src/gui/application.cpp
index aaa2ca6be..70c09c434 100644
--- a/src/gui/application.cpp
+++ b/src/gui/application.cpp
@@ -105,6 +105,12 @@ Application::Application(int &argc, char **argv) :
{
_startedAt.start();
+#ifdef Q_OS_WIN
+ // Ensure OpenSSL config file is only loaded from app directory
+ QString opensslConf = QCoreApplication::applicationDirPath()+QString("/openssl.cnf");
+ qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit());
+#endif
+
// TODO: Can't set this without breaking current config paths
// setOrganizationName(QLatin1String(APPLICATION_VENDOR));
setOrganizationDomain(QLatin1String(APPLICATION_REV_DOMAIN));
@@ -330,9 +336,14 @@ void Application::slotownCloudWizardDone( int res )
_checkConnectionTimer.start();
slotCheckConnection();
- // The very first time an account is configured: enabled autostart
- // TODO: Doing this every time the account wizard finishes will annoy users.
- Utility::setLaunchOnStartup(_theme->appName(), _theme->appNameGUI(), true);
+ // If one account is configured: enable autostart
+ bool shouldSetAutoStart = (accountMan->accounts().size() == 1);
+#ifdef Q_OS_MAC
+ // Don't auto start when not being 'installed'
+ shouldSetAutoStart = shouldSetAutoStart
+ && QCoreApplication::applicationDirPath().startsWith("/Applications/");
+#endif
+ Utility::setLaunchOnStartup(_theme->appName(), _theme->appNameGUI(), shouldSetAutoStart);
}
}
@@ -354,10 +365,11 @@ void Application::setupLogging()
Logger::instance()->enterNextLogFile();
- qDebug() << QString::fromLatin1( "################## %1 %2 (%3) %4").arg(_theme->appName())
+ qDebug() << QString::fromLatin1( "################## %1 %2 (%3) %4 on %5").arg(_theme->appName())
.arg( QLocale::system().name() )
.arg(property("ui_lang").toString())
- .arg(_theme->version());
+ .arg(_theme->version())
+ .arg(Utility::platformName());
// Setup CSYNC logging to forward to our own logger
csync_set_log_callback( csyncLogCatcher );
diff --git a/src/gui/authenticationdialog.cpp b/src/gui/authenticationdialog.cpp
index f8e68d2e0..70f901e06 100644
--- a/src/gui/authenticationdialog.cpp
+++ b/src/gui/authenticationdialog.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/authenticationdialog.h b/src/gui/authenticationdialog.h
index f3b943846..4dc23987d 100644
--- a/src/gui/authenticationdialog.h
+++ b/src/gui/authenticationdialog.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/cocoainitializer.h b/src/gui/cocoainitializer.h
index b5082a6fe..bdeb54091 100644
--- a/src/gui/cocoainitializer.h
+++ b/src/gui/cocoainitializer.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/cocoainitializer_mac.mm b/src/gui/cocoainitializer_mac.mm
index c2e0d5e50..bc8ff7c72 100644
--- a/src/gui/cocoainitializer_mac.mm
+++ b/src/gui/cocoainitializer_mac.mm
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/creds/credentialsfactory.cpp b/src/gui/creds/credentialsfactory.cpp
index c7c4ef3b2..590fc716f 100644
--- a/src/gui/creds/credentialsfactory.cpp
+++ b/src/gui/creds/credentialsfactory.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -16,7 +17,9 @@
#include "creds/credentialsfactory.h"
#include "creds/httpcredentialsgui.h"
#include "creds/dummycredentials.h"
+#ifndef NO_SHIBBOLETH
#include "creds/shibbolethcredentials.h"
+#endif
namespace OCC
{
@@ -31,8 +34,10 @@ AbstractCredentials* create(const QString& type)
return new HttpCredentialsGui;
} else if (type == "dummy") {
return new DummyCredentials;
+#ifndef NO_SHIBBOLETH
} else if (type == "shibboleth") {
return new ShibbolethCredentials;
+#endif
} else {
qWarning("Unknown credentials type: %s", qPrintable(type));
return new DummyCredentials;
diff --git a/src/gui/creds/credentialsfactory.h b/src/gui/creds/credentialsfactory.h
index 95c8dd9f3..5dcb5197b 100644
--- a/src/gui/creds/credentialsfactory.h
+++ b/src/gui/creds/credentialsfactory.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/creds/shibboleth/shibbolethwebview.cpp b/src/gui/creds/shibboleth/shibbolethwebview.cpp
index f98a2c306..1504d6c52 100644
--- a/src/gui/creds/shibboleth/shibbolethwebview.cpp
+++ b/src/gui/creds/shibboleth/shibbolethwebview.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -20,6 +21,7 @@
#include <QMessageBox>
#include <QNetworkReply>
#include <QSettings>
+#include <QMainWindow>
#include "creds/shibboleth/shibbolethwebview.h"
#include "creds/shibbolethcredentials.h"
@@ -74,10 +76,23 @@ ShibbolethWebView::ShibbolethWebView(AccountPtr account, QWidget* parent)
connect(page->networkAccessManager()->cookieJar(),
SIGNAL(newCookiesForUrl (QList<QNetworkCookie>, QUrl)),
this, SLOT(onNewCookiesForUrl (QList<QNetworkCookie>, QUrl)));
+
page->mainFrame()->load(account->url());
this->setPage(page);
setWindowTitle(tr("%1 - Authenticate").arg(Theme::instance()->appNameGUI()));
+ // Debug view to display the cipher suite
+ if( !qgetenv("OWNCLOUD_SHIBBOLETH_DEBUG").isEmpty() ) {
+ // open an additional window to display some cipher debug info
+ QWebPage *debugPage = new UserAgentWebPage(this);
+ debugPage->mainFrame()->load( QUrl("https://cc.dcsec.uni-hannover.de/"));
+ QWebView *debugView = new QWebView(this);
+ debugView->setPage(debugPage);
+ QMainWindow *window = new QMainWindow(this);
+ window->setWindowTitle(tr("SSL Chipher Debug View"));
+ window->setCentralWidget(debugView);
+ window->show();
+ }
// If we have a valid cookie, it's most likely expired. We can use this as
// as a criteria to tell the user why the browser window pops up
QNetworkCookie shibCookie = ShibbolethCredentials::findShibCookie(_account.data(), ShibbolethCredentials::accountCookies(_account.data()));
@@ -142,7 +157,6 @@ void ShibbolethWebView::slotLoadFinished(bool success)
if (!success) {
qDebug() << Q_FUNC_INFO << "Could not load Shibboleth login page to log you in.";
-
}
}
diff --git a/src/gui/creds/shibboleth/shibbolethwebview.h b/src/gui/creds/shibboleth/shibbolethwebview.h
index 04f83723a..9005c17b0 100644
--- a/src/gui/creds/shibboleth/shibbolethwebview.h
+++ b/src/gui/creds/shibboleth/shibbolethwebview.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/creds/shibbolethcredentials.cpp b/src/gui/creds/shibbolethcredentials.cpp
index 21574ddcb..5d0b21c25 100644
--- a/src/gui/creds/shibbolethcredentials.cpp
+++ b/src/gui/creds/shibbolethcredentials.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -79,21 +80,6 @@ void ShibbolethCredentials::setAccount(Account* account)
}
}
-bool ShibbolethCredentials::changed(AbstractCredentials* credentials) const
-{
- ShibbolethCredentials* other(qobject_cast< ShibbolethCredentials* >(credentials));
-
- if (!other) {
- return true;
- }
-
- if (_shibCookie != other->_shibCookie || _user != other->_user) {
- return true;
- }
-
- return false;
-}
-
QString ShibbolethCredentials::authType() const
{
return QString::fromLatin1("shibboleth");
@@ -142,7 +128,7 @@ void ShibbolethCredentials::fetchFromKeychain()
} else {
_url = _account->url();
ReadPasswordJob *job = new ReadPasswordJob(Theme::instance()->appName());
- job->setSettings(_account->settingsWithGroup(Theme::instance()->appName(), job).release());
+ job->setSettings(Utility::settingsWithGroup(Theme::instance()->appName(), job).release());
job->setInsecureFallback(false);
job->setKey(keychainKey(_account->url().toString(), "shibAssertion"));
connect(job, SIGNAL(finished(QKeychain::Job*)), SLOT(slotReadJobDone(QKeychain::Job*)));
@@ -261,7 +247,7 @@ void ShibbolethCredentials::slotReadJobDone(QKeychain::Job *job)
addToCookieJar(_shibCookie);
}
// access
- job->setSettings(_account->settingsWithGroup(Theme::instance()->appName(), job).release());
+ job->setSettings(Utility::settingsWithGroup(Theme::instance()->appName(), job).release());
_ready = true;
_stillValid = true;
@@ -320,7 +306,7 @@ QByteArray ShibbolethCredentials::shibCookieName()
void ShibbolethCredentials::storeShibCookie(const QNetworkCookie &cookie)
{
WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName());
- job->setSettings(_account->settingsWithGroup(Theme::instance()->appName(), job).release());
+ job->setSettings(Utility::settingsWithGroup(Theme::instance()->appName(), job).release());
// we don't really care if it works...
//connect(job, SIGNAL(finished(QKeychain::Job*)), SLOT(slotWriteJobDone(QKeychain::Job*)));
job->setKey(keychainKey(_account->url().toString(), "shibAssertion"));
@@ -331,7 +317,7 @@ void ShibbolethCredentials::storeShibCookie(const QNetworkCookie &cookie)
void ShibbolethCredentials::removeShibCookie()
{
DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName());
- job->setSettings(_account->settingsWithGroup(Theme::instance()->appName(), job).release());
+ job->setSettings(Utility::settingsWithGroup(Theme::instance()->appName(), job).release());
job->setKey(keychainKey(_account->url().toString(), "shibAssertion"));
job->start();
}
diff --git a/src/gui/creds/shibbolethcredentials.h b/src/gui/creds/shibbolethcredentials.h
index 06a70bcad..7c9b8135c 100644
--- a/src/gui/creds/shibbolethcredentials.h
+++ b/src/gui/creds/shibbolethcredentials.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -48,7 +49,6 @@ public:
ShibbolethCredentials(const QNetworkCookie &cookie);
void setAccount(Account* account) Q_DECL_OVERRIDE;
- bool changed(AbstractCredentials* credentials) const Q_DECL_OVERRIDE;
QString authType() const Q_DECL_OVERRIDE;
QString user() const Q_DECL_OVERRIDE;
QNetworkAccessManager* getQNAM() const Q_DECL_OVERRIDE;
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 5ab6fbbe4..435ba16db 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -58,7 +58,6 @@ Folder::Folder(const FolderDefinition& definition,
, _wipeDb(false)
, _proxyDirty(true)
, _lastSyncDuration(0)
- , _forceSyncOnPollTimeout(false)
, _consecutiveFailingSyncs(0)
, _consecutiveFollowUpSyncs(0)
, _fileLog(new SyncRunFileLog)
@@ -82,7 +81,7 @@ Folder::Folder(const FolderDefinition& definition,
_syncResult.setFolder(_definition.alias);
_journal.setAccountParameterForFilePath(path(), remoteUrl(), remotePath());
- _engine.reset(new SyncEngine(_accountState->account(), path(), remoteUrl(), remotePath(), &_journal));
+ _engine.reset(new SyncEngine(_accountState->account(), path(), remotePath(), &_journal));
// pass the setting if hidden files are to be ignored, will be read in csync_update
_engine->setIgnoreHiddenFiles(_definition.ignoreHiddenFiles);
@@ -112,6 +111,11 @@ Folder::Folder(const FolderDefinition& definition,
connect(_engine.data(), SIGNAL(seenLockedFile(QString)), FolderMan::instance(), SLOT(slotSyncOnceFileUnlocks(QString)));
connect(_engine.data(), SIGNAL(aboutToPropagate(SyncFileItemVector&)),
SLOT(slotLogPropagationStart()));
+
+ _scheduleSelfTimer.setSingleShot(true);
+ _scheduleSelfTimer.setInterval(SyncEngine::minimumFileAgeForUpload);
+ connect(&_scheduleSelfTimer, SIGNAL(timeout()),
+ SLOT(slotScheduleThisFolder()));
}
Folder::~Folder()
@@ -124,6 +128,13 @@ Folder::~Folder()
void Folder::checkLocalPath()
{
const QFileInfo fi(_definition.localPath);
+ _canonicalLocalPath = fi.canonicalFilePath();
+ if (_canonicalLocalPath.isEmpty()) {
+ qDebug() << "Broken symlink:" << _definition.localPath;
+ _canonicalLocalPath = _definition.localPath;
+ } else if( !_canonicalLocalPath.endsWith('/') ) {
+ _canonicalLocalPath.append('/');
+ }
if( fi.isDir() && fi.isReadable() ) {
qDebug() << "Checked local path ok";
@@ -162,11 +173,7 @@ QString Folder::alias() const
QString Folder::path() const
{
- QString p(_definition.localPath);
- if( ! p.endsWith('/') ) {
- p.append('/');
- }
- return p;
+ return _canonicalLocalPath;
}
QString Folder::shortGuiLocalPath() const
@@ -199,7 +206,7 @@ void Folder::setIgnoreHiddenFiles(bool ignore)
QString Folder::cleanPath()
{
- QString cleanedPath = QDir::cleanPath(_definition.localPath);
+ QString cleanedPath = QDir::cleanPath(_canonicalLocalPath);
if(cleanedPath.length() == 3 && cleanedPath.endsWith(":/"))
cleanedPath.remove(2,1);
@@ -219,7 +226,7 @@ QString Folder::remotePath() const
QUrl Folder::remoteUrl() const
{
- return Account::concatUrlPath(_accountState->account()->davUrl(), remotePath());
+ return Utility::concatUrlPath(_accountState->account()->davUrl(), remotePath());
}
bool Folder::syncPaused() const
@@ -273,7 +280,7 @@ void Folder::slotRunEtagJob()
AccountPtr account = _accountState->account();
- if (!_requestEtagJob.isNull()) {
+ if (_requestEtagJob) {
qDebug() << Q_FUNC_INFO << remoteUrl().toString() << "has ETag job queued, not trying to sync";
return;
}
@@ -283,47 +290,15 @@ void Folder::slotRunEtagJob()
return;
}
- bool forceSyncIntervalExpired =
- quint64(_timeSinceLastSyncDone.elapsed()) > ConfigFile().forceSyncInterval();
- bool syncAgainAfterFail = _consecutiveFailingSyncs > 0 && _consecutiveFailingSyncs < 3;
-
- // There are several conditions under which we trigger a full-discovery sync:
- // * When a suitably long time has passed since the last sync finished
- // * When the last sync failed (only a couple of times)
- // * When the last sync requested another sync to be done (only a couple of times)
- //
- // Note that the etag check (see below) and the file watcher may also trigger
- // syncs.
- if (forceSyncIntervalExpired
- || _forceSyncOnPollTimeout
- || syncAgainAfterFail) {
-
- if (forceSyncIntervalExpired) {
- qDebug() << "** Force Sync, because it has been " << _timeSinceLastSyncDone.elapsed() << "ms "
- << "since the last sync";
- }
- if (_forceSyncOnPollTimeout) {
- qDebug() << "** Force Sync, because it was requested";
- }
- if (syncAgainAfterFail) {
- qDebug() << "** Force Sync, because the last"
- << _consecutiveFailingSyncs << "syncs failed, last status:"
- << _syncResult.statusString();
- }
- _forceSyncOnPollTimeout = false;
- emit scheduleToSync(this);
+ // Do the ordinary etag check for the root folder and schedule a
+ // sync if it's different.
- } else {
- // Do the ordinary etag check for the root folder and only schedule a real
- // sync if it's different.
-
- _requestEtagJob = new RequestEtagJob(account, remotePath(), this);
- _requestEtagJob->setTimeout(60*1000);
- // check if the etag is different
- QObject::connect(_requestEtagJob, SIGNAL(etagRetreived(QString)), this, SLOT(etagRetreived(QString)));
- FolderMan::instance()->slotScheduleETagJob(alias(), _requestEtagJob);
- // The _requestEtagJob is auto deleting itself on finish. Our guard pointer _requestEtagJob will then be null.
- }
+ _requestEtagJob = new RequestEtagJob(account, remotePath(), this);
+ _requestEtagJob->setTimeout(60*1000);
+ // check if the etag is different when retrieved
+ QObject::connect(_requestEtagJob, SIGNAL(etagRetreived(QString)), this, SLOT(etagRetreived(QString)));
+ FolderMan::instance()->slotScheduleETagJob(alias(), _requestEtagJob);
+ // The _requestEtagJob is auto deleting itself on finish. Our guard pointer _requestEtagJob will then be null.
}
void Folder::etagRetreived(const QString& etag)
@@ -336,7 +311,7 @@ void Folder::etagRetreived(const QString& etag)
if (_lastEtag != etag) {
qDebug() << "* Compare etag with previous etag: last:" << _lastEtag << ", received:" << etag << "-> CHANGED";
_lastEtag = etag;
- emit scheduleToSync(this);
+ slotScheduleThisFolder();
}
_accountState->tagLastSuccessfullETagRequest();
@@ -411,11 +386,9 @@ void Folder::bubbleUpSyncResult()
firstItemDeleted = item;
break;
case CSYNC_INSTRUCTION_SYNC:
- if (!item->_isDirectory) {
- updatedItems++;
- if (!firstItemUpdated)
- firstItemUpdated = item;
- }
+ updatedItems++;
+ if (!firstItemUpdated)
+ firstItemUpdated = item;
break;
case CSYNC_INSTRUCTION_ERROR:
qDebug() << "Got Instruction ERROR. " << _syncResult.errorString();
@@ -598,7 +571,10 @@ void Folder::slotWatchedPathChanged(const QString& path)
}
emit watchedFileChangedExternally(path);
- emit scheduleToSync(this);
+
+ // Also schedule this folder for a sync, but only after some delay:
+ // The sync will not upload files that were changed too recently.
+ scheduleThisFolderSoon();
}
void Folder::slotThreadTreeWalkResult(const SyncFileItemVector& items)
@@ -758,8 +734,6 @@ void Folder::startSync(const QStringList &pathList)
QMetaObject::invokeMethod(_engine.data(), "startSync", Qt::QueuedConnection);
- // disable events until syncing is done
- // _watcher->setEventsEnabled(false);
emit syncStarted();
}
@@ -823,9 +797,6 @@ void Folder::slotSyncFinished(bool success)
bubbleUpSyncResult();
bool anotherSyncNeeded = _engine->isAnotherSyncNeeded();
- // _watcher->setEventsEnabledDelayed(2000);
-
-
if (_csyncError) {
_syncResult.setStatus(SyncResult::Error);
@@ -884,11 +855,10 @@ void Folder::slotSyncFinished(bool success)
// Maybe force a follow-up sync to take place, but only a couple of times.
if (anotherSyncNeeded && _consecutiveFollowUpSyncs <= 3)
{
- _forceSyncOnPollTimeout = true;
- // We will make sure that the poll timer occurs soon enough.
- // delay 1s, 4s, 9s
- int c = _consecutiveFollowUpSyncs;
- QTimer::singleShot(c*c * 1000, this, SLOT(slotRunEtagJob() ));
+ // Sometimes another sync is requested because a local file is still
+ // changing, so wait at least a small amount of time before syncing
+ // the folder again.
+ scheduleThisFolderSoon();
}
}
@@ -969,7 +939,17 @@ void Folder::slotLogPropagationStart()
_fileLog->logLap("Propagation starts");
}
+void Folder::slotScheduleThisFolder()
+{
+ FolderMan::instance()->scheduleFolder(this);
+}
+void Folder::scheduleThisFolderSoon()
+{
+ if (!_scheduleSelfTimer.isActive()) {
+ _scheduleSelfTimer.start();
+ }
+}
void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction, bool *cancel)
{
@@ -993,10 +973,8 @@ void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction, bool *cancel)
*cancel = msgBox.clickedButton() == keepBtn;
if (*cancel) {
wipe();
- // speed up next sync
_lastEtag.clear();
- _forceSyncOnPollTimeout = true;
- QTimer::singleShot(50, this, SLOT(slotRunEtagJob()));
+ slotScheduleThisFolder();
}
}
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 40ff6deb1..6d554acd4 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -178,6 +178,7 @@ public:
qint64 msecSinceLastSync() const { return _timeSinceLastSyncDone.elapsed(); }
qint64 msecLastSyncDuration() const { return _lastSyncDuration; }
int consecutiveFollowUpSyncs() const { return _consecutiveFollowUpSyncs; }
+ int consecutiveFailingSyncs() const { return _consecutiveFailingSyncs; }
/// Saves the folder data in the account's settings.
void saveToSettings() const;
@@ -194,11 +195,21 @@ public:
*/
bool isFileExcludedRelative(const QString& relativePath) const;
+ /** Calls schedules this folder on the FolderMan after a short delay.
+ *
+ * This should be used in situations where a sync should be triggered
+ * because a local file was modified. Syncs don't upload files that were
+ * modified too recently, and this delay ensures the modification is
+ * far enough in the past.
+ *
+ * The delay doesn't reset with subsequent calls.
+ */
+ void scheduleThisFolderSoon();
+
signals:
void syncStateChange();
void syncStarted();
void syncFinished(const SyncResult &result);
- void scheduleToSync(Folder*);
void progressInfo(const ProgressInfo& progress);
void newBigFolderDiscovered(const QString &); // A new folder bigger than the threshold was discovered
void syncPausedChanged(Folder*, bool paused);
@@ -266,6 +277,11 @@ private slots:
void slotLogPropagationStart();
+ /** Adds this folder to the list of scheduled folders in the
+ * FolderMan.
+ */
+ void slotScheduleThisFolder();
+
private:
bool setIgnoredFiles();
@@ -288,6 +304,7 @@ private:
AccountStatePtr _accountState;
FolderDefinition _definition;
+ QString _canonicalLocalPath; // As returned with QFileInfo:canonicalFilePath. Always ends with "/"
SyncResult _syncResult;
QScopedPointer<SyncEngine> _engine;
@@ -301,7 +318,6 @@ private:
QElapsedTimer _timeSinceLastSyncDone;
QElapsedTimer _timeSinceLastSyncStart;
qint64 _lastSyncDuration;
- bool _forceSyncOnPollTimeout;
/// The number of syncs that failed in a row.
/// Reset when a sync is successful.
@@ -316,6 +332,8 @@ private:
ClientProxy _clientProxy;
QScopedPointer<SyncRunFileLog> _fileLog;
+
+ QTimer _scheduleSelfTimer;
};
}
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index 3638bba76..2e7f9b14c 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -64,11 +64,17 @@ FolderMan::FolderMan(QObject *parent) :
connect(&_startScheduledSyncTimer, SIGNAL(timeout()),
SLOT(slotStartScheduledFolderSync()));
+ _timeScheduler.setInterval(5000);
+ _timeScheduler.setSingleShot(false);
+ connect(&_timeScheduler, SIGNAL(timeout()),
+ SLOT(slotScheduleFolderByTime()));
+ _timeScheduler.start();
+
connect(AccountManager::instance(), SIGNAL(accountRemoved(AccountState*)),
SLOT(slotRemoveFoldersForAccount(AccountState*)));
connect(_lockWatcher.data(), SIGNAL(fileUnlocked(QString)),
- SLOT(slotScheduleFolderOwningFile(QString)));
+ SLOT(slotWatchedFileUnlocked(QString)));
}
FolderMan *FolderMan::instance()
@@ -100,8 +106,6 @@ void FolderMan::unloadFolder( Folder *f )
}
_folderMap.remove( f->alias() );
- disconnect(f, SIGNAL(scheduleToSync(Folder*)),
- this, SLOT(slotScheduleSync(Folder*)));
disconnect(f, SIGNAL(syncStarted()),
this, SLOT(slotFolderSyncStarted()));
disconnect(f, SIGNAL(syncFinished(SyncResult)),
@@ -131,7 +135,7 @@ int FolderMan::unloadAndDeleteAllFolders()
}
_lastSyncFolder = 0;
_currentSyncFolder = 0;
- _scheduleQueue.clear();
+ _scheduledFolders.clear();
emit scheduleQueueChanged();
Q_ASSERT(_folderMap.count() == 0);
@@ -187,7 +191,7 @@ int FolderMan::setupFolders()
{
unloadAndDeleteAllFolders();
- auto settings = Account::settingsWithGroup(QLatin1String("Accounts"));
+ auto settings = Utility::settingsWithGroup(QLatin1String("Accounts"));
const auto accountsWithSettings = settings->childGroups();
if (accountsWithSettings.isEmpty()) {
int r = setupFoldersMigration();
@@ -211,7 +215,7 @@ int FolderMan::setupFolders()
if (FolderDefinition::load(*settings, folderAlias, &folderDefinition)) {
Folder* f = addFolderInternal(std::move(folderDefinition), account.data());
if (f) {
- slotScheduleSync(f);
+ scheduleFolder(f);
emit folderSyncStateChange(f);
}
}
@@ -244,7 +248,7 @@ int FolderMan::setupFoldersMigration()
foreach ( const QString& alias, list ) {
Folder *f = setupFolderFromOldConfigFile( alias, accountState );
if( f ) {
- slotScheduleSync(f);
+ scheduleFolder(f);
emit folderSyncStateChange(f);
}
}
@@ -332,6 +336,7 @@ QString FolderMan::unescapeAlias( const QString& alias )
// filename is the name of the file only, it does not include
// the configuration directory path
+// WARNING: Do not remove this code, it is used for predefined/automated deployments (2016)
Folder* FolderMan::setupFolderFromOldConfigFile(const QString &file, AccountState *accountState )
{
Folder *folder = 0;
@@ -402,6 +407,8 @@ Folder* FolderMan::setupFolderFromOldConfigFile(const QString &file, AccountStat
//migrate settings
folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, blackList);
settings.remove(QLatin1String("blackList"));
+ // FIXME: If you remove this codepath, you need to provide another way to do
+ // this via theme.h or the normal FolderMan::setupFolders
}
folder->saveToSettings();
@@ -420,7 +427,7 @@ void FolderMan::slotFolderSyncPaused( Folder *f, bool paused )
if (!paused) {
_disabledFolders.remove(f);
- slotScheduleSync(f);
+ scheduleFolder(f);
} else {
_disabledFolders.insert(f);
}
@@ -460,11 +467,11 @@ Folder *FolderMan::folder( const QString& alias )
return 0;
}
-void FolderMan::slotScheduleAllFolders()
+void FolderMan::scheduleAllFolders()
{
foreach( Folder *f, _folderMap.values() ) {
if (f && f->canSync()) {
- slotScheduleSync( f );
+ scheduleFolder( f );
}
}
}
@@ -484,7 +491,7 @@ void FolderMan::slotSyncOnceFileUnlocks(const QString& path)
* if a folder wants to be synced, it calls this slot and is added
* to the queue. The slot to actually start a sync is called afterwards.
*/
-void FolderMan::slotScheduleSync( Folder *f )
+void FolderMan::scheduleFolder( Folder *f )
{
if( !f ) {
qWarning() << "slotScheduleSync called with null folder";
@@ -494,7 +501,7 @@ void FolderMan::slotScheduleSync( Folder *f )
qDebug() << "Schedule folder " << alias << " to sync!";
- if( ! _scheduleQueue.contains(f) ) {
+ if( ! _scheduledFolders.contains(f) ) {
if( !f->canSync() ) {
qDebug() << "Folder is not ready to sync, not scheduled!";
_socketApi->slotUpdateFolderView(f);
@@ -502,7 +509,7 @@ void FolderMan::slotScheduleSync( Folder *f )
}
f->prepareToSync();
emit folderSyncStateChange(f);
- _scheduleQueue.enqueue(f);
+ _scheduledFolders.enqueue(f);
emit scheduleQueueChanged();
} else {
qDebug() << " II> Sync for folder " << alias << " already scheduled, do not enqueue!";
@@ -566,7 +573,7 @@ void FolderMan::slotAccountStateChanged()
if (f
&& f->canSync()
&& f->accountState() == accountState) {
- slotScheduleSync(f);
+ scheduleFolder(f);
}
}
} else {
@@ -578,7 +585,7 @@ void FolderMan::slotAccountStateChanged()
_currentSyncFolder->slotTerminateSync();
}
- QMutableListIterator<Folder*> it(_scheduleQueue);
+ QMutableListIterator<Folder*> it(_scheduledFolders);
while (it.hasNext()) {
Folder* f = it.next();
if (f->accountState() == accountState) {
@@ -593,7 +600,7 @@ void FolderMan::slotAccountStateChanged()
// this is not the same as Pause and Resume of folders.
void FolderMan::setSyncEnabled( bool enabled )
{
- if (!_syncEnabled && enabled && !_scheduleQueue.isEmpty()) {
+ if (!_syncEnabled && enabled && !_scheduledFolders.isEmpty()) {
// We have things in our queue that were waiting for the connection to come back on.
startScheduledSyncSoon();
}
@@ -602,19 +609,19 @@ void FolderMan::setSyncEnabled( bool enabled )
emit( folderSyncStateChange(0) );
}
-void FolderMan::startScheduledSyncSoon(qint64 msMinimumDelay)
+void FolderMan::startScheduledSyncSoon()
{
if (_startScheduledSyncTimer.isActive()) {
return;
}
- if (_scheduleQueue.empty()) {
+ if (_scheduledFolders.empty()) {
return;
}
if (_currentSyncFolder) {
return;
}
- qint64 msDelay = msMinimumDelay;
+ qint64 msDelay = 100; // 100ms minimum delay
qint64 msSinceLastSync = 0;
// Require a pause based on the duration of the last sync run.
@@ -629,15 +636,6 @@ void FolderMan::startScheduledSyncSoon(qint64 msMinimumDelay)
msDelay = qMax(msDelay, pause);
}
- // Punish consecutive follow-up syncs with longer delays.
- if (Folder* nextFolder = _scheduleQueue.head()) {
- int followUps = nextFolder->consecutiveFollowUpSyncs();
- if (followUps >= 2) {
- // This is okay due to the 1min maximum delay limit below.
- msDelay *= qPow(followUps, 2);
- }
- }
-
// Delays beyond one minute seem too big, particularly since there
// could be things later in the queue that shouldn't be punished by a
// long delay!
@@ -646,11 +644,7 @@ void FolderMan::startScheduledSyncSoon(qint64 msMinimumDelay)
// Time since the last sync run counts against the delay
msDelay = qMax(1ll, msDelay - msSinceLastSync);
- // A minimum of delay here is essential as the sync will not upload
- // files that were changed too recently.
- msDelay = qMax(SyncEngine::minimumFileAgeForUpload, msDelay);
-
- qDebug() << "Scheduling a sync in" << (msDelay/1000) << "seconds";
+ qDebug() << "Starting the next scheduled sync in" << (msDelay/1000) << "seconds";
_startScheduledSyncTimer.start(msDelay);
}
@@ -671,18 +665,17 @@ void FolderMan::slotStartScheduledFolderSync()
return;
}
- qDebug() << "XX slotScheduleFolderSync: folderQueue size: " << _scheduleQueue.count();
- if( _scheduleQueue.isEmpty() ) {
+ qDebug() << "XX slotScheduleFolderSync: folderQueue size: " << _scheduledFolders.count();
+ if( _scheduledFolders.isEmpty() ) {
return;
}
// Find the first folder in the queue that can be synced.
- Folder* f = 0;
- while( !_scheduleQueue.isEmpty() ) {
- f = _scheduleQueue.dequeue();
- Q_ASSERT(f);
-
- if( f->canSync() ) {
+ Folder* folder = 0;
+ while( !_scheduledFolders.isEmpty() ) {
+ Folder* g = _scheduledFolders.dequeue();
+ if( g->canSync() ) {
+ folder = g;
break;
}
}
@@ -690,9 +683,9 @@ void FolderMan::slotStartScheduledFolderSync()
emit scheduleQueueChanged();
// Start syncing this folder!
- if( f ) {
- _currentSyncFolder = f;
- f->startSync( QStringList() );
+ if( folder ) {
+ _currentSyncFolder = folder;
+ folder->startSync( QStringList() );
}
}
@@ -709,7 +702,7 @@ void FolderMan::slotEtagPollTimerTimeout()
if (_currentSyncFolder == f) {
continue;
}
- if (_scheduleQueue.contains(f)) {
+ if (_scheduledFolders.contains(f)) {
continue;
}
if (_disabledFolders.contains(f)) {
@@ -738,7 +731,7 @@ void FolderMan::slotRemoveFoldersForAccount(AccountState* accountState)
}
foreach (const auto &f, foldersToRemove) {
- slotRemoveFolder(f);
+ removeFolder(f);
}
}
@@ -764,10 +757,54 @@ void FolderMan::slotServerVersionChanged(Account *account)
}
}
-void FolderMan::slotScheduleFolderOwningFile(const QString& path)
+void FolderMan::slotWatchedFileUnlocked(const QString& path)
{
if (Folder* f = folderForPath(path)) {
- slotScheduleSync(f);
+ f->scheduleThisFolderSoon();
+ }
+}
+
+void FolderMan::slotScheduleFolderByTime()
+{
+ foreach (auto& f, _folderMap) {
+ // Never schedule if syncing is disabled or when we're currently
+ // querying the server for etags
+ if (!f->canSync() || f->etagJob()) {
+ continue;
+ }
+
+ auto msecsSinceSync = f->msecSinceLastSync();
+
+ // Possibly it's just time for a new sync run
+ bool forceSyncIntervalExpired =
+ quint64(msecsSinceSync) > ConfigFile().forceSyncInterval();
+ if (forceSyncIntervalExpired) {
+ qDebug() << "** scheduling folder" << f->alias()
+ << "because it has been" << msecsSinceSync << "ms "
+ << "since the last sync";
+
+ scheduleFolder(f);
+ continue;
+ }
+
+ // Retry a couple of times after failure
+ bool syncAgainAfterFail = f->consecutiveFailingSyncs() > 0 && f->consecutiveFailingSyncs() < 3;
+ qint64 syncAgainAfterFailDelay = 10 * 1000; // 10s for the first retry-after-fail
+ if (f->consecutiveFailingSyncs() > 1)
+ syncAgainAfterFailDelay = 60 * 1000; // 60s for each further attempt
+ if (syncAgainAfterFail
+ && msecsSinceSync > syncAgainAfterFailDelay) {
+ qDebug() << "** scheduling folder" << f->alias()
+ << "because the last"
+ << f->consecutiveFailingSyncs() << "syncs failed, last status:"
+ << f->syncResult().statusString()
+ << "time since last sync:" << msecsSinceSync;
+
+ scheduleFolder(f);
+ continue;
+ }
+
+ // Do we want to retry failing syncs or another-sync-needed runs more often?
}
}
@@ -827,7 +864,6 @@ Folder* FolderMan::addFolderInternal(FolderDefinition folderDefinition, AccountS
}
// See matching disconnects in unloadFolder().
- connect(folder, SIGNAL(scheduleToSync(Folder*)), SLOT(slotScheduleSync(Folder*)));
connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
connect(folder, SIGNAL(syncStateChange()), SLOT(slotForwardFolderSyncStateChange()));
@@ -849,7 +885,8 @@ Folder *FolderMan::folderForPath(const QString &path)
foreach(Folder* folder, this->map().values()) {
const QString folderPath = folder->cleanPath()+QLatin1Char('/');
- if(absolutePath.startsWith(folderPath)) {
+ if(absolutePath.startsWith(folderPath, (Utility::isWindows() || Utility::isMac())?
+ Qt::CaseInsensitive : Qt::CaseSensitive)) {
//qDebug() << "found folder: " << folder->path() << " for " << absolutePath;
return folder;
}
@@ -879,7 +916,7 @@ QStringList FolderMan::findFileInLocalFolders( const QString& relPath, const Acc
return re;
}
-void FolderMan::slotRemoveFolder( Folder *f )
+void FolderMan::removeFolder( Folder *f )
{
if( !f ) {
qWarning() << "!! Can not remove null folder";
@@ -894,7 +931,7 @@ void FolderMan::slotRemoveFolder( Folder *f )
terminateSyncProcess();
}
- if (_scheduleQueue.removeAll(f) > 0) {
+ if (_scheduledFolders.removeAll(f) > 0) {
emit scheduleQueueChanged();
}
@@ -1285,7 +1322,7 @@ void FolderMan::setIgnoreHiddenFiles(bool ignore)
QQueue<Folder*> FolderMan::scheduleQueue() const
{
- return _scheduleQueue;
+ return _scheduledFolders;
}
Folder *FolderMan::currentSyncFolder() const
diff --git a/src/gui/folderman.h b/src/gui/folderman.h
index 19a515541..047c68ce8 100644
--- a/src/gui/folderman.h
+++ b/src/gui/folderman.h
@@ -37,6 +37,26 @@ class LockWatcher;
/**
* @brief The FolderMan class
* @ingroup gui
+ *
+ * The FolderMan knows about all loaded folders and is responsible for
+ * scheduling them when necessary.
+ *
+ * A folder is scheduled if:
+ * - The configured force-sync-interval has expired
+ * (_timeScheduler and slotScheduleFolderByTime())
+ *
+ * - A folder watcher receives a notification about a file change
+ * (_folderWatchers and Folder::slotWatchedPathChanged())
+ *
+ * - The folder etag on the server has changed
+ * (_etagPollTimer)
+ *
+ * - The locks of a monitored file are released
+ * (_lockWatcher and slotWatchedFileUnlocked())
+ *
+ * - There was a sync error or a follow-up sync is requested
+ * (_timeScheduler and slotScheduleFolderByTime()
+ * and Folder::slotSyncFinished())
*/
class FolderMan : public QObject
{
@@ -54,6 +74,9 @@ public:
*/
Folder* addFolder(AccountState* accountState, const FolderDefinition& folderDefinition);
+ /** Removes a folder */
+ void removeFolder( Folder* );
+
/** Returns the folder which the file or directory stored in path is in */
Folder* folderForPath(const QString& path);
@@ -126,6 +149,24 @@ public:
*/
Folder* currentSyncFolder() const;
+ /** Removes all folders */
+ int unloadAndDeleteAllFolders();
+
+ /**
+ * If enabled is set to false, no new folders will start to sync.
+ * The current one will finish.
+ */
+ void setSyncEnabled( bool );
+
+ /** Queues a folder for syncing. */
+ void scheduleFolder(Folder*);
+
+ /** Queues all folders for syncing. */
+ void scheduleAllFolders();
+
+ void setDirtyProxy(bool value = true);
+ void setDirtyNetworkLimits();
+
signals:
/**
* signal to indicate a folder has changed its sync state.
@@ -139,41 +180,12 @@ signals:
*/
void scheduleQueueChanged();
- void folderListChanged(const Folder::Map &);
-
-public slots:
- void slotRemoveFolder( Folder* );
- void slotFolderSyncPaused(Folder *, bool paused);
- void slotFolderCanSyncChanged();
-
- void slotFolderSyncStarted();
- void slotFolderSyncFinished( const SyncResult& );
-
/**
- * Terminates the current folder sync.
- *
- * It does not switch the folder to paused state.
+ * Emitted whenever the list of configured folders changes.
*/
- void terminateSyncProcess();
-
- /* delete all folder objects */
- int unloadAndDeleteAllFolders();
-
- // if enabled is set to false, no new folders will start to sync.
- // the current one will finish.
- void setSyncEnabled( bool );
-
- void slotScheduleAllFolders();
-
- void setDirtyProxy(bool value = true);
- void setDirtyNetworkLimits();
+ void folderListChanged(const Folder::Map &);
- // slot to add a folder to the syncing queue
- void slotScheduleSync(Folder*);
- // slot to schedule an ETag job
- void slotScheduleETagJob ( const QString &alias, RequestEtagJob *job);
- void slotEtagJobDestroyed (QObject*);
- void slotRunOneEtagJob();
+public slots:
/**
* Schedules folders of newly connected accounts, terminates and
@@ -190,10 +202,22 @@ public slots:
* Triggers a sync run once the lock on the given file is removed.
*
* Automatically detemines the folder that's responsible for the file.
+ * See slotWatchedFileUnlocked().
*/
void slotSyncOnceFileUnlocks(const QString& path);
+ // slot to schedule an ETag job (from Folder only)
+ void slotScheduleETagJob ( const QString &alias, RequestEtagJob *job);
+
private slots:
+ void slotFolderSyncPaused(Folder *, bool paused);
+ void slotFolderCanSyncChanged();
+ void slotFolderSyncStarted();
+ void slotFolderSyncFinished( const SyncResult& );
+
+ void slotRunOneEtagJob();
+ void slotEtagJobDestroyed (QObject*);
+
// slot to take the next folder from queue and start syncing.
void slotStartScheduledFolderSync();
void slotEtagPollTimerTimeout();
@@ -207,12 +231,29 @@ private slots:
void slotServerVersionChanged(Account* account);
/**
- * Schedules the folder for synchronization that contains
+ * A file whose locks were being monitored has become unlocked.
+ *
+ * This schedules the folder for synchronization that contains
* the file with the given path.
*/
- void slotScheduleFolderOwningFile(const QString& path);
+ void slotWatchedFileUnlocked(const QString& path);
+
+ /**
+ * Schedules folders whose time to sync has come.
+ *
+ * Either because a long time has passed since the last sync or
+ * because of previous failures.
+ */
+ void slotScheduleFolderByTime();
private:
+ /**
+ * Terminates the current folder sync.
+ *
+ * It does not switch the folder to paused state.
+ */
+ void terminateSyncProcess();
+
/** Adds a new folder, does not add it to the account settings and
* does not set an account on the new folder.
*/
@@ -222,7 +263,7 @@ private:
void unloadFolder( Folder * );
/** Will start a sync after a bit of delay. */
- void startScheduledSyncSoon(qint64 msMinimumDelay = 0);
+ void startScheduledSyncSoon();
// finds all folder configuration files
// and create the folders
@@ -238,19 +279,29 @@ private:
Folder *_currentSyncFolder;
QPointer<Folder> _lastSyncFolder;
bool _syncEnabled;
- QTimer _etagPollTimer;
- QPointer<RequestEtagJob> _currentEtagJob; // alias of Folder running the current RequestEtagJob
+ /// Watching for file changes in folders
QMap<QString, FolderWatcher*> _folderWatchers;
+
+ /// Starts regular etag query jobs
+ QTimer _etagPollTimer;
+ /// The currently running etag query
+ QPointer<RequestEtagJob> _currentEtagJob;
+
+ /// Watches files that couldn't be synced due to locks
QScopedPointer<LockWatcher> _lockWatcher;
- QScopedPointer<SocketApi> _socketApi;
- /** The aliases of folders that shall be synced. */
- QQueue<Folder*> _scheduleQueue;
+ /// Occasionally schedules folders
+ QTimer _timeScheduler;
+
+ /// Scheduled folders that should be synced as soon as possible
+ QQueue<Folder*> _scheduledFolders;
- /** When the timer expires one of the scheduled syncs will be started. */
+ /// Picks the next scheduled folder and starts the sync
QTimer _startScheduledSyncTimer;
+ QScopedPointer<SocketApi> _socketApi;
+
bool _appRestartRequired;
static FolderMan *_instance;
diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp
index c9b3b56ba..628fc893e 100644
--- a/src/gui/folderstatusdelegate.cpp
+++ b/src/gui/folderstatusdelegate.cpp
@@ -295,7 +295,11 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
pBRect.setHeight(barHeight);
pBRect.setWidth( overallWidth - 2 * margin );
+#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
QStyleOptionProgressBarV2 pBarOpt;
+#else
+ QStyleOptionProgressBar pBarOpt;
+#endif
pBarOpt.state = option.state | QStyle::State_Horizontal;
pBarOpt.minimum = 0;
diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp
index f847de9c7..1bd5fcc25 100644
--- a/src/gui/folderstatusmodel.cpp
+++ b/src/gui/folderstatusmodel.cpp
@@ -38,6 +38,12 @@ FolderStatusModel::FolderStatusModel(QObject *parent)
FolderStatusModel::~FolderStatusModel()
{ }
+static bool sortByFolderHeader(const FolderStatusModel::SubFolderInfo& lhs, const FolderStatusModel::SubFolderInfo& rhs)
+{
+ return QString::compare(lhs._folder->shortGuiRemotePathOrAppName(),
+ rhs._folder->shortGuiRemotePathOrAppName(),
+ Qt::CaseInsensitive) < 0;
+}
void FolderStatusModel::setAccountState(const AccountState* accountState)
{
@@ -58,7 +64,6 @@ void FolderStatusModel::setAccountState(const AccountState* accountState)
if (f->accountState() != accountState)
continue;
SubFolderInfo info;
- info._pathIdx << _folders.size();
info._name = f->alias();
info._path = "/";
info._folder = f;
@@ -69,6 +74,14 @@ void FolderStatusModel::setAccountState(const AccountState* accountState)
connect(f, SIGNAL(newBigFolderDiscovered(QString)), this, SLOT(slotNewBigFolder()), Qt::UniqueConnection);
}
+ // Sort by header text
+ qSort(_folders.begin(), _folders.end(), sortByFolderHeader);
+
+ // Set the root _pathIdx after the sorting
+ for (int i = 0; i < _folders.size(); ++i) {
+ _folders[i]._pathIdx << i;
+ }
+
endResetModel();
emit dirtyChanged();
}
@@ -164,7 +177,8 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
switch(role) {
case Qt::DisplayRole:
if (x->_hasError) {
- return tr("Error while loading the list of folders from the server.");
+ return QVariant(tr("Error while loading the list of folders from the server.")
+ + QString("\n") + x->_lastErrorString);
} else {
return tr("Fetching folder list from server...");
}
@@ -374,12 +388,13 @@ QModelIndex FolderStatusModel::indexForPath(Folder *f, const QString& path) cons
if (slashPos == -1) {
// first level folder
for (int i = 0; i < _folders.size(); ++i) {
- if (_folders.at(i)._folder == f) {
+ auto& info = _folders.at(i);
+ if (info._folder == f) {
if( path.isEmpty() ) { // the folder object
return index(i, 0);
}
- for (int j = 0; j < _folders.at(i)._subs.size(); ++j) {
- const QString subName = _folders.at(i)._subs.at(j)._name;
+ for (int j = 0; j < info._subs.size(); ++j) {
+ const QString subName = info._subs.at(j)._name;
if (subName == path) {
return index(j, 0, index(i));
}
@@ -498,6 +513,10 @@ bool FolderStatusModel::canFetchMore(const QModelIndex& parent) const
auto info = infoForIndex(parent);
if (!info || info->_fetched || info->_fetching)
return false;
+ if (info->_hasError) {
+ // Keep showing the error to the user, it will be hidden when the account reconnects
+ return false;
+ }
return true;
}
@@ -548,6 +567,7 @@ void FolderStatusModel::slotUpdateDirectories(const QStringList &list)
if (parentInfo->hasLabel()) {
beginRemoveRows(idx, 0 ,0);
+ parentInfo->_lastErrorString.clear();
parentInfo->_hasError = false;
parentInfo->_fetchingLabel = false;
endRemoveRows();
@@ -675,6 +695,9 @@ void FolderStatusModel::slotLscolFinishedWithError(QNetworkReply* r)
}
auto parentInfo = infoForIndex(idx);
if (parentInfo) {
+ qDebug() << r->errorString();
+ parentInfo->_lastErrorString = r->errorString();
+
if (r->error() == QNetworkReply::ContentNotFoundError) {
parentInfo->_fetched = true;
} else {
@@ -776,32 +799,13 @@ void FolderStatusModel::slotApplySelectiveSync()
foreach(const auto &it, changes) {
folder->journalDb()->avoidReadFromDbOnNextSync(it);
}
- FolderMan::instance()->slotScheduleSync(folder);
+ FolderMan::instance()->scheduleFolder(folder);
}
}
resetFolders();
}
-static QString shortenFilename( Folder *f, const QString& file )
-{
- // strip off the server prefix from the file name
- QString shortFile(file);
- if( shortFile.isEmpty() ) {
- return QString::null;
- }
-
- if(shortFile.startsWith(QLatin1String("ownclouds://")) ||
- shortFile.startsWith(QLatin1String("owncloud://")) ) {
- // rip off the whole ownCloud URL.
- if( f ) {
- QString remotePathUrl = f->remoteUrl().toString();
- shortFile.remove(Utility::toCSyncScheme(remotePathUrl));
- }
- }
- return shortFile;
-}
-
void FolderStatusModel::slotSetProgress(const ProgressInfo &progress)
{
auto par = qobject_cast<QWidget*>(QObject::parent());
@@ -875,7 +879,7 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress)
curItemProgress = curItem._size;
}
- QString itemFileName = shortenFilename(f, curItem._file);
+ QString itemFileName = curItem._file;
QString kindString = Progress::asActionString(curItem);
QString fileProgressString;
@@ -934,11 +938,20 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress)
if (totalSize > 0) {
QString s1 = Utility::octetsToString( completedSize );
QString s2 = Utility::octetsToString( totalSize );
- //: Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
- overallSyncString = tr("%5 left, %1 of %2, file %3 of %4")
- .arg(s1, s2)
- .arg(currentFile).arg(totalFileCount)
- .arg( Utility::durationToDescriptiveString1(progress.totalProgress().estimatedEta) );
+
+ if (progress.trustEta()) {
+ //: Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7"
+ overallSyncString = tr("%5 left, %1 of %2, file %3 of %4")
+ .arg(s1, s2)
+ .arg(currentFile).arg(totalFileCount)
+ .arg( Utility::durationToDescriptiveString1(progress.totalProgress().estimatedEta) );
+
+ } else {
+ //: Example text: "12 MB of 345 MB, file 6 of 7"
+ overallSyncString = tr("%1 of %2, file %3 of %4")
+ .arg(s1, s2)
+ .arg(currentFile).arg(totalFileCount);
+ }
} else if (totalFileCount > 0) {
// Don't attempt to estimate the time left if there is no kb to transfer.
overallSyncString = tr("file %1 of %2") .arg(currentFile).arg(totalFileCount);
@@ -968,10 +981,12 @@ void FolderStatusModel::slotFolderSyncStateChange(Folder *f)
}
if (folderIndex < 0) { return; }
+ auto& pi = _folders[folderIndex]._progress;
+
SyncResult::Status state = f->syncResult().status();
if (f->syncPaused()) {
// Reset progress info.
- _folders[folderIndex]._progress = SubFolderInfo::Progress();
+ pi = SubFolderInfo::Progress();
} else if (state == SyncResult::NotYetStarted) {
FolderMan* folderMan = FolderMan::instance();
int pos = folderMan->scheduleQueue().indexOf(f);
@@ -985,16 +1000,16 @@ void FolderStatusModel::slotFolderSyncStateChange(Folder *f)
} else {
message = tr("Waiting for %n other folder(s)...", "", pos);
}
- _folders[folderIndex]._progress = SubFolderInfo::Progress();
- _folders[folderIndex]._progress._overallSyncString = message;
+ pi = SubFolderInfo::Progress();
+ pi._overallSyncString = message;
} else if (state == SyncResult::SyncPrepare) {
- _folders[folderIndex]._progress = SubFolderInfo::Progress();
- _folders[folderIndex]._progress._overallSyncString = tr("Preparing to sync...");
+ pi = SubFolderInfo::Progress();
+ pi._overallSyncString = tr("Preparing to sync...");
} else if (state == SyncResult::Problem || state == SyncResult::Success) {
// Reset the progress info after a sync.
- _folders[folderIndex]._progress = SubFolderInfo::Progress();
+ pi = SubFolderInfo::Progress();
} else if (state == SyncResult::Error) {
- _folders[folderIndex]._progress = SubFolderInfo::Progress();
+ pi = SubFolderInfo::Progress();
}
// update the icon etc. now
@@ -1028,6 +1043,77 @@ void FolderStatusModel::resetFolders()
setAccountState(_accountState);
}
+void FolderStatusModel::slotSyncAllPendingBigFolders()
+{
+ for (int i = 0; i < _folders.count(); ++i) {
+ if (!_folders[i]._fetched) {
+ _folders[i]._folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+ continue;
+ }
+ auto folder = _folders.at(i)._folder;
+
+ bool ok;
+ auto undecidedList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+
+ // If this folder had no undecided entries, skip it.
+ if (undecidedList.isEmpty()) {
+ continue;
+ }
+
+ // Remove all undecided folders from the blacklist
+ auto blackList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+ foreach (const auto& undecidedFolder, undecidedList) {
+ blackList.removeAll(undecidedFolder);
+ }
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, blackList);
+
+ // Add all undecided folders to the white list
+ auto whiteList = folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok);
+ if( !ok ) {
+ qDebug() << Q_FUNC_INFO << "Could not read selective sync list from db.";
+ return;
+ }
+ whiteList += undecidedList;
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, whiteList);
+
+ // Clear the undecided list
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+
+ // Trigger a sync
+ if (folder->isBusy()) {
+ folder->slotTerminateSync();
+ }
+ // The part that changed should not be read from the DB on next sync because there might be new folders
+ // (the ones that are no longer in the blacklist)
+ foreach (const auto &it, undecidedList) {
+ folder->journalDb()->avoidReadFromDbOnNextSync(it);
+ }
+ FolderMan::instance()->scheduleFolder(folder);
+ }
+
+ resetFolders();
+}
+
+void FolderStatusModel::slotSyncNoPendingBigFolders()
+{
+ for (int i = 0; i < _folders.count(); ++i) {
+ auto folder = _folders.at(i)._folder;
+
+ // clear the undecided list
+ folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, QStringList());
+ }
+
+ resetFolders();
+}
+
void FolderStatusModel::slotNewBigFolder()
{
auto f = qobject_cast<Folder *>(sender());
@@ -1058,11 +1144,14 @@ void FolderStatusModel::slotShowFetchProgress()
auto idx = it.key();
auto* info = infoForIndex(idx);
if (info && info->_fetching) {
- if (!info->hasLabel()) {
+ bool add = !info->hasLabel();
+ if (add) {
beginInsertRows(idx, 0, 0);
- endInsertRows();
}
info->_fetchingLabel = true;
+ if (add) {
+ endInsertRows();
+ }
}
it.remove();
}
diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h
index f12de0227..f1813ca1c 100644
--- a/src/gui/folderstatusmodel.h
+++ b/src/gui/folderstatusmodel.h
@@ -63,6 +63,7 @@ public:
bool _fetched; // If we did the LSCOL for this folder already
bool _fetching; // Whether a LSCOL job is currently running
bool _hasError; // If the last fetching job ended in an error
+ QString _lastErrorString;
bool _fetchingLabel; // Whether a 'fetching in progress' label is shown.
bool _isUndecided; // undecided folders are the big folders that the user has not accepted yet
@@ -106,6 +107,8 @@ public slots:
void slotUpdateFolderState(Folder *);
void slotApplySelectiveSync();
void resetFolders();
+ void slotSyncAllPendingBigFolders();
+ void slotSyncNoPendingBigFolders();
void slotSetProgress(const ProgressInfo &progress);
private slots:
diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp
index 30809c82f..c5b4f6ea5 100644
--- a/src/gui/folderwatcher.cpp
+++ b/src/gui/folderwatcher.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher.h b/src/gui/folderwatcher.h
index 15fe223a4..3fceffc5b 100644
--- a/src/gui/folderwatcher.h
+++ b/src/gui/folderwatcher.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_linux.cpp b/src/gui/folderwatcher_linux.cpp
index 72dde4a8d..ed935888e 100644
--- a/src/gui/folderwatcher_linux.cpp
+++ b/src/gui/folderwatcher_linux.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_linux.h b/src/gui/folderwatcher_linux.h
index bc361337c..9c7ef2a98 100644
--- a/src/gui/folderwatcher_linux.h
+++ b/src/gui/folderwatcher_linux.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_mac.cpp b/src/gui/folderwatcher_mac.cpp
index be4260842..6973536c8 100644
--- a/src/gui/folderwatcher_mac.cpp
+++ b/src/gui/folderwatcher_mac.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_mac.h b/src/gui/folderwatcher_mac.h
index e263ba175..52c0a0a69 100644
--- a/src/gui/folderwatcher_mac.h
+++ b/src/gui/folderwatcher_mac.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_qt.cpp b/src/gui/folderwatcher_qt.cpp
index c55215947..313ce229a 100644
--- a/src/gui/folderwatcher_qt.cpp
+++ b/src/gui/folderwatcher_qt.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_qt.h b/src/gui/folderwatcher_qt.h
index f31c768b9..ec898ee9c 100644
--- a/src/gui/folderwatcher_qt.h
+++ b/src/gui/folderwatcher_qt.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_win.cpp b/src/gui/folderwatcher_win.cpp
index c7261ab07..173fb5680 100644
--- a/src/gui/folderwatcher_win.cpp
+++ b/src/gui/folderwatcher_win.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/folderwatcher_win.h b/src/gui/folderwatcher_win.h
index 9e5e941e3..dd5af77fe 100644
--- a/src/gui/folderwatcher_win.h
+++ b/src/gui/folderwatcher_win.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp
index 6373da4c4..6ba593947 100644
--- a/src/gui/generalsettings.cpp
+++ b/src/gui/generalsettings.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/generalsettings.h b/src/gui/generalsettings.h
index 69c96c4a1..1746f3fb5 100644
--- a/src/gui/generalsettings.h
+++ b/src/gui/generalsettings.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ignorelisteditor.cpp b/src/gui/ignorelisteditor.cpp
index 7b5acd158..e1f5bccef 100644
--- a/src/gui/ignorelisteditor.cpp
+++ b/src/gui/ignorelisteditor.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -126,7 +127,7 @@ void IgnoreListEditor::slotUpdateLocalIgnoreList()
// ignored (because the remote etag did not change) (issue #3172)
foreach (Folder* folder, folderMan->map()) {
folder->journalDb()->forceRemoteDiscoveryNextSync();
- folderMan->slotScheduleSync(folder);
+ folderMan->scheduleFolder(folder);
}
ExcludedFiles::instance().reloadExcludes();
diff --git a/src/gui/ignorelisteditor.h b/src/gui/ignorelisteditor.h
index bd64d8a58..b6fcf0df6 100644
--- a/src/gui/ignorelisteditor.h
+++ b/src/gui/ignorelisteditor.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/lockwatcher.cpp b/src/gui/lockwatcher.cpp
index 7b1247990..066d45a88 100644
--- a/src/gui/lockwatcher.cpp
+++ b/src/gui/lockwatcher.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -15,6 +16,7 @@
#include "filesystem.h"
#include <QTimer>
+#include <QDebug>
using namespace OCC;
@@ -30,6 +32,7 @@ LockWatcher::LockWatcher(QObject* parent)
void LockWatcher::addFile(const QString& path)
{
+ qDebug() << "Watching for lock of" << path << "being released";
_watchedPaths.insert(path);
}
@@ -39,6 +42,7 @@ void LockWatcher::checkFiles()
foreach (const QString& path, _watchedPaths) {
if (!FileSystem::isFileLocked(path)) {
+ qDebug() << "Lock of" << path << "was released";
emit fileUnlocked(path);
unlocked.insert(path);
}
diff --git a/src/gui/lockwatcher.h b/src/gui/lockwatcher.h
index d5a7a05fa..981594071 100644
--- a/src/gui/lockwatcher.h
+++ b/src/gui/lockwatcher.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/main.cpp b/src/gui/main.cpp
index d57534490..003fcfd51 100644
--- a/src/gui/main.cpp
+++ b/src/gui/main.cpp
@@ -58,6 +58,8 @@ int main(int argc, char **argv)
// not set this envoronment variable)
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
+#else
+ qputenv("QT_DEVICE_PIXEL_RATIO", "auto"); // See #4840, #4994
#endif
#endif // !Q_OS_WIN
diff --git a/src/gui/manifest-mingw.rc b/src/gui/manifest-mingw.rc
new file mode 100644
index 000000000..e3125c9d5
--- /dev/null
+++ b/src/gui/manifest-mingw.rc
@@ -0,0 +1,3 @@
+#include "winuser.h"
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "owncloud.exe.manifest-mingw"
diff --git a/src/gui/networksettings.cpp b/src/gui/networksettings.cpp
index 7c40850de..88f38259a 100644
--- a/src/gui/networksettings.cpp
+++ b/src/gui/networksettings.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/networksettings.h b/src/gui/networksettings.h
index 9013a6742..a64eaff29 100644
--- a/src/gui/networksettings.h
+++ b/src/gui/networksettings.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/notificationconfirmjob.cpp b/src/gui/notificationconfirmjob.cpp
index 6e7e168d8..b3051827e 100644
--- a/src/gui/notificationconfirmjob.cpp
+++ b/src/gui/notificationconfirmjob.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/notificationconfirmjob.h b/src/gui/notificationconfirmjob.h
index 12f7fa82b..a65e458d1 100644
--- a/src/gui/notificationconfirmjob.h
+++ b/src/gui/notificationconfirmjob.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/notificationwidget.cpp b/src/gui/notificationwidget.cpp
index e38619fc8..8d09b2efd 100644
--- a/src/gui/notificationwidget.cpp
+++ b/src/gui/notificationwidget.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/notificationwidget.h b/src/gui/notificationwidget.h
index 166d5b5d5..06265494d 100644
--- a/src/gui/notificationwidget.h
+++ b/src/gui/notificationwidget.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ocsjob.cpp b/src/gui/ocsjob.cpp
index ff313e462..8c4ca983f 100644
--- a/src/gui/ocsjob.cpp
+++ b/src/gui/ocsjob.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -47,17 +48,32 @@ void OcsJob::appendPath(const QString &id)
setPath(path() + QLatin1Char('/') + id);
}
+static QList<QPair<QByteArray, QByteArray>>
+percentEncodeQueryItems(
+ const QList<QPair<QString, QString>> & items)
+{
+ QList<QPair<QByteArray, QByteArray>> result;
+ foreach (const auto& item, items) {
+ result.append(qMakePair(
+ QUrl::toPercentEncoding(item.first),
+ QUrl::toPercentEncoding(item.second)));
+ }
+ return result;
+}
+
void OcsJob::start()
{
QNetworkRequest req;
req.setRawHeader("Ocs-APIREQUEST", "true");
req.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
- QUrl url = Account::concatUrlPath(account()->url(), path());
+ QUrl url = Utility::concatUrlPath(account()->url(), path());
QBuffer *buffer = new QBuffer;
if (_verb == "GET") {
- url.setQueryItems(_params);
+ // Note: QUrl::setQueryItems() does not fully percent encode
+ // the query items, see #5042
+ url.setEncodedQueryItems(percentEncodeQueryItems(_params));
} else if (_verb == "POST" || _verb == "PUT") {
// Url encode the _postParams and put them in a buffer.
QByteArray postData;
@@ -73,9 +89,9 @@ void OcsJob::start()
}
//We want json data
- auto queryItems = url.queryItems();
- queryItems.append(qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json")));
- url.setQueryItems(queryItems);
+ auto queryItems = url.encodedQueryItems();
+ queryItems.append(qMakePair(QByteArray("format"), QByteArray("json")));
+ url.setEncodedQueryItems(queryItems);
setReply(davRequest(_verb, url, req, buffer));
setupConnections(reply());
@@ -92,7 +108,7 @@ bool OcsJob::finished()
if (!success) {
qDebug() << "Could not parse reply to"
<< _verb
- << Account::concatUrlPath(account()->url(), path())
+ << Utility::concatUrlPath(account()->url(), path())
<< _params
<< ":" << replyData;
}
@@ -102,7 +118,7 @@ bool OcsJob::finished()
if (!_passStatusCodes.contains(statusCode)) {
qDebug() << "Reply to"
<< _verb
- << Account::concatUrlPath(account()->url(), path())
+ << Utility::concatUrlPath(account()->url(), path())
<< _params
<< "has unexpected status code:" << statusCode << replyData;
emit ocsError(statusCode, message);
diff --git a/src/gui/ocsjob.h b/src/gui/ocsjob.h
index 24f611442..602b30550 100644
--- a/src/gui/ocsjob.h
+++ b/src/gui/ocsjob.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ocsshareejob.cpp b/src/gui/ocsshareejob.cpp
index e81e08272..17034d609 100644
--- a/src/gui/ocsshareejob.cpp
+++ b/src/gui/ocsshareejob.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ocsshareejob.h b/src/gui/ocsshareejob.h
index 3d3a1e5a1..1b33b0d99 100644
--- a/src/gui/ocsshareejob.h
+++ b/src/gui/ocsshareejob.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ocssharejob.cpp b/src/gui/ocssharejob.cpp
index de3a6753e..60155e3e9 100644
--- a/src/gui/ocssharejob.cpp
+++ b/src/gui/ocssharejob.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/ocssharejob.h b/src/gui/ocssharejob.h
index ebf1885e8..beb7067f3 100644
--- a/src/gui/ocssharejob.h
+++ b/src/gui/ocssharejob.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -15,7 +16,7 @@
#define OCSSHAREJOB_H
#include "ocsjob.h"
-#include "share.h"
+#include "sharemanager.h"
#include <QVector>
#include <QList>
#include <QPair>
diff --git a/src/gui/openfilemanager.cpp b/src/gui/openfilemanager.cpp
index e646d99b7..3430f6c30 100644
--- a/src/gui/openfilemanager.cpp
+++ b/src/gui/openfilemanager.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/openfilemanager.h b/src/gui/openfilemanager.h
index 898b2f1f1..69e6ffba4 100644
--- a/src/gui/openfilemanager.h
+++ b/src/gui/openfilemanager.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/owncloud.exe.manifest-mingw b/src/gui/owncloud.exe.manifest-mingw
new file mode 100644
index 000000000..ecea6f7f5
--- /dev/null
+++ b/src/gui/owncloud.exe.manifest-mingw
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level='asInvoker' uiAccess='false' />
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>
diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp
index 63e4e32ae..832297c6b 100644
--- a/src/gui/owncloudgui.cpp
+++ b/src/gui/owncloudgui.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -56,6 +57,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_settingsDialog(new SettingsDialog(this)),
#endif
_logBrowser(0),
+ _contextMenuVisibleOsx(false),
_recentActionsMenu(0),
_qdbusmenuWorkaround(false),
_folderOpenActionMapper(new QSignalMapper(this)),
@@ -66,7 +68,7 @@ ownCloudGui::ownCloudGui(Application *parent) :
_tray->setParent(this);
// for the beginning, set the offline icon until the account was verified
- _tray->setIcon( Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon( Theme::instance()->folderOfflineIcon(/*systray?*/ true, /*currently visible?*/ false));
connect(_tray.data(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
SLOT(slotTrayClicked(QSystemTrayIcon::ActivationReason)));
@@ -92,9 +94,9 @@ ownCloudGui::ownCloudGui(Application *parent) :
this,SLOT(slotSyncStateChange(Folder*)));
connect( AccountManager::instance(), SIGNAL(accountAdded(AccountState*)),
- SLOT(setupContextMenu()));
+ SLOT(updateContextMenuNeeded()));
connect( AccountManager::instance(), SIGNAL(accountRemoved(AccountState*)),
- SLOT(setupContextMenu()));
+ SLOT(updateContextMenuNeeded()));
connect( Logger::instance(), SIGNAL(guiLog(QString,QString)),
SLOT(slotShowTrayMessage(QString,QString)));
@@ -158,7 +160,7 @@ void ownCloudGui::slotOpenSettingsDialog()
}
} else {
qDebug() << "No configured folders yet, starting setup wizard";
- OwncloudSetupWizard::runWizard(qApp, SLOT(slotownCloudWizardDone(int)));
+ slotNewAccountWizard();
}
}
@@ -193,7 +195,7 @@ void ownCloudGui::slotTrayClicked( QSystemTrayIcon::ActivationReason reason )
void ownCloudGui::slotSyncStateChange( Folder* folder )
{
slotComputeOverallSyncStatus();
- setupContextMenu();
+ updateContextMenuNeeded();
if( !folder ) {
return; // Valid, just a general GUI redraw was needed.
@@ -215,7 +217,7 @@ void ownCloudGui::slotSyncStateChange( Folder* folder )
void ownCloudGui::slotFoldersChanged()
{
slotComputeOverallSyncStatus();
- setupContextMenu();
+ updateContextMenuNeeded();
}
void ownCloudGui::slotOpenPath(const QString &path)
@@ -225,7 +227,7 @@ void ownCloudGui::slotOpenPath(const QString &path)
void ownCloudGui::slotAccountStateChanged()
{
- setupContextMenu();
+ updateContextMenuNeeded();
slotComputeOverallSyncStatus();
}
@@ -261,7 +263,7 @@ void ownCloudGui::slotComputeOverallSyncStatus()
}
if (!problemAccounts.empty()) {
- _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon(Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
#ifdef Q_OS_WIN
// Windows has a 128-char tray tooltip length limit.
QStringList accountNames;
@@ -288,11 +290,11 @@ void ownCloudGui::slotComputeOverallSyncStatus()
}
if (allSignedOut) {
- _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
+ _tray->setIcon(Theme::instance()->folderOfflineIcon(true, contextMenuVisible()));
_tray->setToolTip(tr("Please sign in"));
return;
} else if (allPaused) {
- _tray->setIcon(Theme::instance()->syncStateIcon(SyncResult::Paused, true));
+ _tray->setIcon(Theme::instance()->syncStateIcon(SyncResult::Paused, true, contextMenuVisible()));
_tray->setToolTip(tr("Account synchronization is disabled"));
return;
}
@@ -322,12 +324,12 @@ void ownCloudGui::slotComputeOverallSyncStatus()
trayMessage = tr("No sync folders configured.");
}
- QIcon statusIcon = Theme::instance()->syncStateIcon( overallResult.status(), true);
+ QIcon statusIcon = Theme::instance()->syncStateIcon( overallResult.status(), true, contextMenuVisible());
_tray->setIcon( statusIcon );
_tray->setToolTip(trayMessage);
} else {
// undefined because there are no folders.
- QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Problem, true);
+ QIcon icon = Theme::instance()->syncStateIcon(SyncResult::Problem, true, contextMenuVisible());
_tray->setIcon( icon );
_tray->setToolTip(tr("There are no sync folders configured."));
}
@@ -367,7 +369,7 @@ void ownCloudGui::addAccountContextMenu(AccountStatePtr accountState, QMenu *men
menu->addAction(tr("Managed Folders:"))->setDisabled(true);
}
- QAction *action = new QAction( tr("Open folder '%1'").arg(folder->shortGuiLocalPath()), this );
+ QAction *action = new QAction( tr("Open folder '%1'").arg(folder->shortGuiLocalPath()), menu );
connect(action, SIGNAL(triggered()),_folderOpenActionMapper, SLOT(map()));
_folderOpenActionMapper->setMapping( action, folder->alias() );
menu->addAction(action);
@@ -399,8 +401,160 @@ void ownCloudGui::addAccountContextMenu(AccountStatePtr accountState, QMenu *men
}
+void ownCloudGui::slotContextMenuAboutToShow()
+{
+ // For some reason on OS X _contextMenu->isVisible returns always false
+ qDebug() << "";
+ _contextMenuVisibleOsx = true;
+
+ // Update icon in sys tray, as it might change depending on the context menu state
+ slotComputeOverallSyncStatus();
+}
+
+void ownCloudGui::slotContextMenuAboutToHide()
+{
+ // For some reason on OS X _contextMenu->isVisible returns always false
+ qDebug() << "";
+ _contextMenuVisibleOsx = false;
+
+ // Update icon in sys tray, as it might change depending on the context menu state
+ slotComputeOverallSyncStatus();
+}
+
+bool ownCloudGui::contextMenuVisible() const
+{
+#ifdef Q_OS_MAC
+ return _contextMenuVisibleOsx;
+#else
+ return _contextMenu->isVisible();
+#endif
+}
+
+static bool minimalTrayMenu()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_MINIMAL_TRAY_MENU");
+ return !var.isEmpty();
+}
+
+static bool updateWhileVisible()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_TRAY_UPDATE_WHILE_VISIBLE");
+ if (var == "1") {
+ return true;
+ } else if (var == "0") {
+ return false;
+ } else {
+ // triggers bug on OS X: https://bugreports.qt.io/browse/QTBUG-54845
+ // or flickering on Xubuntu
+ return false;
+ }
+}
+
+static QByteArray forceQDBusTrayWorkaround()
+{
+ static QByteArray var = qgetenv("OWNCLOUD_FORCE_QDBUS_TRAY_WORKAROUND");
+ return var;
+}
+
void ownCloudGui::setupContextMenu()
{
+ if (_contextMenu) {
+ return;
+ }
+
+ _contextMenu.reset(new QMenu());
+ _contextMenu->setTitle(Theme::instance()->appNameGUI() );
+
+ _recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
+
+ // this must be called only once after creating the context menu, or
+ // it will trigger a bug in Ubuntu's SNI bridge patch (11.10, 12.04).
+ _tray->setContextMenu(_contextMenu.data());
+
+ // The tray menu is surprisingly problematic. Being able to switch to
+ // a minimal version of it is a useful workaround and testing tool.
+ if (minimalTrayMenu()) {
+ _contextMenu->addAction(_actionQuit);
+ return;
+ }
+
+ // Enables workarounds for bugs introduced in Qt 5.5.0
+ // In particular QTBUG-47863 #3672 (tray menu fails to update and
+ // becomes unresponsive) and QTBUG-48068 #3722 (click signal is
+ // emitted several times)
+ // The Qt version check intentionally uses 5.0.0 (where platformMenu()
+ // was introduced) instead of 5.5.0 to avoid issues where the Qt
+ // version used to build is different from the one used at runtime.
+ // If we build with 5.6.1 or newer, we can skip this because the
+ // bugs should be fixed there.
+#ifdef Q_OS_LINUX
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ if (qVersion() == QByteArray("5.5.0")) {
+ QObject* platformMenu = reinterpret_cast<QObject*>(_tray->contextMenu()->platformMenu());
+ if (platformMenu
+ && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
+ _qdbusmenuWorkaround = true;
+ qDebug() << "Enabled QDBusPlatformMenu workaround";
+ }
+ }
+#endif
+#endif
+
+ if (forceQDBusTrayWorkaround() == "1") {
+ _qdbusmenuWorkaround = true;
+ } else if (forceQDBusTrayWorkaround() == "0") {
+ _qdbusmenuWorkaround = false;
+ }
+
+ // When the qdbusmenuWorkaround is necessary, we can't do on-demand updates
+ // because the workaround is to hide and show the tray icon.
+ if (_qdbusmenuWorkaround) {
+ connect(&_workaroundBatchTrayUpdate, SIGNAL(timeout()), SLOT(updateContextMenu()));
+ _workaroundBatchTrayUpdate.setInterval(30 * 1000);
+ _workaroundBatchTrayUpdate.setSingleShot(true);
+ } else {
+ // Update the context menu whenever we're about to show it
+ // to the user.
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54633
+ connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(slotContextMenuAboutToShow()));
+ connect(_contextMenu.data(), SIGNAL(aboutToHide()), SLOT(slotContextMenuAboutToHide()));
+#else
+ connect(_contextMenu.data(), SIGNAL(aboutToShow()), SLOT(updateContextMenu()));
+#endif
+ }
+
+ // Populate the context menu now.
+ updateContextMenu();
+}
+
+void ownCloudGui::updateContextMenu()
+{
+ if (minimalTrayMenu()) {
+ return;
+ }
+
+ if (_qdbusmenuWorkaround) {
+ // To make tray menu updates work with these bugs (see setupContextMenu)
+ // we need to hide and show the tray icon. We don't want to do that
+ // while it's visible!
+ if (contextMenuVisible()) {
+ if (!_workaroundBatchTrayUpdate.isActive()) {
+ _workaroundBatchTrayUpdate.start();
+ }
+ return;
+ }
+ _tray->hide();
+ }
+
+ _contextMenu->clear();
+ slotRebuildRecentMenus();
+
+ // We must call deleteLater because we might be called from the press in one of the actions.
+ foreach (auto menu, _accountMenus) { menu->deleteLater(); }
+ _accountMenus.clear();
+
+
auto accountList = AccountManager::instance()->accounts();
bool isConfigured = (!accountList.isEmpty());
@@ -427,41 +581,6 @@ void ownCloudGui::setupContextMenu()
}
}
- if ( _contextMenu ) {
- if (_qdbusmenuWorkaround) {
- _tray->hide();
- }
- _contextMenu->clear();
- slotRebuildRecentMenus();
- } else {
- _contextMenu.reset(new QMenu());
- _recentActionsMenu = new QMenu(tr("Recent Changes"), _contextMenu.data());
- // this must be called only once after creating the context menu, or
- // it will trigger a bug in Ubuntu's SNI bridge patch (11.10, 12.04).
- _tray->setContextMenu(_contextMenu.data());
-
- // Enables workarounds for bugs introduced in Qt 5.5.0
- // In particular QTBUG-47863 #3672 (tray menu fails to update and
- // becomes unresponsive) and QTBUG-48068 #3722 (click signal is
- // emitted several times)
- // The Qt version check intentionally uses 5.0.0 (where platformMenu()
- // was introduced) instead of 5.5.0 to avoid issues where the Qt
- // version used to build is different from the one used at runtime.
-#ifdef Q_OS_LINUX
-#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
- QObject* platformMenu = reinterpret_cast<QObject*>(_tray->contextMenu()->platformMenu());
- if (platformMenu
- && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
- _qdbusmenuWorkaround = true;
- qDebug() << "Enabled QDBusPlatformMenu workaround";
- }
-#endif
-#endif
- }
- _contextMenu->setTitle(Theme::instance()->appNameGUI() );
- // We must call deleteLater because we might be called from the press in one of the actions.
- foreach (auto menu, _accountMenus) { menu->deleteLater(); }
- _accountMenus.clear();
if (accountList.count() > 1) {
foreach (AccountStatePtr account, accountList) {
QMenu* accountMenu = new QMenu(account->account()->displayName(), _contextMenu.data());
@@ -481,6 +600,9 @@ void ownCloudGui::setupContextMenu()
_contextMenu->addMenu(_recentActionsMenu);
_contextMenu->addSeparator();
}
+ if (accountList.isEmpty()) {
+ _contextMenu->addAction(_actionNewAccountWizard);
+ }
_contextMenu->addAction(_actionSettings);
if (!Theme::instance()->helpUrl().isEmpty()) {
_contextMenu->addAction(_actionHelp);
@@ -534,6 +656,31 @@ void ownCloudGui::setupContextMenu()
}
}
+void ownCloudGui::updateContextMenuNeeded()
+{
+ // For the workaround case updating while visible is impossible. Instead
+ // occasionally update the menu when it's invisible.
+ if (_qdbusmenuWorkaround) {
+ if (!_workaroundBatchTrayUpdate.isActive()) {
+ _workaroundBatchTrayUpdate.start();
+ }
+ return;
+ }
+
+#ifdef Q_OS_MAC
+ // https://bugreports.qt.io/browse/QTBUG-54845
+ // We cannot update on demand or while visible -> update when invisible.
+ if (!contextMenuVisible()) {
+ updateContextMenu();
+ }
+#else
+ if (updateWhileVisible() && contextMenuVisible())
+ updateContextMenu();
+#endif
+
+ // If no update was done here, we might update it on-demand due to
+ // the aboutToShow() signal.
+}
void ownCloudGui::slotShowTrayMessage(const QString &title, const QString &msg)
{
@@ -580,11 +727,13 @@ void ownCloudGui::setupActions()
_actionStatus = new QAction(tr("Unknown status"), this);
_actionStatus->setEnabled( false );
_actionSettings = new QAction(tr("Settings..."), this);
+ _actionNewAccountWizard = new QAction(tr("New account..."), this);
_actionRecent = new QAction(tr("Details..."), this);
_actionRecent->setEnabled( true );
QObject::connect(_actionRecent, SIGNAL(triggered(bool)), SLOT(slotShowSyncProtocol()));
QObject::connect(_actionSettings, SIGNAL(triggered(bool)), SLOT(slotShowSettings()));
+ QObject::connect(_actionNewAccountWizard, SIGNAL(triggered(bool)), SLOT(slotNewAccountWizard()));
_actionHelp = new QAction(tr("Help"), this);
QObject::connect(_actionHelp, SIGNAL(triggered(bool)), SLOT(slotHelp()));
_actionQuit = new QAction(tr("Quit %1").arg(Theme::instance()->appNameGUI()), this);
@@ -640,18 +789,29 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const ProgressInfo&
} else if (progress.totalSize() == 0 ) {
quint64 currentFile = progress.currentFile();
quint64 totalFileCount = qMax(progress.totalFiles(), currentFile);
- _actionStatus->setText( tr("Syncing %1 of %2 (%3 left)")
- .arg( currentFile ).arg( totalFileCount )
- .arg( Utility::durationToDescriptiveString2(progress.totalProgress().estimatedEta) ) );
+ QString msg;
+ if (progress.trustEta()) {
+ msg = tr("Syncing %1 of %2 (%3 left)")
+ .arg( currentFile ).arg( totalFileCount )
+ .arg( Utility::durationToDescriptiveString2(progress.totalProgress().estimatedEta) );
+ } else {
+ msg = tr("Syncing %1 of %2")
+ .arg( currentFile ).arg( totalFileCount );
+ }
+ _actionStatus->setText( msg );
} else {
QString totalSizeStr = Utility::octetsToString( progress.totalSize() );
- _actionStatus->setText( tr("Syncing %1 (%2 left)")
- .arg( totalSizeStr, Utility::durationToDescriptiveString2(progress.totalProgress().estimatedEta) ) );
+ QString msg;
+ if (progress.trustEta()) {
+ msg = tr("Syncing %1 (%2 left)")
+ .arg( totalSizeStr, Utility::durationToDescriptiveString2(progress.totalProgress().estimatedEta) );
+ } else {
+ msg = tr("Syncing %1")
+ .arg( totalSizeStr );
+ }
+ _actionStatus->setText( msg );
}
-
-
-
_actionRecent->setIcon( QIcon() ); // Fixme: Set a "in-progress"-item eventually.
if (!progress._lastCompletedItem.isEmpty()
@@ -682,7 +842,11 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const ProgressInfo&
}
_recentItemsActions.append(action);
- slotRebuildRecentMenus();
+ // Update the "Recent" menu if the context menu is being shown,
+ // otherwise it'll be updated later, when the context menu is opened.
+ if (updateWhileVisible() && contextMenuVisible()) {
+ slotRebuildRecentMenus();
+ }
}
if (progress.isUpdatingEstimates()
@@ -732,6 +896,11 @@ void ownCloudGui::slotPauseAllFolders()
setPauseOnAllFoldersHelper(true);
}
+void ownCloudGui::slotNewAccountWizard()
+{
+ OwncloudSetupWizard::runWizard(qApp, SLOT(slotownCloudWizardDone(int)));
+}
+
void ownCloudGui::setPauseOnAllFoldersHelper(bool pause)
{
QList<AccountState*> accounts;
@@ -745,6 +914,9 @@ void ownCloudGui::setPauseOnAllFoldersHelper(bool pause)
foreach (Folder* f, FolderMan::instance()->map()) {
if (accounts.contains(f->accountState())) {
f->setSyncPaused(pause);
+ if (pause) {
+ f->slotTerminateSync();
+ }
}
}
}
diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h
index 74f658ba2..f72a5a437 100644
--- a/src/gui/owncloudgui.h
+++ b/src/gui/owncloudgui.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -24,6 +25,7 @@
#include <QMenu>
#include <QSignalMapper>
#include <QSize>
+#include <QTimer>
namespace OCC {
@@ -52,11 +54,18 @@ public:
static QSize settingsDialogSize() { return QSize(800, 500); }
void setupOverlayIcons();
+ /// Whether the tray menu is visible
+ bool contextMenuVisible() const;
+
signals:
void setupProxy();
public slots:
void setupContextMenu();
+ void updateContextMenu();
+ void updateContextMenuNeeded();
+ void slotContextMenuAboutToShow();
+ void slotContextMenuAboutToHide();
void slotComputeOverallSyncStatus();
void slotShowTrayMessage(const QString &title, const QString &msg);
void slotShowOptionalTrayMessage(const QString &title, const QString &msg);
@@ -86,6 +95,7 @@ private slots:
void slotLogout();
void slotUnpauseAllFolders();
void slotPauseAllFolders();
+ void slotNewAccountWizard();
private:
void setPauseOnAllFoldersHelper(bool pause);
@@ -101,14 +111,21 @@ private:
QPointer<LogBrowser>_logBrowser;
// tray's menu
QScopedPointer<QMenu> _contextMenu;
+
+ // Manually tracking whether the context menu is visible, but only works
+ // on OSX because aboutToHide is not reliable everywhere.
+ bool _contextMenuVisibleOsx;
+
QMenu *_recentActionsMenu;
QVector<QMenu*> _accountMenus;
bool _qdbusmenuWorkaround;
+ QTimer _workaroundBatchTrayUpdate;
QMap<QString, QPointer<ShareDialog> > _shareDialogs;
QAction *_actionLogin;
QAction *_actionLogout;
+ QAction *_actionNewAccountWizard;
QAction *_actionSettings;
QAction *_actionStatus;
QAction *_actionEstimate;
diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp
index d165ae036..993bf04f0 100644
--- a/src/gui/owncloudsetupwizard.cpp
+++ b/src/gui/owncloudsetupwizard.cpp
@@ -30,6 +30,7 @@
#include "networkjobs.h"
#include "sslerrordialog.h"
#include "accountmanager.h"
+#include "clientproxy.h"
#include "creds/credentialsfactory.h"
#include "creds/abstractcredentials.h"
@@ -128,7 +129,38 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString)
account->setUrl(url);
// Reset the proxy which might had been determined previously in ConnectionValidator::checkServerAndAuth()
// when there was a previous account.
- account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::DefaultProxy));
+ account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
+
+ // Lookup system proxy in a thread https://github.com/owncloud/client/issues/2993
+ if (ClientProxy::isUsingSystemDefault()) {
+ qDebug() << "Trying to look up system proxy";
+ ClientProxy::lookupSystemProxyAsync(account->url(),
+ this, SLOT(slotSystemProxyLookupDone(QNetworkProxy)));
+ } else {
+ // We want to reset the QNAM proxy so that the global proxy settings are used (via ClientProxy settings)
+ account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::DefaultProxy));
+ // use a queued invocation so we're as asynchronous as with the other code path
+ QMetaObject::invokeMethod(this, "slotContinueDetermineAuth", Qt::QueuedConnection);
+ }
+}
+
+void OwncloudSetupWizard::slotSystemProxyLookupDone(const QNetworkProxy &proxy)
+{
+ if (proxy.type() != QNetworkProxy::NoProxy) {
+ qDebug() << "Setting QNAM proxy to be system proxy" << printQNetworkProxy(proxy);
+ } else {
+ qDebug() << "No system proxy set by OS";
+ }
+ AccountPtr account = _ocWizard->account();
+ account->networkAccessManager()->setProxy(proxy);
+
+ slotContinueDetermineAuth();
+}
+
+void OwncloudSetupWizard::slotContinueDetermineAuth()
+{
+ AccountPtr account = _ocWizard->account();
+
// Set fake credentials before we check what credential it actually is.
account->setCredentials(CredentialsFactory::create("dummy"));
CheckServerJob *job = new CheckServerJob(_ocWizard->account(), this);
@@ -136,7 +168,7 @@ void OwncloudSetupWizard::slotDetermineAuthType(const QString &urlString)
connect(job, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotOwnCloudFoundAuth(QUrl,QVariantMap)));
connect(job, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoOwnCloudFoundAuth(QNetworkReply*)));
connect(job, SIGNAL(timeout(const QUrl&)), SLOT(slotNoOwnCloudFoundAuthTimeout(const QUrl&)));
- job->setTimeout(10*1000);
+ job->setTimeout((account->url().scheme() == "https") ? 30*1000 : 10*1000);
job->start();
}
@@ -508,6 +540,10 @@ DetermineAuthTypeJob::DetermineAuthTypeJob(AccountPtr account, QObject *parent)
: AbstractNetworkJob(account, QString(), parent)
, _redirects(0)
{
+ // This job implements special redirect handling to detect redirections
+ // to pages that are indicative of Shibboleth-using servers. Hence we
+ // disable the standard job redirection handling here.
+ _followRedirects = false;
}
void DetermineAuthTypeJob::start()
@@ -535,12 +571,15 @@ bool DetermineAuthTypeJob::finished()
setupConnections(reply());
return false; // don't discard
} else {
+#ifndef NO_SHIBBOLETH
QRegExp shibbolethyWords("SAML|wayf");
shibbolethyWords.setCaseSensitivity(Qt::CaseInsensitive);
if (redirection.toString().contains(shibbolethyWords)) {
emit authType(WizardCommon::Shibboleth);
- } else {
+ } else
+#endif
+ {
// TODO: Send an error.
// eh?
emit authType(WizardCommon::HttpCreds);
diff --git a/src/gui/owncloudsetupwizard.h b/src/gui/owncloudsetupwizard.h
index 65075ad47..8f172c8db 100644
--- a/src/gui/owncloudsetupwizard.h
+++ b/src/gui/owncloudsetupwizard.h
@@ -66,6 +66,8 @@ signals:
private slots:
void slotDetermineAuthType(const QString&);
+ void slotSystemProxyLookupDone(const QNetworkProxy &proxy);
+ void slotContinueDetermineAuth();
void slotOwnCloudFoundAuth(const QUrl&, const QVariantMap&);
void slotNoOwnCloudFoundAuth(QNetworkReply *reply);
void slotNoOwnCloudFoundAuthTimeout(const QUrl&url);
diff --git a/src/gui/protocolwidget.cpp b/src/gui/protocolwidget.cpp
index 8955dc7b7..e97ba9e14 100644
--- a/src/gui/protocolwidget.cpp
+++ b/src/gui/protocolwidget.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -98,6 +99,8 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) :
_issueItemView->setRootIsDecorated(false);
_issueItemView->setTextElideMode(Qt::ElideMiddle);
_issueItemView->header()->setObjectName("ActivityErrorListHeader");
+ connect(_issueItemView, SIGNAL(itemActivated(QTreeWidgetItem*,int)),
+ SLOT(slotOpenFile(QTreeWidgetItem*,int)));
}
ProtocolWidget::~ProtocolWidget()
diff --git a/src/gui/protocolwidget.h b/src/gui/protocolwidget.h
index 46d5acee9..a36d005f2 100644
--- a/src/gui/protocolwidget.h
+++ b/src/gui/protocolwidget.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/proxyauthdialog.cpp b/src/gui/proxyauthdialog.cpp
index 98a58144a..044d8c9f2 100644
--- a/src/gui/proxyauthdialog.cpp
+++ b/src/gui/proxyauthdialog.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/proxyauthdialog.h b/src/gui/proxyauthdialog.h
index c35f69357..5b6f27d03 100644
--- a/src/gui/proxyauthdialog.h
+++ b/src/gui/proxyauthdialog.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/proxyauthhandler.cpp b/src/gui/proxyauthhandler.cpp
index 098e1287e..6d304966a 100644
--- a/src/gui/proxyauthhandler.cpp
+++ b/src/gui/proxyauthhandler.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/proxyauthhandler.h b/src/gui/proxyauthhandler.h
index 9b53a509f..b1fc3d0f8 100644
--- a/src/gui/proxyauthhandler.h
+++ b/src/gui/proxyauthhandler.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/quotainfo.cpp b/src/gui/quotainfo.cpp
index 6ba83ea5b..cab65f49b 100644
--- a/src/gui/quotainfo.cpp
+++ b/src/gui/quotainfo.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/quotainfo.h b/src/gui/quotainfo.h
index 480fe7841..90725e081 100644
--- a/src/gui/quotainfo.h
+++ b/src/gui/quotainfo.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp
index 590158259..026ddbbb2 100644
--- a/src/gui/selectivesyncdialog.cpp
+++ b/src/gui/selectivesyncdialog.cpp
@@ -460,7 +460,7 @@ void SelectiveSyncDialog::accept()
_folder->journalDb()->avoidReadFromDbOnNextSync(it);
}
- folderMan->slotScheduleSync(_folder);
+ folderMan->scheduleFolder(_folder);
}
QDialog::accept();
}
diff --git a/src/gui/servernotificationhandler.cpp b/src/gui/servernotificationhandler.cpp
index 5b8cefeea..bd91e8a1e 100644
--- a/src/gui/servernotificationhandler.cpp
+++ b/src/gui/servernotificationhandler.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/servernotificationhandler.h b/src/gui/servernotificationhandler.h
index 280b219bc..c3d8f185d 100644
--- a/src/gui/servernotificationhandler.h
+++ b/src/gui/servernotificationhandler.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp
index 8ee5f4330..499fb3e0a 100644
--- a/src/gui/settingsdialog.cpp
+++ b/src/gui/settingsdialog.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/settingsdialog.h b/src/gui/settingsdialog.h
index d86c27646..dd4ffd448 100644
--- a/src/gui/settingsdialog.h
+++ b/src/gui/settingsdialog.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/settingsdialogmac.cpp b/src/gui/settingsdialogmac.cpp
index a73d56f03..9e4d6a950 100644
--- a/src/gui/settingsdialogmac.cpp
+++ b/src/gui/settingsdialogmac.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/settingsdialogmac.h b/src/gui/settingsdialogmac.h
index a1b58694e..608c4f8e1 100644
--- a/src/gui/settingsdialogmac.h
+++ b/src/gui/settingsdialogmac.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp
index 1b2e744e5..831807da8 100644
--- a/src/gui/sharedialog.cpp
+++ b/src/gui/sharedialog.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -46,6 +47,7 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
_userGroupWidget(NULL),
_progressIndicator(NULL)
{
+ setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setAttribute(Qt::WA_DeleteOnClose);
setObjectName("SharingDialog"); // required as group for saveGeometry call
diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h
index b89ba8edb..f7a3380d1 100644
--- a/src/gui/sharedialog.h
+++ b/src/gui/sharedialog.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp
index 510d4f9f6..b2458edf2 100644
--- a/src/gui/sharee.cpp
+++ b/src/gui/sharee.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/sharee.h b/src/gui/sharee.h
index f91b8acab..f146c7405 100644
--- a/src/gui/sharee.h
+++ b/src/gui/sharee.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp
index 883d0cade..116cea703 100644
--- a/src/gui/sharelinkwidget.cpp
+++ b/src/gui/sharelinkwidget.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -17,13 +18,14 @@
#include "account.h"
#include "capabilities.h"
-#include "share.h"
+#include "sharemanager.h"
#include "QProgressIndicator.h"
#include <QBuffer>
#include <QClipboard>
#include <QFileInfo>
#include <QDesktopServices>
+#include <QMessageBox>
namespace OCC {
@@ -375,6 +377,7 @@ void ShareLinkWidget::slotCheckBoxShareLinkClicked()
_ui->checkBox_password->setText(tr("Public sh&aring requires a password"));
_ui->checkBox_expire->setEnabled(false);
_ui->checkBox_editing->setEnabled(false);
+ _ui->lineEdit_password->setEnabled(true);
_ui->lineEdit_password->setFocus();
_ui->pushButton_copy->hide();
_ui->pushButton_mail->hide();
@@ -443,6 +446,7 @@ void ShareLinkWidget::slotCheckBoxPasswordClicked()
_ui->lineEdit_password->show();
_ui->pushButton_setPassword->show();
_ui->lineEdit_password->setPlaceholderText(tr("Please Set Password"));
+ _ui->lineEdit_password->setEnabled(true);
_ui->lineEdit_password->setFocus();
} else {
setPassword(QString());
@@ -488,13 +492,20 @@ void ShareLinkWidget::slotPushButtonMailLinkPressed()
{
QString fileName = _sharePath.mid(_sharePath.lastIndexOf('/') + 1);
- QDesktopServices::openUrl(QUrl(QString(
- "mailto: "
- "?subject=I shared %1 with you"
- "&body=%2").arg(
- fileName,
- _shareUrl),
- QUrl::TolerantMode));
+ if (!QDesktopServices::openUrl(QUrl(QString(
+ "mailto: "
+ "?subject=I shared %1 with you"
+ "&body=%2").arg(
+ fileName,
+ _shareUrl),
+ QUrl::TolerantMode))) {
+ QMessageBox::warning(
+ this,
+ tr("Could not open email client"),
+ tr("There was an error when launching the email client to "
+ "create a new message. Maybe no default email client is "
+ "configured?"));
+ }
}
void ShareLinkWidget::slotCheckBoxEditingClicked()
diff --git a/src/gui/sharelinkwidget.h b/src/gui/sharelinkwidget.h
index 7ff94871a..bc663a307 100644
--- a/src/gui/sharelinkwidget.h
+++ b/src/gui/sharelinkwidget.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/share.cpp b/src/gui/sharemanager.cpp
index e3c659489..406626d3b 100644
--- a/src/gui/share.cpp
+++ b/src/gui/sharemanager.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -11,7 +12,7 @@
* for more details.
*/
-#include "share.h"
+#include "sharemanager.h"
#include "ocssharejob.h"
#include "account.h"
@@ -30,9 +31,9 @@ Q_DECLARE_METATYPE(CreateShare)
namespace OCC {
-Share::Share(AccountPtr account,
- const QString& id,
- const QString& path,
+Share::Share(AccountPtr account,
+ const QString& id,
+ const QString& path,
const ShareType shareType,
const Permissions permissions,
const QSharedPointer<Sharee> shareWith)
@@ -100,7 +101,7 @@ void Share::slotDeleted()
void Share::slotOcsError(int statusCode, const QString &message)
{
- emit serverError(statusCode, message);
+ emit serverError(statusCode, message);
}
QUrl LinkShare::getLink() const
@@ -229,7 +230,7 @@ void ShareManager::slotLinkShareCreated(const QVariantMap &reply)
if (code == 403) {
emit linkShareRequiresPassword(message);
return;
- }
+ }
//Parse share
auto data = reply.value("ocs").toMap().value("data").toMap();
@@ -329,7 +330,7 @@ void ShareManager::slotSharesFetched(const QVariantMap &reply)
newShare = parseShare(data);
}
- shares.append(QSharedPointer<Share>(newShare));
+ shares.append(QSharedPointer<Share>(newShare));
}
qDebug() << Q_FUNC_INFO << "Sending " << shares.count() << "shares";
@@ -344,12 +345,12 @@ QSharedPointer<LinkShare> ShareManager::parseLinkShare(const QVariantMap &data)
url = QUrl(data.value("url").toString());
} else if (_account->serverVersionInt() >= (8 << 16)) {
// From ownCloud server version 8 on, a different share link scheme is used.
- url = QUrl(Account::concatUrlPath(_account->url(), QString("index.php/s/%1").arg(data.value("token").toString())).toString());
+ url = QUrl(Utility::concatUrlPath(_account->url(), QString("index.php/s/%1").arg(data.value("token").toString())).toString());
} else {
QList<QPair<QString, QString>> queryArgs;
queryArgs.append(qMakePair(QString("service"), QString("files")));
queryArgs.append(qMakePair(QString("t"), data.value("token").toString()));
- url = QUrl(Account::concatUrlPath(_account->url(), QLatin1String("public.php"), queryArgs).toString());
+ url = QUrl(Utility::concatUrlPath(_account->url(), QLatin1String("public.php"), queryArgs).toString());
}
QDate expireDate;
@@ -371,7 +372,7 @@ QSharedPointer<Share> ShareManager::parseShare(const QVariantMap &data)
QSharedPointer<Sharee> sharee(new Sharee(data.value("share_with").toString(),
data.value("share_with_displayname").toString(),
(Sharee::Type)data.value("share_type").toInt()));
-
+
return QSharedPointer<Share>(new Share(_account,
data.value("id").toString(),
data.value("path").toString(),
diff --git a/src/gui/share.h b/src/gui/sharemanager.h
index e022624b4..eaec2e61f 100644
--- a/src/gui/share.h
+++ b/src/gui/sharemanager.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -11,8 +12,8 @@
* for more details.
*/
-#ifndef SHARE_H
-#define SHARE_H
+#ifndef SHAREMANAGER_H
+#define SHAREMANAGER_H
#include "accountfwd.h"
#include "sharee.h"
@@ -127,7 +128,7 @@ private slots:
class LinkShare : public Share {
Q_OBJECT
public:
-
+
explicit LinkShare(AccountPtr account,
const QString& id,
const QString& path,
@@ -154,7 +155,7 @@ public:
* In case of a server error the serverError signal is emitted.
*/
void setPublicUpload(bool publicUpload);
-
+
/*
* Set the password
*
@@ -276,7 +277,6 @@ private:
AccountPtr _account;
};
-
}
-#endif // SHARE_H
+#endif // SHAREMANAGER_H
diff --git a/src/gui/sharepermissions.h b/src/gui/sharepermissions.h
index 02c7a0b05..8a8f906e9 100644
--- a/src/gui/sharepermissions.h
+++ b/src/gui/sharepermissions.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/shareusergroupwidget.cpp b/src/gui/shareusergroupwidget.cpp
index a2b9a5d9f..c1b798e5b 100644
--- a/src/gui/shareusergroupwidget.cpp
+++ b/src/gui/shareusergroupwidget.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -24,8 +25,8 @@
#include "capabilities.h"
#include "thumbnailjob.h"
-#include "share.h"
#include "sharee.h"
+#include "sharemanager.h"
#include "QProgressIndicator.h"
#include <QBuffer>
@@ -248,10 +249,12 @@ void ShareUserGroupWidget::slotCompleterActivated(const QModelIndex & index)
layout->addWidget(indicator);
/*
- * Don't send the reshare permissions for federataed shares
+ * Don't send the reshare permissions for federated shares for servers <9.1
* https://github.com/owncloud/core/issues/22122#issuecomment-185637344
+ * https://github.com/owncloud/client/issues/4996
*/
- if (sharee->type() == Sharee::Federated) {
+ if (sharee->type() == Sharee::Federated
+ && _account->serverVersionInt() < 0x090100) {
int permissions = SharePermissionRead | SharePermissionUpdate;
if (!_isFile) {
permissions |= SharePermissionCreate | SharePermissionDelete;
@@ -335,10 +338,12 @@ ShareWidget::ShareWidget(QSharedPointer<Share> share,
connect(_ui->permissionsEdit, SIGNAL(clicked(bool)), SLOT(slotEditPermissionsChanged()));
/*
- * We don't show permssion share for federated shares
+ * We don't show permssion share for federated shares with server <9.1
* https://github.com/owncloud/core/issues/22122#issuecomment-185637344
+ * https://github.com/owncloud/client/issues/4996
*/
- if (share->getShareType() == Share::TypeRemote) {
+ if (share->getShareType() == Share::TypeRemote
+ && share->account()->serverVersionInt() < 0x090100) {
_ui->permissionShare->setVisible(false);
_ui->permissionToolButton->setVisible(false);
}
diff --git a/src/gui/shareusergroupwidget.h b/src/gui/shareusergroupwidget.h
index c99d22f6c..5448d73f1 100644
--- a/src/gui/shareusergroupwidget.h
+++ b/src/gui/shareusergroupwidget.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp
index 57a296825..4adcbf83c 100644
--- a/src/gui/socketapi.cpp
+++ b/src/gui/socketapi.cpp
@@ -74,7 +74,7 @@ SocketApi::SocketApi(QObject* parent)
if (Utility::isWindows()) {
socketPath = QLatin1String("\\\\.\\pipe\\")
- + QLatin1String("ownCloud") + '\\'
+ + QLatin1String("ownCloud-")
+ QString::fromLocal8Bit(qgetenv("USERNAME"));
// TODO: once the windows extension supports multiple
// client connections, switch back to the theme name
diff --git a/src/gui/sslbutton.cpp b/src/gui/sslbutton.cpp
index 4a2586519..93b157f1c 100644
--- a/src/gui/sslbutton.cpp
+++ b/src/gui/sslbutton.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/sslbutton.h b/src/gui/sslbutton.h
index 6de7999c8..dec5e74f1 100644
--- a/src/gui/sslbutton.h
+++ b/src/gui/sslbutton.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/synclogdialog.cpp b/src/gui/synclogdialog.cpp
index d6e2c8b82..885b61d42 100644
--- a/src/gui/synclogdialog.cpp
+++ b/src/gui/synclogdialog.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/synclogdialog.h b/src/gui/synclogdialog.h
index 10c349c71..1ca0a3e54 100644
--- a/src/gui/synclogdialog.h
+++ b/src/gui/synclogdialog.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/syncrunfilelog.cpp b/src/gui/syncrunfilelog.cpp
index bc312cc3d..13d7bdf99 100644
--- a/src/gui/syncrunfilelog.cpp
+++ b/src/gui/syncrunfilelog.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -81,6 +82,9 @@ QString SyncRunFileLog::instructionToStr( csync_instructions_e inst )
case CSYNC_INSTRUCTION_TYPE_CHANGE:
re = "INST_TYPE_CHANGE";
break;
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
+ re = "INST_METADATA";
+ break;
}
return re;
@@ -142,7 +146,11 @@ void SyncRunFileLog::logItem( const SyncFileItem& item )
const QChar L = QLatin1Char('|');
_out << ts << L;
_out << QString::number(item._requestDuration) << L;
- _out << item._file << L;
+ if( item.log._instruction != CSYNC_INSTRUCTION_RENAME ) {
+ _out << item._file << L;
+ } else {
+ _out << item._file << QLatin1String(" -> ") << item._renameTarget << L;
+ }
_out << instructionToStr( item.log._instruction ) << L;
_out << directionToStr( item._direction ) << L;
_out << QString::number(item.log._modtime) << L;
diff --git a/src/gui/syncrunfilelog.h b/src/gui/syncrunfilelog.h
index 7f3007815..4f54a45c0 100644
--- a/src/gui/syncrunfilelog.h
+++ b/src/gui/syncrunfilelog.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/thumbnailjob.cpp b/src/gui/thumbnailjob.cpp
index 6bae3e8dc..d3e92cb42 100644
--- a/src/gui/thumbnailjob.cpp
+++ b/src/gui/thumbnailjob.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/thumbnailjob.h b/src/gui/thumbnailjob.h
index 2c958d507..13b754380 100644
--- a/src/gui/thumbnailjob.h
+++ b/src/gui/thumbnailjob.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/tooltipupdater.cpp b/src/gui/tooltipupdater.cpp
index 9edcb8d6e..a8136731c 100644
--- a/src/gui/tooltipupdater.cpp
+++ b/src/gui/tooltipupdater.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/tooltipupdater.h b/src/gui/tooltipupdater.h
index 2528a8881..e1eefb453 100644
--- a/src/gui/tooltipupdater.h
+++ b/src/gui/tooltipupdater.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/updater/sparkleupdater.h b/src/gui/updater/sparkleupdater.h
index e058ecfa8..22c93d80f 100644
--- a/src/gui/updater/sparkleupdater.h
+++ b/src/gui/updater/sparkleupdater.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/updater/sparkleupdater_mac.mm b/src/gui/updater/sparkleupdater_mac.mm
index e093ff75f..b117026fc 100644
--- a/src/gui/updater/sparkleupdater_mac.mm
+++ b/src/gui/updater/sparkleupdater_mac.mm
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/updater/updater.cpp b/src/gui/updater/updater.cpp
index 6794e5909..48ca7040c 100644
--- a/src/gui/updater/updater.cpp
+++ b/src/gui/updater/updater.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/updater/updater.h b/src/gui/updater/updater.h
index 6f3c35256..fd40045e2 100644
--- a/src/gui/updater/updater.h
+++ b/src/gui/updater/updater.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/abstractcredswizardpage.cpp b/src/gui/wizard/abstractcredswizardpage.cpp
index 559d673e0..ce5a4fdf4 100644
--- a/src/gui/wizard/abstractcredswizardpage.cpp
+++ b/src/gui/wizard/abstractcredswizardpage.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/abstractcredswizardpage.h b/src/gui/wizard/abstractcredswizardpage.h
index 8f4e9ec72..82d61ac42 100644
--- a/src/gui/wizard/abstractcredswizardpage.h
+++ b/src/gui/wizard/abstractcredswizardpage.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/owncloudadvancedsetuppage.ui b/src/gui/wizard/owncloudadvancedsetuppage.ui
index 660e43a5a..74ec741ea 100644
--- a/src/gui/wizard/owncloudadvancedsetuppage.ui
+++ b/src/gui/wizard/owncloudadvancedsetuppage.ui
@@ -267,6 +267,12 @@
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QRadioButton" name="rSelectiveSync">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string/>
</property>
diff --git a/src/gui/wizard/owncloudconnectionmethoddialog.cpp b/src/gui/wizard/owncloudconnectionmethoddialog.cpp
index fcef6fef0..367069ff6 100644
--- a/src/gui/wizard/owncloudconnectionmethoddialog.cpp
+++ b/src/gui/wizard/owncloudconnectionmethoddialog.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/owncloudconnectionmethoddialog.h b/src/gui/wizard/owncloudconnectionmethoddialog.h
index ee3a0a0c3..b08076f59 100644
--- a/src/gui/wizard/owncloudconnectionmethoddialog.h
+++ b/src/gui/wizard/owncloudconnectionmethoddialog.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/owncloudhttpcredspage.cpp b/src/gui/wizard/owncloudhttpcredspage.cpp
index d670b3cac..4c33ed9d3 100644
--- a/src/gui/wizard/owncloudhttpcredspage.cpp
+++ b/src/gui/wizard/owncloudhttpcredspage.cpp
@@ -30,7 +30,6 @@ OwncloudHttpCredsPage::OwncloudHttpCredsPage(QWidget* parent)
: AbstractCredentialsWizardPage(),
_ui(),
_connected(false),
- _checking(false),
_progressIndi(new QProgressIndicator (this))
{
_ui.setupUi(this);
@@ -133,14 +132,20 @@ bool OwncloudHttpCredsPage::validatePage()
if (!_connected) {
_ui.errorLabel->setVisible(false);
- _checking = true;
startSpinner();
+
+ // Reset cookies to ensure the username / password is actually used
+ OwncloudWizard* ocWizard = qobject_cast< OwncloudWizard* >(wizard());
+ ocWizard->account()->clearCookieJar();
+
emit completeChanged();
emit connectToOCUrl(field("OCUrl").toString().simplified());
return false;
} else {
- _checking = false;
+ // Reset, to require another connection attempt next time
+ _connected = false;
+
emit completeChanged();
stopSpinner();
return true;
@@ -153,9 +158,9 @@ int OwncloudHttpCredsPage::nextId() const
return WizardCommon::Page_AdvancedSetup;
}
-void OwncloudHttpCredsPage::setConnected( bool comp )
+void OwncloudHttpCredsPage::setConnected()
{
- _connected = comp;
+ _connected = true;
stopSpinner ();
}
@@ -181,7 +186,6 @@ void OwncloudHttpCredsPage::setErrorString(const QString& err)
_ui.errorLabel->setVisible(true);
_ui.errorLabel->setText(err);
}
- _checking = false;
emit completeChanged();
stopSpinner();
}
diff --git a/src/gui/wizard/owncloudhttpcredspage.h b/src/gui/wizard/owncloudhttpcredspage.h
index 2a40b54af..f339b23ec 100644
--- a/src/gui/wizard/owncloudhttpcredspage.h
+++ b/src/gui/wizard/owncloudhttpcredspage.h
@@ -40,7 +40,7 @@ public:
void cleanupPage() Q_DECL_OVERRIDE;
bool validatePage() Q_DECL_OVERRIDE;
int nextId() const Q_DECL_OVERRIDE;
- void setConnected(bool connected);
+ void setConnected();
void setErrorString( const QString& err );
Q_SIGNALS:
@@ -53,7 +53,6 @@ private:
Ui_OwncloudHttpCredsPage _ui;
bool _connected;
- bool _checking;
QProgressIndicator* _progressIndi;
OwncloudWizard* _ocWizard;
};
diff --git a/src/gui/wizard/owncloudshibbolethcredspage.cpp b/src/gui/wizard/owncloudshibbolethcredspage.cpp
index 22401bbc5..8fe1706bd 100644
--- a/src/gui/wizard/owncloudshibbolethcredspage.cpp
+++ b/src/gui/wizard/owncloudshibbolethcredspage.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/owncloudshibbolethcredspage.h b/src/gui/wizard/owncloudshibbolethcredspage.h
index 13c09a01b..75584674d 100644
--- a/src/gui/wizard/owncloudshibbolethcredspage.h
+++ b/src/gui/wizard/owncloudshibbolethcredspage.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp
index 946c74558..28faaa933 100644
--- a/src/gui/wizard/owncloudwizard.cpp
+++ b/src/gui/wizard/owncloudwizard.cpp
@@ -20,7 +20,9 @@
#include "wizard/owncloudwizard.h"
#include "wizard/owncloudsetuppage.h"
#include "wizard/owncloudhttpcredspage.h"
+#ifndef NO_SHIBBOLETH
#include "wizard/owncloudshibbolethcredspage.h"
+#endif
#include "wizard/owncloudadvancedsetuppage.h"
#include "wizard/owncloudwizardresultpage.h"
@@ -39,7 +41,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
_account(0),
_setupPage(new OwncloudSetupPage(this)),
_httpCredsPage(new OwncloudHttpCredsPage(this)),
+#ifndef NO_SHIBBOLETH
_shibbolethCredsPage(new OwncloudShibbolethCredsPage),
+#endif
_advancedSetupPage(new OwncloudAdvancedSetupPage),
_resultPage(new OwncloudWizardResultPage),
_credentialsPage(0),
@@ -48,7 +52,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setPage(WizardCommon::Page_ServerSetup, _setupPage);
setPage(WizardCommon::Page_HttpCreds, _httpCredsPage);
+#ifndef NO_SHIBBOLETH
setPage(WizardCommon::Page_ShibbolethCreds, _shibbolethCredsPage);
+#endif
setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
setPage(WizardCommon::Page_Result, _resultPage);
@@ -61,7 +67,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
connect( this, SIGNAL(currentIdChanged(int)), SLOT(slotCurrentPageChanged(int)));
connect( _setupPage, SIGNAL(determineAuthType(QString)), SIGNAL(determineAuthType(QString)));
connect( _httpCredsPage, SIGNAL(connectToOCUrl(QString)), SIGNAL(connectToOCUrl(QString)));
+#ifndef NO_SHIBBOLETH
connect( _shibbolethCredsPage, SIGNAL(connectToOCUrl(QString)), SIGNAL(connectToOCUrl(QString)));
+#endif
connect( _advancedSetupPage, SIGNAL(createLocalAndRemoteFolders(QString, QString)),
SIGNAL(createLocalAndRemoteFolders(QString, QString)));
connect(this, SIGNAL(customButtonClicked(int)), this, SIGNAL(skipFolderConfiguration()));
@@ -125,12 +133,14 @@ void OwncloudWizard::successfulStep()
switch (id) {
case WizardCommon::Page_HttpCreds:
- _httpCredsPage->setConnected(true);
+ _httpCredsPage->setConnected();
break;
+#ifndef NO_SHIBBOLETH
case WizardCommon::Page_ShibbolethCreds:
_shibbolethCredsPage->setConnected();
break;
+#endif
case WizardCommon::Page_AdvancedSetup:
_advancedSetupPage->directoriesCreated();
@@ -148,9 +158,12 @@ void OwncloudWizard::successfulStep()
void OwncloudWizard::setAuthType(WizardCommon::AuthType type)
{
_setupPage->setAuthType(type);
+#ifndef NO_SHIBBOLETH
if (type == WizardCommon::Shibboleth) {
_credentialsPage = _shibbolethCredsPage;
- } else {
+ } else
+#endif
+ {
_credentialsPage = _httpCredsPage;
}
next();
@@ -172,12 +185,6 @@ void OwncloudWizard::slotCurrentPageChanged( int id )
}
setOption(QWizard::HaveCustomButton1, id == WizardCommon::Page_AdvancedSetup);
-
- if (id == WizardCommon::Page_AdvancedSetup) {
- // Going back from this page messes the state as the account is created already
- button(QWizard::BackButton)->setDisabled(true);
- }
-
}
void OwncloudWizard::displayError( const QString& msg, bool retryHTTPonly )
diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h
index 401bfc83b..1f2e79739 100644
--- a/src/gui/wizard/owncloudwizard.h
+++ b/src/gui/wizard/owncloudwizard.h
@@ -25,7 +25,9 @@ namespace OCC {
class OwncloudSetupPage;
class OwncloudHttpCredsPage;
+#ifndef NO_SHIBBOLETH
class OwncloudShibbolethCredsPage;
+#endif
class OwncloudAdvancedSetupPage;
class OwncloudWizardResultPage;
class AbstractCredentials;
@@ -88,7 +90,9 @@ private:
AccountPtr _account;
OwncloudSetupPage* _setupPage;
OwncloudHttpCredsPage* _httpCredsPage;
+#ifndef NO_SHIBBOLETH
OwncloudShibbolethCredsPage* _shibbolethCredsPage;
+#endif
OwncloudAdvancedSetupPage* _advancedSetupPage;
OwncloudWizardResultPage* _resultPage;
AbstractCredentialsWizardPage* _credentialsPage;
diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt
index 450f73f2a..92b69c152 100644
--- a/src/libsync/CMakeLists.txt
+++ b/src/libsync/CMakeLists.txt
@@ -1,6 +1,5 @@
project(libsync)
set(CMAKE_AUTOMOC TRUE)
-include(GenerateExportHeader)
configure_file( version.h.in "${CMAKE_CURRENT_BINARY_DIR}/version.h" )
@@ -51,6 +50,8 @@ set(libsync_SRCS
propagatorjobs.cpp
propagatedownload.cpp
propagateupload.cpp
+ propagateuploadv1.cpp
+ propagateuploadng.cpp
propagateremotedelete.cpp
propagateremotemove.cpp
propagateremotemkdir.cpp
diff --git a/src/libsync/abstractnetworkjob.cpp b/src/libsync/abstractnetworkjob.cpp
index 4599ecaa2..aa3b49fde 100644
--- a/src/libsync/abstractnetworkjob.cpp
+++ b/src/libsync/abstractnetworkjob.cpp
@@ -43,7 +43,7 @@ namespace OCC {
AbstractNetworkJob::AbstractNetworkJob(AccountPtr account, const QString &path, QObject *parent)
: QObject(parent)
, _timedout(false)
- , _followRedirects(false)
+ , _followRedirects(true)
, _account(account)
, _ignoreCredentialFailure(false)
, _reply(0)
diff --git a/src/libsync/accessmanager.cpp b/src/libsync/accessmanager.cpp
index a0541c525..f8730e988 100644
--- a/src/libsync/accessmanager.cpp
+++ b/src/libsync/accessmanager.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -63,6 +64,10 @@ QNetworkReply* AccessManager::createRequest(QNetworkAccessManager::Operation op,
}
newRequest.setRawHeader(QByteArray("User-Agent"), Utility::userAgentString());
+
+ // Some firewalls reject requests that have a "User-Agent" but no "Accept" header
+ newRequest.setRawHeader(QByteArray("Accept"), "*/*");
+
QByteArray verb = newRequest.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray();
// For PROPFIND (assumed to be a WebDAV op), set xml/utf8 as content type/encoding
// This needs extension
diff --git a/src/libsync/accessmanager.h b/src/libsync/accessmanager.h
index 00e0d225a..bbe28ab96 100644
--- a/src/libsync/accessmanager.h
+++ b/src/libsync/accessmanager.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp
index 510dfd3aa..f5b81fd72 100644
--- a/src/libsync/account.cpp
+++ b/src/libsync/account.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -39,7 +40,6 @@ Account::Account(QObject *parent)
: QObject(parent)
, _capabilities(QVariantMap())
, _davPath( Theme::instance()->webDavPath() )
- , _wasMigrated(false)
{
qRegisterMetaType<AccountPtr>("AccountPtr");
}
@@ -76,11 +76,19 @@ AccountPtr Account::sharedFromThis()
return _sharedThis.toStrongRef();
}
+QString Account::user() const
+{
+ return _user.isEmpty() ? _credentials->user() : _user;
+}
+
+void Account::setUser(const QString &user)
+{
+ _user = user;
+}
QString Account::displayName() const
{
- auto user = _credentials->user();
- QString dn = QString("%1@%2").arg(user, _url.host());
+ QString dn = QString("%1@%2").arg(user(), _url.host());
int port = url().port();
if (port > 0 && port != 80 && port != 443) {
dn.append(QLatin1Char(':'));
@@ -94,30 +102,6 @@ QString Account::id() const
return _id;
}
-static bool isEqualExceptProtocol(const QUrl &url1, const QUrl &url2)
-{
- return (url1.host() != url2.host() ||
- url1.port() != url2.port() ||
- url1.path() != url2.path());
-}
-
-bool Account::changed(AccountPtr other, bool ignoreUrlProtocol) const
-{
- if (!other) {
- return false;
- }
- bool changes = false;
- if (ignoreUrlProtocol) {
- changes = isEqualExceptProtocol(_url, other->_url);
- } else {
- changes = (_url == other->_url);
- }
-
- changes |= _credentials->changed(other->credentials());
-
- return changes;
-}
-
AbstractCredentials *Account::credentials() const
{
return _credentials.data();
@@ -157,12 +141,7 @@ void Account::setCredentials(AbstractCredentials *cred)
QUrl Account::davUrl() const
{
- return concatUrlPath(url(), davPath());
-}
-
-QList<QNetworkCookie> Account::lastAuthCookies() const
-{
- return _am->cookieJar()->cookiesForUrl(_url);
+ return Utility::concatUrlPath(url(), davPath());
}
void Account::clearCookieJar()
@@ -209,7 +188,7 @@ QNetworkAccessManager *Account::networkAccessManager()
QNetworkReply *Account::headRequest(const QString &relPath)
{
- return headRequest(concatUrlPath(url(), relPath));
+ return headRequest(Utility::concatUrlPath(url(), relPath));
}
QNetworkReply *Account::headRequest(const QUrl &url)
@@ -223,7 +202,7 @@ QNetworkReply *Account::headRequest(const QUrl &url)
QNetworkReply *Account::getRequest(const QString &relPath)
{
- return getRequest(concatUrlPath(url(), relPath));
+ return getRequest(Utility::concatUrlPath(url(), relPath));
}
QNetworkReply *Account::getRequest(const QUrl &url)
@@ -246,7 +225,7 @@ QNetworkReply *Account::deleteRequest( const QUrl &url)
QNetworkReply *Account::davRequest(const QByteArray &verb, const QString &relPath, QNetworkRequest req, QIODevice *data)
{
- return davRequest(verb, concatUrlPath(davUrl(), relPath), req, data);
+ return davRequest(verb, Utility::concatUrlPath(davUrl(), relPath), req, data);
}
QNetworkReply *Account::davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
@@ -340,43 +319,6 @@ void Account::setUrl(const QUrl &url)
_url = url;
}
-QUrl Account::concatUrlPath(const QUrl &url, const QString &concatPath,
- const QList< QPair<QString, QString> > &queryItems)
-{
- QString path = url.path();
- if (! concatPath.isEmpty()) {
- // avoid '//'
- if (path.endsWith('/') && concatPath.startsWith('/')) {
- path.chop(1);
- } // avoid missing '/'
- else if (!path.endsWith('/') && !concatPath.startsWith('/')) {
- path += QLatin1Char('/');
- }
- path += concatPath; // put the complete path together
- }
-
- QUrl tmpUrl = url;
- tmpUrl.setPath(path);
- if( queryItems.size() > 0 ) {
- tmpUrl.setQueryItems(queryItems);
- }
- return tmpUrl;
-}
-
-QString Account::_configFileName;
-
-std::unique_ptr<QSettings> Account::settingsWithGroup(const QString& group, QObject *parent)
-{
- if (_configFileName.isEmpty()) {
- // cache file name
- ConfigFile cfg;
- _configFileName = cfg.configFile();
- }
- std::unique_ptr<QSettings> settings(new QSettings(_configFileName, QSettings::IniFormat, parent));
- settings->beginGroup(group);
- return settings;
-}
-
QVariant Account::credentialSetting(const QString &key) const
{
if (_credentials) {
@@ -475,16 +417,6 @@ void Account::handleInvalidCredentials()
emit invalidCredentials();
}
-bool Account::wasMigrated()
-{
- return _wasMigrated;
-}
-
-void Account::setMigrated(bool mig)
-{
- _wasMigrated = mig;
-}
-
const Capabilities &Account::capabilities() const
{
return _capabilities;
diff --git a/src/libsync/account.h b/src/libsync/account.h
index c4852e3ae..828478e33 100644
--- a/src/libsync/account.h
+++ b/src/libsync/account.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -56,57 +57,50 @@ public:
/**
* @brief The Account class represents an account on an ownCloud Server
* @ingroup libsync
+ *
+ * The Account has a name and url. It also has information about credentials,
+ * SSL errors and certificates.
*/
class OWNCLOUDSYNC_EXPORT Account : public QObject {
Q_OBJECT
public:
- /**
- * @brief The possibly themed dav path for the account. It has
- * a trailing slash.
- * @returns the (themeable) dav path for the account.
- */
- QString davPath() const;
- void setDavPath(const QString&s) { _davPath = s; }
- void setNonShib(bool nonShib);
-
static AccountPtr create();
~Account();
- void setSharedThis(AccountPtr sharedThis);
AccountPtr sharedFromThis();
+ /// The user that can be used in dav url
+ QString user() const;
+ void setUser(const QString &user);
+
/// The name of the account as shown in the toolbar
QString displayName() const;
/// The internal id of the account.
QString id() const;
- /**
- * @brief Checks the Account instance is different from @param other
- *
- * @returns true, if credentials or url have changed, false otherwise
- */
- bool changed(AccountPtr other, bool ignoreUrlProtocol) const;
-
- /** Holds the accounts credentials */
- AbstractCredentials* credentials() const;
- void setCredentials(AbstractCredentials *cred);
-
/** Server url of the account */
void setUrl(const QUrl &url);
QUrl url() const { return _url; }
+ /**
+ * @brief The possibly themed dav path for the account. It has
+ * a trailing slash.
+ * @returns the (themeable) dav path for the account.
+ */
+ QString davPath() const;
+ void setDavPath(const QString&s) { _davPath = s; }
+ void setNonShib(bool nonShib);
+
/** Returns webdav entry URL, based on url() */
QUrl davUrl() const;
- /** set and retrieve the migration flag: if an account of a branded
- * client was migrated from a former ownCloud Account, this is true
- */
- void setMigrated(bool mig);
- bool wasMigrated();
+ /** Holds the accounts credentials */
+ AbstractCredentials* credentials() const;
+ void setCredentials(AbstractCredentials *cred);
- QList<QNetworkCookie> lastAuthCookies() const;
+ // For creating various network requests
QNetworkReply* headRequest(const QString &relPath);
QNetworkReply* headRequest(const QUrl &url);
QNetworkReply* getRequest(const QString &relPath);
@@ -115,6 +109,7 @@ public:
QNetworkReply* davRequest(const QByteArray &verb, const QString &relPath, QNetworkRequest req, QIODevice *data = 0);
QNetworkReply* davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data = 0);
+
/** The ssl configuration during the first connection */
QSslConfiguration getOrCreateSslConfig();
QSslConfiguration sslConfiguration() const { return _sslConfiguration; }
@@ -138,25 +133,21 @@ public:
// pluggable handler
void setSslErrorHandler(AbstractSslErrorHandler *handler);
- // static helper function
- static QUrl concatUrlPath(const QUrl &url, const QString &concatPath,
- const QList< QPair<QString, QString> > &queryItems = (QList<QPair<QString, QString>>()));
-
- /** Returns a new settings pre-set in a specific group. The Settings will be created
- with the given parent. If no parent is specified, the caller must destroy the settings */
- static std::unique_ptr<QSettings> settingsWithGroup(const QString& group, QObject* parent = 0);
-
- // to be called by credentials only
+ // To be called by credentials only, for storing username and the like
QVariant credentialSetting(const QString& key) const;
void setCredentialSetting(const QString& key, const QVariant &value);
+ /** Assign a client certificate */
void setCertificate(const QByteArray certficate = QByteArray(), const QString privateKey = QString());
- void setCapabilities(const QVariantMap &caps);
+ /** Access the server capabilities */
const Capabilities &capabilities() const;
- void setServerVersion(const QString &version);
+ void setCapabilities(const QVariantMap &caps);
+
+ /** Access the server version */
QString serverVersion() const;
int serverVersionInt() const;
+ void setServerVersion(const QString &version);
/** Whether the server is too old.
*
@@ -171,6 +162,7 @@ public:
bool serverVersionUnsupported() const;
// Fixed from 8.1 https://github.com/owncloud/client/issues/3730
+ /** Detects a specific bug in older server versions */
bool rootEtagChangesNotOnlySubFolderEtags();
void clearCookieJar();
@@ -179,12 +171,16 @@ public:
void resetNetworkAccessManager();
QNetworkAccessManager* networkAccessManager();
- /// Called by network jobs on credential errors.
+ /// Called by network jobs on credential errors, emits invalidCredentials()
void handleInvalidCredentials();
signals:
+ /// Emitted whenever there's network activity
void propagatorNetworkActivity();
+
+ /// Triggered by handleInvalidCredentials()
void invalidCredentials();
+
void credentialsFetched(AbstractCredentials* credentials);
void credentialsAsked(AbstractCredentials* credentials);
@@ -203,9 +199,11 @@ protected Q_SLOTS:
private:
Account(QObject *parent = 0);
+ void setSharedThis(AccountPtr sharedThis);
QWeakPointer<Account> _sharedThis;
QString _id;
+ QString _user;
QMap<QString, QVariant> _settingsMap;
QUrl _url;
QList<QSslCertificate> _approvedCerts;
@@ -224,7 +222,6 @@ private:
QByteArray _pemCertificate;
QString _pemPrivateKey;
QString _davPath; // defaults to value from theme, might be overwritten in brandings
- bool _wasMigrated;
friend class AccountManager;
};
diff --git a/src/libsync/accountfwd.h b/src/libsync/accountfwd.h
index 828199833..9345bc1e3 100644
--- a/src/libsync/accountfwd.h
+++ b/src/libsync/accountfwd.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp
index 7e4ff5259..14acfa3a6 100644
--- a/src/libsync/capabilities.cpp
+++ b/src/libsync/capabilities.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -73,7 +74,8 @@ bool Capabilities::shareResharing() const
bool Capabilities::notificationsAvailable() const
{
- return _capabilities.contains("notifications");
+ // We require the OCS style API in 9.x, can't deal with the REST one only found in 8.2
+ return _capabilities.contains("notifications") && _capabilities["notifications"].toMap().contains("ocs-endpoints");
}
bool Capabilities::isValid() const
@@ -106,4 +108,10 @@ QByteArray Capabilities::uploadChecksumType() const
return QByteArray();
}
+bool Capabilities::chunkingNg() const
+{
+ return _capabilities["dav"].toMap()["chunking"].toByteArray() >= "1.0";
+}
+
+
}
diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h
index 04eef6e39..861cf18ae 100644
--- a/src/libsync/capabilities.h
+++ b/src/libsync/capabilities.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -39,6 +40,7 @@ public:
bool sharePublicLinkEnforceExpireDate() const;
int sharePublicLinkExpireDateDays() const;
bool shareResharing() const;
+ bool chunkingNg() const;
/// returns true if the capabilities report notifications
bool notificationsAvailable() const;
diff --git a/src/libsync/clientproxy.cpp b/src/libsync/clientproxy.cpp
index 721906645..5cb9cde95 100644
--- a/src/libsync/clientproxy.cpp
+++ b/src/libsync/clientproxy.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -129,7 +130,6 @@ SystemProxyRunnable::SystemProxyRunnable(const QUrl &url) : QObject(), QRunnable
void SystemProxyRunnable::run()
{
- qDebug() << Q_FUNC_INFO << "Starting system proxy lookup";
qRegisterMetaType<QNetworkProxy>("QNetworkProxy");
QList<QNetworkProxy> proxies = QNetworkProxyFactory::systemProxyForQuery(QNetworkProxyQuery(_url));
diff --git a/src/libsync/clientproxy.h b/src/libsync/clientproxy.h
index c377a04d8..77884feff 100644
--- a/src/libsync/clientproxy.h
+++ b/src/libsync/clientproxy.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -57,7 +58,7 @@ private:
QUrl _url;
};
-QString printQNetworkProxy(const QNetworkProxy &proxy);
+OWNCLOUDSYNC_EXPORT QString printQNetworkProxy(const QNetworkProxy &proxy);
}
diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp
index acf3d6ad5..4c8a30bf6 100644
--- a/src/libsync/configfile.cpp
+++ b/src/libsync/configfile.cpp
@@ -611,7 +611,12 @@ void ConfigFile::setPromptDeleteFiles(bool promptDeleteFiles)
bool ConfigFile::monoIcons() const
{
QSettings settings(configFile(), QSettings::IniFormat);
- return settings.value(QLatin1String(monoIconsC), false).toBool();
+ bool monoDefault = false; // On Mac we want bw by default
+#ifdef Q_OS_MAC
+ // OEM themes are not obliged to ship mono icons
+ monoDefault = (0 == (strcmp("ownCloud",APPLICATION_NAME)));
+#endif
+ return settings.value(QLatin1String(monoIconsC), monoDefault).toBool();
}
void ConfigFile::setMonoIcons(bool useMonoIcons)
diff --git a/src/libsync/connectionvalidator.cpp b/src/libsync/connectionvalidator.cpp
index 2a955a521..676cb04a9 100644
--- a/src/libsync/connectionvalidator.cpp
+++ b/src/libsync/connectionvalidator.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -106,7 +107,7 @@ void ConnectionValidator::slotCheckServerAndAuth()
checkJob->setTimeout(timeoutToUseMsec);
checkJob->setIgnoreCredentialFailure(true);
connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap)));
- connect(checkJob, SIGNAL(networkError(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
+ connect(checkJob, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*)));
connect(checkJob, SIGNAL(timeout(QUrl)), SLOT(slotJobTimeout(QUrl)));
checkJob->start();
}
@@ -229,10 +230,26 @@ void ConnectionValidator::slotCapabilitiesRecieved(const QVariantMap &json)
auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities");
qDebug() << "Server capabilities" << caps;
_account->setCapabilities(caps.toMap());
- reportResult(Connected);
- return;
+ fetchUser();
}
+void ConnectionValidator::fetchUser()
+{
+
+ JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/user"), this);
+ job->setTimeout(timeoutToUseMsec);
+ QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotUserFetched(QVariantMap)));
+ job->start();
+}
+
+void ConnectionValidator::slotUserFetched(const QVariantMap &json)
+{
+ QString user = json.value("ocs").toMap().value("data").toMap().value("id").toString();
+ if (!user.isEmpty()) {
+ _account->setUser(user);
+ }
+ reportResult(Connected);
+}
void ConnectionValidator::reportResult(Status status)
{
diff --git a/src/libsync/connectionvalidator.h b/src/libsync/connectionvalidator.h
index e1264628a..13e1435a5 100644
--- a/src/libsync/connectionvalidator.h
+++ b/src/libsync/connectionvalidator.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -27,7 +28,7 @@ namespace OCC {
* This is a job-like class to check that the server is up and that we are connected.
* There are two entry points: checkServerAndAuth and checkAuthentication
* checkAuthentication is the quick version that only does the propfind
- * while checkServerAndAuth is doing the 3 calls.
+ * while checkServerAndAuth is doing the 4 calls.
*
* We cannot use the capabilites call to test the login and the password because of
* https://github.com/owncloud/core/issues/12930
@@ -60,7 +61,15 @@ namespace OCC {
+-> checkServerCapabilities (cloud/capabilities)
JsonApiJob
|
- +-> slotCapabilitiesRecieved --> X
+ +-> slotCapabilitiesRecieved -+
+ |
+ +-----------------------------------+
+ |
+ +-> fetchUser
+ PropfindJob
+ |
+ +-> slotUserFetched --> X
+
\endcode
*/
class OWNCLOUDSYNC_EXPORT ConnectionValidator : public QObject
@@ -109,10 +118,12 @@ protected slots:
void slotAuthSuccess();
void slotCapabilitiesRecieved(const QVariantMap&);
+ void slotUserFetched(const QVariantMap &);
private:
void reportResult(Status status);
void checkServerCapabilities();
+ void fetchUser();
QStringList _errors;
AccountPtr _account;
diff --git a/src/libsync/cookiejar.cpp b/src/libsync/cookiejar.cpp
index 6b68df6f1..fd8c5cf99 100644
--- a/src/libsync/cookiejar.cpp
+++ b/src/libsync/cookiejar.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/cookiejar.h b/src/libsync/cookiejar.h
index a83e60158..8bc78dc6a 100644
--- a/src/libsync/cookiejar.h
+++ b/src/libsync/cookiejar.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/creds/abstractcredentials.cpp b/src/libsync/creds/abstractcredentials.cpp
index cc9fc8e24..c54c2c77c 100644
--- a/src/libsync/creds/abstractcredentials.cpp
+++ b/src/libsync/creds/abstractcredentials.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/creds/abstractcredentials.h b/src/libsync/creds/abstractcredentials.h
index b45bd2c2a..93047e2fc 100644
--- a/src/libsync/creds/abstractcredentials.h
+++ b/src/libsync/creds/abstractcredentials.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -41,7 +42,6 @@ public:
*/
virtual void setAccount(Account* account);
- virtual bool changed(AbstractCredentials* credentials) const = 0;
virtual QString authType() const = 0;
virtual QString user() const = 0;
virtual QNetworkAccessManager* getQNAM() const = 0;
diff --git a/src/libsync/creds/dummycredentials.cpp b/src/libsync/creds/dummycredentials.cpp
index 33b408670..8caad01d5 100644
--- a/src/libsync/creds/dummycredentials.cpp
+++ b/src/libsync/creds/dummycredentials.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -17,13 +18,6 @@
namespace OCC
{
-bool DummyCredentials::changed(AbstractCredentials* credentials) const
-{
- DummyCredentials* dummy(dynamic_cast< DummyCredentials* >(credentials));
-
- return dummy == 0;
-}
-
QString DummyCredentials::authType() const
{
return QString::fromLatin1("dummy");
diff --git a/src/libsync/creds/dummycredentials.h b/src/libsync/creds/dummycredentials.h
index 7ee686267..650da7a9c 100644
--- a/src/libsync/creds/dummycredentials.h
+++ b/src/libsync/creds/dummycredentials.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -27,7 +28,6 @@ public:
QString _user;
QString _password;
- bool changed(AbstractCredentials* credentials) const Q_DECL_OVERRIDE;
QString authType() const Q_DECL_OVERRIDE;
QString user() const Q_DECL_OVERRIDE;
QNetworkAccessManager* getQNAM() const Q_DECL_OVERRIDE;
diff --git a/src/libsync/creds/httpcredentials.cpp b/src/libsync/creds/httpcredentials.cpp
index 0530a52e5..fc372e1f2 100644
--- a/src/libsync/creds/httpcredentials.cpp
+++ b/src/libsync/creds/httpcredentials.cpp
@@ -71,21 +71,6 @@ HttpCredentials::HttpCredentials(const QString& user, const QString& password, c
{
}
-bool HttpCredentials::changed(AbstractCredentials* credentials) const
-{
- HttpCredentials* other(qobject_cast< HttpCredentials* >(credentials));
-
- if (!other) {
- return true;
- }
-
- if (!other || (other->user() != this->user())) {
- return true;
- }
-
- return false;
-}
-
QString HttpCredentials::authType() const
{
return QString::fromLatin1("http");
@@ -147,7 +132,7 @@ void HttpCredentials::fetchFromKeychain()
_certificatePath = _account->credentialSetting(QLatin1String(certifPathC)).toString();
_certificatePasswd = _account->credentialSetting(QLatin1String(certifPasswdC)).toString();
- auto settings = _account->settingsWithGroup(Theme::instance()->appName());
+ auto settings = Utility::settingsWithGroup(Theme::instance()->appName());
const QString kck = keychainKey(_account->url().toString(), _user );
QString key = QString::fromLatin1( "%1/data" ).arg( kck );
@@ -229,7 +214,7 @@ void HttpCredentials::invalidateToken()
}
DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName());
- auto settings = _account->settingsWithGroup(Theme::instance()->appName());
+ auto settings = Utility::settingsWithGroup(Theme::instance()->appName());
settings->setParent(job); // make the job parent to make setting deleted properly
job->setSettings(settings.release());
job->setInsecureFallback(true);
@@ -280,7 +265,7 @@ void HttpCredentials::persist()
_account->setCredentialSetting(QLatin1String(certifPathC), _certificatePath);
_account->setCredentialSetting(QLatin1String(certifPasswdC), _certificatePasswd);
WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName());
- auto settings = _account->settingsWithGroup(Theme::instance()->appName());
+ auto settings = Utility::settingsWithGroup(Theme::instance()->appName());
settings->setParent(job); // make the job parent to make setting deleted properly
job->setSettings(settings.release());
diff --git a/src/libsync/creds/httpcredentials.h b/src/libsync/creds/httpcredentials.h
index 1032354c7..7cc09e383 100644
--- a/src/libsync/creds/httpcredentials.h
+++ b/src/libsync/creds/httpcredentials.h
@@ -38,7 +38,6 @@ public:
explicit HttpCredentials();
HttpCredentials(const QString& user, const QString& password, const QString& certificatePath, const QString& certificatePasswd);
- bool changed(AbstractCredentials* credentials) const Q_DECL_OVERRIDE;
QString authType() const Q_DECL_OVERRIDE;
QNetworkAccessManager* getQNAM() const Q_DECL_OVERRIDE;
bool ready() const Q_DECL_OVERRIDE;
diff --git a/src/libsync/creds/tokencredentials.cpp b/src/libsync/creds/tokencredentials.cpp
index 97b6be571..7ea4cf865 100644
--- a/src/libsync/creds/tokencredentials.cpp
+++ b/src/libsync/creds/tokencredentials.cpp
@@ -80,17 +80,6 @@ TokenCredentials::TokenCredentials(const QString& user, const QString& password,
{
}
-bool TokenCredentials::changed(AbstractCredentials* credentials) const
-{
- TokenCredentials* other(dynamic_cast< TokenCredentials* >(credentials));
-
- if (!other || (other->user() != this->user())) {
- return true;
- }
-
- return false;
-}
-
QString TokenCredentials::authType() const
{
return QString::fromLatin1("token");
diff --git a/src/libsync/creds/tokencredentials.h b/src/libsync/creds/tokencredentials.h
index cf42a4b24..27da7b852 100644
--- a/src/libsync/creds/tokencredentials.h
+++ b/src/libsync/creds/tokencredentials.h
@@ -40,7 +40,6 @@ public:
TokenCredentials();
TokenCredentials(const QString& user, const QString& password, const QString &token);
- bool changed(AbstractCredentials* credentials) const Q_DECL_OVERRIDE;
QString authType() const Q_DECL_OVERRIDE;
QNetworkAccessManager* getQNAM() const Q_DECL_OVERRIDE;
bool ready() const Q_DECL_OVERRIDE;
diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp
index c85fe2d3c..bb35f1f97 100644
--- a/src/libsync/discoveryphase.cpp
+++ b/src/libsync/discoveryphase.cpp
@@ -14,6 +14,7 @@
#include "discoveryphase.h"
#include <csync_private.h>
+#include <csync_rename.h>
#include <qdebug.h>
#include <QUrl>
@@ -51,7 +52,7 @@ static bool findPathInList(const QStringList &list, const QString &path)
return pathSlash.startsWith(*it);
}
-bool DiscoveryJob::isInSelectiveSyncBlackList(const QString& path) const
+bool DiscoveryJob::isInSelectiveSyncBlackList(const char *path) const
{
if (_selectiveSyncBlackList.isEmpty()) {
// If there is no black list, everything is allowed
@@ -59,13 +60,25 @@ bool DiscoveryJob::isInSelectiveSyncBlackList(const QString& path) const
}
// Block if it is in the black list
- return findPathInList(_selectiveSyncBlackList, path);
+ if (findPathInList(_selectiveSyncBlackList, QString::fromUtf8(path))) {
+ return true;
+ }
+
+ // Also try to adjust the path if there was renames
+ if (csync_rename_count(_csync_ctx)) {
+ QScopedPointer<char, QScopedPointerPodDeleter> adjusted(
+ csync_rename_adjust_path_source(_csync_ctx, path));
+ if (strcmp(adjusted.data(), path) != 0) {
+ return findPathInList(_selectiveSyncBlackList, QString::fromUtf8(adjusted.data()));
+ }
+ }
+ return false;
}
int DiscoveryJob::isInSelectiveSyncBlackListCallback(void *data, const char *path)
{
- return static_cast<DiscoveryJob*>(data)->isInSelectiveSyncBlackList(QString::fromUtf8(path));
+ return static_cast<DiscoveryJob*>(data)->isInSelectiveSyncBlackList(path);
}
bool DiscoveryJob::checkSelectiveSyncNewFolder(const QString& path)
@@ -192,7 +205,8 @@ int get_errno_from_http_errcode( int err, const QString & reason ) {
new_errno = EIO;
break;
case 503: /* Service Unavailable */
- if (reason == "Storage not available") {
+ // https://github.com/owncloud/core/pull/26145/files
+ if (reason == "Storage not available" || reason == "Storage is temporarily not available") {
new_errno = ERRNO_STORAGE_UNAVAILABLE;
} else {
new_errno = ERRNO_SERVICE_UNAVAILABLE;
@@ -210,7 +224,7 @@ int get_errno_from_http_errcode( int err, const QString & reason ) {
DiscoverySingleDirectoryJob::DiscoverySingleDirectoryJob(const AccountPtr &account, const QString &path, QObject *parent)
- : QObject(parent), _subPath(path), _account(account), _ignoredFirst(false)
+ : QObject(parent), _subPath(path), _account(account), _ignoredFirst(false), _isRootPath(false)
{
}
@@ -218,10 +232,15 @@ void DiscoverySingleDirectoryJob::start()
{
// Start the actual HTTP job
LsColJob *lsColJob = new LsColJob(_account, _subPath, this);
- lsColJob->setProperties(QList<QByteArray>() << "resourcetype" << "getlastmodified"
- << "getcontentlength" << "getetag" << "http://owncloud.org/ns:id"
- << "http://owncloud.org/ns:downloadURL" << "http://owncloud.org/ns:dDC"
- << "http://owncloud.org/ns:permissions");
+
+ QList<QByteArray> props;
+ props << "resourcetype" << "getlastmodified" << "getcontentlength" << "getetag"
+ << "http://owncloud.org/ns:id" << "http://owncloud.org/ns:downloadURL"
+ << "http://owncloud.org/ns:dDC" << "http://owncloud.org/ns:permissions";
+ if (_isRootPath)
+ props << "http://owncloud.org/ns:data-fingerprint";
+
+ lsColJob->setProperties(props);
QObject::connect(lsColJob, SIGNAL(directoryListingIterated(QString,QMap<QString,QString>)),
this, SLOT(directoryListingIteratedSlot(QString,QMap<QString,QString>)));
@@ -299,12 +318,14 @@ void DiscoverySingleDirectoryJob::directoryListingIteratedSlot(QString file, con
{
//qDebug() << Q_FUNC_INFO << _subPath << file << map.count() << map.keys() << _account->davPath() << _lsColJob->reply()->request().url().path();
if (!_ignoredFirst) {
- // First result is the directory itself. Maybe should have a better check for that? FIXME
+ // The first entry is for the folder itself, we should process it differently.
_ignoredFirst = true;
if (map.contains("permissions")) {
emit firstDirectoryPermissions(map.value("permissions"));
}
-
+ if (map.contains("data-fingerprint")) {
+ _dataFingerprint = map.value("data-fingerprint").toUtf8();
+ }
} else {
// Remove <webDAV-Url>/folder/ from <webDAV-Url>/folder/subfile.txt
file.remove(0, _lsColJob->reply()->request().url().path().length());
@@ -426,6 +447,11 @@ void DiscoveryMainThread::doOpendirSlot(const QString &subPath, DiscoveryDirecto
this, SIGNAL(etagConcatenation(QString)));
QObject::connect(_singleDirJob, SIGNAL(etag(QString)),
this, SIGNAL(etag(QString)));
+
+ if (!_firstFolderProcessed) {
+ _singleDirJob->setIsRootPath();
+ }
+
_singleDirJob->start();
}
@@ -441,7 +467,12 @@ void DiscoveryMainThread::singleDirectoryJobResultSlot(const QList<FileStatPoint
_currentDiscoveryDirectoryResult->list = result;
_currentDiscoveryDirectoryResult->code = 0;
_currentDiscoveryDirectoryResult->listIndex = 0;
- _currentDiscoveryDirectoryResult = 0; // the sync thread owns it now
+ _currentDiscoveryDirectoryResult = 0; // the sync thread owns it now
+
+ if (!_firstFolderProcessed) {
+ _firstFolderProcessed = true;
+ _dataFingerprint = _singleDirJob->_dataFingerprint;
+ }
_discoveryJob->_vioMutex.lock();
_discoveryJob->_vioWaitCondition.wakeAll();
diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h
index 6786065cc..c030adb33 100644
--- a/src/libsync/discoveryphase.h
+++ b/src/libsync/discoveryphase.h
@@ -81,6 +81,8 @@ class DiscoverySingleDirectoryJob : public QObject {
Q_OBJECT
public:
explicit DiscoverySingleDirectoryJob(const AccountPtr &account, const QString &path, QObject *parent = 0);
+ // Specify thgat this is the root and we need to check the data-fingerprint
+ void setIsRootPath() { _isRootPath = true; }
void start();
void abort();
// This is not actually a network job, it is just a job
@@ -100,8 +102,15 @@ private:
QString _etagConcatenation;
QString _firstEtag;
AccountPtr _account;
+ // The first result is for the directory itself and need to be ignored.
+ // This flag is true if it was already ignored.
bool _ignoredFirst;
+ // Set to true if this is the root path and we need to check the data-fingerprint
+ bool _isRootPath;
QPointer<LsColJob> _lsColJob;
+
+public:
+ QByteArray _dataFingerprint;
};
// Lives in main thread. Deleted by the SyncEngine
@@ -115,13 +124,16 @@ class DiscoveryMainThread : public QObject {
AccountPtr _account;
DiscoveryDirectoryResult *_currentDiscoveryDirectoryResult;
qint64 *_currentGetSizeResult;
+ bool _firstFolderProcessed;
public:
DiscoveryMainThread(AccountPtr account) : QObject(), _account(account),
- _currentDiscoveryDirectoryResult(0), _currentGetSizeResult(0)
+ _currentDiscoveryDirectoryResult(0), _currentGetSizeResult(0), _firstFolderProcessed(false)
{ }
void abort();
+ QByteArray _dataFingerprint;
+
public slots:
// From DiscoveryJob:
@@ -162,7 +174,7 @@ class DiscoveryJob : public QObject {
* return true if the given path should be ignored,
* false if the path should be synced
*/
- bool isInSelectiveSyncBlackList(const QString &path) const;
+ bool isInSelectiveSyncBlackList(const char* path) const;
static int isInSelectiveSyncBlackListCallback(void *, const char *);
bool checkSelectiveSyncNewFolder(const QString &path);
static int checkSelectiveSyncNewFolderCallback(void*, const char*);
diff --git a/src/libsync/excludedfiles.cpp b/src/libsync/excludedfiles.cpp
index b2839d05d..80e459f10 100644
--- a/src/libsync/excludedfiles.cpp
+++ b/src/libsync/excludedfiles.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -12,6 +13,7 @@
*/
#include "excludedfiles.h"
+#include "utility.h"
#include <QFileInfo>
@@ -45,6 +47,13 @@ void ExcludedFiles::addExcludeFilePath(const QString& path)
_excludeFiles.insert(path);
}
+#ifdef WITH_UNIT_TESTING
+void ExcludedFiles::addExcludeExpr(const QString &expr)
+{
+ _csync_exclude_add(_excludesPtr, expr.toLatin1().constData());
+}
+#endif
+
bool ExcludedFiles::reloadExcludes()
{
c_strlist_destroy(*_excludesPtr);
@@ -63,18 +72,27 @@ bool ExcludedFiles::isExcluded(
const QString& basePath,
bool excludeHidden) const
{
- if (!filePath.startsWith(basePath)) {
+ if (!filePath.startsWith(basePath, Utility::fsCasePreserving() ? Qt::CaseInsensitive : Qt::CaseSensitive)) {
// Mark paths we're not responsible for as excluded...
return true;
}
- QFileInfo fi(filePath);
if( excludeHidden ) {
- if( fi.isHidden() || fi.fileName().startsWith(QLatin1Char('.')) ) {
- return true;
+ QString path = filePath;
+ // Check all path subcomponents, but to *not* check the base path:
+ // We do want to be able to sync with a hidden folder as the target.
+ while (path.size() > basePath.size()) {
+ QFileInfo fi(path);
+ if( fi.isHidden() || fi.fileName().startsWith(QLatin1Char('.')) ) {
+ return true;
+ }
+
+ // Get the parent path
+ path = fi.absolutePath();
}
}
+ QFileInfo fi(filePath);
csync_ftw_type_e type = CSYNC_FTW_TYPE_FILE;
if (fi.isDir()) {
type = CSYNC_FTW_TYPE_DIR;
diff --git a/src/libsync/excludedfiles.h b/src/libsync/excludedfiles.h
index 75895a396..441aa29ae 100644
--- a/src/libsync/excludedfiles.h
+++ b/src/libsync/excludedfiles.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -57,6 +58,10 @@ public:
const QString& basePath,
bool excludeHidden) const;
+#ifdef WITH_UNIT_TESTING
+ void addExcludeExpr(const QString &expr);
+#endif
+
public slots:
/**
* Reloads the exclude patterns from the registered paths.
diff --git a/src/libsync/filesystem.cpp b/src/libsync/filesystem.cpp
index 2dd6b51dd..70ed2cefd 100644
--- a/src/libsync/filesystem.cpp
+++ b/src/libsync/filesystem.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -29,10 +30,11 @@
#endif
#ifdef Q_OS_WIN
+#include <windows.h>
#include <windef.h>
#include <winbase.h>
#include <fcntl.h>
-
+#include <io.h>
#endif
// We use some internals of csync:
diff --git a/src/libsync/filesystem.h b/src/libsync/filesystem.h
index 0b870f949..3daaefbb3 100644
--- a/src/libsync/filesystem.h
+++ b/src/libsync/filesystem.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
index 09472be87..10fd3d545 100644
--- a/src/libsync/networkjobs.cpp
+++ b/src/libsync/networkjobs.cpp
@@ -106,14 +106,24 @@ MkColJob::MkColJob(AccountPtr account, const QString &path, QObject *parent)
{
}
+MkColJob::MkColJob(AccountPtr account, const QUrl &url,
+ const QMap<QByteArray, QByteArray> &extraHeaders, QObject *parent)
+ : AbstractNetworkJob(account, QString(), parent), _url(url), _extraHeaders(extraHeaders)
+{
+}
+
void MkColJob::start()
{
// add 'Content-Length: 0' header (see https://github.com/owncloud/client/issues/3256)
QNetworkRequest req;
req.setRawHeader("Content-Length", "0");
+ for(auto it = _extraHeaders.constBegin(); it != _extraHeaders.constEnd(); ++it) {
+ req.setRawHeader(it.key(), it.value());
+ }
// assumes ownership
- QNetworkReply *reply = davRequest("MKCOL", path(), req);
+ QNetworkReply *reply = _url.isValid() ? davRequest("MKCOL", _url, req)
+ : davRequest("MKCOL", path(), req);
setReply(reply);
setupConnections(reply);
AbstractNetworkJob::start();
@@ -264,6 +274,11 @@ LsColJob::LsColJob(AccountPtr account, const QString &path, QObject *parent)
{
}
+LsColJob::LsColJob(AccountPtr account, const QUrl &url, QObject *parent)
+ : AbstractNetworkJob(account, QString(), parent), _url(url)
+{
+}
+
void LsColJob::setProperties(QList<QByteArray> properties)
{
_properties = properties;
@@ -307,7 +322,8 @@ void LsColJob::start()
QBuffer *buf = new QBuffer(this);
buf->setData(xml);
buf->open(QIODevice::ReadOnly);
- QNetworkReply *reply = davRequest("PROPFIND", path(), req, buf);
+ QNetworkReply *reply = _url.isValid() ? davRequest("PROPFIND", _url, req, buf)
+ : davRequest("PROPFIND", path(), req, buf);
buf->setParent(reply);
setReply(reply);
setupConnections(reply);
@@ -359,7 +375,6 @@ CheckServerJob::CheckServerJob(AccountPtr account, QObject *parent)
: AbstractNetworkJob(account, QLatin1String(statusphpC) , parent)
, _subdirFallback(false)
{
- _followRedirects = true;
setIgnoreCredentialFailure(true);
}
@@ -681,7 +696,7 @@ void JsonApiJob::start()
{
QNetworkRequest req;
req.setRawHeader("OCS-APIREQUEST", "true");
- QUrl url = Account::concatUrlPath(account()->url(), path());
+ QUrl url = Utility::concatUrlPath(account()->url(), path());
QList<QPair<QString, QString> > params = _additionalParams;
params << qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json"));
url.setQueryItems(params);
diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h
index c2cc978c4..f7a37d950 100644
--- a/src/libsync/networkjobs.h
+++ b/src/libsync/networkjobs.h
@@ -62,6 +62,7 @@ class OWNCLOUDSYNC_EXPORT LsColJob : public AbstractNetworkJob {
Q_OBJECT
public:
explicit LsColJob(AccountPtr account, const QString &path, QObject *parent = 0);
+ explicit LsColJob(AccountPtr account, const QUrl &url, QObject *parent = 0);
void start() Q_DECL_OVERRIDE;
QHash<QString, qint64> _sizes;
@@ -87,6 +88,7 @@ private slots:
private:
QList<QByteArray> _properties;
+ QUrl _url; // Used instead of path() if the url is specified in the constructor
};
/**
@@ -170,8 +172,12 @@ private:
*/
class OWNCLOUDSYNC_EXPORT MkColJob : public AbstractNetworkJob {
Q_OBJECT
+ QUrl _url; // Only used if the constructor taking a url is taken.
+ QMap<QByteArray, QByteArray> _extraHeaders;
public:
explicit MkColJob(AccountPtr account, const QString &path, QObject *parent = 0);
+ explicit MkColJob(AccountPtr account, const QUrl &url,
+ const QMap<QByteArray, QByteArray> &extraHeaders, QObject *parent = 0);
void start() Q_DECL_OVERRIDE;
signals:
diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp
index d191a0595..213896abe 100644
--- a/src/libsync/owncloudpropagator.cpp
+++ b/src/libsync/owncloudpropagator.cpp
@@ -201,12 +201,12 @@ bool PropagateItemJob::checkForProblemsWithShared(int httpStatusCode, const QStr
downloadItem->_instruction = CSYNC_INSTRUCTION_SYNC;
}
downloadItem->_direction = SyncFileItem::Down;
- newJob = new PropagateDownloadFileQNAM(_propagator, downloadItem);
+ newJob = new PropagateDownloadFile(_propagator, downloadItem);
} else {
// Directories are harder to recover.
// But just re-create the directory, next sync will be able to recover the files
SyncFileItemPtr mkdirItem(new SyncFileItem(*_item));
- mkdirItem->_instruction = CSYNC_INSTRUCTION_SYNC;
+ mkdirItem->_instruction = CSYNC_INSTRUCTION_NEW;
mkdirItem->_direction = SyncFileItem::Down;
newJob = new PropagateLocalMkdir(_propagator, mkdirItem);
// Also remove the inodes and fileid from the db so no further renames are tried for
@@ -265,20 +265,21 @@ PropagateItemJob* OwncloudPropagator::createJob(const SyncFileItemPtr &item) {
} //fall through
case CSYNC_INSTRUCTION_SYNC:
case CSYNC_INSTRUCTION_CONFLICT:
- if (item->_isDirectory) {
- // Should we set the mtime?
- return 0;
- }
- {
- if (item->_direction != SyncFileItem::Up) {
- auto job = new PropagateDownloadFileQNAM(this, item);
- job->setDeleteExistingFolder(deleteExisting);
- return job;
+ if (item->_direction != SyncFileItem::Up) {
+ auto job = new PropagateDownloadFile(this, item);
+ job->setDeleteExistingFolder(deleteExisting);
+ return job;
+ } else {
+ PropagateUploadFileCommon *job = 0;
+ static const auto chunkng = qgetenv("OWNCLOUD_CHUNKING_NG");
+ if (item->_size > chunkSize()
+ && (account()->capabilities().chunkingNg() || chunkng == "1") && chunkng != "0") {
+ job = new PropagateUploadFileNG(this, item);
} else {
- auto job = new PropagateUploadFileQNAM(this, item);
- job->setDeleteExisting(deleteExisting);
- return job;
+ job = new PropagateUploadFileV1(this, item);
}
+ job->setDeleteExisting(deleteExisting);
+ return job;
}
case CSYNC_INSTRUCTION_RENAME:
if (item->_direction == SyncFileItem::Up) {
@@ -377,7 +378,8 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
// NOTE: Currently this means that we don't update those etag at all in this sync,
// but it should not be a problem, they will be updated in the next sync.
for (int i = 0; i < directories.size(); ++i) {
- directories[i].second->_item->_should_update_metadata = false;
+ if (directories[i].second->_item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA)
+ directories[i].second->_item->_instruction = CSYNC_INSTRUCTION_NONE;
}
} else {
PropagateDirectory* currentDirJob = directories.top().second;
@@ -402,7 +404,7 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
connect(_rootJob.data(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)),
this, SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
connect(_rootJob.data(), SIGNAL(progress(const SyncFileItem &,quint64)), this, SIGNAL(progress(const SyncFileItem &,quint64)));
- connect(_rootJob.data(), SIGNAL(finished(SyncFileItem::Status)), this, SLOT(emitFinished()));
+ connect(_rootJob.data(), SIGNAL(finished(SyncFileItem::Status)), this, SLOT(emitFinished(SyncFileItem::Status)));
connect(_rootJob.data(), SIGNAL(ready()), this, SLOT(scheduleNextJob()), Qt::QueuedConnection);
qDebug() << "Using QNAM/HTTP parallel code path";
@@ -410,10 +412,12 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
QTimer::singleShot(0, this, SLOT(scheduleNextJob()));
}
+// ownCloud server < 7.0 did not had permissions so we need some other euristics
+// to detect wrong doing in a Shared directory
bool OwncloudPropagator::isInSharedDirectory(const QString& file)
{
bool re = false;
- if( _remoteDir.contains( _account->davPath() + QLatin1String("Shared") ) ) {
+ if( _remoteFolder.startsWith( QLatin1String("Shared") ) ) {
// The Shared directory is synced as its own sync connection
re = true;
} else {
@@ -534,7 +538,7 @@ void OwncloudPropagator::scheduleNextJob()
}
}
if (_activeJobList.count() < maximumActiveJob() + likelyFinishedQuicklyCount) {
- qDebug() << "Can pump in another request!";
+ qDebug() << "Can pump in another request! activeJobs =" << _activeJobList.count();
if (_rootJob->scheduleNextJob()) {
QTimer::singleShot(0, this, SLOT(scheduleNextJob()));
}
@@ -611,9 +615,15 @@ bool PropagateDirectory::scheduleNextJob()
return false;
}
+ // cache the value of first unfinished subjob
bool stopAtDirectory = false;
- // FIXME: use the cached value of finished job
- for (int i = 0; i < _subJobs.count(); ++i) {
+ int i = _firstUnfinishedSubJob;
+ int subJobsCount = _subJobs.count();
+ while (i < subJobsCount && _subJobs.at(i)->_state == Finished) {
+ _firstUnfinishedSubJob = ++i;
+ }
+
+ for (int i = _firstUnfinishedSubJob; i < subJobsCount; ++i) {
if (_subJobs.at(i)->_state == Finished) {
continue;
}
@@ -645,7 +655,6 @@ void PropagateDirectory::slotSubJobFinished(SyncFileItem::Status status)
(sender() == _firstJob.data() && status != SyncFileItem::Success && status != SyncFileItem::Restoration)) {
abort();
_state = Finished;
- emit itemCompleted(*_item, *this);
emit finished(status);
return;
} else if (status == SyncFileItem::NormalError || status == SyncFileItem::SoftError) {
@@ -674,10 +683,21 @@ void PropagateDirectory::finalize()
bool ok = true;
if (!_item->isEmpty() && _hasError == SyncFileItem::NoStatus) {
if( !_item->_renameTarget.isEmpty() ) {
+ if(_item->_instruction == CSYNC_INSTRUCTION_RENAME
+ && _item->_originalFile != _item->_renameTarget) {
+ // Remove the stale entries from the database.
+ _propagator->_journal->deleteFileRecord(_item->_originalFile, true);
+ }
+
_item->_file = _item->_renameTarget;
}
- if (_item->_should_update_metadata && _item->_instruction != CSYNC_INSTRUCTION_REMOVE) {
+ // For new directories we always want to update the etag once
+ // the directory has been propagated. Otherwise the directory
+ // could appear locally without being added to the database.
+ if (_item->_instruction == CSYNC_INSTRUCTION_RENAME
+ || _item->_instruction == CSYNC_INSTRUCTION_NEW
+ || _item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA) {
if (PropagateRemoteMkdir* mkdir = qobject_cast<PropagateRemoteMkdir*>(_firstJob.data())) {
// special case from MKDIR, get the fileId from the job there
if (_item->_fileId.isEmpty() && !mkdir->_item->_fileId.isEmpty()) {
@@ -687,21 +707,14 @@ void PropagateDirectory::finalize()
SyncJournalFileRecord record(*_item, _propagator->_localDir + _item->_file);
ok = _propagator->_journal->setFileRecordMetadata(record);
if (!ok) {
- _item->_status = SyncFileItem::FatalError;
+ _hasError = _item->_status = SyncFileItem::FatalError;
_item->_errorString = tr("Error writing metadata to the database");
qWarning() << "Error writing to the database for file" << _item->_file;
}
}
}
_state = Finished;
- // Just to make sure that the SocketApi will know by looking in
- // SyncEngine::_syncedItems that this folder is done synchronizing.
- if (ok) {
- _item->_status = SyncFileItem::Success;
- }
-
- emit itemCompleted(*_item, *this);
- emit finished(_item->_status);
+ emit finished(_hasError == SyncFileItem::NoStatus ? SyncFileItem::Success : _hasError);
}
qint64 PropagateDirectory::committedDiskSpace() const
@@ -741,6 +754,7 @@ void CleanupPollsJob::slotPollFinished()
Q_ASSERT(job);
if (job->_item->_status == SyncFileItem::FatalError) {
emit aborted(job->_item->_errorString);
+ deleteLater();
return;
} else if (job->_item->_status != SyncFileItem::Success) {
qDebug() << "There was an error with file " << job->_item->_file << job->_item->_errorString;
@@ -750,6 +764,7 @@ void CleanupPollsJob::slotPollFinished()
job->_item->_status = SyncFileItem::FatalError;
job->_item->_errorString = tr("Error writing metadata to the database");
emit aborted(job->_item->_errorString);
+ deleteLater();
return;
}
}
diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h
index afa40fe2d..1097b7f87 100644
--- a/src/libsync/owncloudpropagator.h
+++ b/src/libsync/owncloudpropagator.h
@@ -195,10 +195,11 @@ public:
int _jobsFinished; // number of jobs that have completed
int _runningNow; // number of subJobs running right now
SyncFileItem::Status _hasError; // NoStatus, or NormalError / SoftError if there was an error
+ int _firstUnfinishedSubJob;
explicit PropagateDirectory(OwncloudPropagator *propagator, const SyncFileItemPtr &item = SyncFileItemPtr(new SyncFileItem))
: PropagatorJob(propagator)
- , _firstJob(0), _item(item), _jobsFinished(0), _runningNow(0), _hasError(SyncFileItem::NoStatus)
+ , _firstJob(0), _item(item), _jobsFinished(0), _runningNow(0), _hasError(SyncFileItem::NoStatus), _firstUnfinishedSubJob(0)
{ }
virtual ~PropagateDirectory() {
@@ -266,8 +267,7 @@ class OwncloudPropagator : public QObject {
public:
const QString _localDir; // absolute path to the local directory. ends with '/'
- const QString _remoteDir; // path to the root of the remote. ends with '/' (include WebDAV path)
- const QString _remoteFolder; // folder. (same as remoteDir but without the WebDAV path)
+ const QString _remoteFolder; // remote folder, ends with '/'
SyncJournalDb * const _journal;
bool _finishedEmited; // used to ensure that finished is only emitted once
@@ -275,10 +275,8 @@ public:
public:
OwncloudPropagator(AccountPtr account, const QString &localDir,
- const QString &remoteDir, const QString &remoteFolder,
- SyncJournalDb *progressDb)
+ const QString &remoteFolder, SyncJournalDb *progressDb)
: _localDir((localDir.endsWith(QChar('/'))) ? localDir : localDir+'/' )
- , _remoteDir((remoteDir.endsWith(QChar('/'))) ? remoteDir : remoteDir+'/' )
, _remoteFolder((remoteFolder.endsWith(QChar('/'))) ? remoteFolder : remoteFolder+'/' )
, _journal(progressDb)
, _finishedEmited(false)
@@ -321,7 +319,7 @@ public:
if (_rootJob) {
_rootJob->abort();
}
- emitFinished();
+ emitFinished(SyncFileItem::NormalError);
}
// timeout in seconds
@@ -349,9 +347,9 @@ public:
private slots:
/** Emit the finished signal and make sure it is only emitted once */
- void emitFinished() {
+ void emitFinished(SyncFileItem::Status status) {
if (!_finishedEmited)
- emit finished();
+ emit finished(status == SyncFileItem::Success);
_finishedEmited = true;
}
@@ -360,7 +358,7 @@ private slots:
signals:
void itemCompleted(const SyncFileItem &, const PropagatorJob &);
void progress(const SyncFileItem&, quint64 bytes);
- void finished();
+ void finished(bool success);
/** Emitted when propagation has problems with a locked file. */
void seenLockedFile(const QString &fileName);
@@ -378,11 +376,12 @@ private:
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
// access to signals which are protected in Qt4
- friend class PropagateDownloadFileQNAM;
- friend class PropagateUploadFileQNAM;
+ friend class PropagateDownloadFile;
friend class PropagateLocalMkdir;
friend class PropagateLocalRename;
friend class PropagateRemoteMove;
+ friend class PropagateUploadFileV1;
+ friend class PropagateUploadFileNG;
#endif
};
@@ -404,6 +403,10 @@ public:
~CleanupPollsJob();
+ /**
+ * Start the job. After the job is completed, it will emit either finished or aborted, and it
+ * will destroy itself.
+ */
void start();
signals:
void finished();
diff --git a/src/libsync/owncloudtheme.cpp b/src/libsync/owncloudtheme.cpp
index 0916fa88d..55ed2261d 100644
--- a/src/libsync/owncloudtheme.cpp
+++ b/src/libsync/owncloudtheme.cpp
@@ -44,13 +44,14 @@ QString ownCloudTheme::configFileName() const
QString ownCloudTheme::about() const
{
QString devString;
- devString = trUtf8("<p>Version %2. For more information visit <a href=\"%3\">%4</a></p>"
- "<p><small>By Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, "
- "Olivier Goffart, Markus Götz and others.</small></p>"
- "<p>Copyright ownCloud, Inc.</p>"
+ devString = trUtf8("<p>Version %2. For more information visit <a href=\"%3\">https://%4</a></p>"
+ "<p>For known issues and help, please visit: <a href=\"https://central.owncloud.org/c/help/desktop-file-sync\">https://central.owncloud.org</a></p>"
+ "<p><small>By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, "
+ " Jan-Christoph Borchardt, and others.</small></p>"
+ "<p>Copyright ownCloud GmbH</p>"
"<p>Licensed under the GNU General Public License (GPL) Version 2.0<br/>"
- "ownCloud and the ownCloud Logo are registered trademarks of ownCloud, "
- "Inc. in the United States, other countries, or both.</p>"
+ "ownCloud and the ownCloud Logo are registered trademarks of ownCloud GmbH "
+ "in the United States, other countries, or both.</p>"
)
.arg(MIRALL_VERSION_STRING)
.arg("https://" MIRALL_STRINGIFY(APPLICATION_DOMAIN))
diff --git a/src/libsync/ownsql.cpp b/src/libsync/ownsql.cpp
index 4efa18768..0fe9d399d 100644
--- a/src/libsync/ownsql.cpp
+++ b/src/libsync/ownsql.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -230,8 +231,12 @@ bool SqlQuery::isPragma()
bool SqlQuery::exec()
{
+ if (!_stmt) {
+ return false;
+ }
+
// Don't do anything for selects, that is how we use the lib :-|
- if(_stmt && !isSelect() && !isPragma() ) {
+ if( !isSelect() && !isPragma() ) {
int rc, n = 0;
do {
rc = sqlite3_step(_stmt);
@@ -303,6 +308,11 @@ void SqlQuery::bindValue(int pos, const QVariant& value)
res = sqlite3_bind_null(_stmt, pos);
}
break; }
+ case QVariant::ByteArray: {
+ auto ba = value.toByteArray();
+ res = sqlite3_bind_text(_stmt, pos, ba.constData(), ba.size(), SQLITE_TRANSIENT);
+ break;
+ }
default: {
QString str = value.toString();
// SQLITE_TRANSIENT makes sure that sqlite buffers the data
@@ -312,7 +322,7 @@ void SqlQuery::bindValue(int pos, const QVariant& value)
}
}
if (res != SQLITE_OK) {
- qDebug() << Q_FUNC_INFO << "ERROR" << value.toString() << res;
+ qDebug() << Q_FUNC_INFO << "ERROR" << value << res;
}
Q_ASSERT( res == SQLITE_OK );
}
@@ -371,8 +381,10 @@ void SqlQuery::finish()
void SqlQuery::reset_and_clear_bindings()
{
- SQLITE_DO(sqlite3_reset(_stmt));
- SQLITE_DO(sqlite3_clear_bindings(_stmt));
+ if (_stmt) {
+ SQLITE_DO(sqlite3_reset(_stmt));
+ SQLITE_DO(sqlite3_clear_bindings(_stmt));
+ }
}
} // namespace OCC
diff --git a/src/libsync/ownsql.h b/src/libsync/ownsql.h
index 028379105..c957e3996 100644
--- a/src/libsync/ownsql.h
+++ b/src/libsync/ownsql.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/progressdispatcher.cpp b/src/libsync/progressdispatcher.cpp
index 3e9540a16..36b082201 100644
--- a/src/libsync/progressdispatcher.cpp
+++ b/src/libsync/progressdispatcher.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -46,6 +47,8 @@ QString Progress::asResultString( const SyncFileItem& item)
return QCoreApplication::translate( "progress", "Filesystem access error");
case CSYNC_INSTRUCTION_ERROR:
return QCoreApplication::translate( "progress", "Error");
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
+ return QCoreApplication::translate( "progress", "Updated local metadata");
case CSYNC_INSTRUCTION_NONE:
case CSYNC_INSTRUCTION_EVAL:
return QCoreApplication::translate( "progress", "Unknown");
@@ -76,6 +79,8 @@ QString Progress::asActionString( const SyncFileItem &item )
return QCoreApplication::translate( "progress", "error");
case CSYNC_INSTRUCTION_ERROR:
return QCoreApplication::translate( "progress", "error");
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
+ return QCoreApplication::translate( "progress", "updating local metadata");
case CSYNC_INSTRUCTION_NONE:
case CSYNC_INSTRUCTION_EVAL:
break;
@@ -143,6 +148,7 @@ void ProgressInfo::reset()
_maxBytesPerSecond = 100000.0;
_maxFilesPerSecond = 2.0;
_updateEstimatesTimer.stop();
+ _lastCompletedItem = SyncFileItem();
}
void ProgressInfo::startEstimateUpdates()
@@ -159,17 +165,10 @@ static bool shouldCountProgress(const SyncFileItem &item)
{
const auto instruction = item._instruction;
- // Don't worry about directories that won't have propagation
- // jobs associated with them.
- if (item._isDirectory
- && (instruction == CSYNC_INSTRUCTION_NONE
- || instruction == CSYNC_INSTRUCTION_SYNC
- || instruction == CSYNC_INSTRUCTION_CONFLICT)) {
- return false;
- }
-
- // Skip any ignored or error files, we do nothing with them.
- if (instruction == CSYNC_INSTRUCTION_IGNORE
+ // Skip any ignored, error or non-propagated files and directories.
+ if (instruction == CSYNC_INSTRUCTION_NONE
+ || instruction == CSYNC_INSTRUCTION_UPDATE_METADATA
+ || instruction == CSYNC_INSTRUCTION_IGNORE
|| instruction == CSYNC_INSTRUCTION_ERROR) {
return false;
}
@@ -279,13 +278,6 @@ ProgressInfo::Estimates ProgressInfo::totalProgress() const
// assume the remaining transfer will be done with the highest speed
// we've seen.
- // This assumes files and transfers finish as quickly as possible
- // *but* note that maxPerSecond could be serious underestimates
- // (if we never got to fully excercise transfer or files/second)
- quint64 optimisticEta =
- _fileProgress.remaining() / _maxFilesPerSecond * 1000
- + _sizeProgress.remaining() / _maxBytesPerSecond * 1000;
-
// Compute a value that is 0 when fps is <=L*max and 1 when fps is >=U*max
double fps = _fileProgress._progressPerSec;
double fpsL = 0.5;
@@ -309,11 +301,26 @@ ProgressInfo::Estimates ProgressInfo::totalProgress() const
double beOptimistic = nearMaxFps * slowTransfer;
size.estimatedEta = (1.0 - beOptimistic) * size.estimatedEta
- + beOptimistic * optimisticEta;
+ + beOptimistic * optimisticEta();
return size;
}
+quint64 ProgressInfo::optimisticEta() const
+{
+ // This assumes files and transfers finish as quickly as possible
+ // *but* note that maxPerSecond could be serious underestimate
+ // (if we never got to fully excercise transfer or files/second)
+
+ return _fileProgress.remaining() / _maxFilesPerSecond * 1000
+ + _sizeProgress.remaining() / _maxBytesPerSecond * 1000;
+}
+
+bool ProgressInfo::trustEta() const
+{
+ return totalProgress().estimatedEta < 100 * optimisticEta();
+}
+
ProgressInfo::Estimates ProgressInfo::fileProgress(const SyncFileItem &item) const
{
return _currentItems[item._file]._progress.estimates();
diff --git a/src/libsync/progressdispatcher.h b/src/libsync/progressdispatcher.h
index 7ea3f3b8f..538ce60c4 100644
--- a/src/libsync/progressdispatcher.h
+++ b/src/libsync/progressdispatcher.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -165,6 +166,22 @@ public:
Estimates totalProgress() const;
/**
+ * Get the optimistic eta.
+ *
+ * This value is based on the highest observed transfer bandwidth
+ * and files-per-second speed.
+ */
+ quint64 optimisticEta() const;
+
+ /**
+ * Whether the remaining-time estimate is trusted.
+ *
+ * We don't trust it if it is hugely above the optimistic estimate.
+ * See #5046.
+ */
+ bool trustEta() const;
+
+ /**
* Get the current file completion estimate structure
*/
Estimates fileProgress(const SyncFileItem &item) const;
diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp
index 2a126ee60..99944204f 100644
--- a/src/libsync/propagatedownload.cpp
+++ b/src/libsync/propagatedownload.cpp
@@ -31,6 +31,10 @@
#include <QDebug>
#include <cmath>
+#ifdef Q_OS_UNIX
+#include <unistd.h>
+#endif
+
namespace OCC {
// Always coming in with forward slashes.
@@ -99,7 +103,6 @@ void GETFileJob::start() {
} else {
// Use direct URL
setReply(davRequest("GET", _directDownloadUrl, req));
- _followRedirects = true; // (follow redirections for the direct download)
}
setupConnections(reply());
@@ -305,7 +308,7 @@ QString GETFileJob::errorString() const
}
}
-void PropagateDownloadFileQNAM::start()
+void PropagateDownloadFile::start()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
return;
@@ -419,7 +422,7 @@ void PropagateDownloadFileQNAM::start()
_job->start();
}
-qint64 PropagateDownloadFileQNAM::committedDiskSpace() const
+qint64 PropagateDownloadFile::committedDiskSpace() const
{
if (_state == Running) {
return qBound(0ULL, _item->_size - _resumeStart - _downloadProgress, _item->_size);
@@ -427,13 +430,13 @@ qint64 PropagateDownloadFileQNAM::committedDiskSpace() const
return 0;
}
-void PropagateDownloadFileQNAM::setDeleteExistingFolder(bool enabled)
+void PropagateDownloadFile::setDeleteExistingFolder(bool enabled)
{
_deleteExisting = enabled;
}
const char owncloudCustomSoftErrorStringC[] = "owncloud-custom-soft-error-string";
-void PropagateDownloadFileQNAM::slotGetFinished()
+void PropagateDownloadFile::slotGetFinished()
{
_propagator->_activeJobList.removeOne(this);
@@ -566,14 +569,14 @@ void PropagateDownloadFileQNAM::slotGetFinished()
validator->start(_tmpFile.fileName(), checksumHeader);
}
-void PropagateDownloadFileQNAM::slotChecksumFail( const QString& errMsg )
+void PropagateDownloadFile::slotChecksumFail( const QString& errMsg )
{
FileSystem::remove(_tmpFile.fileName());
_propagator->_anotherSyncNeeded = true;
done(SyncFileItem::SoftError, errMsg ); // tr("The file downloaded with a broken checksum, will be redownloaded."));
}
-void PropagateDownloadFileQNAM::deleteExistingFolder()
+void PropagateDownloadFile::deleteExistingFolder()
{
QString existingDir = _propagator->getFilePath(_item->_file);
if (!QFileInfo(existingDir).isDir()) {
@@ -590,7 +593,7 @@ void PropagateDownloadFileQNAM::deleteExistingFolder()
}
QString conflictDir = FileSystem::makeConflictFileName(
- existingDir, Utility::qDateTimeFromTime_t(_item->_modtime));
+ existingDir, Utility::qDateTimeFromTime_t(FileSystem::getModTime(existingDir)));
emit _propagator->touchedFile(existingDir);
emit _propagator->touchedFile(conflictDir);
@@ -617,29 +620,47 @@ static QString makeRecallFileName(const QString &fn)
return recallFileName;
}
-static void handleRecallFile(const QString &fn)
+void handleRecallFile(const QString& filePath, const QString& folderPath, SyncJournalDb& journal)
{
- qDebug() << "handleRecallFile: " << fn;
+ qDebug() << "handleRecallFile: " << filePath;
- FileSystem::setFileHidden(fn, true);
+ FileSystem::setFileHidden(filePath, true);
- QFile file(fn);
+ QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "Could not open recall file" << file.errorString();
return;
}
- QFileInfo existingFile(fn);
- QDir thisDir = existingFile.dir();
+ QFileInfo existingFile(filePath);
+ QDir baseDir = existingFile.dir();
while (!file.atEnd()) {
QByteArray line = file.readLine();
line.chop(1); // remove trailing \n
- QString fpath = thisDir.filePath(line);
- QString rpath = makeRecallFileName(fpath);
- qDebug() << "Copy recall file: " << fpath << " -> " << rpath;
- QString error;
- FileSystem::uncheckedRenameReplace(fpath, rpath, &error);
+ QString recalledFile = QDir::cleanPath(baseDir.filePath(line));
+ if (!recalledFile.startsWith(folderPath) || !recalledFile.startsWith(baseDir.path())) {
+ qDebug() << "Ignoring recall of " << recalledFile;
+ continue;
+ }
+
+ // Path of the recalled file in the local folder
+ QString localRecalledFile = recalledFile.mid(folderPath.size());
+
+ SyncJournalFileRecord record = journal.getFileRecord(localRecalledFile);
+ if (!record.isValid()) {
+ qDebug() << "No db entry for recall of" << localRecalledFile;
+ continue;
+ }
+
+ qDebug() << "Recalling" << localRecalledFile << "Checksum:" << record._contentChecksumType << record._contentChecksum;
+
+ QString targetPath = makeRecallFileName(recalledFile);
+
+ qDebug() << "Copy recall file: " << recalledFile << " -> " << targetPath;
+ // Remove the target first, QFile::copy will not overwrite it.
+ FileSystem::remove(targetPath);
+ QFile::copy(recalledFile, targetPath);
}
}
@@ -654,7 +675,7 @@ static void preserveGroupOwnership(const QString& fileName, const QFileInfo& fi)
}
} // end namespace
-void PropagateDownloadFileQNAM::transmissionChecksumValidated(const QByteArray &checksumType, const QByteArray &checksum)
+void PropagateDownloadFile::transmissionChecksumValidated(const QByteArray &checksumType, const QByteArray &checksum)
{
const auto theContentChecksumType = contentChecksumType();
@@ -675,7 +696,7 @@ void PropagateDownloadFileQNAM::transmissionChecksumValidated(const QByteArray &
computeChecksum->start(_tmpFile.fileName());
}
-void PropagateDownloadFileQNAM::contentChecksumComputed(const QByteArray &checksumType, const QByteArray &checksum)
+void PropagateDownloadFile::contentChecksumComputed(const QByteArray &checksumType, const QByteArray &checksum)
{
_item->_contentChecksum = checksum;
_item->_contentChecksumType = checksumType;
@@ -683,7 +704,7 @@ void PropagateDownloadFileQNAM::contentChecksumComputed(const QByteArray &checks
downloadFinished();
}
-void PropagateDownloadFileQNAM::downloadFinished()
+void PropagateDownloadFile::downloadFinished()
{
QString fn = _propagator->getFilePath(_item->_file);
@@ -701,7 +722,8 @@ void PropagateDownloadFileQNAM::downloadFinished()
&& !FileSystem::fileEquals(fn, _tmpFile.fileName());
if (isConflict) {
QString renameError;
- QString conflictFileName = FileSystem::makeConflictFileName(fn, Utility::qDateTimeFromTime_t(_item->_modtime));
+ QString conflictFileName = FileSystem::makeConflictFileName(
+ fn, Utility::qDateTimeFromTime_t(FileSystem::getModTime(fn)));
if (!FileSystem::rename(fn, conflictFileName, &renameError)) {
// If the rename fails, don't replace it.
@@ -796,8 +818,10 @@ void PropagateDownloadFileQNAM::downloadFinished()
done(isConflict ? SyncFileItem::Conflict : SyncFileItem::Success);
// handle the special recall file
- if(_item->_file == QLatin1String(".sys.admin#recall#") || _item->_file.endsWith("/.sys.admin#recall#")) {
- handleRecallFile(fn);
+ if(!_item->_remotePerm.contains("S")
+ && (_item->_file == QLatin1String(".sys.admin#recall#")
+ || _item->_file.endsWith("/.sys.admin#recall#"))) {
+ handleRecallFile(fn, _propagator->_localDir, *_propagator->_journal);
}
qint64 duration = _stopwatch.elapsed();
@@ -806,7 +830,7 @@ void PropagateDownloadFileQNAM::downloadFinished()
}
}
-void PropagateDownloadFileQNAM::slotDownloadProgress(qint64 received, qint64)
+void PropagateDownloadFile::slotDownloadProgress(qint64 received, qint64)
{
if (!_job) return;
_downloadProgress = received;
@@ -814,7 +838,7 @@ void PropagateDownloadFileQNAM::slotDownloadProgress(qint64 received, qint64)
}
-void PropagateDownloadFileQNAM::abort()
+void PropagateDownloadFile::abort()
{
if (_job && _job->reply())
_job->reply()->abort();
diff --git a/src/libsync/propagatedownload.h b/src/libsync/propagatedownload.h
index fd05d065c..1317dda86 100644
--- a/src/libsync/propagatedownload.h
+++ b/src/libsync/propagatedownload.h
@@ -103,13 +103,13 @@ private slots:
};
/**
- * @brief The PropagateDownloadFileQNAM class
+ * @brief The PropagateDownloadFile class
* @ingroup libsync
*/
-class PropagateDownloadFileQNAM : public PropagateItemJob {
+class PropagateDownloadFile : public PropagateItemJob {
Q_OBJECT
public:
- PropagateDownloadFileQNAM(OwncloudPropagator* propagator,const SyncFileItemPtr& item)
+ PropagateDownloadFile(OwncloudPropagator* propagator,const SyncFileItemPtr& item)
: PropagateItemJob(propagator, item), _resumeStart(0), _downloadProgress(0), _deleteExisting(false) {}
void start() Q_DECL_OVERRIDE;
qint64 committedDiskSpace() const Q_DECL_OVERRIDE;
diff --git a/src/libsync/propagateremotedelete.cpp b/src/libsync/propagateremotedelete.cpp
index 30b06fe41..9be19c309 100644
--- a/src/libsync/propagateremotedelete.cpp
+++ b/src/libsync/propagateremotedelete.cpp
@@ -22,11 +22,14 @@ DeleteJob::DeleteJob(AccountPtr account, const QString& path, QObject* parent)
: AbstractNetworkJob(account, path, parent)
{ }
+DeleteJob::DeleteJob(AccountPtr account, const QUrl& url, QObject* parent)
+ : AbstractNetworkJob(account, QString(), parent), _url(url)
+{ }
void DeleteJob::start()
{
QNetworkRequest req;
- setReply(davRequest("DELETE", path(), req));
+ setReply(_url.isValid() ? davRequest("DELETE", _url, req) : davRequest("DELETE", path(), req));
setupConnections(reply());
if( reply()->error() != QNetworkReply::NoError ) {
diff --git a/src/libsync/propagateremotedelete.h b/src/libsync/propagateremotedelete.h
index 0473042c8..44f4ebd3b 100644
--- a/src/libsync/propagateremotedelete.h
+++ b/src/libsync/propagateremotedelete.h
@@ -24,8 +24,10 @@ namespace OCC {
*/
class DeleteJob : public AbstractNetworkJob {
Q_OBJECT
+ QUrl _url; // Only used if the constructor taking a url is taken.
public:
explicit DeleteJob(AccountPtr account, const QString& path, QObject* parent = 0);
+ explicit DeleteJob(AccountPtr account, const QUrl& url, QObject* parent = 0);
void start() Q_DECL_OVERRIDE;
bool finished() Q_DECL_OVERRIDE;
diff --git a/src/libsync/propagateremotemove.cpp b/src/libsync/propagateremotemove.cpp
index 76dc23f42..f4ea68a6a 100644
--- a/src/libsync/propagateremotemove.cpp
+++ b/src/libsync/propagateremotemove.cpp
@@ -13,12 +13,14 @@
*/
#include "propagateremotemove.h"
+#include "propagatorjobs.h"
#include "owncloudpropagator_p.h"
#include "account.h"
#include "syncjournalfilerecord.h"
#include "filesystem.h"
#include <QFile>
#include <QStringList>
+#include <QDir>
namespace OCC {
@@ -27,12 +29,20 @@ MoveJob::MoveJob(AccountPtr account, const QString& path,
: AbstractNetworkJob(account, path, parent), _destination(destination)
{ }
+MoveJob::MoveJob(AccountPtr account, const QUrl& url, const QString &destination,
+ QMap<QByteArray, QByteArray> extraHeaders, QObject* parent)
+ : AbstractNetworkJob(account, QString(), parent), _destination(destination), _url(url)
+ , _extraHeaders(extraHeaders)
+{ }
void MoveJob::start()
{
QNetworkRequest req;
req.setRawHeader("Destination", QUrl::toPercentEncoding(_destination, "/"));
- setReply(davRequest("MOVE", path(), req));
+ for(auto it = _extraHeaders.constBegin(); it != _extraHeaders.constEnd(); ++it) {
+ req.setRawHeader(it.key(), it.value());
+ }
+ setReply(_url.isValid() ? davRequest("MOVE", _url, req) : davRequest("MOVE", path(), req));
setupConnections(reply());
if( reply()->error() != QNetworkReply::NoError ) {
@@ -92,10 +102,11 @@ void PropagateRemoteMove::start()
}
}
+ QString destination = QDir::cleanPath(_propagator->account()->url().path() + QLatin1Char('/')
+ + _propagator->account()->davPath() + _propagator->_remoteFolder + _item->_renameTarget);
_job = new MoveJob(_propagator->account(),
_propagator->_remoteFolder + _item->_file,
- _propagator->_remoteDir + _item->_renameTarget,
- this);
+ destination, this);
connect(_job, SIGNAL(finishedSignal()), this, SLOT(slotMoveJobFinished()));
_propagator->_activeJobList.append(this);
_job->start();
@@ -175,10 +186,45 @@ void PropagateRemoteMove::finalize()
done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
return;
}
+
+ if (_item->_isDirectory) {
+ if (!adjustSelectiveSync(_propagator->_journal, _item->_file, _item->_renameTarget)) {
+ done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
+ return;
+ }
+ }
+
_propagator->_journal->commit("Remote Rename");
done(SyncFileItem::Success);
}
+bool PropagateRemoteMove::adjustSelectiveSync(SyncJournalDb *journal, const QString &from_, const QString &to_)
+{
+ bool ok;
+ // We only care about preserving the blacklist. The white list should anyway be empty.
+ // And the undecided list will be repopulated on the next sync, if there is anything too big.
+ QStringList list = journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, &ok);
+ if (!ok)
+ return false;
+
+ bool changed = false;
+ Q_ASSERT(!from_.endsWith(QLatin1String("/")));
+ Q_ASSERT(!to_.endsWith(QLatin1String("/")));
+ QString from = from_ + QLatin1String("/");
+ QString to = to_ + QLatin1String("/");
+
+ for (auto it = list.begin(); it != list.end(); ++it) {
+ if (it->startsWith(from)) {
+ *it = it->replace(0, from.size(), to);
+ changed = true;
+ }
+ }
+
+ if (changed) {
+ journal->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, list);
+ }
+ return true;
+}
}
diff --git a/src/libsync/propagateremotemove.h b/src/libsync/propagateremotemove.h
index 3ce54f4a8..8d213e430 100644
--- a/src/libsync/propagateremotemove.h
+++ b/src/libsync/propagateremotemove.h
@@ -25,8 +25,12 @@ namespace OCC {
class MoveJob : public AbstractNetworkJob {
Q_OBJECT
const QString _destination;
+ const QUrl _url; // Only used (instead of path) when the constructor taking an URL is used
+ QMap<QByteArray, QByteArray> _extraHeaders;
public:
explicit MoveJob(AccountPtr account, const QString& path, const QString &destination, QObject* parent = 0);
+ explicit MoveJob(AccountPtr account, const QUrl& url, const QString &destination,
+ QMap<QByteArray, QByteArray> _extraHeaders, QObject* parent = 0);
void start() Q_DECL_OVERRIDE;
bool finished() Q_DECL_OVERRIDE;
@@ -51,6 +55,12 @@ public:
void start() Q_DECL_OVERRIDE;
void abort() Q_DECL_OVERRIDE;
JobParallelism parallelism() Q_DECL_OVERRIDE { return OCC::PropagatorJob::WaitForFinishedInParentDirectory; }
+
+ /**
+ * Rename the directory in the selective sync list
+ */
+ static bool adjustSelectiveSync(SyncJournalDb *journal, const QString &from, const QString &to);
+
private slots:
void slotMoveJobFinished();
void finalize();
diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp
index f60106244..388752ad9 100644
--- a/src/libsync/propagateupload.cpp
+++ b/src/libsync/propagateupload.cpp
@@ -72,7 +72,8 @@ void PUTFileJob::start() {
req.setRawHeader(it.key(), it.value());
}
- setReply(davRequest("PUT", path(), req, _device.data()));
+ setReply(_url.isValid() ? davRequest("PUT", _url, req, _device.data())
+ : davRequest("PUT", path(), req, _device.data()));
setupConnections(reply());
if( reply()->error() != QNetworkReply::NoError ) {
@@ -184,7 +185,13 @@ bool PollJob::finished()
return true;
}
-void PropagateUploadFileQNAM::start()
+void PropagateUploadFileCommon::setDeleteExisting(bool enabled)
+{
+ _deleteExisting = enabled;
+}
+
+
+void PropagateUploadFileCommon::start()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0)) {
return;
@@ -205,7 +212,7 @@ void PropagateUploadFileQNAM::start()
job->start();
}
-void PropagateUploadFileQNAM::slotComputeContentChecksum()
+void PropagateUploadFileCommon::slotComputeContentChecksum()
{
if (_propagator->_abortRequested.fetchAndAddRelaxed(0)) {
return;
@@ -239,12 +246,7 @@ void PropagateUploadFileQNAM::slotComputeContentChecksum()
computeChecksum->start(filePath);
}
-void PropagateUploadFileQNAM::setDeleteExisting(bool enabled)
-{
- _deleteExisting = enabled;
-}
-
-void PropagateUploadFileQNAM::slotComputeTransmissionChecksum(const QByteArray& contentChecksumType, const QByteArray& contentChecksum)
+void PropagateUploadFileCommon::slotComputeTransmissionChecksum(const QByteArray& contentChecksumType, const QByteArray& contentChecksum)
{
_item->_contentChecksum = contentChecksum;
_item->_contentChecksumType = contentChecksumType;
@@ -276,7 +278,7 @@ void PropagateUploadFileQNAM::slotComputeTransmissionChecksum(const QByteArray&
computeChecksum->start(filePath);
}
-void PropagateUploadFileQNAM::slotStartUpload(const QByteArray& transmissionChecksumType, const QByteArray& transmissionChecksum)
+void PropagateUploadFileCommon::slotStartUpload(const QByteArray& transmissionChecksumType, const QByteArray& transmissionChecksum)
{
// Remove ourselfs from the list of active job, before any posible call to done()
// When we start chunks, we will add it again, once for every chunks.
@@ -299,7 +301,7 @@ void PropagateUploadFileQNAM::slotStartUpload(const QByteArray& transmissionChec
}
_stopWatch.addLapTime(QLatin1String("TransmissionChecksum"));
- time_t prevModtime = _item->_modtime; // the _item value was set in PropagateUploadFileQNAM::start()
+ time_t prevModtime = _item->_modtime; // the _item value was set in PropagateUploadFile::start()
// but a potential checksum calculation could have taken some time during which the file could
// have been changed again, so better check again here.
@@ -322,23 +324,7 @@ void PropagateUploadFileQNAM::slotStartUpload(const QByteArray& transmissionChec
return;
}
- _chunkCount = std::ceil(fileSize/double(chunkSize()));
- _startChunk = 0;
- _transferId = qrand() ^ _item->_modtime ^ (_item->_size << 16);
-
- const SyncJournalDb::UploadInfo progressInfo = _propagator->_journal->getUploadInfo(_item->_file);
-
- if (progressInfo._valid && Utility::qDateTimeToTime_t(progressInfo._modtime) == _item->_modtime ) {
- _startChunk = progressInfo._chunk;
- _transferId = progressInfo._transferid;
- qDebug() << Q_FUNC_INFO << _item->_file << ": Resuming from chunk " << _startChunk;
- }
-
- _currentChunk = 0;
- _duration.start();
-
- emit progress(*_item, 0);
- this->startNextChunk();
+ doStartUpload();
}
UploadDevice::UploadDevice(BandwidthManager *bwm)
@@ -476,371 +462,7 @@ void UploadDevice::setChoked(bool b) {
}
}
-void PropagateUploadFileQNAM::startNextChunk()
-{
- if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
- return;
-
- if (! _jobs.isEmpty() && _currentChunk + _startChunk >= _chunkCount - 1) {
- // Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
- // https://github.com/owncloud/core/issues/11106
- // We return now and when the _jobs are finished we will proceed with the last chunk
- // NOTE: Some other parts of the code such as slotUploadProgress also assume that the last chunk
- // is sent last.
- return;
- }
- quint64 fileSize = _item->_size;
- 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->_file.contains(".sys.admin#recall#")) {
- // This is a file recall triggered by the admin. Note: the
- // recall list file created by the admin and downloaded by the
- // client (.sys.admin#recall#) also falls into this category
- // (albeit users are not supposed to mess up with it)
-
- // We use a special tag header so that the server may decide to store this file away in some admin stage area
- // And not directly in the user's area (which would trigger redownloads etc).
- headers["OC-Tag"] = ".sys.admin#recall#";
- }
-
- if (!_item->_etag.isEmpty() && _item->_etag != "empty_etag"
- && _item->_instruction != CSYNC_INSTRUCTION_NEW // On new files never send a If-Match
- && _item->_instruction != CSYNC_INSTRUCTION_TYPE_CHANGE
- && !_deleteExisting
- ) {
- // We add quotes because the owncloud server always adds quotes around the etag, and
- // csync_owncloud.c's owncloud_file_id always strips the quotes.
- headers["If-Match"] = '"' + _item->_etag + '"';
- }
-
- QString path = _item->_file;
-
- UploadDevice *device = new UploadDevice(&_propagator->_bandwidthManager);
- qint64 chunkStart = 0;
- qint64 currentChunkSize = fileSize;
- bool isFinalChunk = false;
- if (_chunkCount > 1) {
- int sendingChunk = (_currentChunk + _startChunk) % _chunkCount;
- // XOR with chunk size to make sure everything goes well if chunk size changes between runs
- uint transid = _transferId ^ chunkSize();
- qDebug() << "Upload chunk" << sendingChunk << "of" << _chunkCount << "transferid(remote)=" << transid;
- path += QString("-chunking-%1-%2-%3").arg(transid).arg(_chunkCount).arg(sendingChunk);
-
- headers["OC-Chunked"] = "1";
-
- chunkStart = chunkSize() * quint64(sendingChunk);
- currentChunkSize = chunkSize();
- if (sendingChunk == _chunkCount - 1) { // last chunk
- currentChunkSize = (fileSize % chunkSize());
- if( currentChunkSize == 0 ) { // if the last chunk pretends to be 0, its actually the full chunk size.
- currentChunkSize = chunkSize();
- }
- isFinalChunk = true;
- }
- } else {
- // if there's only one chunk, it's the final one
- isFinalChunk = true;
- }
-
- if (isFinalChunk && !_transmissionChecksumType.isEmpty()) {
- headers[checkSumHeaderC] = makeChecksumHeader(
- _transmissionChecksumType, _transmissionChecksum);
- }
-
- const QString fileName = _propagator->getFilePath(_item->_file);
- if (! device->prepareAndOpen(fileName, chunkStart, currentChunkSize)) {
- qDebug() << "ERR: Could not prepare upload device: " << device->errorString();
-
- // If the file is currently locked, we want to retry the sync
- // when it becomes available again.
- if (FileSystem::isFileLocked(fileName)) {
- emit _propagator->seenLockedFile(fileName);
- }
-
- // Soft error because this is likely caused by the user modifying his files while syncing
- abortWithError( SyncFileItem::SoftError, device->errorString() );
- delete device;
- return;
- }
-
- // job takes ownership of device via a QScopedPointer. Job deletes itself when finishing
- PUTFileJob* job = new PUTFileJob(_propagator->account(), _propagator->_remoteFolder + path, device, headers, _currentChunk);
- _jobs.append(job);
- connect(job, SIGNAL(finishedSignal()), this, SLOT(slotPutFinished()));
- connect(job, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(slotUploadProgress(qint64,qint64)));
- connect(job, SIGNAL(uploadProgress(qint64,qint64)), device, SLOT(slotJobUploadProgress(qint64,qint64)));
- connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
- job->start();
- _propagator->_activeJobList.append(this);
- _currentChunk++;
-
- bool parallelChunkUpload = true;
- QByteArray env = qgetenv("OWNCLOUD_PARALLEL_CHUNK");
- if (!env.isEmpty()) {
- parallelChunkUpload = env != "false" && env != "0";
- } else {
- int versionNum = _propagator->account()->serverVersionInt();
- if (versionNum < 0x080003) {
- // Disable parallel chunk upload severs older than 8.0.3 to avoid too many
- // internal sever errors (#2743, #2938)
- parallelChunkUpload = false;
- }
- }
-
- if (_currentChunk + _startChunk >= _chunkCount - 1) {
- // Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
- // https://github.com/owncloud/core/issues/11106
- parallelChunkUpload = false;
- }
-
- if (parallelChunkUpload && (_propagator->_activeJobList.count() < _propagator->maximumActiveJob())
- && _currentChunk < _chunkCount ) {
- startNextChunk();
- }
- if (!parallelChunkUpload || _chunkCount - _currentChunk <= 0) {
- emit ready();
- }
-}
-
-void PropagateUploadFileQNAM::slotPutFinished()
-{
- PUTFileJob *job = qobject_cast<PUTFileJob *>(sender());
- Q_ASSERT(job);
- slotJobDestroyed(job); // remove it from the _jobs list
-
- qDebug() << Q_FUNC_INFO << job->reply()->request().url() << "FINISHED WITH STATUS"
- << job->reply()->error()
- << (job->reply()->error() == QNetworkReply::NoError ? QLatin1String("") : job->reply()->errorString())
- << job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute)
- << job->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
-
- _propagator->_activeJobList.removeOne(this);
-
- if (_finished) {
- // We have sent the finished signal already. We don't need to handle any remaining jobs
- return;
- }
-
- QNetworkReply::NetworkError err = job->reply()->error();
-
-#if QT_VERSION < QT_VERSION_CHECK(5, 4, 2)
- if (err == QNetworkReply::OperationCanceledError && job->reply()->property(owncloudShouldSoftCancelPropertyName).isValid()) {
- // Abort the job and try again later.
- // This works around a bug in QNAM wich might reuse a non-empty buffer for the next request.
- qDebug() << "Forcing job abort on HTTP connection reset with Qt < 5.4.2.";
- _propagator->_anotherSyncNeeded = true;
- abortWithError(SyncFileItem::SoftError, tr("Forcing job abort on HTTP connection reset with Qt < 5.4.2."));
- return;
- }
-#endif
-
- if (err != QNetworkReply::NoError) {
- _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- if(checkForProblemsWithShared(_item->_httpErrorCode,
- tr("The file was edited locally but is part of a read only share. "
- "It is restored and your edit is in the conflict file."))) {
- return;
- }
- QByteArray replyContent = job->reply()->readAll();
- qDebug() << replyContent; // display the XML error in the debug
- QString errorString = errorMessage(job->errorString(), replyContent);
-
- if (job->reply()->hasRawHeader("OC-ErrorString")) {
- errorString = job->reply()->rawHeader("OC-ErrorString");
- }
-
- if (_item->_httpErrorCode == 412) {
- // Precondition Failed: Maybe the bad etag is in the database, we need to clear the
- // parent folder etag so we won't read from DB next sync.
- _propagator->_journal->avoidReadFromDbOnNextSync(_item->_file);
- _propagator->_anotherSyncNeeded = true;
- }
-
- SyncFileItem::Status status = classifyError(err, _item->_httpErrorCode,
- &_propagator->_anotherSyncNeeded);
- abortWithError(status, errorString);
- return;
- }
-
- _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- // The server needs some time to process the request and provide us with a poll URL
- if (_item->_httpErrorCode == 202) {
- _finished = true;
- QString path = QString::fromUtf8(job->reply()->rawHeader("OC-Finish-Poll"));
- if (path.isEmpty()) {
- done(SyncFileItem::NormalError, tr("Poll URL missing"));
- return;
- }
- startPollJob(path);
- return;
- }
-
- // Check the file again post upload.
- // Two cases must be considered separately: If the upload is finished,
- // the file is on the server and has a changed ETag. In that case,
- // the etag has to be properly updated in the client journal, and because
- // of that we can bail out here with an error. But we can reschedule a
- // sync ASAP.
- // But if the upload is ongoing, because not all chunks were uploaded
- // yet, the upload can be stopped and an error can be displayed, because
- // the server hasn't registered the new file yet.
- QByteArray etag = getEtagFromReply(job->reply());
- bool finished = etag.length() > 0;
-
- // Check if the file still exists
- const QString fullFilePath(_propagator->getFilePath(_item->_file));
- if( !FileSystem::fileExists(fullFilePath) ) {
- if (!finished) {
- abortWithError(SyncFileItem::SoftError, tr("The local file was removed during sync."));
- return;
- } else {
- _propagator->_anotherSyncNeeded = true;
- }
- }
-
- // Check whether the file changed since discovery.
- if (! FileSystem::verifyFileUnchanged(fullFilePath, _item->_size, _item->_modtime)) {
- _propagator->_anotherSyncNeeded = true;
- if( !finished ) {
- abortWithError(SyncFileItem::SoftError, tr("Local file changed during sync."));
- // FIXME: the legacy code was retrying for a few seconds.
- // and also checking that after the last chunk, and removed the file in case of INSTRUCTION_NEW
- return;
- }
- }
-
- if (!finished) {
- // Proceed to next chunk.
- if (_currentChunk >= _chunkCount) {
- if (!_jobs.empty()) {
- // just wait for the other job to finish.
- return;
- }
- _finished = true;
- done(SyncFileItem::NormalError, tr("The server did not acknowledge the last chunk. (No e-tag was present)"));
- return;
- }
-
- // Deletes an existing blacklist entry on successful chunk upload
- if (_item->_hasBlacklistEntry) {
- _propagator->_journal->wipeErrorBlacklistEntry(_item->_file);
- _item->_hasBlacklistEntry = false;
- }
-
- SyncJournalDb::UploadInfo pi;
- pi._valid = true;
- auto currentChunk = job->_chunk;
- foreach (auto *job, _jobs) {
- // Take the minimum finished one
- if (auto putJob = qobject_cast<PUTFileJob*>(job)) {
- currentChunk = qMin(currentChunk, putJob->_chunk - 1);
- }
- }
- pi._chunk = (currentChunk + _startChunk + 1) % _chunkCount ; // next chunk to start with
- pi._transferid = _transferId;
- pi._modtime = Utility::qDateTimeFromTime_t(_item->_modtime);
- _propagator->_journal->setUploadInfo(_item->_file, pi);
- _propagator->_journal->commit("Upload info");
- startNextChunk();
- return;
- }
-
- // the following code only happens after all chunks were uploaded.
- _finished = true;
- // the file id should only be empty for new files up- or downloaded
- QByteArray fid = job->reply()->rawHeader("OC-FileID");
- if( !fid.isEmpty() ) {
- if( !_item->_fileId.isEmpty() && _item->_fileId != fid ) {
- qDebug() << "WARN: File ID changed!" << _item->_fileId << fid;
- }
- _item->_fileId = fid;
- }
-
- _item->_etag = etag;
-
- _item->_responseTimeStamp = job->responseTimestamp();
-
- if (job->reply()->rawHeader("X-OC-MTime") != "accepted") {
- // X-OC-MTime is supported since owncloud 5.0. But not when chunking.
- // Normally Owncloud 6 always puts X-OC-MTime
- qWarning() << "Server does not support X-OC-MTime" << job->reply()->rawHeader("X-OC-MTime");
- // Well, the mtime was not set
- done(SyncFileItem::SoftError, "Server does not support X-OC-MTime");
- }
-
- // performance logging
- _item->_requestDuration = _stopWatch.stop();
- qDebug() << "*==* duration UPLOAD" << _item->_size
- << _stopWatch.durationOfLap(QLatin1String("ContentChecksum"))
- << _stopWatch.durationOfLap(QLatin1String("TransmissionChecksum"))
- << _item->_requestDuration;
- // The job might stay alive for the whole sync, release this tiny bit of memory.
- _stopWatch.reset();
-
- finalize(*_item);
-}
-
-void PropagateUploadFileQNAM::finalize(const SyncFileItem &copy)
-{
- // Normally, copy == _item, but when it comes from the UpdateMTimeAndETagJob, we need to do
- // some updates
- _item->_etag = copy._etag;
- _item->_fileId = copy._fileId;
-
- _item->_requestDuration = _duration.elapsed();
-
- _finished = true;
-
- if (!_propagator->_journal->setFileRecord(SyncJournalFileRecord(*_item, _propagator->getFilePath(_item->_file)))) {
- done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
- return;
- }
- // Remove from the progress database:
- _propagator->_journal->setUploadInfo(_item->_file, SyncJournalDb::UploadInfo());
- _propagator->_journal->commit("upload file start");
-
- done(SyncFileItem::Success);
-}
-
-void PropagateUploadFileQNAM::slotUploadProgress(qint64 sent, qint64 total)
-{
- // Completion is signaled with sent=0, total=0; avoid accidentally
- // resetting progress due to the sent being zero by ignoring it.
- // finishedSignal() is bound to be emitted soon anyway.
- // See https://bugreports.qt.io/browse/QTBUG-44782.
- if (sent == 0 && total == 0) {
- return;
- }
-
- int progressChunk = _currentChunk + _startChunk - 1;
- if (progressChunk >= _chunkCount)
- progressChunk = _currentChunk - 1;
-
- // amount is the number of bytes already sent by all the other chunks that were sent
- // not including this one.
- // FIXME: this assumes all chunks have the same size, which is true only if the last chunk
- // has not been finished (which should not happen because the last chunk is sent sequentially)
- quint64 amount = progressChunk * chunkSize();
-
- sender()->setProperty("byteWritten", sent);
- if (_jobs.count() > 1) {
- amount -= (_jobs.count() -1) * chunkSize();
- foreach (QObject *j, _jobs) {
- amount += j->property("byteWritten").toULongLong();
- }
- } else {
- // sender() is the only current job, no need to look at the byteWritten properties
- amount += sent;
- }
- emit progress(*_item, amount);
-}
-
-void PropagateUploadFileQNAM::startPollJob(const QString& path)
+void PropagateUploadFileCommon::startPollJob(const QString& path)
{
PollJob* job = new PollJob(_propagator->account(), path, _item,
_propagator->_journal, _propagator->_localDir, this);
@@ -855,7 +477,7 @@ void PropagateUploadFileQNAM::startPollJob(const QString& path)
job->start();
}
-void PropagateUploadFileQNAM::slotPollFinished()
+void PropagateUploadFileCommon::slotPollFinished()
{
PollJob *job = qobject_cast<PollJob *>(sender());
Q_ASSERT(job);
@@ -868,15 +490,15 @@ void PropagateUploadFileQNAM::slotPollFinished()
return;
}
- finalize(*job->_item);
+ finalize();
}
-void PropagateUploadFileQNAM::slotJobDestroyed(QObject* job)
+void PropagateUploadFileCommon::slotJobDestroyed(QObject* job)
{
_jobs.erase(std::remove(_jobs.begin(), _jobs.end(), job) , _jobs.end());
}
-void PropagateUploadFileQNAM::abort()
+void PropagateUploadFileCommon::abort()
{
foreach(auto *job, _jobs) {
if (job->reply()) {
@@ -887,12 +509,58 @@ void PropagateUploadFileQNAM::abort()
}
// This function is used whenever there is an error occuring and jobs might be in progress
-void PropagateUploadFileQNAM::abortWithError(SyncFileItem::Status status, const QString &error)
+void PropagateUploadFileCommon::abortWithError(SyncFileItem::Status status, const QString &error)
{
_finished = true;
abort();
done(status, error);
}
+QMap<QByteArray, QByteArray> PropagateUploadFileCommon::headers()
+{
+ QMap<QByteArray, QByteArray> headers;
+ headers["OC-Async"] = "1";
+ headers["Content-Type"] = "application/octet-stream";
+ headers["X-OC-Mtime"] = QByteArray::number(qint64(_item->_modtime));
+
+ if(_item->_file.contains(".sys.admin#recall#")) {
+ // This is a file recall triggered by the admin. Note: the
+ // recall list file created by the admin and downloaded by the
+ // client (.sys.admin#recall#) also falls into this category
+ // (albeit users are not supposed to mess up with it)
+
+ // We use a special tag header so that the server may decide to store this file away in some admin stage area
+ // And not directly in the user's area (which would trigger redownloads etc).
+ headers["OC-Tag"] = ".sys.admin#recall#";
+ }
+
+ if (!_item->_etag.isEmpty() && _item->_etag != "empty_etag"
+ && _item->_instruction != CSYNC_INSTRUCTION_NEW // On new files never send a If-Match
+ && _item->_instruction != CSYNC_INSTRUCTION_TYPE_CHANGE
+ && !_deleteExisting
+ ) {
+ // We add quotes because the owncloud server always adds quotes around the etag, and
+ // csync_owncloud.c's owncloud_file_id always strips the quotes.
+ headers["If-Match"] = '"' + _item->_etag + '"';
+ }
+ return headers;
+}
+
+void PropagateUploadFileCommon::finalize()
+{
+ _item->_requestDuration = _duration.elapsed();
+ _finished = true;
+
+ if (!_propagator->_journal->setFileRecord(SyncJournalFileRecord(*_item, _propagator->getFilePath(_item->_file)))) {
+ done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
+ return;
+ }
+ // Remove from the progress database:
+ _propagator->_journal->setUploadInfo(_item->_file, SyncJournalDb::UploadInfo());
+ _propagator->_journal->commit("upload file start");
+
+ done(SyncFileItem::Success);
+}
+
}
diff --git a/src/libsync/propagateupload.h b/src/libsync/propagateupload.h
index a340f1a28..bac3e112b 100644
--- a/src/libsync/propagateupload.h
+++ b/src/libsync/propagateupload.h
@@ -89,12 +89,17 @@ private:
QScopedPointer<QIODevice> _device;
QMap<QByteArray, QByteArray> _headers;
QString _errorString;
+ QUrl _url;
public:
// Takes ownership of the device
explicit PUTFileJob(AccountPtr account, const QString& path, QIODevice *device,
const QMap<QByteArray, QByteArray> &headers, int chunk, QObject* parent = 0)
: AbstractNetworkJob(account, path, parent), _device(device), _headers(headers), _chunk(chunk) {}
+ explicit PUTFileJob(AccountPtr account, const QUrl& url, QIODevice *device,
+ const QMap<QByteArray, QByteArray> &headers, int chunk, QObject* parent = 0)
+ : AbstractNetworkJob(account, QString(), parent), _device(device), _headers(headers)
+ , _url(url), _chunk(chunk) {}
~PUTFileJob();
int _chunk;
@@ -155,10 +160,90 @@ signals:
};
/**
- * @brief The PropagateUploadFileQNAM class
+ * @brief The PropagateUploadFileCommon class is the code common between all chunking algorithms
+ * @ingroup libsync
+ *
+ * State Machine:
+ *
+ * +---> start() --> (delete job) -------+
+ * | |
+ * +--> slotComputeContentChecksum() <---+
+ * |
+ * v
+ * slotComputeTransmissionChecksum()
+ * |
+ * v
+ * slotStartUpload() -> doStartUpload()
+ * .
+ * .
+ * v
+ * finalize() or abortWithError() or startPollJob()
+ */
+class PropagateUploadFileCommon : public PropagateItemJob {
+ Q_OBJECT
+
+protected:
+ QElapsedTimer _duration;
+ QVector<AbstractNetworkJob*> _jobs; /// network jobs that are currently in transit
+ bool _finished; /// Tells that all the jobs have been finished
+ bool _deleteExisting;
+
+ // measure the performance of checksum calc and upload
+ Utility::StopWatch _stopWatch;
+
+ QByteArray _transmissionChecksum;
+ QByteArray _transmissionChecksumType;
+
+
+public:
+ PropagateUploadFileCommon(OwncloudPropagator* propagator,const SyncFileItemPtr& item)
+ : PropagateItemJob(propagator, item), _finished(false), _deleteExisting(false) {}
+
+ /**
+ * Whether an existing entity with the same name may be deleted before
+ * the upload.
+ *
+ * Default: false.
+ */
+ void setDeleteExisting(bool enabled);
+
+ void start() Q_DECL_OVERRIDE;
+
+ bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return _item->_size < 100*1024; }
+
+private slots:
+ void slotComputeContentChecksum();
+ // Content checksum computed, compute the transmission checksum
+ void slotComputeTransmissionChecksum(const QByteArray& contentChecksumType, const QByteArray& contentChecksum);
+ // transmission checksum computed, prepare the upload
+ void slotStartUpload(const QByteArray& transmissionChecksumType, const QByteArray& transmissionChecksum);
+public:
+ virtual void doStartUpload() = 0;
+
+ void startPollJob(const QString& path);
+ void finalize();
+ void abortWithError(SyncFileItem::Status status, const QString &error);
+
+public slots:
+ void abort() Q_DECL_OVERRIDE;
+ void slotJobDestroyed(QObject *job);
+
+private slots:
+ void slotPollFinished();
+
+protected:
+ // Bases headers that need to be sent with every chunk
+ QMap<QByteArray, QByteArray> headers();
+
+};
+
+/**
* @ingroup libsync
+ *
+ * Propagation job, impementing the old chunking agorithm
+ *
*/
-class PropagateUploadFileQNAM : public PropagateItemJob {
+class PropagateUploadFileV1 : public PropagateUploadFileCommon {
Q_OBJECT
private:
@@ -176,49 +261,66 @@ private:
int _currentChunk;
int _chunkCount; /// Total number of chunks for this file
int _transferId; /// transfer id (part of the url)
- QElapsedTimer _duration;
- QVector<AbstractNetworkJob*> _jobs; /// network jobs that are currently in transit
- bool _finished; // Tells that all the jobs have been finished
- // measure the performance of checksum calc and upload
- Utility::StopWatch _stopWatch;
+ quint64 chunkSize() const { return _propagator->chunkSize(); }
- QByteArray _transmissionChecksum;
- QByteArray _transmissionChecksumType;
- bool _deleteExisting;
+public:
+ PropagateUploadFileV1(OwncloudPropagator* propagator,const SyncFileItemPtr& item) :
+ PropagateUploadFileCommon(propagator,item) {}
- quint64 chunkSize() const { return _propagator->chunkSize(); }
+ void doStartUpload() Q_DECL_OVERRIDE;
-public:
- PropagateUploadFileQNAM(OwncloudPropagator* propagator,const SyncFileItemPtr& item)
- : PropagateItemJob(propagator, item), _startChunk(0), _currentChunk(0), _chunkCount(0), _transferId(0), _finished(false), _deleteExisting(false) {}
- void start() Q_DECL_OVERRIDE;
+private slots:
+ void startNextChunk();
+ void slotPutFinished();
+ void slotUploadProgress(qint64,qint64);
+};
+
+/**
+ * @ingroup libsync
+ *
+ * Propagation job, impementing the new chunking agorithm
+ *
+ */
+class PropagateUploadFileNG : public PropagateUploadFileCommon {
+ Q_OBJECT
+private:
+ quint64 _sent; /// amount of data (bytes) that was already sent
+ uint _transferId; /// transfer id (part of the url)
+ int _currentChunk; /// Id of the next chunk that will be sent
+ bool _removeJobError; /// If not null, there was an error removing the job
+ // Map chunk number with its size from the PROPFIND on resume.
+ // (Only used from slotPropfindIterate/slotPropfindFinished because the LsColJob use signals to report data.)
+ QMap<int, quint64> _serverChunks;
+
+ quint64 chunkSize() const { return _propagator->chunkSize(); }
/**
- * Whether an existing entity with the same name may be deleted before
- * the upload.
- *
- * Default: false.
+ * Return the URL of a chunk.
+ * If chunk == -1, returns the URL of the parent folder containing the chunks
*/
- void setDeleteExisting(bool enabled);
+ QUrl chunkUrl(int chunk = -1);
+
+public:
+ PropagateUploadFileNG(OwncloudPropagator* propagator,const SyncFileItemPtr& item) :
+ PropagateUploadFileCommon(propagator,item) {}
+ void doStartUpload() Q_DECL_OVERRIDE;
+private:
+ void startNewUpload();
+ void startNextChunk();
private slots:
+ void slotPropfindFinished();
+ void slotPropfindFinishedWithError();
+ void slotPropfindIterate(const QString &name, const QMap<QString,QString> &properties);
+ void slotDeleteJobFinished();
+ void slotMkColFinished(QNetworkReply::NetworkError);
void slotPutFinished();
- void slotPollFinished();
+ void slotMoveJobFinished();
void slotUploadProgress(qint64,qint64);
- void abort() Q_DECL_OVERRIDE;
- void startNextChunk();
- void finalize(const SyncFileItem&);
- void slotJobDestroyed(QObject *job);
- void slotStartUpload(const QByteArray& transmissionChecksumType, const QByteArray& transmissionChecksum);
- void slotComputeTransmissionChecksum(const QByteArray& contentChecksumType, const QByteArray& contentChecksum);
- void slotComputeContentChecksum();
-
-private:
- void startPollJob(const QString& path);
- void abortWithError(SyncFileItem::Status status, const QString &error);
};
+
}
diff --git a/src/libsync/propagateuploadng.cpp b/src/libsync/propagateuploadng.cpp
new file mode 100644
index 000000000..4de29532d
--- /dev/null
+++ b/src/libsync/propagateuploadng.cpp
@@ -0,0 +1,489 @@
+/*
+ * 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 "config.h"
+#include "propagateupload.h"
+#include "owncloudpropagator_p.h"
+#include "networkjobs.h"
+#include "account.h"
+#include "syncjournaldb.h"
+#include "syncjournalfilerecord.h"
+#include "utility.h"
+#include "filesystem.h"
+#include "propagatorjobs.h"
+#include "syncengine.h"
+#include "propagateremotemove.h"
+#include "propagateremotedelete.h"
+
+
+#include <QNetworkAccessManager>
+#include <QFileInfo>
+#include <QDir>
+#include <cmath>
+#include <cstring>
+
+namespace OCC {
+
+QUrl PropagateUploadFileNG::chunkUrl(int chunk)
+{
+ QString path = QLatin1String("remote.php/dav/uploads/")
+ + _propagator->account()->user()
+ + QLatin1Char('/') + QString::number(_transferId);
+ if (chunk >= 0) {
+ path += QLatin1Char('/') + QString::number(chunk);
+ }
+ return Utility::concatUrlPath(_propagator->account()->url(), path);
+}
+
+/*
+ State machine:
+
+ *----> doStartUpload()
+ Check the db: is there an entry?
+ / \
+ no yes
+ / \
+ / PROPFIND
+ startNewUpload() <-+ +----------------------------\
+ | | | \
+ MKCOL + slotPropfindFinishedWithError() slotPropfindFinished()
+ | Is there stale files to remove?
+ slotMkColFinished() | |
+ | no yes
+ | | |
+ | | DeleteJob
+ | | |
+ +-----+<------------------------------------------------------+<--- slotDeleteJobFinished()
+ |
+ +----> startNextChunk() ---finished? --+
+ ^ | |
+ +---------------+ |
+ |
+ +----------------------------------------+
+ |
+ +-> MOVE ------> moveJobFinished() ---> finalize()
+
+
+ */
+
+void PropagateUploadFileNG::doStartUpload()
+{
+ _duration.start();
+ _propagator->_activeJobList.append(this);
+
+ const SyncJournalDb::UploadInfo progressInfo = _propagator->_journal->getUploadInfo(_item->_file);
+ if (progressInfo._valid && Utility::qDateTimeToTime_t(progressInfo._modtime) == _item->_modtime ) {
+ _transferId = progressInfo._transferid;
+ auto url = chunkUrl();
+ auto job = new LsColJob(_propagator->account(), url, this);
+ _jobs.append(job);
+ job->setProperties(QList<QByteArray>() << "resourcetype" << "getcontentlength");
+ connect(job, SIGNAL(finishedWithoutError()), this, SLOT(slotPropfindFinished()));
+ connect(job, SIGNAL(finishedWithError(QNetworkReply*)),
+ this, SLOT(slotPropfindFinishedWithError()));
+ connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
+ connect(job, SIGNAL(directoryListingIterated(QString,QMap<QString,QString>)),
+ this, SLOT(slotPropfindIterate(QString,QMap<QString,QString>)));
+ job->start();
+ return;
+ }
+
+ startNewUpload();
+}
+
+void PropagateUploadFileNG::slotPropfindIterate(const QString &name, const QMap<QString,QString> &properties)
+{
+ if (name == chunkUrl().path()) {
+ return; // skip the info about the path itself
+ }
+ bool ok = false;
+ auto chunkId = name.mid(name.lastIndexOf('/')+1).toUInt(&ok);
+ if (ok) {
+ _serverChunks[chunkId] = properties["getcontentlength"].toULongLong();
+ }
+}
+
+void PropagateUploadFileNG::slotPropfindFinished()
+{
+ auto job = qobject_cast<LsColJob *>(sender());
+ slotJobDestroyed(job); // remove it from the _jobs list
+ _propagator->_activeJobList.removeOne(this);
+
+ _currentChunk = 0;
+ _sent = 0;
+ while (_serverChunks.contains(_currentChunk)) {
+ _sent += _serverChunks[_currentChunk];
+ _serverChunks.remove(_currentChunk);
+ ++_currentChunk;
+ }
+
+ if (_sent > _item->_size) {
+ // Normally this can't happen because the size is xor'ed with the transfer id, and it is
+ // therefore impossible that there is more data on the server than on the file.
+ qWarning() << "Inconsistency while resuming " << _item->_file
+ << ": the size on the server (" << _sent << ") is bigger than the size of the file ("
+ << _item->_size << ")";
+ startNewUpload();
+ return;
+ }
+
+ qDebug() << "Resuming "<< _item->_file << " from chunk " << _currentChunk << "; sent ="<< _sent;
+
+ if (!_serverChunks.isEmpty()) {
+ qDebug() << "To Delete" << _serverChunks;
+ _propagator->_activeJobList.append(this);
+ _removeJobError = false;
+
+ // Make sure that if there is a "hole" and then a few more chunks, on the server
+ // we should remove the later chunks. Otherwise when we do dynamic chunk sizing, we may end up
+ // with corruptions if there are too many chunks, or if we abort and there are still stale chunks.
+ for (auto it = _serverChunks.begin(); it != _serverChunks.end(); ++it) {
+ auto job = new DeleteJob(_propagator->account(), Utility::concatUrlPath(chunkUrl(), QString::number(it.key())), this);
+ QObject::connect(job, SIGNAL(finishedSignal()), this, SLOT(slotDeleteJobFinished()));
+ _jobs.append(job);
+ job->start();
+ }
+ return;
+ }
+
+ startNextChunk();
+}
+
+void PropagateUploadFileNG::slotPropfindFinishedWithError()
+{
+ auto job = qobject_cast<LsColJob *>(sender());
+ slotJobDestroyed(job); // remove it from the _jobs list
+ QNetworkReply::NetworkError err = job->reply()->error();
+ auto httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ auto status = classifyError(err, httpErrorCode, &_propagator->_anotherSyncNeeded);
+ if (status == SyncFileItem::FatalError) {
+ _propagator->_activeJobList.removeOne(this);
+ QString errorString = errorMessage(job->reply()->errorString(), job->reply()->readAll());
+ abortWithError(status, errorString);
+ return;
+ }
+ startNewUpload();
+}
+
+void PropagateUploadFileNG::slotDeleteJobFinished()
+{
+ auto job = qobject_cast<DeleteJob *>(sender());
+ Q_ASSERT(job);
+ _jobs.remove(_jobs.indexOf(job));
+
+ QNetworkReply::NetworkError err = job->reply()->error();
+ if (err != QNetworkReply::NoError && err != QNetworkReply::ContentNotFoundError) {
+ const int httpStatus = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ SyncFileItem::Status status = classifyError(err, httpStatus);
+ if (status == SyncFileItem::FatalError) {
+ abortWithError(status, job->errorString());
+ return;
+ } else {
+ qWarning() << "DeleteJob errored out" << job->errorString() << job->reply()->url();
+ _removeJobError = true;
+ // Let the other jobs finish
+ }
+ }
+
+ if (_jobs.isEmpty()) {
+ _propagator->_activeJobList.removeOne(this);
+ if (_removeJobError) {
+ // There was an error removing some files, just start over
+ startNewUpload();
+ } else {
+ startNextChunk();
+ }
+ }
+}
+
+
+
+void PropagateUploadFileNG::startNewUpload()
+{
+ Q_ASSERT(_propagator->_activeJobList.count(this) == 1);
+ _transferId = qrand() ^ _item->_modtime ^ (_item->_size << 16) ^ qHash(_item->_file);
+ _sent = 0;
+ _currentChunk = 0;
+
+ emit progress(*_item, 0);
+
+ SyncJournalDb::UploadInfo pi;
+ pi._valid = true;
+ pi._transferid = _transferId;
+ pi._modtime = Utility::qDateTimeFromTime_t(_item->_modtime);
+ _propagator->_journal->setUploadInfo(_item->_file, pi);
+ _propagator->_journal->commit("Upload info");
+ QMap<QByteArray, QByteArray> headers;
+ headers["OC-Total-Length"] = QByteArray::number(_item->_size);
+ auto job = new MkColJob(_propagator->account(), chunkUrl(), headers, this);
+
+ connect(job, SIGNAL(finished(QNetworkReply::NetworkError)),
+ this, SLOT(slotMkColFinished(QNetworkReply::NetworkError)));
+ connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
+ job->start();
+}
+
+void PropagateUploadFileNG::slotMkColFinished(QNetworkReply::NetworkError)
+{
+ _propagator->_activeJobList.removeOne(this);
+ auto job = qobject_cast<MkColJob *>(sender());
+ slotJobDestroyed(job); // remove it from the _jobs list
+ QNetworkReply::NetworkError err = job->reply()->error();
+ _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+
+ if (err != QNetworkReply::NoError || _item->_httpErrorCode != 201) {
+ SyncFileItem::Status status = classifyError(err, _item->_httpErrorCode,
+ &_propagator->_anotherSyncNeeded);
+ QString errorString = errorMessage(job->reply()->errorString(), job->reply()->readAll());
+ if (job->reply()->hasRawHeader("OC-ErrorString")) {
+ errorString = job->reply()->rawHeader("OC-ErrorString");
+ }
+ abortWithError(status, errorString);
+ return;
+ }
+ startNextChunk();
+}
+
+void PropagateUploadFileNG::startNextChunk()
+{
+ if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
+ return;
+
+ quint64 fileSize = _item->_size;
+ Q_ASSERT(fileSize >= _sent);
+ quint64 currentChunkSize = qMin(chunkSize(), fileSize - _sent);
+
+ if (currentChunkSize == 0) {
+ Q_ASSERT(_jobs.isEmpty()); // There should be no running job anymore
+ _finished = true;
+ // Finish with a MOVE
+ QString destination = _propagator->account()->url().path()
+ + QLatin1String("/remote.php/dav/files/") + _propagator->account()->user()
+ + _propagator->_remoteFolder + _item->_file;
+
+ auto headers = PropagateUploadFileCommon::headers();
+
+ // "If-Match applies to the source, but we are interested in comparing the etag of the destination
+ auto ifMatch = headers.take("If-Match");
+ if (!ifMatch.isEmpty()) {
+ headers["If"] = "<" + destination.toUtf8() + "> ([" + ifMatch + "])";
+ }
+ if (!_transmissionChecksumType.isEmpty()) {
+ headers[checkSumHeaderC] = makeChecksumHeader(
+ _transmissionChecksumType, _transmissionChecksum);
+ }
+
+ auto job = new MoveJob(_propagator->account(), Utility::concatUrlPath(chunkUrl(), "/.file"),
+ destination, headers, this);
+ _jobs.append(job);
+ connect(job, SIGNAL(finishedSignal()), this, SLOT(slotMoveJobFinished()));
+ connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
+ _propagator->_activeJobList.append(this);
+ job->start();
+ return;
+ }
+
+ auto device = new UploadDevice(&_propagator->_bandwidthManager);
+ const QString fileName = _propagator->getFilePath(_item->_file);
+
+ if (! device->prepareAndOpen(fileName, _sent, currentChunkSize)) {
+ qDebug() << "ERR: Could not prepare upload device: " << device->errorString();
+
+ // If the file is currently locked, we want to retry the sync
+ // when it becomes available again.
+ if (FileSystem::isFileLocked(fileName)) {
+ emit _propagator->seenLockedFile(fileName);
+ }
+ // Soft error because this is likely caused by the user modifying his files while syncing
+ abortWithError( SyncFileItem::SoftError, device->errorString() );
+ return;
+ }
+
+ QMap<QByteArray, QByteArray> headers;
+ headers["OC-Chunk-Offset"] = QByteArray::number(_sent);
+
+ _sent += currentChunkSize;
+ QUrl url = chunkUrl(_currentChunk);
+
+ // job takes ownership of device via a QScopedPointer. Job deletes itself when finishing
+ PUTFileJob* job = new PUTFileJob(_propagator->account(), url, device, headers, _currentChunk);
+ _jobs.append(job);
+ connect(job, SIGNAL(finishedSignal()), this, SLOT(slotPutFinished()));
+ connect(job, SIGNAL(uploadProgress(qint64,qint64)),
+ this, SLOT(slotUploadProgress(qint64,qint64)));
+ connect(job, SIGNAL(uploadProgress(qint64,qint64)),
+ device, SLOT(slotJobUploadProgress(qint64,qint64)));
+ connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
+ job->start();
+ _propagator->_activeJobList.append(this);
+ _currentChunk++;
+
+ // FIXME! parallel chunk?
+
+}
+
+void PropagateUploadFileNG::slotPutFinished()
+{
+ PUTFileJob *job = qobject_cast<PUTFileJob *>(sender());
+ Q_ASSERT(job);
+ slotJobDestroyed(job); // remove it from the _jobs list
+
+ qDebug() << job->reply()->request().url() << "FINISHED WITH STATUS"
+ << job->reply()->error()
+ << (job->reply()->error() == QNetworkReply::NoError ? QLatin1String("") : job->reply()->errorString())
+ << job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute)
+ << job->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
+
+ _propagator->_activeJobList.removeOne(this);
+
+ if (_finished) {
+ // We have sent the finished signal already. We don't need to handle any remaining jobs
+ return;
+ }
+
+ QNetworkReply::NetworkError err = job->reply()->error();
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 4, 2)
+ if (err == QNetworkReply::OperationCanceledError && job->reply()->property("owncloud-should-soft-cancel").isValid()) {
+ // Abort the job and try again later.
+ // This works around a bug in QNAM wich might reuse a non-empty buffer for the next request.
+ qDebug() << "Forcing job abort on HTTP connection reset with Qt < 5.4.2.";
+ _propagator->_anotherSyncNeeded = true;
+ abortWithError(SyncFileItem::SoftError, tr("Forcing job abort on HTTP connection reset with Qt < 5.4.2."));
+ return;
+ }
+#endif
+
+ if (err != QNetworkReply::NoError) {
+ _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ QByteArray replyContent = job->reply()->readAll();
+ qDebug() << replyContent; // display the XML error in the debug
+ QString errorString = errorMessage(job->errorString(), replyContent);
+
+ if (job->reply()->hasRawHeader("OC-ErrorString")) {
+ errorString = job->reply()->rawHeader("OC-ErrorString");
+ }
+
+ // FIXME! can this happen for the chunks?
+ if (_item->_httpErrorCode == 412) {
+ // Precondition Failed: Maybe the bad etag is in the database, we need to clear the
+ // parent folder etag so we won't read from DB next sync.
+ _propagator->_journal->avoidReadFromDbOnNextSync(_item->_file);
+ _propagator->_anotherSyncNeeded = true;
+ }
+
+ SyncFileItem::Status status = classifyError(err, _item->_httpErrorCode,
+ &_propagator->_anotherSyncNeeded);
+ abortWithError(status, errorString);
+ return;
+ }
+
+ Q_ASSERT(_sent <= _item->_size);
+ bool finished = _sent == _item->_size;
+
+ // Check if the file still exists
+ const QString fullFilePath(_propagator->getFilePath(_item->_file));
+ if( !FileSystem::fileExists(fullFilePath) ) {
+ if (!finished) {
+ abortWithError(SyncFileItem::SoftError, tr("The local file was removed during sync."));
+ return;
+ } else {
+ _propagator->_anotherSyncNeeded = true;
+ }
+ }
+
+ // Check whether the file changed since discovery.
+ if (! FileSystem::verifyFileUnchanged(fullFilePath, _item->_size, _item->_modtime)) {
+ _propagator->_anotherSyncNeeded = true;
+ if( !finished ) {
+ abortWithError(SyncFileItem::SoftError, tr("Local file changed during sync."));
+ return;
+ }
+ }
+
+ if (!finished) {
+ // Deletes an existing blacklist entry on successful chunk upload
+ if (_item->_hasBlacklistEntry) {
+ _propagator->_journal->wipeErrorBlacklistEntry(_item->_file);
+ _item->_hasBlacklistEntry = false;
+ }
+ }
+ startNextChunk();
+}
+
+void PropagateUploadFileNG::slotMoveJobFinished()
+{
+ _propagator->_activeJobList.removeOne(this);
+ auto job = qobject_cast<MoveJob *>(sender());
+ slotJobDestroyed(job); // remove it from the _jobs list
+ QNetworkReply::NetworkError err = job->reply()->error();
+ _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+
+ if (err != QNetworkReply::NoError) {
+ SyncFileItem::Status status = classifyError(err, _item->_httpErrorCode,
+ &_propagator->_anotherSyncNeeded);
+ QString errorString = errorMessage(job->errorString(), job->reply()->readAll());
+ abortWithError(status, errorString);
+ return;
+ }
+ if (_item->_httpErrorCode != 201 && _item->_httpErrorCode != 204) {
+ abortWithError(SyncFileItem::NormalError, tr("Unexpected return code from server (%1)").arg(_item->_httpErrorCode));
+ return;
+ }
+
+ QByteArray fid = job->reply()->rawHeader("OC-FileID");
+ if(fid.isEmpty()) {
+ qWarning() << "Server did not return a OC-FileID" << _item->_file;
+ abortWithError(SyncFileItem::NormalError, tr("Missing File ID from server"));
+ return;
+ } else {
+ // the old file id should only be empty for new files uploaded
+ if( !_item->_fileId.isEmpty() && _item->_fileId != fid ) {
+ qDebug() << "WARN: File ID changed!" << _item->_fileId << fid;
+ }
+ _item->_fileId = fid;
+ }
+
+ _item->_etag = getEtagFromReply(job->reply());;
+ if (_item->_etag.isEmpty()) {
+ qWarning() << "Server did not return an ETAG" << _item->_file;
+ abortWithError(SyncFileItem::NormalError, tr("Missing ETag from server"));
+ return;
+ }
+ _item->_responseTimeStamp = job->responseTimestamp();
+
+ // performance logging
+ _item->_requestDuration = _stopWatch.stop();
+ qDebug() << "*==* duration UPLOAD" << _item->_size
+ << _stopWatch.durationOfLap(QLatin1String("ContentChecksum"))
+ << _stopWatch.durationOfLap(QLatin1String("TransmissionChecksum"))
+ << _item->_requestDuration;
+ // The job might stay alive for the whole sync, release this tiny bit of memory.
+ _stopWatch.reset();
+ finalize();
+}
+
+void PropagateUploadFileNG::slotUploadProgress(qint64 sent, qint64 total)
+{
+ // Completion is signaled with sent=0, total=0; avoid accidentally
+ // resetting progress due to the sent being zero by ignoring it.
+ // finishedSignal() is bound to be emitted soon anyway.
+ // See https://bugreports.qt.io/browse/QTBUG-44782.
+ if (sent == 0 && total == 0) {
+ return;
+ }
+ emit progress(*_item, _sent + sent - total);
+}
+
+}
diff --git a/src/libsync/propagateuploadv1.cpp b/src/libsync/propagateuploadv1.cpp
new file mode 100644
index 000000000..dd075fa77
--- /dev/null
+++ b/src/libsync/propagateuploadv1.cpp
@@ -0,0 +1,375 @@
+/*
+ * 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 "config.h"
+#include "propagateupload.h"
+#include "owncloudpropagator_p.h"
+#include "networkjobs.h"
+#include "account.h"
+#include "syncjournaldb.h"
+#include "syncjournalfilerecord.h"
+#include "utility.h"
+#include "filesystem.h"
+#include "propagatorjobs.h"
+#include "checksums.h"
+#include "syncengine.h"
+#include "propagateremotedelete.h"
+
+#include <json.h>
+#include <QNetworkAccessManager>
+#include <QFileInfo>
+#include <QDir>
+#include <cmath>
+#include <cstring>
+
+namespace OCC {
+void PropagateUploadFileV1::doStartUpload()
+{
+ _chunkCount = std::ceil(_item->_size / double(chunkSize()));
+ _startChunk = 0;
+ _transferId = qrand() ^ _item->_modtime ^ (_item->_size << 16);
+
+ const SyncJournalDb::UploadInfo progressInfo = _propagator->_journal->getUploadInfo(_item->_file);
+
+ if (progressInfo._valid && Utility::qDateTimeToTime_t(progressInfo._modtime) == _item->_modtime ) {
+ _startChunk = progressInfo._chunk;
+ _transferId = progressInfo._transferid;
+ qDebug() << Q_FUNC_INFO << _item->_file << ": Resuming from chunk " << _startChunk;
+ }
+
+ _currentChunk = 0;
+ _duration.start();
+
+ emit progress(*_item, 0);
+ startNextChunk();
+}
+
+void PropagateUploadFileV1::startNextChunk()
+{
+ if (_propagator->_abortRequested.fetchAndAddRelaxed(0))
+ return;
+
+ if (! _jobs.isEmpty() && _currentChunk + _startChunk >= _chunkCount - 1) {
+ // Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
+ // https://github.com/owncloud/core/issues/11106
+ // We return now and when the _jobs are finished we will proceed with the last chunk
+ // NOTE: Some other parts of the code such as slotUploadProgress also assume that the last chunk
+ // is sent last.
+ return;
+ }
+ quint64 fileSize = _item->_size;
+ auto headers = PropagateUploadFileCommon::headers();
+ headers["OC-Total-Length"] = QByteArray::number(fileSize);
+ headers["OC-Chunk-Size"]= QByteArray::number(quint64(chunkSize()));
+
+ QString path = _item->_file;
+
+ UploadDevice *device = new UploadDevice(&_propagator->_bandwidthManager);
+ qint64 chunkStart = 0;
+ qint64 currentChunkSize = fileSize;
+ bool isFinalChunk = false;
+ if (_chunkCount > 1) {
+ int sendingChunk = (_currentChunk + _startChunk) % _chunkCount;
+ // XOR with chunk size to make sure everything goes well if chunk size changes between runs
+ uint transid = _transferId ^ chunkSize();
+ qDebug() << "Upload chunk" << sendingChunk << "of" << _chunkCount << "transferid(remote)=" << transid;
+ path += QString("-chunking-%1-%2-%3").arg(transid).arg(_chunkCount).arg(sendingChunk);
+
+ headers["OC-Chunked"] = "1";
+
+ chunkStart = chunkSize() * quint64(sendingChunk);
+ currentChunkSize = chunkSize();
+ if (sendingChunk == _chunkCount - 1) { // last chunk
+ currentChunkSize = (fileSize % chunkSize());
+ if( currentChunkSize == 0 ) { // if the last chunk pretends to be 0, its actually the full chunk size.
+ currentChunkSize = chunkSize();
+ }
+ isFinalChunk = true;
+ }
+ } else {
+ // if there's only one chunk, it's the final one
+ isFinalChunk = true;
+ }
+
+ if (isFinalChunk && !_transmissionChecksumType.isEmpty()) {
+ headers[checkSumHeaderC] = makeChecksumHeader(
+ _transmissionChecksumType, _transmissionChecksum);
+ }
+
+ const QString fileName = _propagator->getFilePath(_item->_file);
+ if (! device->prepareAndOpen(fileName, chunkStart, currentChunkSize)) {
+ qDebug() << "ERR: Could not prepare upload device: " << device->errorString();
+
+ // If the file is currently locked, we want to retry the sync
+ // when it becomes available again.
+ if (FileSystem::isFileLocked(fileName)) {
+ emit _propagator->seenLockedFile(fileName);
+ }
+ // Soft error because this is likely caused by the user modifying his files while syncing
+ abortWithError( SyncFileItem::SoftError, device->errorString() );
+ delete device;
+ return;
+ }
+
+ // job takes ownership of device via a QScopedPointer. Job deletes itself when finishing
+ PUTFileJob* job = new PUTFileJob(_propagator->account(), _propagator->_remoteFolder + path, device, headers, _currentChunk);
+ _jobs.append(job);
+ connect(job, SIGNAL(finishedSignal()), this, SLOT(slotPutFinished()));
+ connect(job, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(slotUploadProgress(qint64,qint64)));
+ connect(job, SIGNAL(uploadProgress(qint64,qint64)), device, SLOT(slotJobUploadProgress(qint64,qint64)));
+ connect(job, SIGNAL(destroyed(QObject*)), this, SLOT(slotJobDestroyed(QObject*)));
+ job->start();
+ _propagator->_activeJobList.append(this);
+ _currentChunk++;
+
+ bool parallelChunkUpload = true;
+ QByteArray env = qgetenv("OWNCLOUD_PARALLEL_CHUNK");
+ if (!env.isEmpty()) {
+ parallelChunkUpload = env != "false" && env != "0";
+ } else {
+ int versionNum = _propagator->account()->serverVersionInt();
+ if (versionNum < 0x080003) {
+ // Disable parallel chunk upload severs older than 8.0.3 to avoid too many
+ // internal sever errors (#2743, #2938)
+ parallelChunkUpload = false;
+ }
+ }
+
+ if (_currentChunk + _startChunk >= _chunkCount - 1) {
+ // Don't do parallel upload of chunk if this might be the last chunk because the server cannot handle that
+ // https://github.com/owncloud/core/issues/11106
+ parallelChunkUpload = false;
+ }
+
+ if (parallelChunkUpload && (_propagator->_activeJobList.count() < _propagator->maximumActiveJob())
+ && _currentChunk < _chunkCount ) {
+ startNextChunk();
+ }
+ if (!parallelChunkUpload || _chunkCount - _currentChunk <= 0) {
+ emit ready();
+ }
+}
+
+void PropagateUploadFileV1::slotPutFinished()
+{
+ PUTFileJob *job = qobject_cast<PUTFileJob *>(sender());
+ Q_ASSERT(job);
+ slotJobDestroyed(job); // remove it from the _jobs list
+
+ qDebug() << Q_FUNC_INFO << job->reply()->request().url() << "FINISHED WITH STATUS"
+ << job->reply()->error()
+ << (job->reply()->error() == QNetworkReply::NoError ? QLatin1String("") : job->reply()->errorString())
+ << job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute)
+ << job->reply()->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
+
+ _propagator->_activeJobList.removeOne(this);
+
+ if (_finished) {
+ // We have sent the finished signal already. We don't need to handle any remaining jobs
+ return;
+ }
+
+ QNetworkReply::NetworkError err = job->reply()->error();
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 4, 2)
+ if (err == QNetworkReply::OperationCanceledError && job->reply()->property("owncloud-should-soft-cancel").isValid()) { // Abort the job and try again later.
+ // This works around a bug in QNAM wich might reuse a non-empty buffer for the next request.
+ qDebug() << "Forcing job abort on HTTP connection reset with Qt < 5.4.2.";
+ _propagator->_anotherSyncNeeded = true;
+ abortWithError(SyncFileItem::SoftError, tr("Forcing job abort on HTTP connection reset with Qt < 5.4.2."));
+ return;
+ }
+#endif
+
+ if (err != QNetworkReply::NoError) {
+ _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ if(checkForProblemsWithShared(_item->_httpErrorCode,
+ tr("The file was edited locally but is part of a read only share. "
+ "It is restored and your edit is in the conflict file."))) {
+ return;
+ }
+ QByteArray replyContent = job->reply()->readAll();
+ qDebug() << replyContent; // display the XML error in the debug
+ QString errorString = errorMessage(job->errorString(), replyContent);
+
+ if (job->reply()->hasRawHeader("OC-ErrorString")) {
+ errorString = job->reply()->rawHeader("OC-ErrorString");
+ }
+
+ if (_item->_httpErrorCode == 412) {
+ // Precondition Failed: Maybe the bad etag is in the database, we need to clear the
+ // parent folder etag so we won't read from DB next sync.
+ _propagator->_journal->avoidReadFromDbOnNextSync(_item->_file);
+ _propagator->_anotherSyncNeeded = true;
+ }
+
+ SyncFileItem::Status status = classifyError(err, _item->_httpErrorCode,
+ &_propagator->_anotherSyncNeeded);
+ abortWithError(status, errorString);
+ return;
+ }
+
+ _item->_httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ // The server needs some time to process the request and provide us with a poll URL
+ if (_item->_httpErrorCode == 202) {
+ _finished = true;
+ QString path = QString::fromUtf8(job->reply()->rawHeader("OC-Finish-Poll"));
+ if (path.isEmpty()) {
+ done(SyncFileItem::NormalError, tr("Poll URL missing"));
+ return;
+ }
+ startPollJob(path);
+ return;
+ }
+
+ // Check the file again post upload.
+ // Two cases must be considered separately: If the upload is finished,
+ // the file is on the server and has a changed ETag. In that case,
+ // the etag has to be properly updated in the client journal, and because
+ // of that we can bail out here with an error. But we can reschedule a
+ // sync ASAP.
+ // But if the upload is ongoing, because not all chunks were uploaded
+ // yet, the upload can be stopped and an error can be displayed, because
+ // the server hasn't registered the new file yet.
+ QByteArray etag = getEtagFromReply(job->reply());
+ bool finished = etag.length() > 0;
+
+ // Check if the file still exists
+ const QString fullFilePath(_propagator->getFilePath(_item->_file));
+ if( !FileSystem::fileExists(fullFilePath) ) {
+ if (!finished) {
+ abortWithError(SyncFileItem::SoftError, tr("The local file was removed during sync."));
+ return;
+ } else {
+ _propagator->_anotherSyncNeeded = true;
+ }
+ }
+
+ // Check whether the file changed since discovery.
+ if (! FileSystem::verifyFileUnchanged(fullFilePath, _item->_size, _item->_modtime)) {
+ _propagator->_anotherSyncNeeded = true;
+ if( !finished ) {
+ abortWithError(SyncFileItem::SoftError, tr("Local file changed during sync."));
+ // FIXME: the legacy code was retrying for a few seconds.
+ // and also checking that after the last chunk, and removed the file in case of INSTRUCTION_NEW
+ return;
+ }
+ }
+
+ if (!finished) {
+ // Proceed to next chunk.
+ if (_currentChunk >= _chunkCount) {
+ if (!_jobs.empty()) {
+ // just wait for the other job to finish.
+ return;
+ }
+ _finished = true;
+ done(SyncFileItem::NormalError, tr("The server did not acknowledge the last chunk. (No e-tag was present)"));
+ return;
+ }
+
+ // Deletes an existing blacklist entry on successful chunk upload
+ if (_item->_hasBlacklistEntry) {
+ _propagator->_journal->wipeErrorBlacklistEntry(_item->_file);
+ _item->_hasBlacklistEntry = false;
+ }
+
+ SyncJournalDb::UploadInfo pi;
+ pi._valid = true;
+ auto currentChunk = job->_chunk;
+ foreach (auto *job, _jobs) {
+ // Take the minimum finished one
+ if (auto putJob = qobject_cast<PUTFileJob*>(job)) {
+ currentChunk = qMin(currentChunk, putJob->_chunk - 1);
+ }
+ }
+ pi._chunk = (currentChunk + _startChunk + 1) % _chunkCount ; // next chunk to start with
+ pi._transferid = _transferId;
+ pi._modtime = Utility::qDateTimeFromTime_t(_item->_modtime);
+ _propagator->_journal->setUploadInfo(_item->_file, pi);
+ _propagator->_journal->commit("Upload info");
+ startNextChunk();
+ return;
+ }
+
+ // the following code only happens after all chunks were uploaded.
+ _finished = true;
+ // the file id should only be empty for new files up- or downloaded
+ QByteArray fid = job->reply()->rawHeader("OC-FileID");
+ if( !fid.isEmpty() ) {
+ if( !_item->_fileId.isEmpty() && _item->_fileId != fid ) {
+ qDebug() << "WARN: File ID changed!" << _item->_fileId << fid;
+ }
+ _item->_fileId = fid;
+ }
+
+ _item->_etag = etag;
+
+ _item->_responseTimeStamp = job->responseTimestamp();
+
+ if (job->reply()->rawHeader("X-OC-MTime") != "accepted") {
+ // X-OC-MTime is supported since owncloud 5.0. But not when chunking.
+ // Normally Owncloud 6 always puts X-OC-MTime
+ qWarning() << "Server does not support X-OC-MTime" << job->reply()->rawHeader("X-OC-MTime");
+ // Well, the mtime was not set
+ done(SyncFileItem::SoftError, "Server does not support X-OC-MTime");
+ }
+
+ // performance logging
+ _item->_requestDuration = _stopWatch.stop();
+ qDebug() << "*==* duration UPLOAD" << _item->_size
+ << _stopWatch.durationOfLap(QLatin1String("ContentChecksum"))
+ << _stopWatch.durationOfLap(QLatin1String("TransmissionChecksum"))
+ << _item->_requestDuration;
+ // The job might stay alive for the whole sync, release this tiny bit of memory.
+ _stopWatch.reset();
+
+ finalize();
+}
+
+
+void PropagateUploadFileV1::slotUploadProgress(qint64 sent, qint64 total)
+{
+ // Completion is signaled with sent=0, total=0; avoid accidentally
+ // resetting progress due to the sent being zero by ignoring it.
+ // finishedSignal() is bound to be emitted soon anyway.
+ // See https://bugreports.qt.io/browse/QTBUG-44782.
+ if (sent == 0 && total == 0) {
+ return;
+ }
+
+ int progressChunk = _currentChunk + _startChunk - 1;
+ if (progressChunk >= _chunkCount)
+ progressChunk = _currentChunk - 1;
+
+ // amount is the number of bytes already sent by all the other chunks that were sent
+ // not including this one.
+ // FIXME: this assumes all chunks have the same size, which is true only if the last chunk
+ // has not been finished (which should not happen because the last chunk is sent sequentially)
+ quint64 amount = progressChunk * chunkSize();
+
+ sender()->setProperty("byteWritten", sent);
+ if (_jobs.count() > 1) {
+ amount -= (_jobs.count() -1) * chunkSize();
+ foreach (QObject *j, _jobs) {
+ amount += j->property("byteWritten").toULongLong();
+ }
+ } else {
+ // sender() is the only current job, no need to look at the byteWritten properties
+ amount += sent;
+ }
+ emit progress(*_item, amount);
+}
+
+}
diff --git a/src/libsync/propagatorjobs.cpp b/src/libsync/propagatorjobs.cpp
index 58c599dc1..272a0b879 100644
--- a/src/libsync/propagatorjobs.cpp
+++ b/src/libsync/propagatorjobs.cpp
@@ -15,7 +15,7 @@
#include "propagatorjobs.h"
#include "owncloudpropagator_p.h"
-
+#include "propagateremotemove.h"
#include "utility.h"
#include "syncjournaldb.h"
#include "syncjournalfilerecord.h"
@@ -231,6 +231,7 @@ void PropagateLocalRename::start()
_propagator->_journal->deleteFileRecord(_item->_originalFile);
// store the rename file name in the item.
+ const auto oldFile = _item->_file;
_item->_file = _item->_renameTarget;
SyncJournalFileRecord record(*_item, targetFile);
@@ -245,9 +246,14 @@ void PropagateLocalRename::start()
done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
return;
}
+ } else {
+ if (!PropagateRemoteMove::adjustSelectiveSync(_propagator->_journal, oldFile, _item->_renameTarget)) {
+ done(SyncFileItem::FatalError, tr("Error writing metadata to the database"));
+ return;
+ }
}
- _propagator->_journal->commit("localRename");
+ _propagator->_journal->commit("localRename");
done(SyncFileItem::Success);
}
diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp
index ace7dea5d..ddf9652ca 100644
--- a/src/libsync/syncengine.cpp
+++ b/src/libsync/syncengine.cpp
@@ -57,12 +57,11 @@ bool SyncEngine::s_anySyncRunning = false;
qint64 SyncEngine::minimumFileAgeForUpload = 2000;
SyncEngine::SyncEngine(AccountPtr account, const QString& localPath,
- const QUrl& remoteURL, const QString& remotePath, OCC::SyncJournalDb* journal)
+ const QString& remotePath, OCC::SyncJournalDb* journal)
: _account(account)
, _needsUpdate(false)
, _syncRunning(false)
, _localPath(localPath)
- , _remoteUrl(remoteURL)
, _remotePath(remotePath)
, _journal(journal)
, _progressInfo(new ProgressInfo)
@@ -78,19 +77,12 @@ SyncEngine::SyncEngine(AccountPtr account, const QString& localPath,
{
qRegisterMetaType<SyncFileItem>("SyncFileItem");
qRegisterMetaType<SyncFileItem::Status>("SyncFileItem::Status");
+ qRegisterMetaType<SyncFileStatus>("SyncFileStatus");
- // We need to reconstruct the url because the path needs to be fully decoded, as csync will re-encode the path:
- // Remember that csync will just append the filename to the path and pass it to the vio plugin.
- // csync_owncloud will then re-encode everything.
-#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
- QString url_string = _remoteUrl.scheme() + QLatin1String("://") + _remoteUrl.authority(QUrl::EncodeDelimiters) + _remoteUrl.path(QUrl::FullyDecoded);
-#else
- // Qt4 was broken anyway as it did not encode the '#' as it should have done (it was actually a problem when parsing the path from QUrl::setPath
- QString url_string = _remoteUrl.toString();
-#endif
- url_string = Utility::toCSyncScheme(url_string);
+ // Everything in the SyncEngine expects a trailing slash for the localPath.
+ Q_ASSERT(localPath.endsWith(QLatin1Char('/')));
- csync_create(&_csync_ctx, localPath.toUtf8().data(), url_string.toUtf8().data());
+ csync_create(&_csync_ctx, localPath.toUtf8().data());
const QString dbFile = _journal->databaseFilePath();
csync_init(_csync_ctx, dbFile.toUtf8().data());
@@ -333,6 +325,16 @@ int SyncEngine::treewalkRemote( TREE_WALK_FILE* file, void *data )
return static_cast<SyncEngine*>(data)->treewalkFile( file, true );
}
+/**
+ * The main function in the post-reconcile phase.
+ *
+ * Called on each entry in the local and remote trees by
+ * csync_walk_local_tree()/csync_walk_remote_tree().
+ *
+ * It merges the two csync rbtrees into a single map of SyncFileItems.
+ *
+ * See doc/dev/sync-algorithm.md for an overview.
+ */
int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
{
if( ! file ) return -1;
@@ -394,8 +396,6 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
item->_remotePerm = QByteArray(file->remotePerm);
}
- item->_should_update_metadata = item->_should_update_metadata || file->should_update_metadata;
-
/* The flag "serverHasIgnoredFiles" is true if item in question is a directory
* that has children which are ignored in sync, either because the files are
* matched by an ignore pattern, or because they are hidden.
@@ -513,10 +513,23 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
int re = 0;
switch(file->instruction) {
case CSYNC_INSTRUCTION_NONE: {
- if (remote && item->_should_update_metadata && !isDirectory && item->_instruction == CSYNC_INSTRUCTION_NONE) {
+ // Any files that are instruction NONE?
+ if (!isDirectory && file->other.instruction == CSYNC_INSTRUCTION_NONE) {
+ _hasNoneFiles = true;
+ }
+ // No syncing or update to be done.
+ return re;
+ }
+ case CSYNC_INSTRUCTION_UPDATE_METADATA:
+ dir = SyncFileItem::None;
+ // For directories, metadata-only updates will be done after all their files are propagated.
+ if (!isDirectory) {
+ item->_isDirectory = isDirectory;
+ emit syncItemDiscovered(*item);
+
// Update the database now already: New remote fileid or Etag or RemotePerm
// Or for files that were detected as "resolved conflict".
- // Or a local inode/mtime change (see localMetadataUpdate below)
+ // Or a local inode/mtime change
// In case of "resolved conflict": there should have been a conflict because they
// both were new, or both had their local mtime or remote etag modified, but the
@@ -528,47 +541,33 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
// quick to do and we don't want to create a potentially large number of
// mini-jobs later on, we just update metadata right now.
- QString filePath = _localPath + item->_file;
-
- // Even if the mtime is different on the server, we always want to keep the mtime from
- // the file system in the DB, this is to avoid spurious upload on the next sync
- item->_modtime = file->other.modtime;
- // same for the size
- item->_size = file->other.size;
+ if (remote) {
+ QString filePath = _localPath + item->_file;
- // If the 'W' remote permission changed, update the local filesystem
- SyncJournalFileRecord prev = _journal->getFileRecord(item->_file);
- if (prev.isValid() && prev._remotePerm.contains('W') != item->_remotePerm.contains('W')) {
- const bool isReadOnly = !item->_remotePerm.contains('W');
- FileSystem::setFileReadOnlyWeak(filePath, isReadOnly);
- }
+ // Even if the mtime is different on the server, we always want to keep the mtime from
+ // the file system in the DB, this is to avoid spurious upload on the next sync
+ item->_modtime = file->other.modtime;
+ // same for the size
+ item->_size = file->other.size;
- _journal->setFileRecordMetadata(SyncJournalFileRecord(*item, filePath));
- item->_should_update_metadata = false;
+ // If the 'W' remote permission changed, update the local filesystem
+ SyncJournalFileRecord prev = _journal->getFileRecord(item->_file);
+ if (prev.isValid() && prev._remotePerm.contains('W') != item->_remotePerm.contains('W')) {
+ const bool isReadOnly = !item->_remotePerm.contains('W');
+ FileSystem::setFileReadOnlyWeak(filePath, isReadOnly);
+ }
- // Technically we're done with this item. See localMetadataUpdate hack below.
- _syncItemMap.remove(key);
- }
- // Any files that are instruction NONE?
- if (!isDirectory && file->other.instruction == CSYNC_INSTRUCTION_NONE) {
- _hasNoneFiles = true;
- }
- // We want to still update etags of directories, other NONE
- // items can be ignored.
- bool directoryEtagUpdate = isDirectory && file->should_update_metadata;
- bool localMetadataUpdate = !remote && file->should_update_metadata;
- if (!directoryEtagUpdate) {
- item->_isDirectory = isDirectory;
- if (localMetadataUpdate) {
- // Hack, we want a local metadata update to happen, but only if the
- // remote tree doesn't ask us to do some kind of propagation.
- _syncItemMap.insert(key, item);
+ _journal->setFileRecordMetadata(SyncJournalFileRecord(*item, filePath));
+ } else {
+ // The local tree is walked first and doesn't have all the info from the server.
+ // Update only outdated data from the disk.
+ _journal->updateLocalMetadata(item->_file, item->_modtime, item->_size, item->_inode);
}
- emit syncItemDiscovered(*item);
+
+ // Technically we're done with this item.
return re;
}
break;
- }
case CSYNC_INSTRUCTION_RENAME:
dir = !remote ? SyncFileItem::Down : SyncFileItem::Up;
item->_renameTarget = renameTarget;
@@ -591,11 +590,15 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
// This counts as a NONE for detecting if all the files on the server were changed
_hasNoneFiles = true;
} else if (!isDirectory) {
- if (std::difftime(file->modtime, file->other.modtime) < 0) {
+ auto difftime = std::difftime(file->modtime, file->other.modtime);
+ if (difftime < -3600*2) {
// We are going back on time
+ // We only increment if the difference is more than two hours to avoid clock skew
+ // issues or DST changes. (We simply ignore files that goes in the past less than
+ // two hours for the backup detection heuristics.)
_backInTimeFiles++;
qDebug() << file->path << "has a timestamp earlier than the local file";
- } else {
+ } else if (difftime > 0) {
_hasForwardInTimeFiles = true;
}
}
@@ -728,16 +731,19 @@ void SyncEngine::startSync()
int fileRecordCount = -1;
if (!_journal->exists()) {
- qDebug() << "=====sync looks new (no DB exists)";
+ qDebug() << "===== new sync (no sync journal exists)";
} else {
- qDebug() << "=====sync with existing DB";
+ qDebug() << "===== sync with existing sync journal";
}
- qDebug() << "=====Using Qt" << qVersion();
+ QString verStr("===== Using Qt ");
+ verStr.append( qVersion() );
+
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
- qDebug() << "=====Using SSL library version"
- << QSslSocket::sslLibraryVersionString().toUtf8().data();
+ verStr.append( " SSL library " ).append(QSslSocket::sslLibraryVersionString().toUtf8().data());
#endif
+ verStr.append( " on ").append(Utility::platformName());
+ qDebug() << verStr;
fileRecordCount = _journal->getFileRecordCount(); // this creates the DB if it does not exist yet
@@ -816,7 +822,6 @@ void SyncEngine::startSync()
// This is used for the DiscoveryJob to be able to request the main thread/
// to read in directory contents.
- qDebug() << Q_FUNC_INFO << _remotePath << _remoteUrl;
_discoveryMainThread->setupHooks( discoveryJob, _remotePath);
// Starts the update in a seperate thread
@@ -862,9 +867,12 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
_hasNoneFiles = false;
_hasRemoveFile = false;
+ _hasForwardInTimeFiles = false;
+ _backInTimeFiles = 0;
bool walkOk = true;
_seenFiles.clear();
_temporarilyUnavailablePaths.clear();
+ _renamedFolders.clear();
if( csync_walk_local_tree(_csync_ctx, &treewalkLocal, 0) < 0 ) {
qDebug() << "Error in local treewalk.";
@@ -915,7 +923,19 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
return;
}
}
- if (!_hasForwardInTimeFiles && _backInTimeFiles >= 2) {
+
+ auto databaseFingerprint = _journal->dataFingerprint();
+ // If databaseFingerprint is null, this means that there was no information in the database
+ // (for example, upgrading from a previous version, or first sync)
+ // Note that an empty ("") fingerprint is valid and means it was empty on the server before.
+ if (!databaseFingerprint.isNull()
+ && _discoveryMainThread->_dataFingerprint != databaseFingerprint) {
+ qDebug() << "data fingerprint changed, assume restore from backup" << databaseFingerprint << _discoveryMainThread->_dataFingerprint;
+ restoreOldFiles();
+ } else if (!_hasForwardInTimeFiles && _backInTimeFiles >= 2 && _account->serverVersionInt() < 0x090100) {
+ // The server before ownCloud 9.1 did not have the data-fingerprint property. So in that
+ // case we use heuristics to detect restored backup. This is disabled with newer version
+ // because this causes troubles to the user and is not as reliable as the data-fingerprint.
qDebug() << "All the changes are bringing files in the past, asking the user";
// this typically happen when a backup is restored on the server
bool restore = false;
@@ -953,12 +973,12 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
_journal->commit("post treewalk");
_propagator = QSharedPointer<OwncloudPropagator>(
- new OwncloudPropagator (_account, _localPath, _remoteUrl.path(), _remotePath, _journal));
+ new OwncloudPropagator (_account, _localPath, _remotePath, _journal));
connect(_propagator.data(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)),
this, SLOT(slotItemCompleted(const SyncFileItem &, const PropagatorJob &)));
connect(_propagator.data(), SIGNAL(progress(const SyncFileItem &,quint64)),
this, SLOT(slotProgress(const SyncFileItem &,quint64)));
- connect(_propagator.data(), SIGNAL(finished()), this, SLOT(slotFinished()), Qt::QueuedConnection);
+ connect(_propagator.data(), SIGNAL(finished(bool)), this, SLOT(slotFinished(bool)), Qt::QueuedConnection);
connect(_propagator.data(), SIGNAL(seenLockedFile(QString)), SIGNAL(seenLockedFile(QString)));
connect(_propagator.data(), SIGNAL(touchedFile(QString)), SLOT(slotAddTouchedFile(QString)));
@@ -1026,18 +1046,27 @@ void SyncEngine::slotItemCompleted(const SyncFileItem &item, const PropagatorJob
emit itemCompleted(item, job);
}
-void SyncEngine::slotFinished()
+void SyncEngine::slotFinished(bool success)
{
_anotherSyncNeeded = _anotherSyncNeeded || _propagator->_anotherSyncNeeded;
+ if (success) {
+ _journal->setDataFingerprint(_discoveryMainThread->_dataFingerprint);
+ }
+
// emit the treewalk results.
if( ! _journal->postSyncCleanup( _seenFiles, _temporarilyUnavailablePaths ) ) {
qDebug() << "Cleaning of synced ";
}
_journal->commit("All Finished.", false);
+
+ // Send final progress information even if no
+ // files needed propagation
+ emit transmissionProgress(*_progressInfo);
+
emit treeWalkResult(_syncedItems);
- finalize(true); // FIXME: should it be true if there was errors?
+ finalize(success);
}
void SyncEngine::finalize(bool success)
@@ -1146,7 +1175,7 @@ void SyncEngine::checkForPermission()
qDebug() << "Moving of " << (*it)->_file << " canceled because no permission to add parent folder";
}
(*it)->_instruction = CSYNC_INSTRUCTION_ERROR;
- (*it)->_status = SyncFileItem::NormalError;
+ (*it)->_status = SyncFileItem::SoftError;
(*it)->_errorString = tr("Not allowed because you don't have permission to add parent folder");
}
@@ -1163,9 +1192,8 @@ void SyncEngine::checkForPermission()
if (perms.isNull()) {
// No permissions set
break;
- } if (!(*it)->_isDirectory && !perms.contains("W")) {
+ } if (!perms.contains("W")) {
qDebug() << "checkForPermission: RESTORING" << (*it)->_file;
- (*it)->_should_update_metadata = true;
(*it)->_instruction = CSYNC_INSTRUCTION_CONFLICT;
(*it)->_direction = SyncFileItem::Down;
(*it)->_isRestoration = true;
@@ -1187,7 +1215,6 @@ void SyncEngine::checkForPermission()
}
if (!perms.contains("D")) {
qDebug() << "checkForPermission: RESTORING" << (*it)->_file;
- (*it)->_should_update_metadata = true;
(*it)->_instruction = CSYNC_INSTRUCTION_NEW;
(*it)->_direction = SyncFileItem::Down;
(*it)->_isRestoration = true;
@@ -1206,7 +1233,6 @@ void SyncEngine::checkForPermission()
}
qDebug() << "checkForPermission: RESTORING" << (*it)->_file;
- (*it)->_should_update_metadata = true;
(*it)->_instruction = CSYNC_INSTRUCTION_NEW;
(*it)->_direction = SyncFileItem::Down;
@@ -1355,7 +1381,6 @@ void SyncEngine::restoreOldFiles()
break;
case CSYNC_INSTRUCTION_REMOVE:
qDebug() << "restoreOldFiles: RESTORING" << (*it)->_file;
- (*it)->_should_update_metadata = true;
(*it)->_instruction = CSYNC_INSTRUCTION_NEW;
(*it)->_direction = SyncFileItem::Up;
break;
@@ -1370,16 +1395,6 @@ void SyncEngine::restoreOldFiles()
}
}
-SyncFileItem* SyncEngine::findSyncItem(const QString &fileName) const
-{
- Q_FOREACH(const SyncFileItemPtr &item, _syncedItems) {
- // Directories will appear in this list as well, and will get their status set once all children have been propagated
- if ((item->_file == fileName || (!item->_renameTarget.isEmpty() && item->_renameTarget == fileName)))
- return item.data();
- }
- return 0;
-}
-
void SyncEngine::slotAddTouchedFile(const QString& fn)
{
QString file = QDir::cleanPath(fn);
diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h
index d7b5c5b5d..42349d69f 100644
--- a/src/libsync/syncengine.h
+++ b/src/libsync/syncengine.h
@@ -58,7 +58,7 @@ class OWNCLOUDSYNC_EXPORT SyncEngine : public QObject
Q_OBJECT
public:
SyncEngine(AccountPtr account, const QString &localPath,
- const QUrl &remoteURL, const QString &remotePath, SyncJournalDb *journal);
+ const QString &remotePath, SyncJournalDb *journal);
~SyncEngine();
static QString csyncErrorToString( CSYNC_STATUS);
@@ -85,8 +85,6 @@ public:
/* Return true if we detected that another sync is needed to complete the sync */
bool isAnotherSyncNeeded() { return _anotherSyncNeeded; }
- SyncFileItem* findSyncItem(const QString &fileName) const;
-
/** Get the ms since a file was touched, or -1 if it wasn't.
*
* Thread-safe.
@@ -152,7 +150,7 @@ signals:
private slots:
void slotRootEtagReceived(const QString &);
void slotItemCompleted(const SyncFileItem& item, const PropagatorJob & job);
- void slotFinished();
+ void slotFinished(bool success);
void slotProgress(const SyncFileItem& item, quint64 curent);
void slotDiscoveryJobFinished(int updateResult);
void slotCleanPollsJobAborted(const QString &error);
@@ -200,13 +198,11 @@ private:
bool _needsUpdate;
bool _syncRunning;
QString _localPath;
- QUrl _remoteUrl;
QString _remotePath;
QString _remoteRootEtag;
SyncJournalDb *_journal;
QPointer<DiscoveryMainThread> _discoveryMainThread;
QSharedPointer <OwncloudPropagator> _propagator;
- QString _lastDeleted; // if the last item was a path and it has been deleted
// After a sync, only the syncdb entries whose filenames appear in this
// set will be kept. See _temporarilyUnavailablePaths.
diff --git a/src/libsync/syncfileitem.h b/src/libsync/syncfileitem.h
index ed825a722..cf7d0d6a3 100644
--- a/src/libsync/syncfileitem.h
+++ b/src/libsync/syncfileitem.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -66,7 +67,7 @@ public:
SyncFileItem() : _type(UnknownType), _direction(None), _isDirectory(false),
_serverHasIgnoredFiles(false), _hasBlacklistEntry(false),
_errorMayBeBlacklisted(false), _status(NoStatus),
- _isRestoration(false), _should_update_metadata(false),
+ _isRestoration(false),
_httpErrorCode(0), _requestDuration(0), _affectedItems(1),
_instruction(CSYNC_INSTRUCTION_NONE), _modtime(0), _size(0), _inode(0)
{
@@ -156,7 +157,6 @@ public:
// Variables useful to report to the user
Status _status BITFIELD(4);
bool _isRestoration BITFIELD(1); // The original operation was forbidden, and this is a restoration
- bool _should_update_metadata BITFIELD(1);
quint16 _httpErrorCode;
QString _errorString; // Contains a string only in case of error
QByteArray _responseTimeStamp;
diff --git a/src/libsync/syncfilestatus.cpp b/src/libsync/syncfilestatus.cpp
index c2961f7f6..5eec5c188 100644
--- a/src/libsync/syncfilestatus.cpp
+++ b/src/libsync/syncfilestatus.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -32,7 +33,7 @@ void SyncFileStatus::set(SyncFileStatusTag tag)
_tag = tag;
}
-SyncFileStatus::SyncFileStatusTag SyncFileStatus::tag()
+SyncFileStatus::SyncFileStatusTag SyncFileStatus::tag() const
{
return _tag;
}
@@ -42,7 +43,7 @@ void SyncFileStatus::setSharedWithMe(bool isShared)
_sharedWithMe = isShared;
}
-bool SyncFileStatus::sharedWithMe()
+bool SyncFileStatus::sharedWithMe() const
{
return _sharedWithMe;
}
diff --git a/src/libsync/syncfilestatus.h b/src/libsync/syncfilestatus.h
index fddcf1af0..cd9a409ae 100644
--- a/src/libsync/syncfilestatus.h
+++ b/src/libsync/syncfilestatus.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -14,6 +15,8 @@
#ifndef SYNCFILESTATUS_H
#define SYNCFILESTATUS_H
+#include <QMetaType>
+#include <QObject>
#include <QString>
#include "owncloudlib.h"
@@ -39,10 +42,10 @@ public:
SyncFileStatus(SyncFileStatusTag);
void set(SyncFileStatusTag tag);
- SyncFileStatusTag tag();
+ SyncFileStatusTag tag() const;
void setSharedWithMe( bool isShared );
- bool sharedWithMe();
+ bool sharedWithMe() const;
QString toSocketAPIString() const;
private:
@@ -50,6 +53,16 @@ private:
bool _sharedWithMe;
};
+
+inline bool operator==(const SyncFileStatus &a, const SyncFileStatus &b) {
+ return a.tag() == b.tag() && a.sharedWithMe() == b.sharedWithMe();
+}
+
+inline bool operator!=(const SyncFileStatus &a, const SyncFileStatus &b) {
+ return !(a == b);
}
+}
+
+Q_DECLARE_METATYPE(OCC::SyncFileStatus)
#endif // SYNCFILESTATUS_H
diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp
index b589761b3..74898856b 100644
--- a/src/libsync/syncfilestatustracker.cpp
+++ b/src/libsync/syncfilestatustracker.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -56,7 +57,8 @@ static SyncFileStatus::SyncFileStatusTag lookupProblem(const QString &pathToMatc
static inline bool showErrorInSocketApi(const SyncFileItem& item)
{
const auto status = item._status;
- return status == SyncFileItem::NormalError
+ return item._instruction == CSYNC_INSTRUCTION_ERROR
+ || status == SyncFileItem::NormalError
|| status == SyncFileItem::FatalError
|| item._hasBlacklistEntry;
}
@@ -64,7 +66,8 @@ static inline bool showErrorInSocketApi(const SyncFileItem& item)
static inline bool showWarningInSocketApi(const SyncFileItem& item)
{
const auto status = item._status;
- return status == SyncFileItem::FileIgnored
+ return item._instruction == CSYNC_INSTRUCTION_IGNORE
+ || status == SyncFileItem::FileIgnored
|| status == SyncFileItem::Conflict
|| status == SyncFileItem::Restoration;
}
@@ -76,28 +79,18 @@ SyncFileStatusTracker::SyncFileStatusTracker(SyncEngine *syncEngine)
SLOT(slotAboutToPropagate(SyncFileItemVector&)));
connect(syncEngine, SIGNAL(itemCompleted(const SyncFileItem&, const PropagatorJob&)),
SLOT(slotItemCompleted(const SyncFileItem&)));
+ connect(syncEngine, SIGNAL(finished(bool)), SLOT(slotSyncFinished()));
connect(syncEngine, SIGNAL(started()), SLOT(slotSyncEngineRunningChanged()));
connect(syncEngine, SIGNAL(finished(bool)), SLOT(slotSyncEngineRunningChanged()));
}
-SyncFileItem SyncFileStatusTracker::rootSyncFileItem()
-{
- SyncFileItem fakeRootItem;
- // It's is not entirely correct to use the sync's status as we'll show the root folder as
- // syncing even though no child might end up being propagated, but will give us something
- // better than always UpToDate for now.
- fakeRootItem._status = _syncEngine->isSyncRunning() ? SyncFileItem::NoStatus : SyncFileItem::Success;
- fakeRootItem._isDirectory = true;
- return fakeRootItem;
-}
-
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
{
Q_ASSERT(!relativePath.endsWith(QLatin1Char('/')));
if (relativePath.isEmpty()) {
- // This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so create one manually.
- return syncFileItemStatus(rootSyncFileItem());
+ // This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so resolve manually.
+ return resolveSyncAndErrorStatus(QString(), NotShared);
}
// The SyncEngine won't notify us at all for CSYNC_FILE_SILENTLY_EXCLUDED
@@ -115,18 +108,14 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
if ( _dirtyPaths.contains(relativePath) )
return SyncFileStatus::StatusSync;
- SyncFileItem* item = _syncEngine->findSyncItem(relativePath);
- if (item) {
- return syncFileItemStatus(*item);
- }
-
- // If we're not currently syncing that file, look it up in the database to know if it's shared
+ // First look it up in the database to know if it's shared
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(relativePath);
if (rec.isValid()) {
- return syncFileItemStatus(rec.toSyncFileItem());
+ return resolveSyncAndErrorStatus(relativePath, rec._remotePerm.contains("S") ? Shared : NotShared);
}
- // Must be a new file, wait for the filesystem watcher to trigger a sync
- return SyncFileStatus();
+
+ // Must be a new file not yet in the database, check if it's syncing or has an error.
+ return resolveSyncAndErrorStatus(relativePath, NotShared, PathUnknown);
}
void SyncFileStatusTracker::slotPathTouched(const QString& fileName)
@@ -140,21 +129,74 @@ void SyncFileStatusTracker::slotPathTouched(const QString& fileName)
emit fileStatusChanged(fileName, SyncFileStatus::StatusSync);
}
+void SyncFileStatusTracker::incSyncCount(const QString &relativePath, EmitStatusChangeFlag emitStatusChange)
+{
+ // Will return 0 (and increase to 1) if the path wasn't in the map yet
+ int count = _syncCount[relativePath]++;
+ if (!count) {
+ if (emitStatusChange)
+ emit fileStatusChanged(getSystemDestination(relativePath), fileStatus(relativePath));
+
+ // We passed from OK to SYNC, increment the parent to keep it marked as
+ // SYNC while we propagate ourselves and our own children.
+ Q_ASSERT(!relativePath.endsWith('/'));
+ int lastSlashIndex = relativePath.lastIndexOf('/');
+ if (lastSlashIndex != -1)
+ incSyncCount(relativePath.left(lastSlashIndex), EmitStatusChange);
+ else if (!relativePath.isEmpty())
+ incSyncCount(QString(), EmitStatusChange);
+ }
+}
+
+void SyncFileStatusTracker::decSyncCount(const QString &relativePath, EmitStatusChangeFlag emitStatusChange)
+{
+ int count = --_syncCount[relativePath];
+ if (!count) {
+ // Remove from the map, same as 0
+ _syncCount.remove(relativePath);
+
+ if (emitStatusChange)
+ emit fileStatusChanged(getSystemDestination(relativePath), fileStatus(relativePath));
+
+ // We passed from SYNC to OK, decrement our parent.
+ Q_ASSERT(!relativePath.endsWith('/'));
+ int lastSlashIndex = relativePath.lastIndexOf('/');
+ if (lastSlashIndex != -1)
+ decSyncCount(relativePath.left(lastSlashIndex), EmitStatusChange);
+ else if (!relativePath.isEmpty())
+ decSyncCount(QString(), EmitStatusChange);
+ }
+}
+
void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
{
+ Q_ASSERT(_syncCount.isEmpty());
+
std::map<QString, SyncFileStatus::SyncFileStatusTag> oldProblems;
std::swap(_syncProblems, oldProblems);
foreach (const SyncFileItemPtr &item, items) {
- // qDebug() << Q_FUNC_INFO << "Investigating" << item->destination() << item->_status;
+ // qDebug() << Q_FUNC_INFO << "Investigating" << item->destination() << item->_status << item->_instruction;
if (showErrorInSocketApi(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusError;
+ invalidateParentPaths(item->destination());
} else if (showWarningInSocketApi(*item)) {
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
}
+
+ // Mark this path as syncing for instructions that will result in propagation,
+ // but DontEmitStatusChange since we're going to emit for ourselves using the
+ // info in the SyncFileItem we received, parents will still be emit if needed.
+ if (item->_instruction != CSYNC_INSTRUCTION_NONE
+ && item->_instruction != CSYNC_INSTRUCTION_UPDATE_METADATA
+ && item->_instruction != CSYNC_INSTRUCTION_IGNORE
+ && item->_instruction != CSYNC_INSTRUCTION_ERROR) {
+ incSyncCount(item->destination(), DontEmitStatusChange);
+ }
+
_dirtyPaths.remove(item->destination());
- emit fileStatusChanged(getSystemDestination(item->destination()), syncFileItemStatus(*item));
+ emit fileStatusChanged(getSystemDestination(item->destination()), resolveSyncAndErrorStatus(item->destination(), item->_remotePerm.contains("S") ? Shared : NotShared));
}
// Some metadata status won't trigger files to be synced, make sure that we
@@ -162,7 +204,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
// Swap into a copy since fileStatus() reads _dirtyPaths to determine the status
QSet<QString> oldDirtyPaths;
std::swap(_dirtyPaths, oldDirtyPaths);
- for (auto it = oldDirtyPaths.cbegin(); it != oldDirtyPaths.cend(); ++it)
+ for (auto it = oldDirtyPaths.constBegin(); it != oldDirtyPaths.constEnd(); ++it)
emit fileStatusChanged(getSystemDestination(*it), fileStatus(*it));
// Make sure to push any status that might have been resolved indirectly since the last sync
@@ -180,7 +222,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
{
- // qDebug() << Q_FUNC_INFO << item.destination() << item._status;
+ // qDebug() << Q_FUNC_INFO << item.destination() << item._status << item._instruction;
if (showErrorInSocketApi(item)) {
_syncProblems[item._file] = SyncFileStatus::StatusError;
@@ -191,37 +233,46 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
_syncProblems.erase(item._file);
}
- emit fileStatusChanged(getSystemDestination(item.destination()), syncFileItemStatus(item));
+ // decSyncCount calls *must* be symetric with incSyncCount calls in slotAboutToPropagate
+ if (item._instruction != CSYNC_INSTRUCTION_NONE
+ && item._instruction != CSYNC_INSTRUCTION_UPDATE_METADATA
+ && item._instruction != CSYNC_INSTRUCTION_IGNORE
+ && item._instruction != CSYNC_INSTRUCTION_ERROR) {
+ decSyncCount(item.destination(), DontEmitStatusChange);
+ }
+ emit fileStatusChanged(getSystemDestination(item.destination()), resolveSyncAndErrorStatus(item.destination(), item._remotePerm.contains("S") ? Shared : NotShared));
+}
+
+void SyncFileStatusTracker::slotSyncFinished()
+{
+ // Clear the sync counts to reduce the impact of unsymetrical inc/dec calls (e.g. when directory job abort)
+ QHash<QString, int> oldSyncCount;
+ std::swap(_syncCount, oldSyncCount);
+ for (auto it = oldSyncCount.begin(); it != oldSyncCount.end(); ++it)
+ emit fileStatusChanged(getSystemDestination(it.key()), fileStatus(it.key()));
}
void SyncFileStatusTracker::slotSyncEngineRunningChanged()
{
- emit fileStatusChanged(_syncEngine->localPath(), syncFileItemStatus(rootSyncFileItem()));
+ emit fileStatusChanged(_syncEngine->localPath(), resolveSyncAndErrorStatus(QString(), NotShared));
}
-SyncFileStatus SyncFileStatusTracker::syncFileItemStatus(const SyncFileItem& item)
+SyncFileStatus SyncFileStatusTracker::resolveSyncAndErrorStatus(const QString &relativePath, SharedFlag isShared, PathKnownFlag isPathKnown)
{
- // Hack to know if the item was taken from the sync engine (Sync), or from the database (UpToDate)
- // Mark any directory in the SyncEngine's items as syncing, this is currently how we mark parent directories
- // of currently syncing items since the PropagateDirectory job will mark the directorie's SyncFileItem::_status as Success
- // once all child jobs have been completed.
- bool waitingForPropagation = (item._isDirectory || item._direction != SyncFileItem::None) && item._status == SyncFileItem::NoStatus;
- SyncFileStatus status(SyncFileStatus::StatusUpToDate);
- if (waitingForPropagation) {
+ // If it's a new file and that we're not syncing it yet,
+ // don't show any icon and wait for the filesystem watcher to trigger a sync.
+ SyncFileStatus status(isPathKnown ? SyncFileStatus::StatusUpToDate : SyncFileStatus::StatusNone);
+ if (_syncCount.value(relativePath)) {
status.set(SyncFileStatus::StatusSync);
- } else if (showErrorInSocketApi(item)) {
- status.set(SyncFileStatus::StatusError);
- } else if (showWarningInSocketApi(item)) {
- status.set(SyncFileStatus::StatusWarning);
} else {
// After a sync finished, we need to show the users issues from that last sync like the activity list does.
// Also used for parent directories showing a warning for an error child.
- SyncFileStatus::SyncFileStatusTag problemStatus = lookupProblem(item.destination(), _syncProblems);
+ SyncFileStatus::SyncFileStatusTag problemStatus = lookupProblem(relativePath, _syncProblems);
if (problemStatus != SyncFileStatus::StatusNone)
status.set(problemStatus);
}
- if (item._remotePerm.contains("S"))
+ if (isShared)
status.setSharedWithMe(true);
return status;
diff --git a/src/libsync/syncfilestatustracker.h b/src/libsync/syncfilestatustracker.h
index e064f5f9b..16848fd74 100644
--- a/src/libsync/syncfilestatustracker.h
+++ b/src/libsync/syncfilestatustracker.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -46,19 +47,25 @@ signals:
private slots:
void slotAboutToPropagate(SyncFileItemVector& items);
void slotItemCompleted(const SyncFileItem& item);
+ void slotSyncFinished();
void slotSyncEngineRunningChanged();
private:
- SyncFileStatus syncFileItemStatus(const SyncFileItem& item);
- SyncFileItem rootSyncFileItem();
+ enum SharedFlag { NotShared = 0, Shared };
+ enum PathKnownFlag { PathUnknown = 0, PathKnown };
+ enum EmitStatusChangeFlag { DontEmitStatusChange = 0, EmitStatusChange };
+ SyncFileStatus resolveSyncAndErrorStatus(const QString &relativePath, SharedFlag isShared, PathKnownFlag isPathKnown = PathKnown);
void invalidateParentPaths(const QString& path);
QString getSystemDestination(const QString& relativePath);
+ void incSyncCount(const QString &relativePath, EmitStatusChangeFlag emitStatusChange);
+ void decSyncCount(const QString &relativePath, EmitStatusChangeFlag emitStatusChange);
SyncEngine* _syncEngine;
std::map<QString, SyncFileStatus::SyncFileStatusTag> _syncProblems;
QSet<QString> _dirtyPaths;
+ QHash<QString, int> _syncCount;
};
}
diff --git a/src/libsync/syncjournaldb.cpp b/src/libsync/syncjournaldb.cpp
index b3808eea8..8193d40ad 100644
--- a/src/libsync/syncjournaldb.cpp
+++ b/src/libsync/syncjournaldb.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -320,6 +321,13 @@ bool SyncJournalDb::checkConnect()
return sqlFail("Create table version", createQuery);
}
+ // create the checksumtype table.
+ createQuery.prepare("CREATE TABLE IF NOT EXISTS datafingerprint("
+ "fingerprint TEXT UNIQUE"
+ ");");
+ if (!createQuery.exec()) {
+ return sqlFail("Create table datafingerprint", createQuery);
+ }
createQuery.prepare("CREATE TABLE IF NOT EXISTS version("
"major INTEGER(8),"
@@ -345,7 +353,9 @@ bool SyncJournalDb::checkConnect()
createQuery.bindValue(2, MIRALL_VERSION_MINOR);
createQuery.bindValue(3, MIRALL_VERSION_PATCH);
createQuery.bindValue(4, MIRALL_VERSION_BUILD);
- createQuery.exec();
+ if (!createQuery.exec()) {
+ return sqlFail("Update version", createQuery);
+ }
} else {
int major = versionQuery.intValue(0);
@@ -356,6 +366,15 @@ bool SyncJournalDb::checkConnect()
qDebug() << Q_FUNC_INFO << "possibleUpgradeFromMirall_1_8_0_or_1 detected!";
forceRemoteDiscovery = true;
}
+
+ // There was a bug in versions <2.3.0 that could lead to stale
+ // local files and a remote discovery will fix them.
+ // See #5190 #5242.
+ if( major == 2 && minor < 3) {
+ qDebug() << Q_FUNC_INFO << "upgrade form client < 2.3.0 detected! forcing remote discovery";
+ forceRemoteDiscovery = true;
+ }
+
// Not comparing the BUILD id here, correct?
if( !(major == MIRALL_VERSION_MAJOR && minor == MIRALL_VERSION_MINOR && patch == MIRALL_VERSION_PATCH) ) {
createQuery.prepare("UPDATE version SET major=?1, minor=?2, patch =?3, custom=?4 "
@@ -394,54 +413,84 @@ bool SyncJournalDb::checkConnect()
}
_getFileRecordQuery.reset(new SqlQuery(_db));
- _getFileRecordQuery->prepare(
+ if (_getFileRecordQuery->prepare(
"SELECT path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize,"
" ignoredChildrenRemote, contentChecksum, contentchecksumtype.name"
" FROM metadata"
" LEFT JOIN checksumtype as contentchecksumtype ON metadata.contentChecksumTypeId == contentchecksumtype.id"
- " WHERE phash=?1" );
+ " WHERE phash=?1" )) {
+ return sqlFail("prepare _getFileRecordQuery", *_getFileRecordQuery);
+ }
_setFileRecordQuery.reset(new SqlQuery(_db) );
- _setFileRecordQuery->prepare("INSERT OR REPLACE INTO metadata "
+ if (_setFileRecordQuery->prepare("INSERT OR REPLACE INTO metadata "
"(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) "
- "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16);" );
+ "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16);" )) {
+ return sqlFail("prepare _setFileRecordQuery", *_setFileRecordQuery);
+ }
_setFileRecordChecksumQuery.reset(new SqlQuery(_db) );
- _setFileRecordChecksumQuery->prepare(
+ if (_setFileRecordChecksumQuery->prepare(
"UPDATE metadata"
" SET contentChecksum = ?2, contentChecksumTypeId = ?3"
- " WHERE phash == ?1;");
+ " WHERE phash == ?1;")) {
+ return sqlFail("prepare _setFileRecordChecksumQuery", *_setFileRecordChecksumQuery);
+ }
+ _setFileRecordLocalMetadataQuery.reset(new SqlQuery(_db));
+ if (_setFileRecordLocalMetadataQuery->prepare(
+ "UPDATE metadata"
+ " SET inode=?2, modtime=?3, filesize=?4"
+ " WHERE phash == ?1;")) {
+ return sqlFail("prepare _setFileRecordLocalMetadataQuery", *_setFileRecordLocalMetadataQuery);
+ }
+
_getDownloadInfoQuery.reset(new SqlQuery(_db) );
- _getDownloadInfoQuery->prepare( "SELECT tmpfile, etag, errorcount FROM "
- "downloadinfo WHERE path=?1" );
+ if (_getDownloadInfoQuery->prepare( "SELECT tmpfile, etag, errorcount FROM "
+ "downloadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _getDownloadInfoQuery", *_getDownloadInfoQuery);
+ }
_setDownloadInfoQuery.reset(new SqlQuery(_db) );
- _setDownloadInfoQuery->prepare( "INSERT OR REPLACE INTO downloadinfo "
+ if (_setDownloadInfoQuery->prepare( "INSERT OR REPLACE INTO downloadinfo "
"(path, tmpfile, etag, errorcount) "
- "VALUES ( ?1 , ?2, ?3, ?4 )" );
+ "VALUES ( ?1 , ?2, ?3, ?4 )" )) {
+ return sqlFail("prepare _setDownloadInfoQuery", *_setDownloadInfoQuery);
+ }
_deleteDownloadInfoQuery.reset(new SqlQuery(_db) );
- _deleteDownloadInfoQuery->prepare( "DELETE FROM downloadinfo WHERE path=?1" );
+ if (_deleteDownloadInfoQuery->prepare( "DELETE FROM downloadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _deleteDownloadInfoQuery", *_deleteDownloadInfoQuery);
+ }
_getUploadInfoQuery.reset(new SqlQuery(_db));
- _getUploadInfoQuery->prepare( "SELECT chunk, transferid, errorcount, size, modtime FROM "
- "uploadinfo WHERE path=?1" );
+ if (_getUploadInfoQuery->prepare( "SELECT chunk, transferid, errorcount, size, modtime FROM "
+ "uploadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _getUploadInfoQuery", *_getUploadInfoQuery);
+ }
_setUploadInfoQuery.reset(new SqlQuery(_db));
- _setUploadInfoQuery->prepare( "INSERT OR REPLACE INTO uploadinfo "
+ if (_setUploadInfoQuery->prepare( "INSERT OR REPLACE INTO uploadinfo "
"(path, chunk, transferid, errorcount, size, modtime) "
- "VALUES ( ?1 , ?2, ?3 , ?4 , ?5, ?6 )");
+ "VALUES ( ?1 , ?2, ?3 , ?4 , ?5, ?6 )")) {
+ return sqlFail("prepare _setUploadInfoQuery", *_setUploadInfoQuery);
+ }
_deleteUploadInfoQuery.reset(new SqlQuery(_db));
- _deleteUploadInfoQuery->prepare("DELETE FROM uploadinfo WHERE path=?1" );
+ if (_deleteUploadInfoQuery->prepare("DELETE FROM uploadinfo WHERE path=?1" )) {
+ return sqlFail("prepare _deleteUploadInfoQuery", *_deleteUploadInfoQuery);
+ }
_deleteFileRecordPhash.reset(new SqlQuery(_db));
- _deleteFileRecordPhash->prepare("DELETE FROM metadata WHERE phash=?1");
+ if (_deleteFileRecordPhash->prepare("DELETE FROM metadata WHERE phash=?1")) {
+ return sqlFail("prepare _deleteFileRecordPhash", *_deleteFileRecordPhash);
+ }
_deleteFileRecordRecursively.reset(new SqlQuery(_db));
- _deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')");
+ if (_deleteFileRecordRecursively->prepare("DELETE FROM metadata WHERE path LIKE(?||'/%')")) {
+ return sqlFail("prepare _deleteFileRecordRecursively", *_deleteFileRecordRecursively);
+ }
QString sql( "SELECT lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget "
"FROM blacklist WHERE path=?1");
@@ -451,24 +500,50 @@ bool SyncJournalDb::checkConnect()
sql += QLatin1String(" COLLATE NOCASE");
}
_getErrorBlacklistQuery.reset(new SqlQuery(_db));
- _getErrorBlacklistQuery->prepare(sql);
+ if (_getErrorBlacklistQuery->prepare(sql)) {
+ return sqlFail("prepare _getErrorBlacklistQuery", *_getErrorBlacklistQuery);
+ }
_setErrorBlacklistQuery.reset(new SqlQuery(_db));
- _setErrorBlacklistQuery->prepare("INSERT OR REPLACE INTO blacklist "
+ if (_setErrorBlacklistQuery->prepare("INSERT OR REPLACE INTO blacklist "
"(path, lastTryEtag, lastTryModtime, retrycount, errorstring, lastTryTime, ignoreDuration, renameTarget) "
- "VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)");
+ "VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)")) {
+ return sqlFail("prepare _setErrorBlacklistQuery", *_setErrorBlacklistQuery);
+ }
_getSelectiveSyncListQuery.reset(new SqlQuery(_db));
- _getSelectiveSyncListQuery->prepare("SELECT path FROM selectivesync WHERE type=?1");
+ if (_getSelectiveSyncListQuery->prepare("SELECT path FROM selectivesync WHERE type=?1")) {
+ return sqlFail("prepare _getSelectiveSyncListQuery", *_getSelectiveSyncListQuery);
+ }
_getChecksumTypeIdQuery.reset(new SqlQuery(_db));
- _getChecksumTypeIdQuery->prepare("SELECT id FROM checksumtype WHERE name=?1");
+ if (_getChecksumTypeIdQuery->prepare("SELECT id FROM checksumtype WHERE name=?1")) {
+ return sqlFail("prepare _getChecksumTypeIdQuery", *_getChecksumTypeIdQuery);
+ }
_getChecksumTypeQuery.reset(new SqlQuery(_db));
- _getChecksumTypeQuery->prepare("SELECT name FROM checksumtype WHERE id=?1");
+ if (_getChecksumTypeQuery->prepare("SELECT name FROM checksumtype WHERE id=?1")) {
+ return sqlFail("prepare _getChecksumTypeQuery", *_getChecksumTypeQuery);
+ }
_insertChecksumTypeQuery.reset(new SqlQuery(_db));
- _insertChecksumTypeQuery->prepare("INSERT OR IGNORE INTO checksumtype (name) VALUES (?1)");
+ if (_insertChecksumTypeQuery->prepare("INSERT OR IGNORE INTO checksumtype (name) VALUES (?1)")) {
+ return sqlFail("prepare _insertChecksumTypeQuery", *_insertChecksumTypeQuery);
+ }
+
+ _getDataFingerprintQuery.reset(new SqlQuery(_db));
+ if (_getDataFingerprintQuery->prepare("SELECT fingerprint FROM datafingerprint")) {
+ return sqlFail("prepare _getDataFingerprintQuery", *_getDataFingerprintQuery);
+ }
+
+ _setDataFingerprintQuery1.reset(new SqlQuery(_db));
+ if (_setDataFingerprintQuery1->prepare("DELETE FROM datafingerprint;")) {
+ return sqlFail("prepare _setDataFingerprintQuery1", *_setDataFingerprintQuery1);
+ }
+ _setDataFingerprintQuery2.reset(new SqlQuery(_db));
+ if (_setDataFingerprintQuery2->prepare("INSERT INTO datafingerprint (fingerprint) VALUES (?1);")) {
+ return sqlFail("prepare _setDataFingerprintQuery2", *_setDataFingerprintQuery2);
+ }
// don't start a new transaction now
commitInternal(QString("checkConnect End"), false);
@@ -492,6 +567,7 @@ void SyncJournalDb::close()
_getFileRecordQuery.reset(0);
_setFileRecordQuery.reset(0);
_setFileRecordChecksumQuery.reset(0);
+ _setFileRecordLocalMetadataQuery.reset(0);
_getDownloadInfoQuery.reset(0);
_setDownloadInfoQuery.reset(0);
_deleteDownloadInfoQuery.reset(0);
@@ -506,6 +582,9 @@ void SyncJournalDb::close()
_getChecksumTypeIdQuery.reset(0);
_getChecksumTypeQuery.reset(0);
_insertChecksumTypeQuery.reset(0);
+ _getDataFingerprintQuery.reset(0);
+ _setDataFingerprintQuery1.reset(0);
+ _setDataFingerprintQuery2.reset(0);
_db.close();
_avoidReadFromDbOnNextSyncFilter.clear();
@@ -980,6 +1059,40 @@ bool SyncJournalDb::updateFileRecordChecksum(const QString& filename,
return true;
}
+bool SyncJournalDb::updateLocalMetadata(const QString& filename,
+ qint64 modtime, quint64 size, quint64 inode)
+
+{
+ QMutexLocker locker(&_mutex);
+
+ qlonglong phash = getPHash(filename);
+ if( !checkConnect() ) {
+ qDebug() << "Failed to connect database.";
+ return false;
+ }
+
+ auto & query = _setFileRecordLocalMetadataQuery;
+
+ query->reset_and_clear_bindings();
+ query->bindValue(1, QString::number(phash));
+ query->bindValue(2, inode);
+ query->bindValue(3, modtime);
+ query->bindValue(4, size);
+
+ if( !query->exec() ) {
+ qWarning() << "Error SQL statement updateLocalMetadata: "
+ << query->lastQuery() << " :"
+ << query->error();
+ return false;
+ }
+
+ qDebug() << query->lastQuery() << phash << inode
+ << modtime << size;
+
+ query->reset_and_clear_bindings();
+ return true;
+}
+
bool SyncJournalDb::setFileRecordMetadata(const SyncJournalFileRecord& record)
{
SyncJournalFileRecord existing = getFileRecord(record._path);
@@ -1636,6 +1749,49 @@ int SyncJournalDb::mapChecksumType(const QByteArray& checksumType)
return _getChecksumTypeIdQuery->intValue(0);
}
+QByteArray SyncJournalDb::dataFingerprint()
+{
+ QMutexLocker locker(&_mutex);
+ if (!checkConnect()) {
+ return QByteArray();
+ }
+
+ _getDataFingerprintQuery->reset_and_clear_bindings();
+ if (!_getDataFingerprintQuery->exec()) {
+ qWarning() << "Error SQL statement dataFingerprint: "
+ << _getDataFingerprintQuery->lastQuery() << " :"
+ << _getDataFingerprintQuery->error();
+ return QByteArray();
+ }
+
+ if (!_getDataFingerprintQuery->next()) {
+ return QByteArray();
+ }
+ return _getDataFingerprintQuery->baValue(0);
+}
+
+void SyncJournalDb::setDataFingerprint(const QByteArray &dataFingerprint)
+{
+ QMutexLocker locker(&_mutex);
+ if (!checkConnect()) {
+ return;
+ }
+
+ _setDataFingerprintQuery1->reset_and_clear_bindings();
+ if (!_setDataFingerprintQuery1->exec()) {
+ qWarning() << "Error SQL statement setDataFingerprint1: "
+ << _setDataFingerprintQuery1->lastQuery() << " :"
+ << _setDataFingerprintQuery1->error();
+ }
+
+ _setDataFingerprintQuery2->reset_and_clear_bindings();
+ _setDataFingerprintQuery2->bindValue(1, dataFingerprint);
+ if (!_setDataFingerprintQuery2->exec()) {
+ qWarning() << "Error SQL statement setDataFingerprint2: "
+ << _setDataFingerprintQuery2->lastQuery() << " :"
+ << _setDataFingerprintQuery2->error();
+ }
+}
void SyncJournalDb::commit(const QString& context, bool startTrans)
{
diff --git a/src/libsync/syncjournaldb.h b/src/libsync/syncjournaldb.h
index a9a7eab2f..e114cd1c1 100644
--- a/src/libsync/syncjournaldb.h
+++ b/src/libsync/syncjournaldb.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -52,6 +53,8 @@ public:
bool updateFileRecordChecksum(const QString& filename,
const QByteArray& contentChecksum,
const QByteArray& contentChecksumType);
+ bool updateLocalMetadata(const QString& filename,
+ qint64 modtime, quint64 size, quint64 inode);
bool exists();
void walCheckpoint();
@@ -159,6 +162,12 @@ public:
*/
QByteArray getChecksumType(int checksumTypeId);
+ /**
+ * The data-fingerprint used to detect backup
+ */
+ void setDataFingerprint(const QByteArray &dataFingerprint);
+ QByteArray dataFingerprint();
+
private:
bool updateDatabaseStructure();
bool updateMetadataTableStructure();
@@ -187,6 +196,7 @@ private:
QScopedPointer<SqlQuery> _getFileRecordQuery;
QScopedPointer<SqlQuery> _setFileRecordQuery;
QScopedPointer<SqlQuery> _setFileRecordChecksumQuery;
+ QScopedPointer<SqlQuery> _setFileRecordLocalMetadataQuery;
QScopedPointer<SqlQuery> _getDownloadInfoQuery;
QScopedPointer<SqlQuery> _setDownloadInfoQuery;
QScopedPointer<SqlQuery> _deleteDownloadInfoQuery;
@@ -201,6 +211,9 @@ private:
QScopedPointer<SqlQuery> _getChecksumTypeIdQuery;
QScopedPointer<SqlQuery> _getChecksumTypeQuery;
QScopedPointer<SqlQuery> _insertChecksumTypeQuery;
+ QScopedPointer<SqlQuery> _getDataFingerprintQuery;
+ QScopedPointer<SqlQuery> _setDataFingerprintQuery1;
+ QScopedPointer<SqlQuery> _setDataFingerprintQuery2;
/* This is the list of paths we called avoidReadFromDbOnNextSync on.
* It means that they should not be written to the DB in any case since doing
diff --git a/src/libsync/syncjournalfilerecord.cpp b/src/libsync/syncjournalfilerecord.cpp
index 583b7c41d..6bbd45a39 100644
--- a/src/libsync/syncjournalfilerecord.cpp
+++ b/src/libsync/syncjournalfilerecord.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/syncjournalfilerecord.h b/src/libsync/syncjournalfilerecord.h
index ce52b3e82..e196788a9 100644
--- a/src/libsync/syncjournalfilerecord.h
+++ b/src/libsync/syncjournalfilerecord.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp
index 572cceca3..53e850b99 100644
--- a/src/libsync/theme.cpp
+++ b/src/libsync/theme.cpp
@@ -115,11 +115,11 @@ QIcon Theme::trayFolderIcon( const QString& backend ) const
* helper to load a icon from either the icon theme the desktop provides or from
* the apps Qt resources.
*/
-QIcon Theme::themeIcon( const QString& name, bool sysTray ) const
+QIcon Theme::themeIcon( const QString& name, bool sysTray, bool sysTrayMenuVisible ) const
{
QString flavor;
if (sysTray) {
- flavor = systrayIconFlavor(_mono);
+ flavor = systrayIconFlavor(_mono, sysTrayMenuVisible);
} else {
flavor = QLatin1String("colored");
}
@@ -158,6 +158,14 @@ QIcon Theme::themeIcon( const QString& name, bool sysTray ) const
}
}
+ #ifdef Q_OS_MAC
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
+ // This defines the icon as a template and enables automatic macOS color handling
+ // See https://bugreports.qt.io/browse/QTBUG-42109
+ cached.setIsMask(_mono && sysTray && !sysTrayMenuVisible);
+ #endif
+ #endif
+
return cached;
}
@@ -227,11 +235,18 @@ QString Theme::defaultClientFolder() const
return appName();
}
-QString Theme::systrayIconFlavor(bool mono) const
+QString Theme::systrayIconFlavor(bool mono, bool sysTrayMenuVisible ) const
{
+ Q_UNUSED(sysTrayMenuVisible)
QString flavor;
if (mono) {
flavor = Utility::hasDarkSystray() ? QLatin1String("white") : QLatin1String("black");
+
+ #ifdef Q_OS_MAC
+ if (sysTrayMenuVisible) {
+ flavor = QLatin1String("white");
+ }
+ #endif
} else {
flavor = QLatin1String("colored");
}
@@ -286,7 +301,7 @@ QString Theme::about() const
.arg(MIRALL_VERSION_STRING).arg("http://" MIRALL_STRINGIFY(APPLICATION_DOMAIN))
.arg(MIRALL_STRINGIFY(APPLICATION_DOMAIN));
- re += tr("<p>Copyright ownCloud, Incorporated</p>");
+ re += tr("<p>Copyright ownCloud GmbH</p>");
re += tr("<p>Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.<br/>"
"%2 and the %2 logo are registered trademarks of %1 in the "
"United States, other countries, or both.</p>")
@@ -331,7 +346,7 @@ QVariant Theme::customMedia( CustomMediaType type )
return re;
}
-QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
+QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray, bool sysTrayMenuVisible ) const
{
// FIXME: Mind the size!
QString statusIcon;
@@ -363,7 +378,7 @@ QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
statusIcon = QLatin1String("state-error");
}
- return themeIcon( statusIcon, sysTray );
+ return themeIcon( statusIcon, sysTray, sysTrayMenuVisible );
}
QIcon Theme::folderDisabledIcon( ) const
@@ -371,9 +386,9 @@ QIcon Theme::folderDisabledIcon( ) const
return themeIcon( QLatin1String("state-pause") );
}
-QIcon Theme::folderOfflineIcon(bool systray) const
+QIcon Theme::folderOfflineIcon(bool sysTray, bool sysTrayMenuVisible ) const
{
- return themeIcon( QLatin1String("state-offline"), systray );
+ return themeIcon( QLatin1String("state-offline"), sysTray, sysTrayMenuVisible );
}
QColor Theme::wizardHeaderTitleColor() const
diff --git a/src/libsync/theme.h b/src/libsync/theme.h
index 84416fc78..63c86b4aa 100644
--- a/src/libsync/theme.h
+++ b/src/libsync/theme.h
@@ -97,10 +97,10 @@ public:
/**
* get an sync state icon
*/
- virtual QIcon syncStateIcon( SyncResult::Status, bool sysTray = false ) const;
+ virtual QIcon syncStateIcon( SyncResult::Status, bool sysTray = false, bool sysTrayMenuVisible = false) const;
virtual QIcon folderDisabledIcon() const;
- virtual QIcon folderOfflineIcon(bool systray = false) const;
+ virtual QIcon folderOfflineIcon(bool sysTray = false, bool sysTrayMenuVisible = false) const;
virtual QIcon applicationIcon() const = 0;
#endif
@@ -152,7 +152,7 @@ public:
virtual QString enforcedLocale() const { return QString::null; }
/** colored, white or black */
- QString systrayIconFlavor(bool mono) const;
+ QString systrayIconFlavor(bool mono, bool sysTrayMenuVisible = false) const;
#ifndef TOKEN_AUTH_ONLY
/**
@@ -304,7 +304,7 @@ public:
protected:
#ifndef TOKEN_AUTH_ONLY
- QIcon themeIcon(const QString& name, bool sysTray = false) const;
+ QIcon themeIcon(const QString& name, bool sysTray = false, bool sysTrayMenuVisible = false) const;
#endif
Theme();
diff --git a/src/libsync/utility.cpp b/src/libsync/utility.cpp
index 880064256..4387aa91d 100644
--- a/src/libsync/utility.cpp
+++ b/src/libsync/utility.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -16,6 +17,7 @@
#include "utility.h"
#include "version.h"
+#include "configfile.h"
// Note: This file must compile without QtGui
#include <QCoreApplication>
@@ -38,6 +40,9 @@
#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
#include <QCollator>
#endif
+#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
+#include <QSysInfo>
+#endif
#ifdef Q_OS_UNIX
@@ -238,19 +243,6 @@ QString Utility::compactFormatDouble(double value, int prec, const QString& unit
return str;
}
-QString Utility::toCSyncScheme(const QString &urlStr)
-{
-
- QUrl url( urlStr );
- if( url.scheme() == QLatin1String("http") ) {
- url.setScheme( QLatin1String("owncloud") );
- } else {
- // connect SSL!
- url.setScheme( QLatin1String("ownclouds") );
- }
- return url.toString();
-}
-
QString Utility::escape(const QString &in)
{
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
@@ -438,6 +430,25 @@ bool Utility::isBSD()
#endif
}
+QString Utility::platformName()
+{
+ QString re("Windows");
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0)
+ if( isMac() ) {
+ re = QLatin1String("MacOSX");
+ } else if( isLinux() ) {
+ re = QLatin1String("Linux");
+ } else if( isBSD() ) {
+ re = QLatin1String("BSD");
+ } else if( isUnix() ) {
+ re = QLatin1String("Unix");
+ }
+#else
+ re = QSysInfo::prettyProductName();
+#endif
+ return re;
+}
void Utility::crash()
{
@@ -578,4 +589,41 @@ void Utility::sortFilenames(QStringList& fileNames)
#endif
}
+QUrl Utility::concatUrlPath(const QUrl &url, const QString &concatPath,
+ const QList< QPair<QString, QString> > &queryItems)
+{
+ QString path = url.path();
+ if (! concatPath.isEmpty()) {
+ // avoid '//'
+ if (path.endsWith('/') && concatPath.startsWith('/')) {
+ path.chop(1);
+ } // avoid missing '/'
+ else if (!path.endsWith('/') && !concatPath.startsWith('/')) {
+ path += QLatin1Char('/');
+ }
+ path += concatPath; // put the complete path together
+ }
+
+ QUrl tmpUrl = url;
+ tmpUrl.setPath(path);
+ if( queryItems.size() > 0 ) {
+ tmpUrl.setQueryItems(queryItems);
+ }
+ return tmpUrl;
+}
+
+Q_GLOBAL_STATIC(QString, g_configFileName)
+
+std::unique_ptr<QSettings> Utility::settingsWithGroup(const QString& group, QObject *parent)
+{
+ if (g_configFileName()->isEmpty()) {
+ // cache file name
+ ConfigFile cfg;
+ *g_configFileName() = cfg.configFile();
+ }
+ std::unique_ptr<QSettings> settings(new QSettings(*g_configFileName(), QSettings::IniFormat, parent));
+ settings->beginGroup(group);
+ return settings;
+}
+
} // namespace OCC
diff --git a/src/libsync/utility.h b/src/libsync/utility.h
index 57ae61536..5fb60c729 100644
--- a/src/libsync/utility.h
+++ b/src/libsync/utility.h
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
@@ -21,6 +22,10 @@
#include <QDateTime>
#include <QElapsedTimer>
#include <QMap>
+#include <QUrl>
+#include <memory>
+
+class QSettings;
namespace OCC {
@@ -39,7 +44,6 @@ namespace Utility
OWNCLOUDSYNC_EXPORT bool hasLaunchOnStartup(const QString &appName);
OWNCLOUDSYNC_EXPORT void setLaunchOnStartup(const QString &appName, const QString& guiName, bool launch);
OWNCLOUDSYNC_EXPORT qint64 freeDiskSpace(const QString &path);
- OWNCLOUDSYNC_EXPORT QString toCSyncScheme(const QString &urlStr);
/**
* @brief compactFormatDouble - formats a double value human readable.
@@ -91,6 +95,7 @@ namespace Utility
OWNCLOUDSYNC_EXPORT bool isLinux(); // use with care
OWNCLOUDSYNC_EXPORT bool isBSD(); // use with care, does not match OS X
+ OWNCLOUDSYNC_EXPORT QString platformName();
// crash helper for --debug
OWNCLOUDSYNC_EXPORT void crash();
@@ -146,6 +151,14 @@ namespace Utility
*/
OWNCLOUDSYNC_EXPORT void sortFilenames(QStringList& fileNames);
+ /** Appends concatPath and queryItems to the url */
+ OWNCLOUDSYNC_EXPORT QUrl concatUrlPath(
+ const QUrl &url, const QString &concatPath,
+ const QList< QPair<QString, QString> > &queryItems = (QList<QPair<QString, QString>>()));
+
+ /** Returns a new settings pre-set in a specific group. The Settings will be created
+ with the given parent. If no parent is specified, the caller must destroy the settings */
+ OWNCLOUDSYNC_EXPORT std::unique_ptr<QSettings> settingsWithGroup(const QString& group, QObject* parent = 0);
}
/** @} */ // \addtogroup
diff --git a/src/libsync/utility_mac.cpp b/src/libsync/utility_mac.cpp
index 2397f7cc8..9ade01adc 100644
--- a/src/libsync/utility_mac.cpp
+++ b/src/libsync/utility_mac.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/utility_unix.cpp b/src/libsync/utility_unix.cpp
index ed71c088d..6eec2fac6 100644
--- a/src/libsync/utility_unix.cpp
+++ b/src/libsync/utility_unix.cpp
@@ -4,7 +4,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/src/libsync/utility_win.cpp b/src/libsync/utility_win.cpp
index f4509674c..f0b56ec7d 100644
--- a/src/libsync/utility_win.cpp
+++ b/src/libsync/utility_win.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f701700aa..fd817c734 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -27,7 +27,9 @@ ENDIF()
owncloud_add_test(FolderWatcher "${FolderWatcher_SRC}")
if( UNIX AND NOT APPLE )
+ if(HAVE_QT5 AND NOT BUILD_WITH_QT4)
owncloud_add_test(InotifyWatcher "${FolderWatcher_SRC}")
+ endif(HAVE_QT5 AND NOT BUILD_WITH_QT4)
endif(UNIX AND NOT APPLE)
owncloud_add_test(CSyncSqlite "")
@@ -42,6 +44,11 @@ owncloud_add_test(FileSystem "")
owncloud_add_test(ChecksumValidator "")
owncloud_add_test(ExcludedFiles "")
+if(HAVE_QT5 AND NOT BUILD_WITH_QT4)
+ owncloud_add_test(SyncEngine "syncenginetestutils.h")
+ owncloud_add_test(SyncFileStatusTracker "syncenginetestutils.h")
+ owncloud_add_test(ChunkingNg "syncenginetestutils.h")
+endif(HAVE_QT5 AND NOT BUILD_WITH_QT4)
SET(FolderMan_SRC ../src/gui/folderman.cpp)
list(APPEND FolderMan_SRC ../src/gui/folder.cpp )
diff --git a/test/manual/favlink/main.cpp b/test/manual/favlink/main.cpp
index 75d662f2e..4d9ee0f15 100644
--- a/test/manual/favlink/main.cpp
+++ b/test/manual/favlink/main.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/test/mockserver/httpserver.cpp b/test/mockserver/httpserver.cpp
index 9f3e1a1d7..c1f2a0cee 100644
--- a/test/mockserver/httpserver.cpp
+++ b/test/mockserver/httpserver.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/test/mockserver/httpserver.h b/test/mockserver/httpserver.h
index 010fd80c9..b408e4233 100644
--- a/test/mockserver/httpserver.h
+++ b/test/mockserver/httpserver.h
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/test/mockserver/main.cpp b/test/mockserver/main.cpp
index f35cab9f7..c106456ae 100644
--- a/test/mockserver/main.cpp
+++ b/test/mockserver/main.cpp
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * 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
diff --git a/test/scripts/torture_create_files.pl b/test/scripts/torture_create_files.pl
index 5b5132c17..1b515d75b 100755
--- a/test/scripts/torture_create_files.pl
+++ b/test/scripts/torture_create_files.pl
@@ -4,7 +4,8 @@
#
# 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; version 2 of the License.
+# 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
diff --git a/test/scripts/torture_gen_layout.pl b/test/scripts/torture_gen_layout.pl
index ccbfa0173..7ad2a3034 100755
--- a/test/scripts/torture_gen_layout.pl
+++ b/test/scripts/torture_gen_layout.pl
@@ -4,7 +4,8 @@
#
# 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; version 2 of the License.
+# 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
diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h
new file mode 100644
index 000000000..651c34f25
--- /dev/null
+++ b/test/syncenginetestutils.h
@@ -0,0 +1,870 @@
+/*
+ * This software is in the public domain, furnished "as is", without technical
+ * support, and with no warranty, express or implied, as to its usefulness for
+ * any purpose.
+ *
+ */
+#pragma once
+
+#include "account.h"
+#include "creds/abstractcredentials.h"
+#include "filesystem.h"
+#include "syncengine.h"
+#include "syncjournaldb.h"
+
+#include <QDir>
+#include <QNetworkReply>
+#include <QMap>
+#include <QtTest>
+
+static const QUrl sRootUrl("owncloud://somehost/owncloud/remote.php/webdav/");
+static const QUrl sRootUrl2("owncloud://somehost/owncloud/remote.php/dav/files/admin/");
+static const QUrl sUploadUrl("owncloud://somehost/owncloud/remote.php/dav/uploads/admin/");
+
+inline QString getFilePathFromUrl(const QUrl &url) {
+ QString path = url.path();
+ if (path.startsWith(sRootUrl.path()))
+ return path.mid(sRootUrl.path().length());
+ if (path.startsWith(sRootUrl2.path()))
+ return path.mid(sRootUrl2.path().length());
+ if (path.startsWith(sUploadUrl.path()))
+ return path.mid(sUploadUrl.path().length());
+ return {};
+}
+
+
+inline QString generateEtag() {
+ return QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch(), 16);
+}
+inline QByteArray generateFileId() {
+ return QByteArray::number(qrand(), 16);
+}
+
+class PathComponents : public QStringList {
+public:
+ PathComponents(const char *path) : PathComponents{QString::fromUtf8(path)} {}
+ PathComponents(const QString &path) : QStringList{path.split('/', QString::SkipEmptyParts)} { }
+ PathComponents(const QStringList &pathComponents) : QStringList{pathComponents} { }
+
+ PathComponents parentDirComponents() const {
+ return PathComponents{mid(0, size() - 1)};
+ }
+ PathComponents subComponents() const { return PathComponents{mid(1)}; }
+ QString pathRoot() const { return first(); }
+ QString fileName() const { return last(); }
+};
+
+class FileModifier
+{
+public:
+ virtual ~FileModifier() { }
+ virtual void remove(const QString &relativePath) = 0;
+ virtual void insert(const QString &relativePath, qint64 size = 64, char contentChar = 'W') = 0;
+ virtual void setContents(const QString &relativePath, char contentChar) = 0;
+ virtual void appendByte(const QString &relativePath) = 0;
+ virtual void mkdir(const QString &relativePath) = 0;
+ virtual void rename(const QString &relativePath, const QString &relativeDestinationDirectory) = 0;
+};
+
+class DiskFileModifier : public FileModifier
+{
+ QDir _rootDir;
+public:
+ DiskFileModifier(const QString &rootDirPath) : _rootDir(rootDirPath) { }
+ void remove(const QString &relativePath) override {
+ QFileInfo fi{_rootDir.filePath(relativePath)};
+ if (fi.isFile())
+ QVERIFY(_rootDir.remove(relativePath));
+ else
+ QVERIFY(QDir{fi.filePath()}.removeRecursively());
+ }
+ void insert(const QString &relativePath, qint64 size = 64, char contentChar = 'W') override {
+ QFile file{_rootDir.filePath(relativePath)};
+ QVERIFY(!file.exists());
+ file.open(QFile::WriteOnly);
+ QByteArray buf(1024, contentChar);
+ for (int x = 0; x < size/buf.size(); ++x) {
+ file.write(buf);
+ }
+ file.write(buf.data(), size % buf.size());
+ file.close();
+ // Set the mtime 30 seconds in the past, for some tests that need to make sure that the mtime differs.
+ OCC::FileSystem::setModTime(file.fileName(), OCC::Utility::qDateTimeToTime_t(QDateTime::currentDateTime().addSecs(-30)));
+ QCOMPARE(file.size(), size);
+ }
+ void setContents(const QString &relativePath, char contentChar) override {
+ QFile file{_rootDir.filePath(relativePath)};
+ QVERIFY(file.exists());
+ qint64 size = file.size();
+ file.open(QFile::WriteOnly);
+ file.write(QByteArray{}.fill(contentChar, size));
+ }
+ void appendByte(const QString &relativePath) override {
+ QFile file{_rootDir.filePath(relativePath)};
+ QVERIFY(file.exists());
+ file.open(QFile::ReadWrite);
+ QByteArray contents = file.read(1);
+ file.seek(file.size());
+ file.write(contents);
+ }
+ void mkdir(const QString &relativePath) override {
+ _rootDir.mkpath(relativePath);
+ }
+ void rename(const QString &from, const QString &to) override {
+ QVERIFY(_rootDir.exists(from));
+ QVERIFY(_rootDir.rename(from, to));
+ }
+};
+
+class FileInfo : public FileModifier
+{
+public:
+ static FileInfo A12_B12_C12_S12() {
+ FileInfo fi{QString{}, {
+ {QStringLiteral("A"), {
+ {QStringLiteral("a1"), 4},
+ {QStringLiteral("a2"), 4}
+ }},
+ {QStringLiteral("B"), {
+ {QStringLiteral("b1"), 16},
+ {QStringLiteral("b2"), 16}
+ }},
+ {QStringLiteral("C"), {
+ {QStringLiteral("c1"), 24},
+ {QStringLiteral("c2"), 24}
+ }},
+ }};
+ FileInfo sharedFolder{QStringLiteral("S"), {
+ {QStringLiteral("s1"), 32},
+ {QStringLiteral("s2"), 32}
+ }};
+ sharedFolder.isShared = true;
+ sharedFolder.children[QStringLiteral("s1")].isShared = true;
+ sharedFolder.children[QStringLiteral("s2")].isShared = true;
+ fi.children.insert(sharedFolder.name, std::move(sharedFolder));
+ return fi;
+ }
+
+ FileInfo() = default;
+ FileInfo(const QString &name) : name{name} { }
+ FileInfo(const QString &name, qint64 size) : name{name}, isDir{false}, size{size} { }
+ FileInfo(const QString &name, qint64 size, char contentChar) : name{name}, isDir{false}, size{size}, contentChar{contentChar} { }
+ FileInfo(const QString &name, const std::initializer_list<FileInfo> &children) : name{name} {
+ QString p = path();
+ for (const auto &source : children) {
+ auto &dest = this->children[source.name] = source;
+ dest.parentPath = p;
+ dest.fixupParentPathRecursively();
+ }
+ }
+
+ void remove(const QString &relativePath) override {
+ const PathComponents pathComponents{relativePath};
+ FileInfo *parent = findInvalidatingEtags(pathComponents.parentDirComponents());
+ Q_ASSERT(parent);
+ parent->children.erase(std::find_if(parent->children.begin(), parent->children.end(),
+ [&pathComponents](const FileInfo &fi){ return fi.name == pathComponents.fileName(); }));
+ }
+
+ void insert(const QString &relativePath, qint64 size = 64, char contentChar = 'W') override {
+ create(relativePath, size, contentChar);
+ }
+
+ void setContents(const QString &relativePath, char contentChar) override {
+ FileInfo *file = findInvalidatingEtags(relativePath);
+ Q_ASSERT(file);
+ file->contentChar = contentChar;
+ }
+
+ void appendByte(const QString &relativePath) override {
+ FileInfo *file = findInvalidatingEtags(relativePath);
+ Q_ASSERT(file);
+ file->size += 1;
+ }
+
+ void mkdir(const QString &relativePath) override {
+ createDir(relativePath);
+ }
+
+ void rename(const QString &oldPath, const QString &newPath) override {
+ const PathComponents newPathComponents{newPath};
+ FileInfo *dir = findInvalidatingEtags(newPathComponents.parentDirComponents());
+ Q_ASSERT(dir);
+ Q_ASSERT(dir->isDir);
+ const PathComponents pathComponents{oldPath};
+ FileInfo *parent = findInvalidatingEtags(pathComponents.parentDirComponents());
+ Q_ASSERT(parent);
+ FileInfo fi = parent->children.take(pathComponents.fileName());
+ fi.parentPath = dir->path();
+ fi.name = newPathComponents.fileName();
+ fi.fixupParentPathRecursively();
+ dir->children.insert(newPathComponents.fileName(), std::move(fi));
+ }
+
+ FileInfo *find(const PathComponents &pathComponents, const bool invalidateEtags = false) {
+ if (pathComponents.isEmpty()) {
+ if (invalidateEtags)
+ etag = generateEtag();
+ return this;
+ }
+ QString childName = pathComponents.pathRoot();
+ auto it = children.find(childName);
+ if (it != children.end()) {
+ auto file = it->find(pathComponents.subComponents(), invalidateEtags);
+ if (file && invalidateEtags)
+ // Update parents on the way back
+ etag = file->etag;
+ return file;
+ }
+ return nullptr;
+ }
+
+ FileInfo *createDir(const QString &relativePath) {
+ const PathComponents pathComponents{relativePath};
+ FileInfo *parent = findInvalidatingEtags(pathComponents.parentDirComponents());
+ Q_ASSERT(parent);
+ FileInfo &child = parent->children[pathComponents.fileName()] = FileInfo{pathComponents.fileName()};
+ child.parentPath = parent->path();
+ child.etag = generateEtag();
+ return &child;
+ }
+
+ FileInfo *create(const QString &relativePath, qint64 size, char contentChar) {
+ const PathComponents pathComponents{relativePath};
+ FileInfo *parent = findInvalidatingEtags(pathComponents.parentDirComponents());
+ Q_ASSERT(parent);
+ FileInfo &child = parent->children[pathComponents.fileName()] = FileInfo{pathComponents.fileName(), size};
+ child.parentPath = parent->path();
+ child.contentChar = contentChar;
+ child.etag = generateEtag();
+ return &child;
+ }
+
+ bool operator<(const FileInfo &other) const {
+ return name < other.name;
+ }
+
+ bool operator==(const FileInfo &other) const {
+ // Consider files to be equal between local<->remote as a user would.
+ return name == other.name
+ && isDir == other.isDir
+ && size == other.size
+ && contentChar == other.contentChar
+ && children == other.children;
+ }
+
+ QString path() const {
+ return (parentPath.isEmpty() ? QString() : (parentPath + '/')) + name;
+ }
+
+ QString name;
+ bool isDir = true;
+ bool isShared = false;
+ QDateTime lastModified = QDateTime::currentDateTime().addDays(-7);
+ QString etag = generateEtag();
+ QByteArray fileId = generateFileId();
+ qint64 size = 0;
+ char contentChar = 'W';
+
+ // Sorted by name to be able to compare trees
+ QMap<QString, FileInfo> children;
+ QString parentPath;
+
+private:
+ FileInfo *findInvalidatingEtags(const PathComponents &pathComponents) {
+ return find(pathComponents, true);
+ }
+
+ void fixupParentPathRecursively() {
+ auto p = path();
+ for (auto it = children.begin(); it != children.end(); ++it) {
+ Q_ASSERT(it.key() == it->name);
+ it->parentPath = p;
+ it->fixupParentPathRecursively();
+ }
+ }
+
+ friend inline QDebug operator<<(QDebug dbg, const FileInfo& fi) {
+ return dbg << "{ " << fi.path() << ": " << fi.children;
+ }
+};
+
+class FakePropfindReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ QByteArray payload;
+
+ FakePropfindReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isNull()); // for root, it should be empty
+ const FileInfo *fileInfo = remoteRootFileInfo.find(fileName);
+ Q_ASSERT(fileInfo);
+ QString prefix = request.url().path().left(request.url().path().size() - fileName.size());
+
+ // Don't care about the request and just return a full propfind
+ const QString davUri{QStringLiteral("DAV:")};
+ const QString ocUri{QStringLiteral("http://owncloud.org/ns")};
+ QBuffer buffer{&payload};
+ buffer.open(QIODevice::WriteOnly);
+ QXmlStreamWriter xml( &buffer );
+ xml.writeNamespace(davUri, "d");
+ xml.writeNamespace(ocUri, "oc");
+ xml.writeStartDocument();
+ xml.writeStartElement(davUri, QStringLiteral("multistatus"));
+ auto writeFileResponse = [&](const FileInfo &fileInfo) {
+ xml.writeStartElement(davUri, QStringLiteral("response"));
+
+ xml.writeTextElement(davUri, QStringLiteral("href"), prefix + fileInfo.path());
+ xml.writeStartElement(davUri, QStringLiteral("propstat"));
+ xml.writeStartElement(davUri, QStringLiteral("prop"));
+
+ if (fileInfo.isDir) {
+ xml.writeStartElement(davUri, QStringLiteral("resourcetype"));
+ xml.writeEmptyElement(davUri, QStringLiteral("collection"));
+ xml.writeEndElement(); // resourcetype
+ } else
+ xml.writeEmptyElement(davUri, QStringLiteral("resourcetype"));
+
+ auto gmtDate = fileInfo.lastModified.toTimeZone(QTimeZone("GMT"));
+ auto stringDate = gmtDate.toString("ddd, dd MMM yyyy HH:mm:ss 'GMT'");
+ xml.writeTextElement(davUri, QStringLiteral("getlastmodified"), stringDate);
+ xml.writeTextElement(davUri, QStringLiteral("getcontentlength"), QString::number(fileInfo.size));
+ xml.writeTextElement(davUri, QStringLiteral("getetag"), fileInfo.etag);
+ xml.writeTextElement(ocUri, QStringLiteral("permissions"), fileInfo.isShared ? QStringLiteral("SRDNVCKW") : QStringLiteral("RDNVCKW"));
+ xml.writeTextElement(ocUri, QStringLiteral("id"), fileInfo.fileId);
+ xml.writeEndElement(); // prop
+ xml.writeTextElement(davUri, QStringLiteral("status"), "HTTP/1.1 200 OK");
+ xml.writeEndElement(); // propstat
+ xml.writeEndElement(); // response
+ };
+
+ writeFileResponse(*fileInfo);
+ foreach(const FileInfo &childFileInfo, fileInfo->children)
+ writeFileResponse(childFileInfo);
+ xml.writeEndElement(); // multistatus
+ xml.writeEndDocument();
+
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setHeader(QNetworkRequest::ContentLengthHeader, payload.size());
+ setHeader(QNetworkRequest::ContentTypeHeader, "application/xml; charset=utf-8");
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 207);
+ setFinished(true);
+ emit metaDataChanged();
+ if (bytesAvailable())
+ emit readyRead();
+ emit finished();
+ }
+
+ void abort() override { }
+
+ qint64 bytesAvailable() const override { return payload.size() + QIODevice::bytesAvailable(); }
+ qint64 readData(char *data, qint64 maxlen) override {
+ qint64 len = std::min(qint64{payload.size()}, maxlen);
+ strncpy(data, payload.constData(), len);
+ payload.remove(0, len);
+ return len;
+ }
+};
+
+class FakePutReply : public QNetworkReply
+{
+ Q_OBJECT
+ FileInfo *fileInfo;
+public:
+ FakePutReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, const QByteArray &putPayload, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isEmpty());
+ if ((fileInfo = remoteRootFileInfo.find(fileName))) {
+ fileInfo->size = putPayload.size();
+ fileInfo->contentChar = putPayload.at(0);
+ } else {
+ // Assume that the file is filled with the same character
+ fileInfo = remoteRootFileInfo.create(fileName, putPayload.size(), putPayload.at(0));
+ }
+
+ if (!fileInfo) {
+ abort();
+ return;
+ }
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ emit uploadProgress(fileInfo->size, fileInfo->size);
+ setRawHeader("OC-ETag", fileInfo->etag.toLatin1());
+ setRawHeader("ETag", fileInfo->etag.toLatin1());
+ setRawHeader("X-OC-MTime", "accepted"); // Prevents Q_ASSERT(!_runningNow) since we'll call PropagateItemJob::done twice in that case.
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+class FakeMkcolReply : public QNetworkReply
+{
+ Q_OBJECT
+ FileInfo *fileInfo;
+public:
+ FakeMkcolReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isEmpty());
+ fileInfo = remoteRootFileInfo.createDir(fileName);
+
+ if (!fileInfo) {
+ abort();
+ return;
+ }
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setRawHeader("OC-FileId", fileInfo->fileId);
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+class FakeDeleteReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ FakeDeleteReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isEmpty());
+ remoteRootFileInfo.remove(fileName);
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 204);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+class FakeMoveReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ FakeMoveReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isEmpty());
+ QString dest = getFilePathFromUrl(QUrl::fromEncoded(request.rawHeader("Destination")));
+ Q_ASSERT(!dest.isEmpty());
+ remoteRootFileInfo.rename(fileName, dest);
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+class FakeGetReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ const FileInfo *fileInfo;
+ QByteArray payload;
+
+ FakeGetReply(FileInfo &remoteRootFileInfo, QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isEmpty());
+ fileInfo = remoteRootFileInfo.find(fileName);
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ payload.fill(fileInfo->contentChar, fileInfo->size);
+ setHeader(QNetworkRequest::ContentLengthHeader, payload.size());
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
+ setRawHeader("OC-ETag", fileInfo->etag.toLatin1());
+ setRawHeader("ETag", fileInfo->etag.toLatin1());
+ setRawHeader("OC-FileId", fileInfo->fileId);
+ emit metaDataChanged();
+ if (bytesAvailable())
+ emit readyRead();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 bytesAvailable() const override { return payload.size() + QIODevice::bytesAvailable(); }
+
+ qint64 readData(char *data, qint64 maxlen) override {
+ qint64 len = std::min(qint64{payload.size()}, maxlen);
+ strncpy(data, payload.constData(), len);
+ payload.remove(0, len);
+ return len;
+ }
+};
+
+
+class FakeChunkMoveReply : public QNetworkReply
+{
+ Q_OBJECT
+ FileInfo *fileInfo;
+public:
+ FakeChunkMoveReply(FileInfo &uploadsFileInfo, FileInfo &remoteRootFileInfo,
+ QNetworkAccessManager::Operation op, const QNetworkRequest &request,
+ QObject *parent) : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+
+ QString source = getFilePathFromUrl(request.url());
+ Q_ASSERT(!source.isEmpty());
+ Q_ASSERT(source.endsWith("/.file"));
+ source = source.left(source.length() - qstrlen("/.file"));
+ auto sourceFolder = uploadsFileInfo.find(source);
+ Q_ASSERT(sourceFolder);
+ Q_ASSERT(sourceFolder->isDir);
+ int count = 0;
+ int size = 0;
+ char payload = '*';
+
+ do {
+ if (!sourceFolder->children.contains(QString::number(count)))
+ break;
+ auto &x = sourceFolder->children[QString::number(count)];
+ Q_ASSERT(!x.isDir);
+ Q_ASSERT(x.size > 0); // There should not be empty chunks
+ size += x.size;
+ payload = x.contentChar;
+ ++count;
+ } while(true);
+
+ Q_ASSERT(count > 1); // There should be at least two chunks, otherwise why would we use chunking?
+ QCOMPARE(sourceFolder->children.count(), count); // There should not be holes or extra files
+
+ QString fileName = getFilePathFromUrl(QUrl::fromEncoded(request.rawHeader("Destination")));
+ Q_ASSERT(!fileName.isEmpty());
+
+ if ((fileInfo = remoteRootFileInfo.find(fileName))) {
+ QCOMPARE(request.rawHeader("If"), QByteArray("<" + request.rawHeader("Destination") + "> ([\"" + fileInfo->etag.toLatin1() + "\"])"));
+ fileInfo->size = size;
+ fileInfo->contentChar = payload;
+ } else {
+ Q_ASSERT(!request.hasRawHeader("If"));
+ // Assume that the file is filled with the same character
+ fileInfo = remoteRootFileInfo.create(fileName, size, payload);
+ }
+
+ if (!fileInfo) {
+ abort();
+ return;
+ }
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 201);
+ setRawHeader("OC-ETag", fileInfo->etag.toLatin1());
+ setRawHeader("ETag", fileInfo->etag.toLatin1());
+ setRawHeader("OC-FileId", fileInfo->fileId);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+
+class FakeErrorReply : public QNetworkReply
+{
+ Q_OBJECT
+public:
+ FakeErrorReply(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
+ : QNetworkReply{parent} {
+ setRequest(request);
+ setUrl(request.url());
+ setOperation(op);
+ open(QIODevice::ReadOnly);
+ QMetaObject::invokeMethod(this, "respond", Qt::QueuedConnection);
+ }
+
+ Q_INVOKABLE void respond() {
+ setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 500);
+ emit metaDataChanged();
+ emit finished();
+ }
+
+ void abort() override { }
+ qint64 readData(char *, qint64) override { return 0; }
+};
+
+class FakeQNAM : public QNetworkAccessManager
+{
+ FileInfo _remoteRootFileInfo;
+ FileInfo _uploadFileInfo;
+ QStringList _errorPaths;
+public:
+ FakeQNAM(FileInfo initialRoot) : _remoteRootFileInfo{std::move(initialRoot)} { }
+ FileInfo &currentRemoteState() { return _remoteRootFileInfo; }
+ FileInfo &uploadState() { return _uploadFileInfo; }
+ QStringList &errorPaths() { return _errorPaths; }
+
+protected:
+ QNetworkReply *createRequest(Operation op, const QNetworkRequest &request,
+ QIODevice *outgoingData = 0) {
+ const QString fileName = getFilePathFromUrl(request.url());
+ Q_ASSERT(!fileName.isNull());
+ if (_errorPaths.contains(fileName))
+ return new FakeErrorReply{op, request, this};
+
+ bool isUpload = request.url().path().startsWith(sUploadUrl.path());
+ FileInfo &info = isUpload ? _uploadFileInfo : _remoteRootFileInfo;
+
+ auto verb = request.attribute(QNetworkRequest::CustomVerbAttribute);
+ if (verb == QLatin1String("PROPFIND"))
+ // Ignore outgoingData always returning somethign good enough, works for now.
+ return new FakePropfindReply{info, op, request, this};
+ else if (verb == QLatin1String("GET"))
+ return new FakeGetReply{info, op, request, this};
+ else if (verb == QLatin1String("PUT"))
+ return new FakePutReply{info, op, request, outgoingData->readAll(), this};
+ else if (verb == QLatin1String("MKCOL"))
+ return new FakeMkcolReply{info, op, request, this};
+ else if (verb == QLatin1String("DELETE"))
+ return new FakeDeleteReply{info, op, request, this};
+ else if (verb == QLatin1String("MOVE") && !isUpload)
+ return new FakeMoveReply{info, op, request, this};
+ else if (verb == QLatin1String("MOVE") && isUpload)
+ return new FakeChunkMoveReply{info, _remoteRootFileInfo, op, request, this};
+ else {
+ qDebug() << verb << outgoingData;
+ Q_UNREACHABLE();
+ }
+ }
+};
+
+class FakeCredentials : public OCC::AbstractCredentials
+{
+ QNetworkAccessManager *_qnam;
+public:
+ FakeCredentials(QNetworkAccessManager *qnam) : _qnam{qnam} { }
+ virtual QString authType() const { return "test"; }
+ virtual QString user() const { return "admin"; }
+ virtual QNetworkAccessManager* getQNAM() const { return _qnam; }
+ virtual bool ready() const { return true; }
+ virtual void fetchFromKeychain() { }
+ virtual void askFromUser() { }
+ virtual bool stillValid(QNetworkReply *) { return true; }
+ virtual void persist() { }
+ virtual void invalidateToken() { }
+ virtual void forgetSensitiveData() { }
+};
+
+class FakeFolder
+{
+ QTemporaryDir _tempDir;
+ DiskFileModifier _localModifier;
+ // FIXME: Clarify ownership, double delete
+ FakeQNAM *_fakeQnam;
+ OCC::AccountPtr _account;
+ std::unique_ptr<OCC::SyncJournalDb> _journalDb;
+ std::unique_ptr<OCC::SyncEngine> _syncEngine;
+
+public:
+ FakeFolder(const FileInfo &fileTemplate)
+ : _localModifier(_tempDir.path())
+ {
+ // Needs to be done once
+ OCC::SyncEngine::minimumFileAgeForUpload = 0;
+ csync_set_log_level(11);
+
+ QDir rootDir{_tempDir.path()};
+ toDisk(rootDir, fileTemplate);
+
+ _fakeQnam = new FakeQNAM(fileTemplate);
+ _account = OCC::Account::create();
+ _account->setUrl(QUrl(QStringLiteral("http://admin:admin@localhost/owncloud")));
+ _account->setCredentials(new FakeCredentials{_fakeQnam});
+
+ _journalDb.reset(new OCC::SyncJournalDb());
+ _journalDb->setDatabaseFilePath(localPath() + ".sync_test.db");
+ _syncEngine.reset(new OCC::SyncEngine(_account, localPath(), "", _journalDb.get()));
+
+ // A new folder will update the local file state database on first sync.
+ // To have a state matching what users will encounter, we have to a sync
+ // using an identical local/remote file tree first.
+ syncOnce();
+ }
+
+ OCC::SyncEngine &syncEngine() const { return *_syncEngine; }
+
+ FileModifier &localModifier() { return _localModifier; }
+ FileModifier &remoteModifier() { return _fakeQnam->currentRemoteState(); }
+ FileInfo currentLocalState() {
+ QDir rootDir{_tempDir.path()};
+ FileInfo rootTemplate;
+ fromDisk(rootDir, rootTemplate);
+ return rootTemplate;
+ }
+
+ FileInfo currentRemoteState() { return _fakeQnam->currentRemoteState(); }
+ FileInfo &uploadState() { return _fakeQnam->uploadState(); }
+
+ QStringList &serverErrorPaths() { return _fakeQnam->errorPaths(); }
+
+ QString localPath() const {
+ // SyncEngine wants a trailing slash
+ if (_tempDir.path().endsWith('/'))
+ return _tempDir.path();
+ return _tempDir.path() + '/';
+ }
+
+ void scheduleSync() {
+ // Have to be done async, else, an error before exec() does not terminate the event loop.
+ QMetaObject::invokeMethod(_syncEngine.get(), "startSync", Qt::QueuedConnection);
+ }
+
+ void execUntilBeforePropagation() {
+ QSignalSpy spy(_syncEngine.get(), SIGNAL(aboutToPropagate(SyncFileItemVector&)));
+ QVERIFY(spy.wait());
+ }
+
+ void execUntilItemCompleted(const QString &relativePath) {
+ QSignalSpy spy(_syncEngine.get(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ QElapsedTimer t;
+ t.start();
+ while (t.elapsed() < 5000) {
+ spy.clear();
+ QVERIFY(spy.wait());
+ for(const QList<QVariant> &args : spy) {
+ auto item = args[0].value<OCC::SyncFileItem>();
+ if (item.destination() == relativePath)
+ return;
+ }
+ }
+ QVERIFY(false);
+ }
+
+ bool execUntilFinished() {
+ QSignalSpy spy(_syncEngine.get(), SIGNAL(finished(bool)));
+ bool ok = spy.wait(60000);
+ Q_ASSERT(ok && "Sync timed out");
+ return spy[0][0].toBool();
+ }
+
+ bool syncOnce() {
+ scheduleSync();
+ return execUntilFinished();
+ }
+
+private:
+ static void toDisk(QDir &dir, const FileInfo &templateFi) {
+ foreach (const FileInfo &child, templateFi.children) {
+ if (child.isDir) {
+ QDir subDir(dir);
+ dir.mkdir(child.name);
+ subDir.cd(child.name);
+ toDisk(subDir, child);
+ } else {
+ QFile file{dir.filePath(child.name)};
+ file.open(QFile::WriteOnly);
+ file.write(QByteArray{}.fill(child.contentChar, child.size));
+ file.close();
+ OCC::FileSystem::setModTime(file.fileName(), OCC::Utility::qDateTimeToTime_t(child.lastModified));
+ }
+ }
+ }
+
+ static void fromDisk(QDir &dir, FileInfo &templateFi) {
+ foreach (const QFileInfo &diskChild, dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
+ if (diskChild.isDir()) {
+ QDir subDir = dir;
+ subDir.cd(diskChild.fileName());
+ templateFi.children.insert(diskChild.fileName(), FileInfo{diskChild.fileName()});
+ fromDisk(subDir, templateFi.children.last());
+ } else {
+ QFile f{diskChild.filePath()};
+ f.open(QFile::ReadOnly);
+ char contentChar = f.read(1).at(0);
+ templateFi.children.insert(diskChild.fileName(), FileInfo{diskChild.fileName(), diskChild.size(), contentChar});
+ }
+ }
+ }
+};
+
+// QTest::toString overloads
+namespace OCC {
+ inline char *toString(const SyncFileStatus &s) {
+ return QTest::toString(QString("SyncFileStatus(" + s.toSocketAPIString() + ")"));
+ }
+}
+
+inline void addFiles(QStringList &dest, const FileInfo &fi)
+{
+ if (fi.isDir) {
+ dest += QString("%1 - dir").arg(fi.name);
+ foreach (const FileInfo &fi, fi.children)
+ addFiles(dest, fi);
+ } else {
+ dest += QString("%1 - %2 %3-bytes").arg(fi.name).arg(fi.size).arg(fi.contentChar);
+ }
+}
+
+inline char *toString(const FileInfo &fi)
+{
+ QStringList files;
+ foreach (const FileInfo &fi, fi.children)
+ addFiles(files, fi);
+ return QTest::toString(QString("FileInfo with %1 files(%2)").arg(files.size()).arg(files.join(", ")));
+}
diff --git a/test/testchecksumvalidator.cpp b/test/testchecksumvalidator.cpp
index a0fc934c9..c83f37377 100644
--- a/test/testchecksumvalidator.cpp
+++ b/test/testchecksumvalidator.cpp
@@ -151,7 +151,13 @@ using namespace OCC;
};
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
- QTEST_MAIN(TestChecksumValidator)
+// Qt4 does not have QTEST_GUILESS_MAIN, so we simulate it.
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ TestChecksumValidator tc;
+ return QTest::qExec(&tc, argc, argv);
+}
#else
QTEST_GUILESS_MAIN(TestChecksumValidator)
#endif
diff --git a/test/testchunkingng.cpp b/test/testchunkingng.cpp
new file mode 100644
index 000000000..21225c210
--- /dev/null
+++ b/test/testchunkingng.cpp
@@ -0,0 +1,78 @@
+/*
+ * This software is in the public domain, furnished "as is", without technical
+ * support, and with no warranty, express or implied, as to its usefulness for
+ * any purpose.
+ *
+ */
+
+#include <QtTest>
+#include "syncenginetestutils.h"
+#include <syncengine.h>
+
+using namespace OCC;
+
+class TestChunkingNG : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+ void testFileUpload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ {"chunking", "1.0"} } } });
+ const int size = 300 * 1000 * 1000; // 300 MB
+ fakeFolder.localModifier().insert("A/a0", size);
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(fakeFolder.uploadState().children.count(), 1); // the transfer was done with chunking
+ QCOMPARE(fakeFolder.currentRemoteState().find("A/a0")->size, size);
+
+ // Check that another upload of the same file also work.
+ fakeFolder.localModifier().appendByte("A/a0");
+ QVERIFY(fakeFolder.syncOnce());
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(fakeFolder.uploadState().children.count(), 2); // the transfer was done with chunking
+ }
+
+
+ void testResume () {
+
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ {"chunking", "1.0"} } } });
+ const int size = 300 * 1000 * 1000; // 300 MB
+ fakeFolder.localModifier().insert("A/a0", size);
+
+ // Abort when the upload is at 1/3
+ int sizeWhenAbort = -1;
+ auto con = QObject::connect(&fakeFolder.syncEngine(), &SyncEngine::transmissionProgress,
+ [&](const ProgressInfo &progress) {
+ if (progress.completedSize() > (progress.totalSize() /3 )) {
+ sizeWhenAbort = progress.completedSize();
+ fakeFolder.syncEngine().abort();
+ }
+ });
+
+ QVERIFY(!fakeFolder.syncOnce()); // there should have been an error
+ QObject::disconnect(con);
+ QVERIFY(sizeWhenAbort > 0);
+ QVERIFY(sizeWhenAbort < size);
+ QCOMPARE(fakeFolder.uploadState().children.count(), 1); // the transfer was done with chunking
+ auto upStateChildren = fakeFolder.uploadState().children.first().children;
+ QCOMPARE(sizeWhenAbort, std::accumulate(upStateChildren.cbegin(), upStateChildren.cend(), 0,
+ [](int s, const FileInfo &i) { return s + i.size; }));
+
+
+ // Add a fake file to make sure it gets deleted
+ fakeFolder.uploadState().children.first().insert("10000", size);
+ QVERIFY(fakeFolder.syncOnce());
+
+
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(fakeFolder.uploadState().children.count(), 1); // The same chunk id was re-used
+ QCOMPARE(fakeFolder.currentRemoteState().find("A/a0")->size, size);
+ }
+};
+
+QTEST_GUILESS_MAIN(TestChunkingNG)
+#include "testchunkingng.moc"
diff --git a/test/testconcaturl.cpp b/test/testconcaturl.cpp
index 558344999..63895c4a7 100644
--- a/test/testconcaturl.cpp
+++ b/test/testconcaturl.cpp
@@ -50,7 +50,7 @@ private slots:
QFETCH(QueryItems, query);
QFETCH(QString, expected);
QUrl baseUrl("http://example.com" + base);
- QUrl resultUrl = Account::concatUrlPath(baseUrl, concat, query);
+ QUrl resultUrl = Utility::concatUrlPath(baseUrl, concat, query);
QString result = QString::fromUtf8(resultUrl.toEncoded());
QString expectedFull = "http://example.com" + expected;
QCOMPARE(result, expectedFull);
diff --git a/test/testfolderman.cpp b/test/testfolderman.cpp
index 1d837d873..16dc81446 100644
--- a/test/testfolderman.cpp
+++ b/test/testfolderman.cpp
@@ -15,9 +15,9 @@
#include "folderman.h"
#include "account.h"
#include "accountstate.h"
+#include "configfile.h"
#include "creds/httpcredentials.h"
-
using namespace OCC;
class HttpCredentialsTest : public HttpCredentials {
@@ -51,6 +51,7 @@ private slots:
{
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
QTemporaryDir dir;
+ ConfigFile::setConfDir(dir.path()); // we don't want to pollute the user's config file
QVERIFY(dir.isValid());
QDir dir2(dir.path());
QVERIFY(dir2.mkpath("sub/ownCloud1/folder/f"));
diff --git a/test/testfolderwatcher.cpp b/test/testfolderwatcher.cpp
index e2b8eb423..89d5d62d8 100644
--- a/test/testfolderwatcher.cpp
+++ b/test/testfolderwatcher.cpp
@@ -171,7 +171,13 @@ private slots:
};
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
- QTEST_MAIN(TestFolderWatcher)
+// Qt4 does not have QTEST_GUILESS_MAIN, so we simulate it.
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ TestFolderWatcher tc;
+ return QTest::qExec(&tc, argc, argv);
+}
#else
QTEST_GUILESS_MAIN(TestFolderWatcher)
#endif
diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp
new file mode 100644
index 000000000..f54ff1110
--- /dev/null
+++ b/test/testsyncengine.cpp
@@ -0,0 +1,219 @@
+/*
+ * This software is in the public domain, furnished "as is", without technical
+ * support, and with no warranty, express or implied, as to its usefulness for
+ * any purpose.
+ *
+ */
+
+#include <QtTest>
+#include "syncenginetestutils.h"
+#include <syncengine.h>
+
+using namespace OCC;
+
+bool itemDidComplete(const QSignalSpy &spy, const QString &path)
+{
+ for(const QList<QVariant> &args : spy) {
+ SyncFileItem item = args[0].value<SyncFileItem>();
+ if (item.destination() == path)
+ return true;
+ }
+ return false;
+}
+
+bool itemDidCompleteSuccessfully(const QSignalSpy &spy, const QString &path)
+{
+ for(const QList<QVariant> &args : spy) {
+ SyncFileItem item = args[0].value<SyncFileItem>();
+ if (item.destination() == path)
+ return item._status == SyncFileItem::Success;
+ }
+ return false;
+}
+
+class TestSyncEngine : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testFileDownload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.remoteModifier().insert("A/a0");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "A/a0"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testFileUpload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.localModifier().insert("A/a0");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "A/a0"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testDirDownload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.remoteModifier().mkdir("Y");
+ fakeFolder.remoteModifier().mkdir("Z");
+ fakeFolder.remoteModifier().insert("Z/d0");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Y"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Z"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Z/d0"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testDirUpload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.localModifier().mkdir("Y");
+ fakeFolder.localModifier().mkdir("Z");
+ fakeFolder.localModifier().insert("Z/d0");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Y"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Z"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "Z/d0"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testLocalDelete() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.remoteModifier().remove("A/a1");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "A/a1"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testRemoteDelete() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.localModifier().remove("A/a1");
+ fakeFolder.syncOnce();
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "A/a1"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testEmlLocalChecksum() {
+ FakeFolder fakeFolder{FileInfo{}};
+ fakeFolder.localModifier().insert("a1.eml", 64, 'A');
+ fakeFolder.localModifier().insert("a2.eml", 64, 'A');
+ fakeFolder.localModifier().insert("a3.eml", 64, 'A');
+ // Upload and calculate the checksums
+ // fakeFolder.syncOnce();
+ fakeFolder.syncOnce();
+
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ // Touch the file without changing the content, shouldn't upload
+ fakeFolder.localModifier().setContents("a1.eml", 'A');
+ // Change the content/size
+ fakeFolder.localModifier().setContents("a2.eml", 'B');
+ fakeFolder.localModifier().appendByte("a3.eml");
+ fakeFolder.syncOnce();
+
+ QVERIFY(!itemDidComplete(completeSpy, "a1.eml"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "a2.eml"));
+ QVERIFY(itemDidCompleteSuccessfully(completeSpy, "a3.eml"));
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void testRemoteChangeInMovedFolder() {
+ // issue #5192
+ FakeFolder fakeFolder{FileInfo{ QString(), {
+ FileInfo { QStringLiteral("folder"), {
+ FileInfo{ QStringLiteral("folderA"), { { QStringLiteral("file.txt"), 400 } } },
+ QStringLiteral("folderB")
+ }
+ }}}};
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+
+ // Edit a file in a moved directory.
+ fakeFolder.remoteModifier().setContents("folder/folderA/file.txt", 'a');
+ fakeFolder.remoteModifier().rename("folder/folderA", "folder/folderB/folderA");
+ fakeFolder.syncOnce();
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ auto oldState = fakeFolder.currentLocalState();
+ QVERIFY(oldState.find("folder/folderB/folderA/file.txt"));
+ QVERIFY(!oldState.find("folder/folderA/file.txt"));
+
+ // This sync should not remove the file
+ fakeFolder.syncOnce();
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ QCOMPARE(fakeFolder.currentLocalState(), oldState);
+
+ }
+
+ void testSelectiveSyncModevFolder() {
+ // issue #5224
+ FakeFolder fakeFolder{FileInfo{ QString(), {
+ FileInfo { QStringLiteral("parentFolder"), {
+ FileInfo{ QStringLiteral("subFolderA"), { { QStringLiteral("fileA.txt"), 400 } } },
+ FileInfo{ QStringLiteral("subFolderB"), { { QStringLiteral("fileB.txt"), 400 } } }
+ }
+ }}}};
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ auto expectedServerState = fakeFolder.currentRemoteState();
+
+ // Remove subFolderA with selectiveSync:
+ fakeFolder.syncEngine().journal()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList,
+ {"parentFolder/subFolderA/"});
+ fakeFolder.syncEngine().journal()->avoidReadFromDbOnNextSync("parentFolder/subFolderA/");
+
+ fakeFolder.syncOnce();
+
+ {
+ // Nothing changed on the server
+ QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState);
+ // The local state should not have subFolderA
+ auto remoteState = fakeFolder.currentRemoteState();
+ remoteState.remove("parentFolder/subFolderA");
+ QCOMPARE(fakeFolder.currentLocalState(), remoteState);
+ }
+
+ // Rename parentFolder on the server
+ fakeFolder.remoteModifier().rename("parentFolder", "parentFolderRenamed");
+ expectedServerState = fakeFolder.currentRemoteState();
+ fakeFolder.syncOnce();
+
+ {
+ QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState);
+ auto remoteState = fakeFolder.currentRemoteState();
+ // The subFolderA should still be there on the server.
+ QVERIFY(remoteState.find("parentFolderRenamed/subFolderA/fileA.txt"));
+ // But not on the client because of the selective sync
+ remoteState.remove("parentFolderRenamed/subFolderA");
+ QCOMPARE(fakeFolder.currentLocalState(), remoteState);
+ }
+
+ // Rename it again, locally this time.
+ fakeFolder.localModifier().rename("parentFolderRenamed", "parentThirdName");
+ fakeFolder.syncOnce();
+
+ {
+ auto remoteState = fakeFolder.currentRemoteState();
+ // The subFolderA should still be there on the server.
+ QVERIFY(remoteState.find("parentThirdName/subFolderA/fileA.txt"));
+ // But not on the client because of the selective sync
+ remoteState.remove("parentThirdName/subFolderA");
+ QCOMPARE(fakeFolder.currentLocalState(), remoteState);
+
+ expectedServerState = fakeFolder.currentRemoteState();
+ QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
+ fakeFolder.syncOnce(); // This sync should do nothing
+ QCOMPARE(completeSpy.count(), 0);
+
+ QCOMPARE(fakeFolder.currentRemoteState(), expectedServerState);
+ QCOMPARE(fakeFolder.currentLocalState(), remoteState);
+ }
+ }
+
+};
+
+QTEST_GUILESS_MAIN(TestSyncEngine)
+#include "testsyncengine.moc"
diff --git a/test/testsyncfilestatustracker.cpp b/test/testsyncfilestatustracker.cpp
new file mode 100644
index 000000000..cb66ad3a8
--- /dev/null
+++ b/test/testsyncfilestatustracker.cpp
@@ -0,0 +1,404 @@
+/*
+ * This software is in the public domain, furnished "as is", without technical
+ * support, and with no warranty, express or implied, as to its usefulness for
+ * any purpose.
+ *
+ */
+
+#include <QtTest>
+#include "syncenginetestutils.h"
+
+using namespace OCC;
+
+class StatusPushSpy : public QSignalSpy
+{
+ SyncEngine &_syncEngine;
+public:
+ StatusPushSpy(SyncEngine &syncEngine)
+ : QSignalSpy(&syncEngine.syncFileStatusTracker(), SIGNAL(fileStatusChanged(const QString&, SyncFileStatus)))
+ , _syncEngine(syncEngine)
+ { }
+
+ SyncFileStatus statusOf(const QString &relativePath) const {
+ QFileInfo file(_syncEngine.localPath(), relativePath);
+ // Start from the end to get the latest status
+ for (int i = size() - 1; i >= 0; --i) {
+ if (QFileInfo(at(i)[0].toString()) == file)
+ return at(i)[1].value<SyncFileStatus>();
+ }
+ return SyncFileStatus();
+ }
+};
+
+class TestSyncFileStatusTracker : public QObject
+{
+ Q_OBJECT
+
+ void verifyThatPushMatchesPull(const FakeFolder &fakeFolder, const StatusPushSpy &statusSpy) {
+ QString root = fakeFolder.localPath();
+ QDirIterator it(root, QDir::AllEntries | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ QString filePath = it.next().mid(root.size());
+ SyncFileStatus pushedStatus = statusSpy.statusOf(filePath);
+ if (pushedStatus != SyncFileStatus())
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus(filePath), pushedStatus);
+ }
+ }
+
+private slots:
+ void parentsGetSyncStatusUploadDownload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.localModifier().appendByte("B/b1");
+ fakeFolder.remoteModifier().appendByte("C/c1");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C/c1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("B/b2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("C/c2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ statusSpy.clear();
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C/c1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetSyncStatusNewFileUploadDownload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.localModifier().insert("B/b0");
+ fakeFolder.remoteModifier().insert("C/c0");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C/c0"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("B/b1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("C/c1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ statusSpy.clear();
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C/c0"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetSyncStatusNewDirDownload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.remoteModifier().mkdir("D");
+ fakeFolder.remoteModifier().insert("D/d0");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusSync));
+
+ fakeFolder.execUntilItemCompleted("D");
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusSync));
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetSyncStatusNewDirUpload() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.localModifier().mkdir("D");
+ fakeFolder.localModifier().insert("D/d0");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusSync));
+
+ fakeFolder.execUntilItemCompleted("D");
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusSync));
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("D"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("D/d0"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetSyncStatusDeleteUpDown() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.remoteModifier().remove("B/b1");
+ fakeFolder.localModifier().remove("C/c1");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ // Discovered as remotely removed, pending for local removal.
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("B/b2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("C/c2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ statusSpy.clear();
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void warningStatusForExcludedFile() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.syncEngine().excludedFiles().addExcludeExpr("A/a1");
+ fakeFolder.syncEngine().excludedFiles().addExcludeExpr("B");
+ fakeFolder.localModifier().appendByte("A/a1");
+ fakeFolder.localModifier().appendByte("B/b1");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QEXPECT_FAIL("", "csync will stop at ignored directories without traversing children, so we don't currently push the status for newly ignored children of an ignored directory.", Continue);
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusWarning));
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QEXPECT_FAIL("", "csync will stop at ignored directories without traversing children, so we don't currently push the status for newly ignored children of an ignored directory.", Continue);
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QEXPECT_FAIL("", "csync will stop at ignored directories without traversing children, so we don't currently push the status for newly ignored children of an ignored directory.", Continue);
+ QCOMPARE(statusSpy.statusOf("B/b2"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ statusSpy.clear();
+
+ // Clears the exclude expr above
+ fakeFolder.syncEngine().excludedFiles().reloadExcludes();
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ statusSpy.clear();
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B/b1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetWarningStatusForError() {
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.serverErrorPaths().append("A/a1");
+ fakeFolder.serverErrorPaths().append("B/b0");
+ fakeFolder.localModifier().appendByte("A/a1");
+ fakeFolder.localModifier().insert("B/b0");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusSync));
+ statusSpy.clear();
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusError));
+ statusSpy.clear();
+
+ // Remove the error and start a second sync, the blacklist should kick in
+ fakeFolder.serverErrorPaths().clear();
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ // A/a1 and B/b0 should be on the black list for the next few seconds
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusError));
+ statusSpy.clear();
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusError));
+ statusSpy.clear();
+
+ // Start a third sync, this time together with a real file to sync
+ fakeFolder.localModifier().appendByte("C/c1");
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ // The root should show SYNC even though there is an error underneath,
+ // since C/c1 is syncing and the SYNC status has priority.
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("C/c1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ statusSpy.clear();
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a2"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(statusSpy.statusOf("C"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("C/c1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ statusSpy.clear();
+
+ // Another sync after clearing the blacklist entry, everything should return to order.
+ fakeFolder.syncEngine().journal()->wipeErrorBlacklistEntry("A/a1");
+ fakeFolder.syncEngine().journal()->wipeErrorBlacklistEntry("B/b0");
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusSync));
+ statusSpy.clear();
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("A"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("A/a1"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("B/b0"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+
+ void parentsGetWarningStatusForError_SibblingStartsWithPath() {
+ // A is a parent of A/a1, but A/a is not even if it's a substring of A/a1
+ FakeFolder fakeFolder{{QString{},{
+ {QStringLiteral("A"), {
+ {QStringLiteral("a"), 4},
+ {QStringLiteral("a1"), 4}
+ }}}}};
+ fakeFolder.serverErrorPaths().append("A/a1");
+ fakeFolder.localModifier().appendByte("A/a1");
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ // The SyncFileStatusTraker won't push any status for all of them, test with a pull.
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a1"), SyncFileStatus(SyncFileStatus::StatusSync));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+
+ fakeFolder.execUntilFinished();
+ // We use string matching for paths in the implementation,
+ // an error should affect only parents and not every path that starts with the problem path.
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus(""), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A"), SyncFileStatus(SyncFileStatus::StatusWarning));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a1"), SyncFileStatus(SyncFileStatus::StatusError));
+ QCOMPARE(fakeFolder.syncEngine().syncFileStatusTracker().fileStatus("A/a"), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ }
+
+ void sharedStatus() {
+ SyncFileStatus sharedUpToDateStatus(SyncFileStatus::StatusUpToDate);
+ sharedUpToDateStatus.setSharedWithMe(true);
+
+ FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+ fakeFolder.remoteModifier().insert("S/s0");
+ fakeFolder.remoteModifier().appendByte("S/s1");
+ StatusPushSpy statusSpy(fakeFolder.syncEngine());
+
+ fakeFolder.scheduleSync();
+ fakeFolder.execUntilBeforePropagation();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusSync));
+ // We don't care about the shared flag for the sync status,
+ // Mac and Windows won't show it and we can't know it for new files.
+ QCOMPARE(statusSpy.statusOf("S").tag(), SyncFileStatus::StatusSync);
+ QCOMPARE(statusSpy.statusOf("S/s0").tag(), SyncFileStatus::StatusSync);
+ QCOMPARE(statusSpy.statusOf("S/s1").tag(), SyncFileStatus::StatusSync);
+
+ fakeFolder.execUntilFinished();
+ verifyThatPushMatchesPull(fakeFolder, statusSpy);
+ QCOMPARE(statusSpy.statusOf(""), SyncFileStatus(SyncFileStatus::StatusUpToDate));
+ QCOMPARE(statusSpy.statusOf("S"), sharedUpToDateStatus);
+ QEXPECT_FAIL("", "We currently only know if a new file is shared on the second sync, after a PROPFIND.", Continue);
+ QCOMPARE(statusSpy.statusOf("S/s0"), sharedUpToDateStatus);
+ QCOMPARE(statusSpy.statusOf("S/s1"), sharedUpToDateStatus);
+
+ QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+ }
+};
+
+QTEST_GUILESS_MAIN(TestSyncFileStatusTracker)
+#include "testsyncfilestatustracker.moc"
diff --git a/test/testutility.cpp b/test/testutility.cpp
index 63015f053..7c1f65227 100644
--- a/test/testutility.cpp
+++ b/test/testutility.cpp
@@ -67,14 +67,6 @@ private slots:
QVERIFY(hasLaunchOnStartup(appName) == false);
}
- void testToCSyncScheme()
- {
- QVERIFY(toCSyncScheme("http://example.com/owncloud/") ==
- "owncloud://example.com/owncloud/");
- QVERIFY(toCSyncScheme("https://example.com/owncloud/") ==
- "ownclouds://example.com/owncloud/");
- }
-
void testDurationToDescriptiveString()
{
QLocale::setDefault(QLocale("C"));
@@ -83,7 +75,7 @@ private slots:
quint64 sec = 1000;
quint64 hour = 3600 * sec;
- QDateTime current = QDateTime::currentDateTime();
+ QDateTime current = QDateTime::currentDateTimeUtc();
QCOMPARE(durationToDescriptiveString2(0), QString("0 second(s)") );
QCOMPARE(durationToDescriptiveString2(5), QString("0 second(s)") );
diff --git a/test/testxmlparse.cpp b/test/testxmlparse.cpp
index 5e49f7ee8..4b7f7bd69 100644
--- a/test/testxmlparse.cpp
+++ b/test/testxmlparse.cpp
@@ -442,7 +442,13 @@ private slots:
};
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
- QTEST_MAIN(TestXmlParse)
+// Qt4 does not have QTEST_GUILESS_MAIN, so we simulate it.
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ TestXmlParse tc;
+ return QTest::qExec(&tc, argc, argv);
+}
#else
QTEST_GUILESS_MAIN(TestXmlParse)
#endif
diff --git a/translations/client_ca.ts b/translations/client_ca.ts
index 408857848..2d0e81afa 100644
--- a/translations/client_ca.ts
+++ b/translations/client_ca.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="ca" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ca" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>El fitxer de destinació té una mida o data de modificació inesperada</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Les carpetes desmarcades &lt;b&gt;s&apos;eliminaran&lt;/b&gt; del vostre sistema de fitxers local i ja no es sincronitzaran en aquest ordinador</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Sincronitza-ho tot</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>No sincronitzis res</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Aplica els canvis manuals</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplica</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancel·la</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Connectat amb &lt;server&gt; com a &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>No hi ha cap compte configurat</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Afegeix-ne un de nou</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Elimina</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Compte</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Trieu què sincronitzar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Elimina la connexió de la carpeta sincronitzada</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Ha fallat la creació de la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;No s&apos;ha pogut crear la carpeta local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Confirma l&apos;eliminació de la connexió de la carpeta sincronitzada</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Elimina la connexió de la carpeta sincronitzada</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>S&apos;està sincronitzant</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>S&apos;està sincronitzant.&lt;br/&gt;Voleu parar-la?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 en ús</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 com a &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>La versió del servidor %1 és antiga i fora de suport! Continua sota la teva responsabilitat.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Connectat a %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>El servidor %1 no està disponible temporalment</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>S&apos;ha desconnectat de %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>No hi ha connexió amb %1 a %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Inici de sessió</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Hi ha carpetes noves que no s&apos;han sincronitzat perquè són massa grans:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmeu l&apos;eliminació del compte</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Segur que voleu eliminar la connexió al compte &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; això &lt;b&gt;no&lt;/b&gt; esborrarà cap fitxer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Elimina la connexió</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Obre la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Surt</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Continua la sincronització</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausa la sincronització</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Segur que voleu aturar la sincronització de la carpeta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; això &lt;b&gt;no&lt;/b&gt; esborrarà cap fitxer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) de %2 en ús. Algunes carpetes, incloent les carpetes muntades a través de xarxa o les compartides, poden tenir límits diferents.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 en ús</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actualment no hi ha informació disponible de l&apos;ús d&apos;emmagatzemament.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>La connexió %1 no està configurada.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>S&apos;ha desconnectat</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desconnectat</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Connectat</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Servei no disponible</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Error de xarxa</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Error de configuració</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estat del compte desconegut</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Activitat del servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocol de sincronització</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Llista de fitxers ignorats o erronis</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Còpia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia la llista d&apos;activitats al porta-retalls.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>No sincronitzat</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>No sincronitzat (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>La llista de l&apos;activitat del servidor s&apos;ha copiat al porta-retalls.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>La llista d&apos;activitat de sincronització s&apos;ha copiat al porta-retalls</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>La llista d&apos;elements no sincronitzats s&apos;ha copiat al porta-retalls</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>S&apos;ha copiat al porta-retalls</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Activitats del servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Còpia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia la llista d&apos;activitats al porta-retalls.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Es requereix una acció: Notificacions</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;El compte %1 no té les activitats habilitades.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Heu rebut %n nova notificació de %2.</numerusform><numerusform>Heu rebut %n noves notificacions de %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Heu rebut %n nova notificació de %1 i %2.</numerusform><numerusform>Heu rebut %n noves notificacions de %1 i %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Heu rebut noves notificacions de %1, %2 i altres comptes.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 notificacions - Es requereix una acció</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Contrasenya del certificat :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Selecciona un certificat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Fitxers de certificats (*.p12 *pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Es requereix autenticació</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Introduir nom d&apos;usuari i paraula de pas per &apos;%1&apos; a %2</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Usuari:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Contrasenya:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Error en escriure les metadades a la base de dades</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>No hi ha cap compte d&apos;OwnCloud configurat</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>El servidor configurat per aquest client és massa antic</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Actualitzeu el servidor a l&apos;última versió i reestabliu el client.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Error d&apos;autentificació: Aquest nom d&apos;usuari o contrasenya son incorrectes.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>temps excedit</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Les credencials proporcionades no són correctes</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Temps d&apos;espera de la connexió esgotat.</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Aturat per l&apos;usuari</translation>
</message>
@@ -579,273 +594,273 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>El fitxer local %1 no existeix.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 hauria de ser una carpeta, però no ho és.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>No es pot llegir %1.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>S&apos;ha esborrat &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>S&apos;ha descarregat %1</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>S&apos;ha actualitzat %1</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 s&apos;ha reanomenat a %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 s&apos;ha mogut a %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 i %n altre fitxer s&apos;ha esborrat.</numerusform><numerusform>%1 i %n altres fitxers s&apos;han esborrat.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 i %n altre fitxer s&apos;han descarregat.</numerusform><numerusform>%1 i %n altres fitxers s&apos;han descarregat.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 i %n altre fitxer s&apos;han actualitzat.</numerusform><numerusform>%1 i %n altres fitxers s&apos;han actualitzat.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 s&apos;ha reanomenat a %2 i %n altre fitxer s&apos;ha reanomenat.</numerusform><numerusform>%1 s&apos;ha reanomenat a %2 i %n altres fitxers s&apos;han reanomenat.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 s&apos;ha mogut a %2 i %n altre fitxer s&apos;ha mogut.</numerusform><numerusform>%1 s&apos;ha mogut a %2 i %n altres fitxers s&apos;han mogut.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 i %n altre fitxer tenen conflictes de sincronització</numerusform><numerusform>%1 i %n altres fitxers tenen conflictes de sincronització</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 té conflictes de sincronització. Comproveu el fitxer conflictiu!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 i %n altre fitxer no s&apos;han sincronitzat per errors.
Consulteu el registre per obtenir més informació.</numerusform><numerusform>%1 i %n altres fitxers no s&apos;han sincronitzat per errors.
Consulteu el registre per obtenir més informació.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 no s&apos;ha pogut sincronitzar degut a un error. Mireu el registre per més detalls.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Activitat de sincronització</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>No s&apos;ha pogut llegir el fitxer d&apos;exclusió del sistema</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>S&apos;ha afegit una carpeta nova de més de %1 MB: %2.
Aneu a arranjament per seleccionar-la si voleu descarregar-la.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Esborra tots els fitxers?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Esborra tots els fitxers</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Mantén els fitxers</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
- <translation type="unfinished"/>
+ <translation>Copia de seguretat detectada</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Sincronització normal</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
- <translation type="unfinished"/>
+ <translation>Manté els fitxers locals com a conflicte</translation>
</message>
</context>
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>No es pot restablir l&apos;estat de la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>S&apos;ha trobat un diari de sincronització antic &apos;%1&apos;, però no s&apos;ha pogut eliminar. Assegureu-vos que no hi ha cap aplicació que actualment en faci ús.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(copia de seguretat)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(copia de seguretat %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estat indefinit.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>S&apos;està esperant per començar a sincronitzar.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>S&apos;està preparant per la sincronització.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>S&apos;està sincronitzant.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>La darrera sincronització va ser correcta.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>La última sincronització ha estat un èxit, però amb avisos en fitxers individuals.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Error de configuració.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Cancel·la usuari.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>La sincronització està en pausa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Sync està pausat)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>No s&apos;ha seleccionat cap directori vàlid!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
- <translation type="unfinished"/>
+ <translation>La ruta seleccionada no és un directori!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>No teniu permisos per escriure en la carpeta seleccionada!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -871,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Cal que tingueu connexió per afegir una carpeta</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Cliqueu aquest botó per afegir una carpeta per sincronitzar.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Error en carregar la llista de carpetes del servidor.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>S&apos;ha desconnectat</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
- <translation type="unfinished"/>
+ <translation>Obtenint la llista de carpetes del servidor...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>S&apos;està comprovant els canvis a &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>S&apos;està sincronitzant %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>descarrega %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>pujada %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 pendent, %1 de %2, fitxer %3 de %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, fitxer %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>fitxer %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>S&apos;està esperant...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>S&apos;està esperant %n altra carpeta...</numerusform><numerusform>S&apos;està esperant %n altres carpetes</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>S&apos;està preparant per sincronitzar...</translation>
</message>
@@ -1006,7 +1027,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderwizard.cpp" line="544"/>
<source>Add Sync Connection</source>
- <translation type="unfinished"/>
+ <translation>Afegir una connexió de sincronització</translation>
</message>
</context>
<context>
@@ -1104,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>El servidor retorna un error de contingut o rang</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Temps de connexió excedit</translation>
</message>
@@ -1201,28 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Introduïu la contrasenya de %1:
-
-Usuari: %2
-Compte: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>La lectura de la cadena de claus ha fallat amb l&apos;error: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Escriviu contrasenya</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1267,7 +1285,7 @@ Compte: %3
<translation>Elimina</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1276,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Els elements que poden ser eliminats s&apos;eliminaran si impedeixen que una carpeta sigui eliminada. Això és útil per les metadades.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>No s&apos;ha pogut obrir el fitxer</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>No es poden desar els canvis a &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Afegeix una plantilla per ignorar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Afegeix una nova plantilla d&apos;ignorats:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Això es proporciona completament pel sistema a &apos;%1&apos; i no es pot modificar en aquesta vista.</translation>
</message>
@@ -1370,7 +1388,7 @@ Els elements que poden ser eliminats s&apos;eliminaran si impedeixen que una car
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Temps d&apos;espera de la connexió esgotat.</translation>
</message>
@@ -1486,32 +1504,32 @@ Els elements que poden ser eliminats s&apos;eliminaran si impedeixen que una car
<translation>Limita automàticament</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Equip remot del servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nom d&apos;usuari del servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Contrasenya del servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1519,26 +1537,26 @@ Els elements que poden ser eliminats s&apos;eliminaran si impedeixen que una car
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation type="unfinished"/>
+ <translation>Creat el %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>Es tancarà en pocs segons...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>La petició %1 ha fallat a %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>S&apos;ha seleccionat &apos;%1&apos; a %2</translation>
</message>
</context>
<context>
@@ -1626,12 +1644,12 @@ privilegis addicionals durant el procés.</translation>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="142"/>
<source>Sync the folder &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Sincronitzar el directori &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="147"/>
<source>&lt;p&gt;&lt;small&gt;&lt;strong&gt;Warning:&lt;/strong&gt; The local folder is not empty. Pick a resolution!&lt;/small&gt;&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;p&gt;&lt;small&gt;&lt;strong&gt;Atenció:&lt;/strong&gt; La carpeta local no està buida. Trieu una resolució!&lt;/small&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="246"/>
@@ -1673,7 +1691,7 @@ privilegis addicionals durant el procés.</translation>
<translation>Configureu el certificat TLS de la banda del client</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ha fallat en connectar a l&apos;adreça segura del servidor &lt;em&gt;%1&lt;/em&gt;. Com voleu procedir?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1699,17 @@ privilegis addicionals durant el procés.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>Correu &amp;electrònic</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Connecta a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Escriviu les credencials d&apos;usuari</translation>
</message>
@@ -1729,139 +1747,139 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;S&apos;ha connectat correctament amb %1: %2 versió %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Ha fallat la connexió amb %1 a %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
- <translation type="unfinished"/>
+ <translation>S&apos;ha esgotat el temps d&apos;espera mentres es conectava a %1 a les %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Intentant connectar amb %1 a %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>El servidor ha prohibit l&apos;accés. Per verificar que teniu permisos, &lt;a href=&quot;%1&quot;&gt;cliqueu aquí&lt;/a&gt; per accedir al servei amb el vostre navegador.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>La carpeta local %1 ja existeix, s&apos;està configurant per sincronitzar.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>S&apos;està creant la carpeta de sincronització local %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>correcte</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>ha fallat.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>No s&apos;ha pogut crear la carpeta local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>No heu especificat cap carpeta remota!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Error: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>creant la carpeta a ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>La carpeta remota %1 s&apos;ha creat correctament.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>La carpeta remota %1 ja existeix. S&apos;hi està connectant per sincronitzar-les.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>La creació de la carpeta ha resultat en el codi d&apos;error HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Ha fallat la creació de la carpeta perquè les credencials proporcionades són incorrectes!&lt;br/&gt;Aneu enrera i comproveu les credencials.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;La creació de la carpeta remota ha fallat, probablement perquè les credencials facilitades són incorrectes.&lt;/font&gt;&lt;br/&gt;Comproveu les vostres credencials.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>La creació de la carpeta remota %1 ha fallat amb l&apos;error &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>S&apos;ha establert una connexió de sincronització des de %1 a la carpeta remota %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Connectat amb èxit a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>No s&apos;ha pogut establir la connexió amb %1. Comproveu-ho de nou.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Ha fallat en canviar el nom de la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>No es pot esborrar i restaurar la carpeta perquè una carpeta o un fitxer de dins està obert en un altre programa. Tanqueu la carpeta o el fitxer i intenteu-ho de nou o cancel·leu la configuració.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;la carpeta de sincronització %1 s&apos;ha creat correctament!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1887,12 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Assistent de connexió %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Salta la configuració de carpetes</translation>
</message>
@@ -1900,7 +1918,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Temps de connexió excedit</translation>
</message>
@@ -1908,7 +1926,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1916,55 +1934,55 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Error en escriure les metadades a la base de dades</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
- <translation type="unfinished"/>
+ <translation>La descàrrega reduïrà l&apos;espai lliure al disc per sota de %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
- <translation type="unfinished"/>
+ <translation>L&apos;espai lliure del disc dur es inferior a %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>El fitxer s&apos;ha esborrat del servidor</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
- <translation type="unfinished"/>
+ <translation>No es pot descarregar el fitxer completament.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>El fitxer ha canviat des de que es va descobrir</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Error en escriure les metadades a la base de dades</translation>
</message>
@@ -2036,7 +2054,8 @@ No és aconsellada usar-la.</translation>
<translation>El fitxer %1 no es pot reanomenar a %2 perquè hi ha un xoc amb el nom d&apos;un fitxer local</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Error en escriure les metadades a la base de dades</translation>
</message>
@@ -2044,12 +2063,12 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>El fitxer s&apos;ha eliminat d&apos;una compartició només de lectura. S&apos;ha restaurat.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2070,78 +2089,119 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>No s&apos;ha de canviar el nom d&apos;aquesta carpeta. Es reanomena de nou amb el seu nom original.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Aquesta carpeta no es pot reanomenar. Reanomeneu-la de nou Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>El fitxer s&apos;ha reanomenat però és part d&apos;una compartició només de lectura. El fixter original s&apos;ha restaurat.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Error en escriure les metadades a la base de dades</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fitxer eliminat</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>El fitxer local ha canviat durant la sincronització.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Error en escriure les metadades a la base de dades</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <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/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>El fitxer local ha canviat durant la sincronització.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<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/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>El fitxer local ha canviat durant la sincronització.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Error en escriure les metadades a la base de dades</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -2157,42 +2217,42 @@ No és aconsellada usar-la.</translation>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fitxer</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Acció</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Mida</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocol de sincronització local</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copia</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia la llista d&apos;activitats al porta-retalls.</translation>
</message>
@@ -2290,22 +2350,22 @@ No és aconsellada usar-la.</translation>
<translation>Arranjament</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Activitat</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Xarxa</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2313,27 +2373,27 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Activitat</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Xarxa</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2361,32 +2421,32 @@ No és aconsellada usar-la.</translation>
<translation>camí de l&apos;OwnCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
- <translation type="unfinished"/>
+ <translation>Compartint amb %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Carpeta: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
- <translation type="unfinished"/>
+ <translation>El servidor no permet la compartició de fitxers</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El fitxer no es pot compartir perquè va ser compartit sense permisos de compartició.</translation>
</message>
@@ -2425,43 +2485,58 @@ No és aconsellada usar-la.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copia l&apos;en&amp;llaç</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permetre edició</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Protegit amb contr&amp;asenya</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protegit amb contrasenya</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El fitxer no es pot compartir perquè va ser compartit sense permisos de compartició.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>La comp&amp;artició pública requereix una contrasenya</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Establiu la contrasenya</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Com&amp;parteix l&apos;enllaç</translation>
</message>
@@ -2479,7 +2554,7 @@ No és aconsellada usar-la.</translation>
<translation>Comparteix amb usuaris o grups ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>No hi ha resultats per &apos;%1&apos;</translation>
</message>
@@ -2512,17 +2587,17 @@ No és aconsellada usar-la.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>crea</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>canvi</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>elimina</translation>
</message>
@@ -2530,12 +2605,12 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Error d&apos;accés</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Cal identificar-se com a usuari %1</translation>
</message>
@@ -2543,17 +2618,22 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticat</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Es requereix nova acreditació</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>La vostra sessió ha vençut. Heu d&apos;acreditar-vos de nou per continuar usant el client.</translation>
</message>
@@ -2561,7 +2641,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Comparteix amb %1</translation>
@@ -2570,119 +2650,119 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Detalls del certificat&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nom comú (NC):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Noms alternatius de concepte:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organització (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unitat organitzativa (UO):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estat o província</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>País:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serial:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emissor&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emissor:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Enviat el:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Expira el:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Empremtes&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Aquest certificat es va aprovar manualment&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (auto-signat)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Aquesta connexió és encriptada usant %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Els tiquets/identificadors de sessió SSL no estan implementats</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informació del certificat:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Aquesta connexió NO és segura , ja que no està xifrada.
@@ -2770,270 +2850,275 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Èxit.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync ha fallat en carregar el fitxer del registre de transaccions. El fitxer està corromput.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;No s&apos;ha pogut carregar el connector %1 per csync.&lt;br/&gt;Comproveu la instal·lació!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync ha patit un error mentre processava els àrbres interns.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync ha fallat en reservar memòria.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Error fatal de paràmetre en CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>El pas d&apos;actualització del processat de CSync ha fallat.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>El pas de reconciliació del processat de CSync ha fallat.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync no s&apos;ha pogut acreditar amb el proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync ha fallat en cercar el proxy o el servidor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>L&apos;autenticació de CSync ha fallat al servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync ha fallat en connectar-se a la xarxa.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Temps excedit en la connexió.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>S&apos;ha produït un error en la transmissió HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>S&apos;ha produït un error en obrir una carpeta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Error en llegir la carpeta.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>El fitxer/carpeta s&apos;ha ignorat perquè és ocult.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: No hi ha espai disponible al servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Error inespecífic de CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Aturat per l&apos;usuari</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>El nom del fitxer conté caràcters no vàlids que no es poden sincronitzar entre plataformes.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>El servei no està disponible temporalment</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Accés prohibit</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>S&apos;ha produït l&apos;error intern número %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>L&apos;element no s&apos;ha sincronitzat degut a errors previs: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>La sincronització d&apos;enllaços simbòlics no està implementada.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>El fitxer està a la llista d&apos;ignorats.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>El nom de fitxer és massa llarg.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>La codificació del nom de fitxer no és vàlida</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caràcters no vàlids. Reanomeneu &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>No es pot inicialitzar un periòdic de sincronització</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>No es pot obrir el diari de sincronització</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>El nom del fitxer conté al menys un caràcter invàlid</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>S&apos;ignora degut al filtre a «Trieu què sincronitzar»</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>No es permet l&apos;eliminació, es restaura</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Fitxers locals i carpeta compartida esborrats.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<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/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>el destí</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>l&apos;origen</translation>
</message>
@@ -3043,7 +3128,7 @@ No és aconsellada usar-la.</translation>
<message>
<location filename="../src/gui/synclogdialog.ui" line="14"/>
<source>Synchronisation Log</source>
- <translation type="unfinished"/>
+ <translation>Registre de sincronització</translation>
</message>
</context>
<context>
@@ -3057,17 +3142,17 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versió %1. Per més informació visiteu &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuït per %1 i amb llicència GNU General Public License (GPL) Versió 2.0.&lt;br/&gt;%2 i el %2 logo són marques registrades de %1 als Estats Units, altres països, o ambdós.&lt;/p&gt;</translation>
</message>
@@ -3093,202 +3178,217 @@ No és aconsellada usar-la.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Acrediteu-vos</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Carpeta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>No hi ha fitxers de sincronització configurats</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>No hi han carpetes sincronitzades configurades.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Obre al navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Inicia la sessió</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Surt</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Canvis recents</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>S&apos;està comprovant els canvis a &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Fitxers gestionats:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Obre carpeta &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Obre %1 en el navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Estat desconegut</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Arranjament...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalls...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Surt %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>S&apos;ha desconnectat de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>La versió del servidor no és compatible</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>El servidor del compte %1 utilitza la versió antiga %2 antiga i no és compatible. Usar aquest client amb versions no compatibles del servidor no s&apos;ha provat i pot ser potencialment perillós. Procediu sota la vostra responsabilitat.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Desconnectat dels comptes:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Compte %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
- <translation type="unfinished"/>
+ <translation>La sincronització del compte està deshabilitada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Reprén totes les carpetes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pausa totes les carpetes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Reprèn totes les sincronitzacions</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Reprèn la sincronització</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pausa totes les sincronitzacions</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pausa la sincronització</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Surt de tots els comptes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Connecta a tots els comptes...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>No hi ha elements sincronitzats recentment</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronitzant %1 de %2 (%3 pendents)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>S&apos;està sincronitzant %1 de %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sincronitzant %1 (%2 pendents)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>S&apos;està sincronitzant %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Actualitzat</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versió %2. Per més informació visiteu &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Per Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz i altres.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;amb llicència GNU General Public License (GPL) versió 2.0&lt;br/&gt;ownCloud i el logo d&apos;ownCloud són marques registrades d&apos;ownCloud, Inc. als Estats Units, altres països, o ambdós.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3303,9 +3403,9 @@ No és aconsellada usar-la.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3325,7 +3425,7 @@ No és aconsellada usar-la.</translation>
<translation>Comença una sin&amp;cronització des de zero (esborra la carpeta local!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Trieu què sincronitzar</translation>
</message>
@@ -3350,7 +3450,7 @@ No és aconsellada usar-la.</translation>
<translation>Sincronitza-ho tot des del servidor</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Missatge d&apos;estat</translation>
</message>
@@ -3363,26 +3463,15 @@ No és aconsellada usar-la.</translation>
<translation>Formulari</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>Nom d&apos;&amp;usuari</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Contrasenya</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etiqueta d&apos;error</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3588,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3507,37 +3596,37 @@ No és aconsellada usar-la.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>al futur</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>fa %n dia</numerusform><numerusform>fa %n dies</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>fa %n hora</numerusform><numerusform>fa %n hores</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>ara</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Fa menys d&apos;un minut</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>fa %n minut</numerusform><numerusform>fa %n minuts</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Fa una estona</translation>
</message>
@@ -3545,57 +3634,57 @@ No és aconsellada usar-la.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n any</numerusform><numerusform>%n anys</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n mes</numerusform><numerusform>%n mesos</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n dia</numerusform><numerusform>%n dies</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n hora</numerusform><numerusform>%n hores</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minut</numerusform><numerusform>%n minuts</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n segon</numerusform><numerusform>%n segons</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3705,7 @@ No és aconsellada usar-la.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Construït de la revisió de Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; el %4 de %3 usant Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3713,92 @@ No és aconsellada usar-la.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Descarregat</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Carregat</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
- <translation type="unfinished"/>
+ <translation>S&apos;ha baixat la versió del servidor i s&apos;ha renomenat el fitxer local com a fitxer de conflicte</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Eliminat</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>S&apos;ha mogut a %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorat</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Error d&apos;accés al sistema de fitxers</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Desconegut</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>baixant</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>pujant</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>esborrant</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>movent</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorant</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>error</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_cs.ts b/translations/client_cs.ts
index cec466333..19085b0eb 100644
--- a/translations/client_cs.ts
+++ b/translations/client_cs.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="cs_CZ" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="cs_CZ" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Cílový soubor má neočekávanou velikost nebo čas změny</translation>
</message>
@@ -104,14 +104,29 @@
<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>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Synchronizovat všechny</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Nic nesynchronizovat</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Použít manuální úpravy</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Použít</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Připojen k &lt;server&gt; jako &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Žádný účet nenastaven.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Přidat nový</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Odebrat</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Účet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Vybrat co sesynchronizovat</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Odstranit připojení synchronizace adresáře</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Vytvoření adresáře selhalo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Nelze vytvořit místní adresář &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Potvrdit odstranění připojení synchronizace adresáře</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Odstranit připojení synchronizace adresáře</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synchronizace probíhá</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Operace synchronizace právě probíhá.&lt;br/&gt;Přejete si ji ukončit?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 používaný</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 jako &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Server verze %1 je zastaralý a nepodporovaný! Pokračujte na vlastní riziko.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Připojeno k %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 je dočasně nedostupný.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Odhlášeno z %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Bez připojení k %1 na %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Přihlásit</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Jsou dostupné nové adresáře, které nebyly synchronizovány z důvodu jejich nadměrné velikosti:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Potvrdit odstranění účtu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Opravdu chcete odstranit připojení k účtu &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Toto &lt;b&gt;neodstraní&lt;/b&gt; žádné soubory.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Odstranit připojení</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Otevřít adresář</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Odhlásit se</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Pokračovat v synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pozastavit synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Opravdu chcete zastavit synchronizaci adresáře &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Toto &lt;b&gt;neodstraní&lt;/b&gt; žádné soubory.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>Používaných %1 (%3%) z %2. Některé adresáře včetně připojených síťových nebo sdílených adresářů mohou mít odlišné limity.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>Používaných %1 z %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Momentálně nejsou k dispozici žádné informace o využití úložiště.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Žádné spojení s %1 nenastaveno.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Odhlášeno</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Odpojeno</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Připojeno</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Služba nedostupná</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Chyba sítě</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Chyba konfigurace</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Neznámý stav účtu</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Aktivita serveru</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protokol synchronizace</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Seznam ignorovaných nebo poškozených souborů</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopie</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopírovat záznam aktivity do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Nesesynchronizováno</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Nesesynchronizováno (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Výpis aktivity serveru byl zkopírován do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Výpis aktivity synchronizace byl zkopírován do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Seznam nesynchronizovaných položek byl zkopírován do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Zkopírováno do schránky</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Textový popisek</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Aktivity serveru</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopie</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopírovat záznam aktivity do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Vyžadována akce: Upozornění</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Účet %1 nemá zapnuté aktivity.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Dostali jste %n nové upozornění od %2.</numerusform><numerusform>Dostali jste %n nové upozornění od %2.</numerusform><numerusform>Dostali jste %n nových upozornění od %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Dostali jste %n nové upozornění od %1 a %2.</numerusform><numerusform>Dostali jste %n nové upozornění od %1 a %2.</numerusform><numerusform>Dostali jste %n nových upozornění od %1 a %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Dostali jste nové upozornění od %1, %2 a dalších uživatelů.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Upozornění - Vyžadována akce</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Heslo certifikátu :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Vybrat certifikát</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Soubory certifikátu (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Ověření vyžadováno</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Zadejte uživatelské jméno a heslo pro &apos;%1&apos; na %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Uživatel:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Heslo:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Chyba zápisu metadat do databáze</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Žádný účet ownCloud nenastaven</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Server nastavený pro tohoto klienta je příliš starý</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Aktualizujte prosím na poslední verzi serveru a restartujte klienta.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Chyba ověření: Uživatelské jméno nebo heslo není správné.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>vypršel časový interval</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Poskytnuté přihlašovací údaje nejsou správné</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Připojení vypršelo</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Zrušeno uživatelem</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Místní adresář %1 neexistuje.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 by měl být adresář, ale není.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 není čitelný.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 byl odebrán.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 byl stažen.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 byl aktualizován.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 byl přejmenován na %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 byl přemístěn do %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 soubor bude smazán.</numerusform><numerusform>%1 a %n další soubory budou smazány.</numerusform><numerusform>%1 a %n další soubory budou smazány.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 soubor byl stažen.</numerusform><numerusform>%1 a %n další soubory byly staženy.</numerusform><numerusform>%1 a %n další soubory byly staženy.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 soubor byl aktualizován.</numerusform><numerusform>%1 a %n další soubory byly aktualizovány.</numerusform><numerusform>%1 a %n další soubory byly aktualizovány.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 byl přejmenován na %2.</numerusform><numerusform>%1 byl přejmenován na %2 a %n další soubory byly přejmenovány.</numerusform><numerusform>%1 byl přejmenován na %2 a %n další soubory byly přejmenovány.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 byl přesunut do %2.</numerusform><numerusform>%1 byl přesunut do %2 a %n dalších souborů bylo přesunuto.</numerusform><numerusform>%1 byl přesunut do %2 a %n dalších souborů bylo přesunuto.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 má problém se synchronizací.</numerusform><numerusform>%1 a %n dalších souborů má problém se synchronizací.</numerusform><numerusform>%1 a %n dalších souborů má problém se synchronizací.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 má problém se synchronizací. Prosím zkontrolujte chybový soubor.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 soubor nemůže být synchronizován kvůli chybám. Shlédněte log pro detaily.</numerusform><numerusform>%1 a %n dalších souborů nemohou být synchronizovány kvůli chybám. Shlédněte log pro detaily.</numerusform><numerusform>%1 a %n dalších souborů nemohou být synchronizovány kvůli chybám. Shlédněte log pro detaily.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 nebyl kvůli chybě synchronizován. Detaily jsou k nalezení v logu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Průběh synchronizace</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<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/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Byl přidán nový adresář %2 větší než %1 MB.
Pokud ho chcete stáhnout, přejděte prosím do nastavení a označte ho.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,23 +715,23 @@ Toto může být způsobeno změnou v nastavení synchronizace adresáře nebo t
Opravdu chcete provést tuto akci?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Odstranit všechny soubory?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Odstranit všechny soubory</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Ponechat soubory</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation>Tato synchronizace resetuje soubory na dřívější čas v synchronizovaném adresáři &apos;%1&apos;.
@@ -724,17 +739,17 @@ Toto může být způsobeno obnovením zálohy na straně serveru.
Pokračováním v synchronizaci způsobí přepsání všech vašich souborů staršími soubory z dřívějšího stavu. Přejete si ponechat své místní nejaktuálnější soubory jako konfliktní soubory?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Záloha nalezena</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normální synchronizace</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Ponechat místní soubory jako konflikt</translation>
</message>
@@ -742,112 +757,112 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Nelze obnovit stav adresáře</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Byl nalezen starý záznam synchronizace &apos;%1&apos;, ale nebylo možné jej odebrat. Ujistěte se, že není aktuálně používán jinou aplikací.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (záloha)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (záloha %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Nedefinovaný stav.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Čeká na spuštění synchronizace.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Příprava na synchronizaci.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synchronizace probíhá.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Poslední synchronizace byla úspěšná.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Poslední synchronizace byla úspěšná, ale s varováním u některých souborů</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Chyba nastavení.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Zrušení uživatelem.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synchronizace pozastavena.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synchronizace je pozastavena)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nebyl vybrán platný adresář!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Vybraná cesta nevede do adresáře!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Nemáte oprávnění pro zápis do zvoleného adresáře!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Místní adresář %1 je již použit pro synchronizaci odesílání. Zvolte prosím jiný!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Místní adresář %1 již obsahuje podadresář použitý pro synchronizaci odesílání. Zvolte prosím jiný!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Místní adresář %1 je symbolickým obsahem. Cíl odkazu již obsahuje adresář použitý pro synchronizaci adresáře. Vyberte prosím jiný!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Místní adresář %1 je již obsažen ve adresáři použitém pro synchronizaci. Vyberte prosím jiný!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Místní adresář %1 je symbolickým obsahem. Cíl odkazu je již obsažen v adresáři použitém pro synchronizaci. Vyberte prosím jiný!</translation>
</message>
@@ -873,127 +888,133 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Pro přidání adresáře musíte být připojeni</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Stlačením tlačítka přidáte adresář k synchronizaci.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Chyba při načítání seznamu adresářů ze serveru.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Odhlášeno</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Přidání adresáře je vypnuto, protože již synchronizujete všechny své soubory. Pokud chcete synchronizovat pouze některé adresáře, odstraňte aktuálně nastavený kořenový adresář.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Načítání seznamu adresářů ze serveru...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kontrola změn v &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchronizuji %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>stahování %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>nahrávání %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 ze %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 zbývá, %1 ze %2, soubor %3 z %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 z %2, soubor %3 z %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>soubor %1 z %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Chvíli strpení...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Čeká se na %n další adresář...</numerusform><numerusform>Čeká se na %n další adresáře...</numerusform><numerusform>Čeká se na %n dalších adresářů...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Synchronizace se připravuje...</translation>
</message>
@@ -1106,22 +1127,22 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Server odpověděl chybným rozsahem obsahu</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Čas spojení vypršel</translation>
</message>
@@ -1203,28 +1224,25 @@ Pokračováním v synchronizaci způsobí přepsání všech vašich souborů st
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Vložte prosím %1 heslo:
-
-Uživatel: %2
-Účet: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Vložte prosím %1 heslo:&lt;br&gt;&lt;br&gt;Uživatel: %2&lt;br&gt;Účet: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Čtení z klíčenky selhalo z chybou: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Zadejte heslo</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Klikněte sem&lt;/a&gt; pro vyžádání hesla aplikace z webového rozhraní.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1287,7 @@ Uživatel: %2
<translation>Odebrat</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Položky u kterých je povoleno smazání budou vymazány, pokud by bránily odstranění adresáře. Toto je užitečné pro metadata.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Nepodařilo se otevřít soubor</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Nelze zapsat změny do &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Přidat masku ignorovaných</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Přidat novou masku ignorovaných souborů:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Tato položka je poskytnuta systémem na &apos;%1&apos; a nemůže být v tomto pohledu změněna.</translation>
</message>
@@ -1372,7 +1390,7 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Připojení vypršelo</translation>
</message>
@@ -1488,32 +1506,32 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
<translation>Omezovat automaticky</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Adresa proxy serveru</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Uživatelské jméno pro proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Heslo pro proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Pro možnost omezení ryhclosti připojení je vyžadován Qt &gt;= 5.4 </translation>
</message>
@@ -1521,23 +1539,23 @@ Položky u kterých je povoleno smazání budou vymazány, pokud by bránily ods
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Vytvořen v %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Uzavření za několik sekund...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 požadave selhal při %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; vybrán na %2</translation>
@@ -1675,7 +1693,7 @@ můžete být požádáni o dodatečná oprávnění.</translation>
<translation>Nakonfigurovat klientský TLS certifikát</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nezdařilo se připojení k zabezpečenému serveru &lt;em&gt;%1&lt;/em&gt;. Jak si přejete dále postupovat?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1701,17 @@ můžete být požádáni o dodatečná oprávnění.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Email</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Připojit k %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Zadejte přihlašovací údaje</translation>
</message>
@@ -1731,139 +1749,139 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Úspěšně připojeno k %1: %2 verze %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Selhalo spojení s %1 v %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Vypršení časového limitu při pokusu o připojení k %1 na %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Pokouším se připojit k %1 na %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Ověřený požadavek na server byl přesměrován na &apos;%1&apos;. URL je špatně, server není správně nakonfigurován.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Byla obdržena nesprávná odpověď na ověřený webdav požadavek</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Přístup zamítnut serverem. Pro ověření správných přístupových práv &lt;a href=&quot;%1&quot;&gt;klikněte sem&lt;/a&gt; a otevřete službu ve svém prohlížeči.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Místní synchronizovaný adresář %1 již existuje, nastavuji jej pro synchronizaci.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Vytvářím místní adresář pro synchronizaci %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>selhalo.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Nelze vytvořit místní adresář %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Není nastaven žádný vzdálený adresář!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Chyba: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>vytvářím adresář na ownCloudu: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Vzdálený adresář %1 byl úspěšně vytvořen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Vzdálený adresář %1 již existuje. Spojuji jej pro synchronizaci.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Vytvoření adresáře selhalo s HTTP chybou %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.&lt;br/&gt;Vraťte se prosím zpět a zkontrolujte je.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Vytvoření vzdáleného adresáře selhalo, pravděpodobně z důvodu neplatných přihlašovacích údajů.&lt;/font&gt;&lt;br/&gt;Vraťte se prosím zpět a zkontrolujte je.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Vytváření vzdáleného adresáře %1 selhalo s chybou &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Bylo nastaveno synchronizované spojení z %1 do vzdáleného adresáře %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Úspěšně spojeno s %1.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Spojení s %1 nelze navázat. Prosím zkuste to znovu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Přejmenování adresáře selhalo</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Nelze odstranit a zazálohovat adresář, protože adresář nebo soubor v něm je otevřen v jiném programu. Prosím zavřete adresář nebo soubor a zkuste znovu nebo zrušte akci.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Místní synchronizovaný adresář %1 byl úspěšně vytvořen!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1889,12 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Průvodce spojením</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Přeskočit konfiguraci adresářů</translation>
</message>
@@ -1902,7 +1920,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Čas spojení vypršel</translation>
</message>
@@ -1910,7 +1928,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Neplatná JSON odpověď z adresy URL</translation>
</message>
@@ -1918,55 +1936,55 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Chyba zápisu metadat do databáze</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Stažení by snížilo velikost volného místa na disku pod %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Volné místo na disku je méně než %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Soubor byl smazán ze serveru</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Soubor nemohl být kompletně stažen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Stažený soubor je prázdný, přestože server oznámil, že měl být %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Soubor se mezitím změnil</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Chyba zápisu metadat do databáze</translation>
</message>
@@ -2038,7 +2056,8 @@ Nedoporučuje se jí používat.</translation>
<translation>Soubor %1 nemohl být přejmenován na %2 z důvodu kolize názvu se souborem v místním systému</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Chyba zápisu metadat do databáze</translation>
</message>
@@ -2046,12 +2065,12 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Soubor byl odebrán ze sdílení pouze pro čtení. Soubor byl obnoven.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Server vrátil neplatný HTTP kód. Očekáván 204, ale obdržen &quot;%1 %2&quot;.</translation>
</message>
@@ -2072,78 +2091,119 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Tento adresář nemůže být přejmenován. Byl mu vrácen původní název.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Tento adresář nemůže být přejmenován. Přejmenujte jej prosím zpět na Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Soubor byl přejmenován, ale je součástí sdílení pouze pro čtení. Původní soubor byl obnoven.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Server vrátil neplatný HTTP kód. Očekáván 201, ale obdržen &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Chyba zápisu metadat do databáze</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Soubor odebrán</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Místní soubor se během synchronizace změnil. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Místní soubor byl změněn během synchronizace.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Chyba zápisu metadat do databáze</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Vynucené ukončení procesu při resetu HTTP připojení s Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <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/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Místní soubor byl změněn během synchronizace.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Neočekávaný návratový kód ze serveru (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Chybějící souborové ID ze serveru</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Chybějící ETag ze serveru</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Vynucené ukončení procesu při resetu HTTP připojení s Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Chybí adresa URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<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/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Server nepotvrdil poslední část dat. (Nebyl nalezen e-tag)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Místní soubor byl změněn během synchronizace.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Chyba zápisu metadat do databáze</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Server nepotvrdil poslední část dat. (Nebyl nalezen e-tag)</translation>
</message>
</context>
<context>
@@ -2159,42 +2219,42 @@ Nedoporučuje se jí používat.</translation>
<translation>Textový popisek</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Soubor</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Adresář</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Akce</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Velikost</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Místní protokol synchronizace</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopie</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopírovat záznam aktivity do schránky.</translation>
</message>
@@ -2292,22 +2352,22 @@ Nedoporučuje se jí používat.</translation>
<translation>Nastavení</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Hlavní</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Síť</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2315,27 +2375,27 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Hlavní</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Síť</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2363,32 +2423,32 @@ Nedoporučuje se jí používat.</translation>
<translation>ownCloud cesta:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 sdílení</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Adresář: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Sdílení je na serveru zakázáno</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Přijímání nejvyšších možných oprávnění pro sdílení ze serveru...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento soubor nelze sdílet, protože byl nasdílen bez možnosti dalšího sdílení.</translation>
</message>
@@ -2427,43 +2487,58 @@ Nedoporučuje se jí používat.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>E&amp;mail odkaz</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Zkopírovat &amp;odkaz</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Povolit úpravy</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Ch&amp;ránit heslem</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Chráněno heslem</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento soubor nelze sdílet, protože byl nasdílen bez možnosti dalšího sdílení.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Veřejné s&amp;dílení vyžaduje heslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Nastavte prosím heslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Nelze otevřít poštovního klienta</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Došlo k chybě při otevírání nové zprávy v emailovém klientu. Možná nebyl nastaven výchozí emailový klient?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Sdílet odkaz</translation>
</message>
@@ -2481,7 +2556,7 @@ Nedoporučuje se jí používat.</translation>
<translation>Sdílet s uživateli nebo skupinami</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Žádné výsledky pro &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2589,17 @@ Nedoporučuje se jí používat.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>vytvořit</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>změnit</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>smazat</translation>
</message>
@@ -2532,12 +2607,12 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Chyba přihlášení</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Musíte se přihlásit jako uživatel %1</translation>
</message>
@@ -2545,17 +2620,22 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - ověření</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Ladící zobrazení šifry SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Vyžadováno opětovné ověření</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Vaše sezení vypršelo. Chcete-li pokračovat v práci, musíte se znovu přihlásit.</translation>
</message>
@@ -2563,7 +2643,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Sdílet s %1</translation>
@@ -2572,119 +2652,119 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Detaily certifikátu&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Běžný název (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Alternativní jména subjektu:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organizace (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organizační jednotka (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Stát/provincie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Země:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Sériové číslo:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Vydavatel&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Vydavatel:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Vydáno:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Platný do:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Otisky&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Tento certifikát byl schválen ručně&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (podepsaný sám sebou)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Toto spojení je šifrováno pomocí %1 bitové šifry %2
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Podpora tiketů/identifikátorů SSL sezení není dostupná</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informace o certifikátu:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Toto spojení NENÍ bezpečné, protože není šifrované.
@@ -2772,270 +2852,275 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Úspěch.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>Nezdařilo se načtení žurnálovacího souboru CSync. Žurnálovací soubor je poškozený.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Plugin %1 pro csync nelze načíst.&lt;br/&gt;Zkontrolujte prosím instalaci!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync obdrželo chybu při zpracování vnitřních struktur.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync se nezdařilo rezervovat paměť.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync: kritická chyba parametrů.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync se nezdařilo zpracovat krok aktualizace.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync se nezdařilo zpracovat krok sladění.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync se nemohlo přihlásit k proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync se nezdařilo najít proxy server nebo cílový server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync se nezdařilo přihlásit k serveru %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync se nezdařilo připojit k síti.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Došlo k vypršení časového limitu síťového spojení.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Nastala chyba HTTP přenosu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Připojený adresář je na serveru dočasně nedostupný</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Došlo k chybě při otvírání adresáře</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Chyba při čtení adresáře.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Soubor/adresář je ignorován, protože je skrytý.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Je dostupných pouze %1, pro spuštění je potřeba alespoň %2</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Není povoleno, protože nemáte oprávnění vytvořit nadřazený adresář</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</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/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Nedostatek volného místa na serveru %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Nespecifikovaná chyba CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Zrušeno uživatelem</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Jméno souboru obsahuje neplatné znaky, které neumožňují synchronizaci mezi různými platformami.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>Selhal přístup pro CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync se nepodařilo načíst či vytvořit soubor žurnálu. Ujistěte se, že máte oprávnění pro čtení a zápis do místního adresáře synchronizace.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync selhalo z důvodu nezpracovaného zamítnutí oprávnění.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync se pokusil vytvořit adresář, který již existuje.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Služba je dočasně nedostupná</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Přístup je zakázán</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Došlo k interní chybě číslo %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Položka nebyla synchronizována kvůli předchozí chybě: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolické odkazy nejsou při synchronizaci podporovány.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Soubor se nachází na seznamu ignorovaných.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Jméno souboru obsahuje mezery na konci řádky.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Jméno souboru je moc dlouhé.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat selhal.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Kódování znaků jména soubor je neplatné</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Neplatné znaky, prosím přejmenujte &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Nemohu inicializovat synchronizační žurnál.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Nelze načíst blacklist z místní databáze</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Nelze číst ze žurnálu synchronizace.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Nelze otevřít synchronizační žurnál</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Jméno souboru obsahuje aelspoň jeden neplatný znak</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<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/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Není povoleno, protože nemáte oprávnění přidávat podadresáře do tohoto adresáře</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Odstranění není povoleno, obnovuji</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<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/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Přesun není povolen, položka obnovena</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>cílové umístění</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>zdroj</translation>
</message>
@@ -3059,17 +3144,17 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Verze %1. Více informací na &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Šíří %1 pod licencí GNU General Public License (GPL) Verze 2.0.&lt;br/&gt;%2 a %2 logo jsou registrované známky %1 ve Spojených Státech, ostatních zemích, nebo obojí.&lt;/p&gt;</translation>
</message>
@@ -3095,202 +3180,217 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Přihlašte se prosím</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Adresář %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nejsou nastaveny žádné synchronizované adresáře.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Nejsou nastaveny žádné adresáře pro synchronizaci.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Otevřít v prohlížeči</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Přihlásit...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Odhlásit se</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Poslední změny</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kontrola změn v &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Spravované adresáře:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Otevřít adresář &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Otevřít %1 v prohlížeči</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Neznámý stav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Nastavení...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Podrobnosti...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Nápověda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Ukončit %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Odpojeno od %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Nepodporovaná verze serveru</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Server na účtu %1 používá starou a nepodporovanou verzi %2. Používání tohoto klienta s nepodporovanými verzemi serveru není testováno a může být potencionálně nebezpečné. Pokračujte na vlastní riziko.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Odpojeno od účtů:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Účet %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Synchronizace účtu je vypnuta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Spustit všechny adresáře</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pozastavit všechny adresáře</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Spustit veškerou synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Spustit synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pozastavit veškerou synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pozastavit synchronizaci</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Odhlásit ze všech účtů</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Přihlásit ke všem účtům...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Selhání</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Žádné položky nebyly nedávno synchronizovány</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synchronizuji %1 ze %2 (zbývá %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Synchronizace %1 z %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synchronizuji %1 (zbývá %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchronizuji %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Aktuální</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Verze %2. Pro další informace navštivte &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz a další.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licencováno pod GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud a ownCloud logo jsou registrované obchodní známky ownCloud, Inc. ve Spojených státech, ostatních zemích nebo obojí&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Verze %2. Pro další informace navštivte &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Informace o známých chybách a pomoc hledejte na: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt a další.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;&lt;p&gt;Licencováno pod GNU General Public License (GPL) Verze 2.0&lt;br/&gt;ownCloud a ownCloud logo jsou registrované obchodní známky ownCloud GmbH ve Spojených státech, ostatních zemích nebo obojí.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3305,9 +3405,9 @@ Nedoporučuje se jí používat.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Textový štítek</translation>
</message>
@@ -3327,7 +3427,7 @@ Nedoporučuje se jí používat.</translation>
<translation>Spustit novou synchroniza&amp;ci (Smaže lokální data!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Vybrat co sesynchronizovat</translation>
</message>
@@ -3352,7 +3452,7 @@ Nedoporučuje se jí používat.</translation>
<translation>Ses&amp;ynchronizovat vše ze serveru</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Stavová zpráva</translation>
</message>
@@ -3365,26 +3465,15 @@ Nedoporučuje se jí používat.</translation>
<translation>Formulář</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Uživatelské jméno</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Heslo</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Chybový popis</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Textový štítek</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3590,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3509,37 +3598,37 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>V budoucnosti</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation><numerusform>před %n dnyëm</numerusform><numerusform>před %n dny</numerusform><numerusform>před %n dny</numerusform></translation>
+ <translation><numerusform>před %n dnem</numerusform><numerusform>před %n dny</numerusform><numerusform>před %n dny</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>před %n hodinou</numerusform><numerusform>před %n hodinami</numerusform><numerusform>před %n hodinami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>nyní</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Méně než před minutou</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>před %n minutou</numerusform><numerusform>před %n minutami</numerusform><numerusform>před %n minutami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Před nějakým časem</translation>
</message>
@@ -3547,57 +3636,57 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n rok</numerusform><numerusform>%n roky</numerusform><numerusform>%n let</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n měsíc</numerusform><numerusform>%n měsíce</numerusform><numerusform>%n měsíců</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n den</numerusform><numerusform>%n dny</numerusform><numerusform>%n dní</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n hodina</numerusform><numerusform>%n hodiny</numerusform><numerusform>%n hodin</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuta</numerusform><numerusform>%n minuty</numerusform><numerusform>%n minut</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n sekunda</numerusform><numerusform>%n sekundy</numerusform><numerusform>%n sekund</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3707,7 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Sestaveno na Git revizi &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; na %3, %4 s použitím Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3626,82 +3715,92 @@ Nedoporučuje se jí používat.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Staženo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Odesláno</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Stažena verze ze serveru, změněný místní soubor zkopírován do konfliktního souboru</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Smazáno</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Přesunuto do %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorováno</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Chyba přístupu k souborovému systému</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Chyba</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Místní metadata aktualizována</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Neznámý</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>stahování</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>odesílání</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>mazání</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>přesouvání</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignoruji</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>chyba</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>aktualizace místních metadat</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_de.ts b/translations/client_de.ts
index 43a0d9dde..2e1a64633 100644
--- a/translations/client_de.ts
+++ b/translations/client_de.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="de_DE" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="de_DE" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Die Zieldatei hat eine unerwartete Größe oder ein unerwartetes Änderungsdatum</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Nicht markierte Ordner werden von Ihrem lokalen Dateisystem &lt;b&gt;entfernt&lt;/b&gt; und werden auch nicht mehr auf diesem Rechner synchronisiert</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Alles synchronisieren</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Nichts synchronisieren</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Manuelle Änderungen übernehmen</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Anwenden</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Verbunden mit &lt;server&gt; als &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Kein Konto konfiguriert.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Neues Konto hinzufügen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Benutzerkonto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Zu synchronisierende Elemente auswählen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Ordner Synchronisation entfernen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Ordner anlegen fehlgeschlagen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Konnte lokalen Ordner &lt;i&gt;%1&lt;/i&gt; nicht anlegen.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bestätigen Sie die Löschung der Ordner Sychronisation</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Ordner Synchronisation entfernen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synchronisation läuft</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Die Synchronisation läuft gerade.&lt;br/&gt;Wollen Sie sie beenden?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 wird verwendet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 als &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Die Serververision %1 ist al und nicht unterstützt! Fortfahren auf eigenes Risiko.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Verbunden mit %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 ist derzeit nicht verfügbar.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Abgemeldet von %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Keine Verbindung zu %1 auf %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Einloggen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Einige neue Ordner konnten nicht synchronisiert werden, da sie zu groß sind:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Konto wirklich entfernen?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wollen Sie wirklich die Verbindung zum Konto &lt;i&gt;%1&lt;/i&gt; lösen?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Anmerkung:&lt;/b&gt; Dieser Vorgang wird &lt;b&gt;keine&lt;/b&gt; Dateien löschen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Verbindung entfernen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Ordner öffnen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Abmelden</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Synchronisation fortsetzen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Synchronisation pausieren</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Möchten Sie wirklich die Synchronisation des Ordners &lt;i&gt;%1&lt;/i&gt; stoppen?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Anmerkung:&lt;/b&gt; Dies wird &lt;b&gt;keine&lt;/b&gt; Dateien löschen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder freigegebene Ordner oder geteilte ordner können unterschiedliche Beschränkungen aufweisen. </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 von %2 Serverkapazität verwendet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Derzeit sind keine Speichernutzungsinformationen verfügbar.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Keine %1-Verbindung konfiguriert.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Abgemeldet</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Getrennt</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Verbunden</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Dienst nicht verfügbar</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Netzwerkfehler</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Konfigurationsfehler</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Unbekannten Konto-Zustand</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Server Aktivität</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Synchronisationsprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Liste von ignorierten oder feherhaften Dateien</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Aktivitätsliste in die Zwischenablage kopieren.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>nicht synchronisiert</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>nicht synchronisiert (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Die Server-Aktivitätsliste wurde in die Zwischenablage kopiert. </translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Die Synchronisationsliste wurde in die Zwischenablage kopiert.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Die Liste der unsynchronisierten Dateien wurde in die Zwischenablage kopiert.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>In die Zwischenablage kopiert</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Server Aktivitäten</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Aktivitätsliste in die Zwischenablage kopieren.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Handlung erforderlich: Benachrichtigungen</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Für Konto %1 sind serverseitig keine Aktivitäten aktiviert.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Sie haben %n neue Benachrichtigung von %2 erhalten.</numerusform><numerusform>Sie haben %n neue Benachrichtigungen von %2 erhalten.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Sie haben %n neue Benachrichtigung von %1 und %2 erhalten.</numerusform><numerusform>Sie haben %n neue Benachrichtigungen von %1 und %2 erhalten.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Sieh haben %n neue Benachrichtigungen von %1, %2 und anderen Konten erhalten.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Benachrichtigungen - Handlung notwendig</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Zertifikatskennwort:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Zertifikat auswählen</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Zertifikatsdateien (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Authentifizierung erforderlich</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Benutzername und Passwort für &apos;%1&apos; auf %2 eingeben.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Benutzer:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Passwort:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Kein ownCloud-Konto konfiguriert</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Der konfigurierte Server ist für diesen Client zu alt</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Aktualisieren Sie auf die letzte Server-Version und starten Sie den Client neu.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Authentifizierungsfehler: Entweder der Benutzername oder das Passwort sind falsch.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>Zeitüberschreitung</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Zeitüberschreitung bei der Verbindung</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Abbruch durch den Benutzer</translation>
</message>
@@ -579,118 +594,118 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Lokales Verzeichnis %1 existiert nicht.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 sollte ein Ordner sein, ist es aber nicht.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 ist nicht lesbar.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde gelöscht.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde heruntergeladen.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 wurde aktualisiert.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 wurde in %2 umbenannt.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 wurde in %2 verschoben.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 und %n andere Datei wurde gelöscht.</numerusform><numerusform>%1 und %n andere Dateien wurden gelöscht.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 und %n andere Datei wurde heruntergeladen.</numerusform><numerusform>%1 und %n andere Dateien wurden heruntergeladen.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 und %n andere Datei wurde aktualisiert.</numerusform><numerusform>%1 und %n andere Dateien wurden aktualisiert.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 wurde in %2 umbenannt und %n andere Datei wurde umbenannt.</numerusform><numerusform>%1 wurde in %2 umbenannt und %n andere Dateien wurden umbenannt.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 wurde in %2 verschoben und %n andere Datei wurde verschoben.</numerusform><numerusform>%1 wurde in %2 verschoben und %n andere Dateien wurden verschoben.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 und %n andere Datei haben Konflikte beim Abgleichen.</numerusform><numerusform>%1 und %n andere Dateien haben Konflikte beim Abgleichen.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 und %n weitere Datei konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</numerusform><numerusform>%1 und %n weitere Dateien konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Synchronisierungsaktivität</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Systemeigene Ausschlussdatei kann nicht gelesen werden</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Ein neue Order größer als %1 MB wurde hinzugefügt: %2. Bitte besuchen Sie die Einstellungen, falls sie ihn herunterladen wollen.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -699,23 +714,23 @@ Die Ursache ist, dass der Ordner entweder neu konfiguriert wurde, oder weil alle
Sind Sie sicher, dass Sie diese Operation durchführen möchten?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Alle Dateien löschen?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Lösche alle Dateien</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Dateien behalten</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation>Dieser Sync-Vorgang des Synchronisationsordners &apos;%1&apos; würde Dateien auf ein früheres Änderungsdatum zurücksetzen.
@@ -723,17 +738,17 @@ Der Grund dafür ist möglicherweise, dass auf dem Server ein Backup eingespielt
Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älteren Versionen überschrieben. Möchten Sie die neueren Dateien als Konflikt-Dateien behalten?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup erkannt</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normale Synchronisation</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Lokale Konfliktdateien behalten</translation>
</message>
@@ -741,112 +756,112 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Konnte Ordner-Zustand nicht zurücksetzen</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Ein altes Synchronisations-Journal &apos;%1&apos; wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(Sicherung)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(Sicherung %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Undefinierter Zustand.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Wartet auf Beginn der Synchronistation</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Synchronisation wird vorbereitet.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synchronisation läuft.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Die letzte Synchronisation war erfolgreich.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Letzte Synchronisation war erfolgreich, aber mit Warnungen für einzelne Dateien.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Installationsfehler.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Benutzer-Abbruch</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synchronisation wurde angehalten.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synchronisation ist pausiert)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Kein gültige Ordner gewählt!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Der gewählte Pfad ist kein Ordner!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Sie haben keine Schreibberechtigung für den ausgewählten Ordner!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Der lokale Ordner %1 wird bereits als Synchronisationsordner benutzt. Bitte wählen Sie einen anderen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Der lokale Ordner %1 ist ein symbolischer Link. Das Ziel des Links beinhaltet schon einen Ordner, der in einer anderen Synchronisation liegt. Bitte wählen Sie einen anderen lokalen Ordner aus!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Der lokale Ordner %1 ist ein symbolischer Link. Das Ziel des Links liegt in einem Ordner, der schon synchronisiert wird. Bitte wählen Sie einen anderen aus!</translation>
</message>
@@ -872,127 +887,133 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Sie müssen verbunden sein, um einen Ordner hinzuzufügen</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Fehler beim Empfang der Ordnerliste vom Server.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Abgemeldet</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Sie können keinen weiteren Ordner hinzufügen, da Sie bereits alle Dateien synchronisieren. Falls sie mehrere Ordner synchronisieren wollen, entferen Sie zunächst den konfigurierten Wurzel-Ordner.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Empfange Orderliste vom Server...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Nach Änderungen suchen in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchronisiere %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>Download %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>Upload %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 von %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 übrig, %1 von %2, Datei %3 von %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 of %2, Datei %3 von %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>Datei %1 von %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Warte...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Warte auf einen anderen Ordner</numerusform><numerusform>Warte auf %n andere Ordner</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Bereite Synchronisation vor...</translation>
</message>
@@ -1105,22 +1126,22 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<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/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Zeitüberschreitung der Verbindung</translation>
</message>
@@ -1202,28 +1223,25 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Bitte Kennwort für %1 eingeben:
-
-Benutzer: %2
-Konto: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Bitte Kennwort für %1 eingeben:&lt;br&gt;&lt;br&gt;Benutzer: %2&lt;br&gt;Konto: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Schlüsselbund fehlgeschlagen mit Fehler: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Passwort eingeben</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Klicken Sie hier&lt;/a&gt; um ein App-Passwort von dem Web-Interface zu erhalten.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1268,7 +1286,7 @@ Konto: %3
<translation>Entfernen</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1277,27 +1295,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschung eines Ordners verhindern würden. Das ist für Metadaten nützlich.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Datei konnte nicht geöffnet werden</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Konnte Änderungen nicht in &apos;%1&apos; schreiben.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Ignoriermuster hinzufügen</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Neues Ignoriermuster hinzufügen:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Dieser Eintrag wird vom System auf &apos;%1&apos; bereitgestellt und kann in dieser Ansicht nicht geändert werden.</translation>
</message>
@@ -1371,7 +1389,7 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Zeitüberschreitung bei der Verbindung</translation>
</message>
@@ -1487,32 +1505,32 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
<translation>Automatisch begrenzen</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Hostname des Proxy-Servers</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Benutzername für den Proxy-Server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Passwort für den Proxy-Server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S)-Proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5-Proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Bandbreiten-Limitierung ist nur mit Qt &gt;= 5.4 verfügbar.</translation>
</message>
@@ -1520,23 +1538,23 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn sie die Löschun
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Erstellt von %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Schließe in wenigen Sekunden...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 Anfrage an %2 fehlgeschlagen</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; ausgewählt von %2</translation>
@@ -1673,7 +1691,7 @@ for additional privileges during the process.</source>
<translation>Clientseitiges TLS-Zertifikat konfigurieren.</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Sichere Verbindung zur Server-Adresse &lt;em&gt;%1&lt;/em&gt; fehlgeschlagen. Wie wollen Sie fortfahren?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1699,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;E-Mail</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Verbinden mit %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Geben Sie die Benutzer-Anmeldeinformationen ein</translation>
</message>
@@ -1729,139 +1747,139 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Erfolgreich mit %1 verbunden: %2 Version %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Die Verbindung zu %1 auf %2:&lt;br/&gt;%3 konnte nicht hergestellt werden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Verbindungsversuch mit %1 unter %2…</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Die Authentifizierungs-Anfrage an den Server wurde weitergeleitet an &apos;%1&apos;. Diese Adresse ist ungültig, der Server ist falsch konfiguriert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Es gab eine ungültige Reaktion auf eine WebDav-Authentifizeriungs-Anfrage</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Zugang vom Server nicht erlaubt. &lt;a href=&quot;%1&quot;&gt;Klicken Sie hier&lt;/a&gt; zum Zugriff auf den Dienst mithilfe Ihres Browsers, so dass Sie sicherstellen können, dass Ihr Zugang ordnungsgemäß funktioniert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Lokaler Synchronisations-Ordner %1 wird erstellt ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Der lokale Ordner %1 konnte nicht angelegt werden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Keinen entfernten Ordner angegeben!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Fehler: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>erstelle Ordner auf ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Remoteordner %1 erfolgreich erstellt.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisation.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Das Erstellen des Verzeichnisses erzeugte den HTTP-Fehler-Code %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Die Remote-Ordner-Erstellung ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Die Remote-Ordner-Erstellung ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.&lt;/font&gt;&lt;br/&gt;Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Remote-Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Eine Synchronisationsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Erfolgreich verbunden mit %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Ordner umbenennen fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>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>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Lokaler Sync-Ordner %1 erfolgreich erstellt!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1887,12 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Verbindungsassistent</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Ordner-Konfiguration überspringen</translation>
</message>
@@ -1900,7 +1918,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Zeitüberschreitung der Verbindung</translation>
</message>
@@ -1908,7 +1926,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Ungültige JSON-Antwort von der Poll-URL</translation>
</message>
@@ -1916,55 +1934,55 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Dieser Download würde den freien Speicher der Festplatte minimieren auf %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Der freie Speicher auf der Festplatte ist weniger als %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Die Datei wurde vom Server gelöscht</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<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/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Datei ist seit der Entdeckung geändert worden</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
@@ -2036,7 +2054,8 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>%1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht zu %2 umbenannt werden</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
@@ -2044,12 +2063,12 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Die Datei wurde von einer Nur-Lese-Freigabe gelöscht. Die Datei wurde wiederhergestellt.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 204, aber gesendet wurde &quot;%1 %2&quot;.</translation>
</message>
@@ -2070,78 +2089,119 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Dieser Ordner muss nicht umbenannt werden. Er wurde zurück zum Originalnamen umbenannt.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Dieser Ordner muss nicht umbenannt werden. Bitte benennen Sie es zurück wie in der Freigabe.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Die Datei wurde auf einer Nur-Lese-Freigabe umbenannt. Die Original-Datei wurde wiederhergestellt.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Datei gelöscht</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokale Datei hat sich während der Synchronisation geändert. Die Synchronisation wird wiederaufgenommen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Auftragsabbruch beim Rücksetzen der HTTP-Verbindung mit QT &lt; 5.4.2 wird erzwungen.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <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/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Unerwarteter Rückgabe-Code Antwort vom Server (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Fehlende Datei-ID vom Server</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Fehlender ETag vom Server</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Auftragsabbruch beim Rücksetzen der HTTP-Verbindung mit QT &lt; 5.4.2 wird erzwungen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Poll-URL fehlt</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<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/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Der Server hat den letzten Block nicht bestätigt. (Der E-Tag war nicht vorhanden)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Fehler beim Schreiben der Metadaten in die Datenbank</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Der Server hat den letzten Block nicht bestätigt. (Der E-Tag war nicht vorhanden)</translation>
</message>
</context>
<context>
@@ -2157,42 +2217,42 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Zeit</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Datei</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Ordner</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Aktion</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Größe</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Lokales Sychronisationsprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Aktivitätsliste in die Zwischenablage kopieren.</translation>
</message>
@@ -2290,22 +2350,22 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivität</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Allgemein</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Netzwerk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Benutzerkonto</translation>
</message>
@@ -2313,27 +2373,27 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivität</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Allgemein</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Netzwerk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Benutzerkonto</translation>
</message>
@@ -2361,32 +2421,32 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>ownCloud-Pfad:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1-Freigabe</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Ordner: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Der Server erlaubt das teilen nicht</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Abrufen der maximal möglichen Freigabeberechtigungen vom Server...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Die Datei kann nicht geteilt werden, weil sie ohne erneute Teilungs-Berechtigung für Sie geteilt wurde.</translation>
</message>
@@ -2425,43 +2485,58 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Mail-Link</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>&amp;Link kopieren</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Bearbeitung erlauben</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Passwort geschützt</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>passwortgeschützt</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Die Datei kann nicht geteilt werden, weil sie ohne erneute Teilungs-Berechtigung für Sie geteilt wurde.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Öffentliches Teilen erfordert ein P&amp;asswort</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Bitte wählen Sie ein Passwort:</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Die E-Mail Anwendung konnte nicht geöffnet werden</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Es ist ein Fehler beim Öffnen der E-Mail Anwendung, zum Erstellen einer neuen Nachricht, aufgetreten. Vielleicht ist keine standardmäßige E-Mail Anwendung konfiguriert?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Link teilen</translation>
</message>
@@ -2479,7 +2554,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Mit Benutzern oder Gruppen teilen…</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Keine Ergebnisse für &apos;%1&apos;</translation>
</message>
@@ -2512,17 +2587,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>erstellen</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>Ändern</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>löschen</translation>
</message>
@@ -2530,12 +2605,12 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Log-In Fehler</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Sie müssen sich als %1 einloggen</translation>
</message>
@@ -2543,17 +2618,22 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Authentifikation</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Debug-Ansicht der SSL-Chiffren</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Erneute Authentifizierung erforderlich</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Ihre Sitzung ist abgelaufen. Sie müssen sich zur weiteren Nutzung des Clients neu Anmelden.</translation>
</message>
@@ -2561,7 +2641,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Via %1 teilen</translation>
@@ -2570,119 +2650,119 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Zertifikatdetails&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Gemeinsamer Name (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Subject Alternative Names:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisation (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organisationseinheit (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Staat/Provinz:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Land:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Seriennummer:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Aussteller&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Aussteller:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Ausgestellt am:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Ablaufdatum:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Fingerabdrücke&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Hinweis:&lt;/b&gt; Dieses Zertifikat wurde manuell bestätigt&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (selbst signiert)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Diese Verbindung ist verschlüsselt mit %1 Bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Keine Unterstützung für SSL session tickets</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Zertifikatsinformation:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Diese Verbindung ist NICHT sicher, da diese nicht verschlüsselt ist.
@@ -2770,270 +2850,275 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Erfolgreich</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync konnte die Journaldatei nicht laden. Die Journaldatei ist beschädigt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Das %1-Plugin für csync konnte nicht geladen werden.&lt;br/&gt;Bitte überprüfen Sie die Installation!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync hatte einen Fehler bei der Verarbeitung von internen Strukturen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync konnte keinen Speicher reservieren.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync hat einen schwerwiegender Parameterfehler festgestellt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync Verarbeitungsschritt &quot;Aktualisierung&quot; fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync Verarbeitungsschritt &quot;Abgleich&quot; fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync konnte sich nicht am Proxy authentifizieren.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync konnte den Proxy oder Server nicht auflösen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync konnte sich nicht am Server %1 authentifizieren.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync konnte sich nicht mit dem Netzwerk verbinden.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Eine Zeitüberschreitung der Netzwerkverbindung ist aufgetreten.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Es hat sich ein HTTP-Übertragungsfehler ereignet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Der auf dem Server eingehängte Ordner ist vorübergehend nicht verfügbar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Beim Öffnen eines Ordners ist ein Fehler aufgetreten.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Fehler beim Lesen eines Ordners.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Datei wird ignoriert, weil sie versteckt ist.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zum Hinzufügen von Dateien in diesen Ordner haben</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Kein Platz auf Server %1 frei.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync unbekannter Fehler.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Abbruch durch den Benutzer</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Dateiname enthält Zeichen die nicht auf allen Betriebssystemen dargestellt werden können.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync-Zugriff fehlgeschlagen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync konnte das Journal nicht laden oder erstellen. Stellen Sie bitte sicher, dass Sie Lese- und Schreibrechte im lokalen Synchronisationsordner haben.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync wegen fehlender Berechtigung fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync versuchte einen Ordner anzulegen, der schon existiert.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Der Dienst ist vorübergehend nicht erreichbar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Zugriff verboten</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Ein interner Fehler mit der Fehlernummer %1 ist aufgetreten.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Das Element ist aufgrund vorheriger Fehler nicht synchronisiert: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolische Verknüpfungen werden bei der Synchronisation nicht unterstützt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Die Datei ist in der Ignorierliste geführt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Dateiname enthält Leerzeichen.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Der Dateiname ist zu lang.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Dateikodierung ist ungültig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Ungültige Zeichenm bitte benennen Sie &quot;%1&quot; um</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Synchronisationsbericht konnte nicht initialisiert werden.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Fehler beim Einlesen der Blacklist aus der lokalen Datenbank</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Fehler beim Einlesen des Synchronisierungsprotokolls.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Synchronisationsbericht kann nicht geöffnet werden</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Der Dateiname enthält mindestens ein ungültiges Zeichen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<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/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Nicht erlaubt, da Sie keine Rechte zur Erstellung von Unterordnern haben</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Löschen nicht erlaubt, Wiederherstellung</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Lokale Dateien und Freigabeordner wurden entfernt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Verschieben nicht erlaubt, Element wiederhergestellt</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>Das Ziel</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>Die Quelle</translation>
</message>
@@ -3057,17 +3142,17 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Version %1. Für weitere Informationen besuchen Sie bitte &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Zur Verfügung gestellt durch %1 und lizenziert unter der GNU General Public License (GPL) Version 2.0.&lt;br&gt;%2 und das %2 Logo sind eingetragene Warenzeichen von %1 in den Vereinigten Staaten, anderen Ländern oder beides.&lt;/p&gt;</translation>
</message>
@@ -3093,202 +3178,217 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Bitte melden Sie sich an</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Ordner %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Keine Sync-Ordner konfiguriert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Es wurden keine Synchonisationsordner konfiguriert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Im Browser öffnen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Einloggen...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Abmelden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Letzte Änderungen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Nach Änderungen suchen in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Verwaltete Ordner:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Ordner »%1« öffnen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>%1 im Browser öffnen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Unbekannter Status</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Einstellungen …</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Details …</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1 beenden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Von %1 trennen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>nicht unterstütze Server Version</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Der Server mit Konto %1 läuft mit einer alten und nicht unterstützten Version %2. Die Verwendung dieses Clienten mit der nicht unterstützten Serverversion ist ungetestet und möglicherweiße gefährich. Fortfahren auf eigenes Risiko.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Getrennt von Konten:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Konto %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Account Synchronisation ist deaktiviert</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Setze alle Ordner fort</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Stoppe alle Ordner</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Setze gesamte Synchronisation fort</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Setze Synchronisation fort</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Stoppe gesamte Synchronisation</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Stoppe Synchronisation</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Bei allen Konten abmelden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Bei allen Konten anmelden...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>Neues Konto...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Jetzt abstürzen lassen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Keine kürzlich synchronisierten Elemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synchronisiere %1 von %2 (%3 übrig)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Synchronisiere %1 von %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synchronisiere %1 (%2 übrig)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchronisiere %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Aktuell</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Version %2. Weitere Informationen unter &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Von Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz und anderen.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Lizensiert unter den Bedingungen der GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud und das ownCloud Logo sind eingetragene Warenzeichen der ownCloud Inc. in den USA, anderen Ländern, oder beidem.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Version %2. Weitere Informationen unter &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Für bekannte Fehler und die Hilfe, besuchen Sie bitte: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Von Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz und anderen.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;&lt;p&gt;Lizenziert unter den Bedingungen der GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud und das ownCloud Logo sind eingetragene Warenzeichen der ownCloud Inc. in den USA, anderen Ländern, oder beidem.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3303,9 +3403,9 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3325,7 +3425,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Saubere Syn&amp;chronisation beginnen (entfernt lokalen Ordner!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Zu synchronisierende Elemente auswählen</translation>
</message>
@@ -3350,7 +3450,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Alle Daten vom Server s&amp;ynchronisieren</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Statusnachricht</translation>
</message>
@@ -3363,26 +3463,15 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<translation>Formular</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Benutzername</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Passwort</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Fehler-Label</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3588,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3507,37 +3596,37 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>in der Zukunft</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>vor %n Tage(n)</numerusform><numerusform>vor %n Tage(n)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>vor %n Stunde(n)</numerusform><numerusform>vor %n Stunde(n)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>jetzt</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>vor weniger als einer Minute</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>vor %n Minute(n)</numerusform><numerusform>vor %n Minute(n)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>vor einiger Zeit</translation>
</message>
@@ -3545,57 +3634,57 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n Jahr</numerusform><numerusform>%n Jahre</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n Monat</numerusform><numerusform>%n Monate</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n Tag</numerusform><numerusform>%n Tage</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n Stunde</numerusform><numerusform>%n Stunden</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n Minute</numerusform><numerusform>%n Minuten</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n Sekunde</numerusform><numerusform>%n Sekunden</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3705,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Gebaut von der GIT-Revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; auf %3, %4 verwendet Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3713,92 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Heruntergeladen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Hochgeladen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Serverversion heruntergeladen. Die bearbeitete lokale Datei wurde in eine Konfliktdatei verschoben.</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Gelöscht</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Verschoben nach %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignoriert</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Zugriffsfehler im Dateisystem</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Lokale Metadaten aktualisiert</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>Herunterladen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>Lade hoch</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>Lösche</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>Verschiebe</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignoriere</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>Fehler</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>aktualisiere Lokale Metadaten</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_el.ts b/translations/client_el.ts
index 9e37dbc3a..b323c4cf0 100644
--- a/translations/client_el.ts
+++ b/translations/client_el.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="el" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="el" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Το αρχείο προορισμού έχει μη αναμενόμενο μέγεθος ή ημερομηνία τροποποίησης</translation>
</message>
@@ -68,12 +68,12 @@
<message>
<location filename="../src/gui/notificationwidget.ui" line="56"/>
<source>Lorem ipsum dolor sit amet</source>
- <translation type="unfinished"/>
+ <translation>Ξεσκεπάζω την ψυχοφθόρα βδελυγμία</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="69"/>
<source>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </source>
- <translation type="unfinished"/>
+ <translation>Ξεσκεπάζω την ψυχοφθόρα βδελυγμία</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="89"/>
@@ -104,14 +104,29 @@
<translation>Οι μη επιλεγμένοι φάκελοι θα &lt;b&gt;αφαιρεθούν&lt;/ b&gt; από το τοπικό σύστημα αρχείων σας και δεν θα συγχρονιστούν πια με αυτόν τον υπολογιστή</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Εφαρμογή</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Άκυρο</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Συνδεδεμένοι με το &lt;server&gt; ως &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Δεν ρυθμίστηκε λογαριασμός.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Προσθήκη νέου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Αφαίρεση</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Λογαριασμός</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Επιλέξτε τι θα συγχρονιστεί</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Αφαίρεση σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Αποτυχία αφαίρεσης φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Αδυναμία δημιουργίας τοπικού φακέλου &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Επιβεβαίωση αφαίρεσης σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Αφαίρεση σύνδεσης συγχρονισμού φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Εκτελείται Συγχρονισμός </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Η λειτουργία συγχρονισμού εκτελείται.&lt;br/&gt; Θέλετε να την τερματίσετε;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 σε χρήση</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 ως &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
- <translation type="unfinished"/>
+ <translation>Η έκδοση του διακομιστή %1 είναι παλιά και δεν υποστηρίζεται! Προχωρείστε με δική σας ευθύνη.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Συνδεδεμένο με %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Ο διακομιστής %1 δεν είναι διαθέσιμος προσωρινά.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Αποσυνδέθηκε από %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Δεν υπάρχει σύνδεση με το %1 στο %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Είσοδος</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Υπάρχουν νέοι φάκελοι που δεν συγχρονίστηκαν καθώς είναι πολύ μεγάλοι:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Επιβεβαίωση Αφαίρεσης Λογαριασμού</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Θέλετε πραγματικά να αφαιρέσετε τη σύνδεση με το λογαριασμό &lt;i&gt;%1&lt;/i&gt;;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Σημείωση:&lt;/b&gt; Αυτό &lt;b&gt;δεν&lt;/b&gt; θα διαγράψει κανένα αρχείο.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Αφαίρεση σύνδεσης</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Άνοιγμα φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Συνέχιση συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Παύση συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Θέλετε πραγματικά να σταματήσετε το συγχρονισμό του φακέλου &lt;i&gt;%1&lt;/i&gt;;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Σημείωση:&lt;/b&gt; Αυτό &lt;b&gt;δεν&lt;/b&gt; θα διαγράψει κανένα αρχείο.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) από %2 σε χρήση. Μερικοί φάκελοι, συμπεριλαμβανομένων των δικτυακών ή των κοινόχρηστων μπορεί να έχουν διαφορετικά όρια.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 από %2 σε χρήση</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Προς το παρόν δεν υπάρχουν πληροφορίες χρήσης χώρου αποθήκευσης διαθέσιμες.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Δεν έχει ρυθμιστεί σύνδεση με το %1.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Αποσυνδεδεμένο</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Συνδεδεμένο</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Η υπηρεσία δεν είναι διαθέσιμη</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Σφάλμα δικτύου</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Σφάλμα ρυθμίσεων</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Άγνωστη κατάσταση λογαριασμού</translation>
</message>
@@ -330,70 +345,70 @@
<message>
<location filename="../src/gui/activityitemdelegate.cpp" line="145"/>
<source>%1 on %2</source>
- <translation type="unfinished"/>
+ <translation>%1 σε %2</translation>
</message>
<message>
<location filename="../src/gui/activityitemdelegate.cpp" line="147"/>
<source>%1 on %2 (disconnected)</source>
- <translation type="unfinished"/>
+ <translation>%1 σε %2 (αποσυνδεδεμένο)</translation>
</message>
</context>
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Δραστηριότητα διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Προτοκολο συγχρονισμου</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
- <translation type="unfinished"/>
+ <translation>Κατάλογος αρχείων που αγνοούνται ή περιέχουν σφάλματα</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Αντιγραφή</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Αντιγραφή της λίστας δραστηριότητας στο πρόχειρο.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Δεν είναι συγχρονισμένα</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
- <translation type="unfinished"/>
+ <translation>Δεν είναι συγχρονισμένα (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Ο κατάλογος δραστηριοτήτων του διακομιστή έχει αντιγραφθεί στο Πρόχειρο</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Ο κατάλογος της δραστηριότητας συγχρονισμού έχει αντιγραφθεί στο Πρόχειρο</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Ο κατάλογος των μη-συγχρονισμένων αρχείων έχει αντιγραφθεί στο Πρόχειρο</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Αντιγράφηκε στο πρόχειρο</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Δραστηριότητες διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Αντιγραφή</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Αντιγραφή της λίστας δραστηριότητας στο πρόχειρο.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
- <translation type="unfinished"/>
+ <translation>Απαιτείται ενέργεια: Ειδοποιήσεις</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
- <translation type="unfinished"/>
+ <translation>&lt;br/&gt;Ο λογαριασμός %1 δεν έχει ενεργοποιήσει τις δραστηριότητες.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Πιστοποιήστε τον κωδικό :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Επιλέξτε ένα πιστοποιητικό.</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Πιστοποιήστε τα αρχεία (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Απαιτείται Πιστοποίηση</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Εισάγετε όνομα χρήστη και κωδικό πρόσβασης για το &apos;%1&apos; στο %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Χρήστης:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Κωδικός Πρόσβασης:</translation>
</message>
@@ -522,40 +537,40 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Δεν έχει ρυθμιστεί λογαριασμός ownCloud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Ο ρυθμισμένος διακομιστής για αυτό το δέκτη είναι πολύ παλιός</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Παρακαλώ ενημερώστε το διακομιστή στη νεώτερη έκδοση και επανεκκινήστε το δέκτη.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Σφάλμα Πιστοποίησης: Το όνομα χρήστη ή ο κωδικός πρόσβασης είναι λανθασμένα.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>παρέλευση χρονικού ορίου</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Τα παρεχόμενα διαπιστευτήρια δεν είναι σωστά</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Λήξη χρόνου σύνδεσης.</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Ματαιώθηκε από το χρήστη</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Δεν υπάρχει ο τοπικός φάκελος %1.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>Το %1 θα έπρεπε να είναι φάκελος αλλά δεν είναι.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation> Το %1 δεν είναι αναγνώσιμο. </translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 αφαιρέθηκε.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 έχει ληφθεί.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>Το %1 έχει ενημερωθεί.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>Το %1 έχει μετονομαστεί σε %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>Το %1 έχει μετακινηθεί στο %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 δεν ήταν δυνατό να συγχρονιστεί εξαιτίας ενός σφάλματος. Δείτε το αρχείο καταγραφής για λεπτομέρειες.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Δραστηριότητα Συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Αδυναμία ανάγνωσης αρχείου αποκλεισμού συστήματος</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Ένας νέος φάκελος μεγαλύτερος από %1 MB έχει προστεθεί: %2.
Παρακαλούμε πηγαίνετε στις ρυθμίσεις για να επιλέξετε αν επιθυμείτε να τον κατεβάσετε.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,39 +715,39 @@ Are you sure you want to perform this operation?</source>
Είστε σίγουροι ότι θέλετε να εκτελέσετε αυτή τη λειτουργία;</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Αφαίρεση Όλων των Αρχείων;</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Αφαίρεση όλων των αρχείων</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Διατήρηση αρχείων</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
- <translation type="unfinished"/>
+ <translation>Ανιχνεύθηκε αντίγραφο ασφαλείας</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -740,112 +755,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Δεν ήταν δυνατό να επαναφερθεί η κατάσταση του φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Βρέθηκε ένα παλαιότερο αρχείο συγχρονισμού &apos;%1&apos;, αλλά δεν μπόρεσε να αφαιρεθεί. Παρακαλώ βεβαιωθείτε ότι καμμία εφαρμογή δεν το χρησιμοποιεί αυτή τη στιγμή.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(αντίγραφο ασφαλείας)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(αντίγραοφ ασφαλέιας %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Απροσδιόριστη Κατάσταση.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Αναμονή έναρξης συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Προετοιμασία για συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Ο συγχρονισμός εκτελείται.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Ο τελευταίος συγχρονισμός ήταν επιτυχής.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Ο τελευταίος συγχρονισμός ήταν επιτυχής, αλλά υπήρχαν προειδοποιήσεις σε συγκεκριμένα αρχεία.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Σφάλμα Ρύθμισης.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Ματαίωση από Χρήστη.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Παύση συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Παύση συγχρονισμού)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Δεν επιλέχθηκε έγκυρος φάκελος!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Η επιλεγμένη διαδρομή δεν είναι φάκελος!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Δεν έχετε δικαιώματα εγγραφής στον επιλεγμένο φάκελο!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Ο τοπικός φάκελος %1 χρησιμοποιείται ήδη σε μια σύνδεση συγχρονισμού φακέλου. Παρακαλώ επιλέξτε άλλον!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Ο τοπικός φάκελος %1 περιέχει ήδη ένα φάκελο που χρησιμοποιείται σε μια σύνδεση συγχρονισμού φακέλου. Παρακαλώ επιλέξτε άλλον!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Ο τοπικός φάκελος %1 είναι συμβολικός σύνδεσμος. Ο σύνδεσμος που παραπέμπει περιέχει ήδη ένα φάκελο που βρίσκεται σε συγχρονισμό. Παρακαλώ επιλέξτε άλλον!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Ο τοπικός φάκελος %1 περιέχεται ήδη σε φάκελο που χρησιμοποιείται σε μια σύνδεση συγχρονισμού. Παρακαλώ επιλέξτε άλλον!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Ο τοπικός φάκελος %1 είναι συμβολικός σύνδεσμος. Ο σύνδεσμος που παραπέμπει περιέχεται ήδη σε φάκελο που βρίσκεται σε συγχρονισμό. Παρακαλώ επιλέξτε άλλον!</translation>
</message>
@@ -860,7 +875,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="241"/>
<source>Synchronizing with local folder</source>
- <translation type="unfinished"/>
+ <translation>Συγχρονισμός με τοπικό φάκελο</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="285"/>
@@ -871,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Πρέπει να έχετε συνδεθεί για να προσθέσετε φάκελο</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Κάντε κλικ σε αυτό το κουμπί για να προσθέσετε ένα φάκελο προς συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Σφάλμα κατά τη φόρτωση της λίστας φακέλων από το διακομιστή.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Η επιλογή προσθήκης φακέλου δεν είναι διαθέσιμη καθώς συγχρονίζονται ήδη όλα τα αρχεία. Για να επιλέξετε συγχρονισμό φακέλων, αφαιρέστε τον αρχικό φάκελο που έχει ρυθμιστεί.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Λήψη λίστας φακέλων από το διακομιστή...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Έλεγχος αλλαγών στο &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Συγχρονισμός %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>λήψη %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>μεταφόρτωση %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 από %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 από %2, αρχείο %3 από %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>αρχείο %1 από %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Αναμονή...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Αναμονή για %n άλλο φάκελο...</numerusform><numerusform>Αναμονή για %n άλλους φακέλους...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Προετοιμασία για συγχρονισμό...</translation>
</message>
@@ -1104,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Δεν ελήφθη E-Tag από το διακομιστή, ελέγξτε το διακομιστή μεσολάβησης/πύλη</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Ελήφθη διαφορετικό E-Tag για συνέχιση. Επανάληψη την επόμενη φορά.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Ο διακομιστής επέστρεψε εσφαλμένο πεδίο τιμών</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Λήξη Χρόνου Αναμονής Σύνδεσης</translation>
</message>
@@ -1201,28 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Παρακαλούμε εισάγετε τον κωδικό %1:
-
-Χρήστης: %2
-Λογαριασμός: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Η ανάγνωση από την κλειδοθήκη απέτυχε με σφάλμα: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Εισάγετε Κωδικό Πρόσβασης</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1267,7 +1285,7 @@ Account: %3
<translation>Αφαίρεση</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1276,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Τα στοιχεία όπου επιτρέπεται η διαγραφή θα διαγράφονται εάν εμποδίζουν την αφαίρεση ενός φακέλου αρχείων. Αυτό είναι χρήσιμο για μετα-δεδομένα.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Αδυναμία ανοίγματος αρχείου</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Αδυναμία εγγραφής αλλαγών στο &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Προσθήκη Προτύπου Αγνόησης</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Προσθήκη νέου προτύπου αγνόησης:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Αυτή η είσοδος παρέχεται από το σύστημα στο &apos;%1&apos; και δεν μπορεί να τροποποιηθεί σε αυτή την προβολή.</translation>
</message>
@@ -1370,7 +1388,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Η σύνδεση έληξε.</translation>
</message>
@@ -1486,32 +1504,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Αυτόματος περιορισμός</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Όνομα συστήματος του ενδιάμεσου διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Όνομα χρήστη για τον ενδιάμεσο διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Κωδικός πρόσβασης για τον ενδιάμεσο διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Ενδιάμεσος HTTP(S) </translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Ενδιάμεσος SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Απαιτείται έκδοση Qt 5.4 ή νεώτερη, για να χρησιμοποιηθεί το όριο bandwidth</translation>
</message>
@@ -1519,23 +1537,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>Κλείσιμο σε λίγα δευτερόλεπτα...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1673,7 +1691,7 @@ for additional privileges during the process.</source>
<translation>Διαμόρφωση πιστοποιητικού TLS του δέκτη</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt; Αποτυχία σύνδεσης με ασφαλή διεύθυνση του διακομιστή &lt;em&gt;%1&lt;/em&gt;. Πώς θέλετε να συνεχίσετε;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1699,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Σύνδεση με %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Εισάγετε διαπιστευτήρια χρήστη</translation>
</message>
@@ -1729,139 +1747,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Επιτυχής σύνδεση στο %1: %2 έκδοση %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Αποτυχία σύνδεσης με το %1 στο %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Λήξη χρονικού ορίου κατά τη σύνδεση σε %1 σε %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Προσπάθεια σύνδεσης στο %1 για %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Η πιστοποιημένη αίτηση στον διακομιστή ανακατευθύνθηκε σε &apos;%1&apos;. Το URL είναι εσφαλμένο, ο διακομιστής δεν έχει διαμορφωθεί σωστά.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Υπήρξε μια άκυρη απόκριση σε μια πιστοποιημένη αίτηση </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Απαγόρευση πρόσβασης από τον διακομιστή. Για να επιβεβαιώσετε ότι έχετε δικαιώματα πρόσβασης, &lt;a href=&quot;%1&quot;&gt;πατήστε εδώ&lt;/a&gt; για να προσπελάσετε την υπηρεσία με το πρόγραμμα πλοήγησής σας.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Ο τοπικός φάκελος συγχρονισμού %1 υπάρχει ήδη, ρύθμιση για συγχρονισμό.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Δημιουργία τοπικού φακέλου συγχρονισμού %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>οκ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>απέτυχε.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Αδυναμία δημιουργίας τοπικού φακέλου %1 </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Δεν προσδιορίστηκε κανένας απομακρυσμένος φάκελος!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Σφάλμα: %1 </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>δημιουργία φακέλου στο ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Ο απομακρυσμένος φάκελος %1 δημιουργήθηκε με επιτυχία.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Ο απομακρυσμένος φάκελος %1 υπάρχει ήδη. Θα συνδεθεί για συγχρονισμό. </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Η δημιουργία φακέλου είχε ως αποτέλεσμα τον κωδικό σφάλματος HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Η δημιουργία απομακρυσμένου φακέλλου απέτυχε επειδή τα διαπιστευτήρια είναι λάθος!&lt;br/&gt;Παρακαλώ επιστρέψετε και ελέγξετε τα διαπιστευτήριά σας.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Η δημιουργία απομακρυσμένου φακέλου απέτυχε, πιθανώς επειδή τα διαπιστευτήρια που δόθηκαν είναι λάθος.&lt;/font&gt;&lt;br/&gt;Παρακαλώ επιστρέψτε πίσω και ελέγξτε τα διαπιστευτήρια σας.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Η δημιουργία απομακρυσμένου φακέλου %1 απέτυχε με σφάλμα &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Μια σύνδεση συγχρονισμού από τον απομακρυσμένο κατάλογο %1 σε %2 έχει ρυθμιστεί. </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Επιτυχής σύνδεση με %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Αδυναμία σύνδεσης στον %1. Παρακαλώ ελέξτε ξανά.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Αποτυχία μετονομασίας φακέλου</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Αδυναμία αφαίρεσης και δημιουργίας αντιγράφου ασφαλείας του φακέλου διότι ο φάκελος ή ένα αρχείο του είναι ανοικτό από άλλο πρόγραμμα. Παρακαλώ κλείστε τον φάκελο ή το αρχείο και πατήστε επανάληψη ή ακυρώστε την ρύθμιση.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Επιτυχής δημιουργία τοπικού φακέλου %1 για συγχρονισμό!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1887,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Οδηγός Σύνδεσης</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Παράλειψη διαμόρφωσης φακέλων</translation>
</message>
@@ -1900,7 +1918,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Λήξη Χρόνου Αναμονής Σύνδεσης</translation>
</message>
@@ -1908,7 +1926,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Λανθασμένη απάντηση JSON από την ιστοσελίδα poll</translation>
</message>
@@ -1916,57 +1934,57 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να ληφθεί λόγω διένεξης με το όνομα ενός τοπικού αρχείου!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Η λήψη θα μειώσει το διαθέσιμο χώρο στο δίσκο κάτω από %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Ο διαθέσιμος χώρος στο δίσκο είναι λιγότερος από %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Το αρχείο διαγράφηκε από τον διακομιστή</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Η λήψη του αρχείου δεν ολοκληρώθηκε.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να αποθηκευτεί λόγω διένεξης με το όνομα ενός τοπικού ονόματος αρχείου!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Το αρχείο έχει αλλάξει από όταν ανακαλύφθηκε</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
@@ -1992,7 +2010,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="155"/>
<source>could not delete file %1, error: %2</source>
- <translation type="unfinished"/>
+ <translation>αδυναμία διαγραφής αρχείου %1, σφάλμα: %2</translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="163"/>
@@ -2007,7 +2025,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
@@ -2036,20 +2054,21 @@ It is not advisable to use it.</source>
<translation>Το αρχείο %1 δεν είναι δυνατό να μετονομαστεί σε %2 λόγω μιας διένεξης με το όνομα ενός τοπικού αρχείου</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Το αρχείο αφαιρέθηκε από ένα διαμοιρασμένο κατάλογο μόνο για ανάγνωση. Το αρχείο επαναφέρθηκε.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Ο διακομιστής επέστρεψε εσφαλμένο κωδικό HTTP. Αναμενόταν 204, αλλά ελήφθη &quot;%1 %2&quot;.</translation>
</message>
@@ -2064,84 +2083,125 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Αυτός ο φάκελος δεν πρέπει να μετονομαστεί. Μετονομάζεται πίσω στο αρχικό του όνομα.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Αυτός ο φάκελος δεν πρέπει να μετονομαστεί. Παρακαλώ ονομάστε τον ξανά Κοινόχρηστος.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Το αρχείο μετονομάστηκε αλλά είναι τμήμα ενός διαμοιρασμένου καταλόγου μόνο για ανάγνωση. Το αρχικό αρχείο επαναφέρθηκε.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Ο διακομιστής επέστρεψε εσφαλμένο κωδικό HTTP. Αναμενόταν 201, αλλά ελήφθη &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Το αρχείο αφαιρέθηκε</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τη διάρκεια του συγχρονισμού. Θα συγχρονιστεί πάλι.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Σφάλμα εγγραφής μεταδεδομένων στην βάση δεδομένων</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Εξαναγκασμός ακύρωσης εργασίας στην επαναφορά σύνδεσης HTTP με Qt &lt; 5.4.2</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Το τοπικό αρχείο αφαιρέθηκε κατά το συγχρονισμό.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Εξαναγκασμός ακύρωσης εργασίας στην επαναφορά σύνδεσης HTTP με Qt &lt; 5.4.2</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Η διεύθυνση poll URL λείπει</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Το τοπικό αρχείο αφαιρέθηκε κατά το συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Ο διακομιστής δεν αναγνώρισε το τελευταίο τμήμα. (Δεν υπήρχε e-tag)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Ο διακομιστής δεν αναγνώρισε το τελευταίο τμήμα. (Δεν υπήρχε e-tag)</translation>
</message>
</context>
<context>
@@ -2157,42 +2217,42 @@ It is not advisable to use it.</source>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Ώρα</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Αρχείο</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Φάκελος</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Ενέργεια</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Μέγεθος</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
- <translation type="unfinished"/>
+ <translation>Πρωτόκολλο τοπικού συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Αντιγραφή</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Αντιγραφή της λίστας δραστηριότητας στο πρόχειρο.</translation>
</message>
@@ -2279,7 +2339,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/selectivesyncdialog.cpp" line="247"/>
<source>An error occurred while loading the list of sub folders.</source>
- <translation type="unfinished"/>
+ <translation>Παρουσιάστηκε σφάλμα κατά την φόρτωση της λίστας των υπο-φακέλων</translation>
</message>
</context>
<context>
@@ -2290,22 +2350,22 @@ It is not advisable to use it.</source>
<translation>Ρυθμίσεις</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Δραστηριότητα</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Γενικά</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Δίκτυο</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Λογαριασμός</translation>
</message>
@@ -2313,27 +2373,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Δραστηριότητα</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Γενικά</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Δίκτυο</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Λογαριασμός</translation>
</message>
@@ -2361,32 +2421,32 @@ It is not advisable to use it.</source>
<translation>Διαδρομή ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Διαμοιράστηκε</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Φάκελος: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
- <translation type="unfinished"/>
+ <translation>Ο διακομιστής δεν επιτρέπει τον διαμοιρασμό</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Το αρχείο δεν μπορεί να διαμοιραστεί γιατί διαμοιράστηκε χωρίς δικαιώματα διαμοιρασμού.</translation>
</message>
@@ -2425,43 +2485,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Αντιγραφή &amp;συνδέσμου</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Επιτρέπεται η επεξεργασία</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Π&amp;ροστασία με κωδικό</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Προστατευμένο με κωδικό πρόσβασης</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Το αρχείο δεν μπορεί να διαμοιραστεί γιατί διαμοιράστηκε χωρίς δικαιώματα διαμοιρασμού.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Ο δημόσιος &amp;διαμοιρασμός απαιτεί κωδικό πρόσβασης</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Παρακαλούμε ορίστε Κωδικό</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Δ&amp;ιαμοιρασμός συνδέσμου</translation>
</message>
@@ -2479,9 +2554,9 @@ It is not advisable to use it.</source>
<translation>Διαμοιρασμός με χρήστες ή ομάδες ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Κανένα αποτέλεσμα για &apos;%1&apos;</translation>
</message>
</context>
<context>
@@ -2512,17 +2587,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>δημιουργία</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>αλλαγή</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>διαγραφή</translation>
</message>
@@ -2530,12 +2605,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Σφάλμα Σύνδεσης</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Πρέπει να εισέλθετε σαν χρήστης %1</translation>
</message>
@@ -2543,17 +2618,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Πιστοποίηση</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Απαιτείται επανάληψη πιστοποίησης</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Η συνεδρία σας έληξε. Πρέπει να εισέλθετε ξανά για να συνεχίσετε να χρησιμοποιείτε το πρόγραμμα.</translation>
</message>
@@ -2561,7 +2641,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Διαμοιρασμός με %1</translation>
@@ -2570,119 +2650,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Λεπτομέρειες Πιστοποιητικού&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Κοινό Όνομα (ΚΟ):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Εναλλακτικά Ονόματα Υποκειμένου:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Οργανισμός (Ο):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Μονάδα Οργανισμού (ΜΟ):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Νομός/Περιφέρεια:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Χώρα:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Σειριακός αριθμός:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Εκδότης&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Εκδότης:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Εκδόθηκε στις:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Λήγει στις:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Αποτυπώματα&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>p&gt;&lt;b&gt;Σημείωση:&lt;/b&gt; Αυτό το πιστοποιητικό εγκρίθηκε χειροκίνητα&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (αυτό-πιστοποιημένο)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Η σύνδεση είναι κρυπτογραφημένη με %1 bit %2
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Χωρίς υποστήριξη για ταυτοποιητές συνεδρίας SSL</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Πληροφορίες πιστοποιητικού:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Αυτή η σύνδεση δεν είναι ασφαλής καθώς δεν είναι κρυπτογραφημένη.
@@ -2770,270 +2850,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Επιτυχία.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>Το CSync απέτυχε να φορτώσει ο αρχείο καταλόγου. Το αρχείο καταλόγου έχει καταστραφεί.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Το πρόσθετο του %1 για το csync δεν μπόρεσε να φορτωθεί.&lt;br/&gt;Παρακαλούμε επαληθεύσετε την εγκατάσταση!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Το CSync έλαβε κάποιο μήνυμα λάθους κατά την επεξεργασία της εσωτερικής διεργασίας.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Το CSync απέτυχε να δεσμεύσει μνήμη.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Μοιραίο σφάλμα παράμετρου CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Η ενημέρωση του βήματος επεξεργασίας του CSync απέτυχε.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync στάδιο επεξεργασίας συμφιλίωση απέτυχε. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>Το CSync δεν μπόρεσε να πιστοποιηθεί στο διακομιστή μεσολάβησης.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>Το CSync απέτυχε να διερευνήσει το διαμεσολαβητή ή το διακομιστή.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>Το CSync απέτυχε να πιστοποιηθεί στο διακομιστή 1%. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>Το CSync απέτυχε να συνδεθεί με το δίκτυο.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Διακοπή σύνδεσης δικτύου λόγω παρέλευσης χρονικού ορίου.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Ένα σφάλμα μετάδοσης HTTP συνέβη.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Ο προσαρτημένος φάκελος δεν είναι διαθέσιμος στον δικομιστή προσωρινά</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Παρουσιάστηκε σφάλμα κατά το άνοιγμα του φακέλου</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Σφάλμα κατά την ανάγνωση του φακέλου.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
- <translation type="unfinished"/>
+ <translation>Το Αρχείο/ο Φάκελος αγνοήθηκε επειδή είναι κρυφό.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Μόνο %1 είναι διαθέσιμα, απαιτούνται τουλάχιστον %2 για την εκκίνηση</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε γονικό κατάλογο</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε αρχεία σε αυτόν τον φάκελο</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Δεν υπάρχει διαθέσιμος χώρος στο διακομιστή 1%.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Άγνωστο σφάλμα CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Ματαιώθηκε από το χρήστη</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Το όνομα αρχείου περιέχει χαρακτήρες που δεν μπορούν να συγχρονιστούν σε όλα τα συστήματα.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>Το CSync απέτυχε να αποκτήσει πρόσβαση</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>Το CSync απέτυχε να φορτώσει ή να δημιουργήσει το αρχείο καταγραφής. Βεβαιωθείτε ότι έχετε άδεια ανάγνωσης και εγγραφής στον τοπικό κατάλογο συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>Το CSync απέτυχε λόγω κατάστασης &quot;permission denied&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>Το CSync προσπάθησε να δημιουργήσει φάκελο που υπάρχει ήδη.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Η υπηρεσία δεν είναι διαθέσιμη προσωρινά</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
- <translation type="unfinished"/>
+ <translation>Δεν επιτρέπεται η πρόσβαση</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Προέκυψε ένα εσωτερικό σφάλμα με αριθμό %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Το αντικείμενο δεν είναι συγχρονισμένο λόγω προηγούμενων σφαλμάτων: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Οι συμβολικού σύνδεσμοι δεν υποστηρίζονται για το συγχρονισμό.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Το αρχείο περιέχεται στη λίστα αρχείων προς αγνόηση.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Το όνομα αρχείου είνια πολύ μεγάλο.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Απέτυχε.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Η κωδικοποίηση του ονόματος αρχείου δεν είναι έγκυρη</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Μη έγκυροι χαρακτήρες, παρακαλώ μετονομάστε το &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Αδυναμία προετοιμασίας αρχείου συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
- <translation type="unfinished"/>
+ <translation>Αδυναμία ανάγνωσης της μαύρης λίστας από την τοπική βάση δεδομένων</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Αδυναμία ανοίγματος του αρχείου συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Αγνοήθηκε εξαιτίας της μαύρης λίστας &quot;διάλεξε τι να συγχρονιστεί&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Δεν επιτρέπεται επειδή δεν έχετε δικαιώματα να προσθέσετε υποφακέλους σε αυτό τον φάκελο</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Δεν επιτρέπεται να μεταφορτώσετε αυτό το αρχείο επειδή είναι μόνο για ανάγνωση στο διακομιστή, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Δεν επιτρέπεται η αφαίρεση, αποκατάσταση σε εξέλιξη</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Οι τοπικοί φάκελοι και ο φάκελος κοινής χρήσης αφαιρέθηκαν.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Η μετακίνηση δεν επιτρέπεται, το αντικείμενο αποκαταστάθηκε</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Η μετακίνηση δεν επιτρέπεται επειδή το %1 είναι μόνο για ανάγνωση</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>ο προορισμός</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>η προέλευση</translation>
</message>
@@ -3043,7 +3128,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/synclogdialog.ui" line="14"/>
<source>Synchronisation Log</source>
- <translation type="unfinished"/>
+ <translation>Ιστορικό συγχρονισμού</translation>
</message>
</context>
<context>
@@ -3057,17 +3142,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Έκδοση %1. Για περισσότερες πληροφορίες δείτε &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Πνευματικά δικαιώματα ownCloud, Ανώνυμη Εταιρία&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Διανέμεται από 1% και υπό την άδεια GNU General Public License (GPL) έκδοση 2.0.&lt;br/&gt;% 2 και το 2% το λογότυπο είναι σήματα κατατεθέντα της 1% στις Ηνωμένες Πολιτείες, άλλες χώρες, ή και τα δύο.&lt;/ p&gt;</translation>
</message>
@@ -3093,202 +3178,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Παρκαλώ συνδεθείτε</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Φάκελος %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Δεν έχουν οριστεί φάκελοι συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Δεν έχουν ρυθμιστεί φάκελοι συγχρονισμού.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Άνοιγμα στον περιηγητή ιστού</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Σύνδεση...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Πρόσφατες Αλλαγές</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Έλεγχος αλλαγών στο &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Φάκελοι υπό Διαχείριση:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Άνοιγμα φακέλου &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Άνοιγμα %1 στον περιηγητή</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Άγνωστη κατάσταση</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Ρυθμίσεις...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Λεπτομέρειες...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Βοήθεια</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Κλείσιμο %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Αποσυνδέθηκε από %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
- <translation type="unfinished"/>
+ <translation>Μη υποστηριζόμενη έκδοση διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Αποσυνδέθηκε από τους λογαριασμούς:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Λογαριασμός %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
- <translation type="unfinished"/>
+ <translation>Ο λογαριασμός συγχρονισμού έχει απενεργοποιηθεί</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
- <translation type="unfinished"/>
+ <translation>Αναίρεση παύσης όλων των φακέλων</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
- <translation type="unfinished"/>
+ <translation>Παύση όλων των φακέλων</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>Αναίρεση παύσης όλων των συγχρονισμών</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
- <translation type="unfinished"/>
+ <translation>Αναίρεση παύσης συγχρονσμού</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>Παύση όλων των συγχρονισμών</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
- <translation type="unfinished"/>
+ <translation>Παύση συγχρονισμού</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Έξοδος από όλους τους λογαριασμούς</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Είσοδος σε όλους τους λογαριασμούς</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Κατάρρευση τώρα</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Κανένα στοιχείο δεν συγχρονίστηκε πρόσφατα</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Συγχρονισμός %1 από %2 (%3 απομένουν)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Συγχρονισμός %1 (%2 απομένουν)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Συγχρονισμός %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Ενημερωμένο</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Έκδοση %2. Για περισσότερες πληροφορίες επισκεφθείτε &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Των Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz και άλλων.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Πνευματικά δικαιώματα ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Αδειοδότηση υπό την GNU General Public License (GPL) Έκδοση 2.0&lt;br/&gt;το ownCloud και το λογότυπο ownCloud είναι σήματα κατατεθέντα της ownCloud, Inc. στις Η.Π.Α., σε άλλες χώρες ή και στα δύο&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3303,9 +3403,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3325,7 +3425,7 @@ It is not advisable to use it.</source>
<translation>&amp;Έναρξη καθαρού συγχρονισμού (Διαγράφει τον τοπικό φάκελο!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Επιλέξτε τι θα συγχρονιστεί</translation>
</message>
@@ -3350,7 +3450,7 @@ It is not advisable to use it.</source>
<translation>Σ&amp;υγχρονισμός όλων από τον διακομιστή</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Μήνυμα κατάστασης</translation>
</message>
@@ -3363,26 +3463,15 @@ It is not advisable to use it.</source>
<translation>Φόρμα</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Όνομα Χρήστη</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Κωδικός Πρόσβασης</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Ετικέτα Σφάλματος</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,45 +3588,45 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
- <translation type="unfinished"/>
+ <translation>QT_LAYOUT_DIRECTION</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
- <translation type="unfinished"/>
+ <translation>στο μέλλον</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
- <translation type="unfinished"/>
+ <translation>τώρα</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
- <translation type="unfinished"/>
+ <translation>Λιγότερο από ένα λεπτό πριν</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3545,57 +3634,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n χρόνος</numerusform><numerusform>%n χρόνια</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3705,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Δημιουργήθηκε από την διασκευή Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; στο %3, %4 χρησιμοποιώντας Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3713,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Ελήφθη</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Μεταφορτώθηκε</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Διεγράφη</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Μετακινήθηκαν στο %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Αγνοήθηκε</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Σφάλμα πρόσβασης στο σύστημα αρχείων</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Άγνωστο</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>λήψη</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>μεταφόρτωση</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>διαγραφή</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>μετακίνηση</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>αγνοείται</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>σφάλμα </translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_en.ts b/translations/client_en.ts
index 83dddf26f..0006e0b7f 100644
--- a/translations/client_en.ts
+++ b/translations/client_en.ts
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="en_US">
+<TS version="2.1" language="en_US">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation type="unfinished"></translation>
</message>
@@ -106,14 +106,29 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -123,168 +138,168 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation type="unfinished"></translation>
</message>
@@ -292,37 +307,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation type="unfinished"></translation>
</message>
@@ -343,59 +358,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation type="unfinished"></translation>
</message>
@@ -415,32 +430,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -448,7 +463,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -456,12 +471,12 @@
</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"></translation>
</message>
@@ -494,12 +509,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation type="unfinished"></translation>
</message>
@@ -507,22 +522,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation type="unfinished"></translation>
</message>
@@ -530,7 +545,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
@@ -538,32 +553,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation type="unfinished"></translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation type="unfinished"></translation>
</message>
@@ -579,7 +594,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation type="unfinished"></translation>
</message>
@@ -587,57 +602,57 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -645,7 +660,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -653,7 +668,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -661,7 +676,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -669,7 +684,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -677,7 +692,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -685,12 +700,12 @@
</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -698,67 +713,67 @@
</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder &apos;%1&apos;.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder &apos;%1&apos;.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"></translation>
</message>
@@ -766,112 +781,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"></translation>
</message>
@@ -897,122 +912,128 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing &apos;foo.txt&apos;, &apos;bar.txt&apos;&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1020,7 +1041,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation type="unfinished"></translation>
</message>
@@ -1133,22 +1154,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation type="unfinished"></translation>
</message>
@@ -1230,24 +1251,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1292,34 +1314,34 @@ Account: %3
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation type="unfinished"></translation>
</message>
@@ -1393,7 +1415,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation type="unfinished"></translation>
</message>
@@ -1509,32 +1531,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"></translation>
</message>
@@ -1542,23 +1564,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as &apos;failed at 09:58pm&apos;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as &apos;selected at 09:58pm&apos;</extracomment>
<translation type="unfinished"></translation>
@@ -1695,7 +1717,7 @@ for additional privileges during the process.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1703,17 +1725,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation type="unfinished"></translation>
</message>
@@ -1750,139 +1772,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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 type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1890,12 +1912,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -1921,7 +1943,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation type="unfinished"></translation>
</message>
@@ -1929,7 +1951,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"></translation>
</message>
@@ -1937,55 +1959,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
@@ -2057,7 +2079,8 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
@@ -2065,12 +2088,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"></translation>
</message>
@@ -2091,77 +2114,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -2178,42 +2242,42 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"></translation>
</message>
@@ -2311,22 +2375,22 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
@@ -2334,27 +2398,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
@@ -2382,32 +2446,32 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"></translation>
</message>
@@ -2446,43 +2510,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,7 +2579,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -2533,17 +2612,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation type="unfinished"></translation>
</message>
@@ -2551,12 +2630,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"></translation>
</message>
@@ -2564,17 +2643,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"></translation>
</message>
@@ -2582,7 +2666,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"></translation>
@@ -2591,118 +2675,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation type="unfinished"></translation>
@@ -2789,270 +2873,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation type="unfinished"></translation>
</message>
@@ -3076,17 +3165,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -3112,201 +3201,216 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3322,9 +3426,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
@@ -3344,7 +3448,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation type="unfinished"></translation>
</message>
@@ -3369,7 +3473,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation type="unfinished"></translation>
</message>
@@ -3382,26 +3486,15 @@ It is not advisable to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3518,7 +3611,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"></translation>
</message>
@@ -3526,12 +3619,12 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3539,7 +3632,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3547,17 +3640,17 @@ It is not advisable to use it.</source>
</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3565,7 +3658,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"></translation>
</message>
@@ -3573,27 +3666,27 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3601,7 +3694,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3609,7 +3702,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3617,7 +3710,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3625,7 +3718,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3633,7 +3726,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -3641,7 +3734,7 @@ It is not advisable to use it.</source>
</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation type="unfinished"></translation>
</message>
@@ -3662,7 +3755,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -3670,82 +3763,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_es.ts b/translations/client_es.ts
index 0ac5d4ab3..2f3fcc1c1 100644
--- a/translations/client_es.ts
+++ b/translations/client_es.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>El archivo destino tiene un tamaño o fecha/hora de modificación no esperado.</translation>
</message>
@@ -22,7 +22,7 @@
<message>
<location filename="../src/gui/folderwizardsourcepage.ui" line="44"/>
<source>&amp;Choose...</source>
- <translation>&amp;Seleccionar</translation>
+ <translation>&amp;Seleccionar...</translation>
</message>
</context>
<context>
@@ -104,14 +104,29 @@
<translation>Las carpetas no seleccionadas serán &lt;b&gt;eliminadas&lt;/b&gt; de su sistema de archivos local y ya no serán sincronizadas con este ordenador</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Sincronizar todo</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>No sincronizar nada</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Aplicar cambios manuales</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplicar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Conectado a &lt;server&gt; como &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>No se ha configurado ninguna cuenta.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Añadir nuevo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Eliminar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Elija qué sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Eliminar la sincronización de carpetas conectadas</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Hubo un fallo al crear la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;No se pudo crear la carpeta local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Confirme la sincronización para la eliminación de la carpeta conectada</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Eliminar carpeta de sincronización conectada</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sincronización en curso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>La sincronización está en curso.&lt;br/&gt;¿Desea interrumpirla?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 en uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 como &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>La versión del servidor %1 es antigua, ¡y no está soportada! Si continúas, lo haces bajo tu propio riesgo.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Conectado a %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Servidor %1 no está disponible temporalmente.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Cerró sesión desde %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Sin conexión a %1 en %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Iniciar sesión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Hay carpetas nuevas que no fueron sincronizadas porque son demasiado grandes:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmar eliminación de cuenta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;¿De verdad quiere eliminar la conexión a la cuenta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Esto &lt;b&gt;no&lt;/b&gt; eliminará los archivos.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Eliminar conexión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Abrir carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Cerrar sesión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Continuar sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausar sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;¿De verdad quiere dejar de sincronizar la carpeta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Esto &lt;b&gt;no&lt;/b&gt; elminará los archivo.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 en uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actualmente no hay información disponible sobre el uso de almacenamiento.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>No hay ninguna conexión de %1 configurada.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Cerrar sesión</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Conectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Servicio no disponible</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Error en la red</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Error en la configuración</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estado de cuenta desconocido</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Actividad del servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocolo de Sincronización</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lista de archivos erróneos o ignorados</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copie la lista de actividades al portapapeles</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>No sincronizado</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>No Sincronizado (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>La lista de la actividad del servidor se ha copiado en el portapapeles.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>La lista de actividades de sincronización se ha copiado en el portapapeles.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>La lista de elementos no sincronizados se ha copiado al portapapeles.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiado al portapapeles</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Etiqueta de texto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Actividades del servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copie la lista de actividades al portapapeles</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Acción a realizar: Notificaciones</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;La cuenta %1 no tiene actividades habilitadas.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Ha recibido %n nueva notificación de %2.</numerusform><numerusform>Ha recibido %n nueva notificacióne(s) de %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Ha recibido %n nueva notificación de %1 y de %2.</numerusform><numerusform>Ha recibido %n nuevas notificacióne(s) de %1 y de %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Ha recibido nuevas notificaciónes de %1, %2 y otras cuentas.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Notificaciones - Acción requerida</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Contraseña del certificado:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Seleccione un certificado</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Archivos de certificado (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Se requiere autenticación</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Introducir usuario y contraseña para &apos;%1&apos; en %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Usuario:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Contraseña:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Error al escribir los metadatos en la base de datos</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>No se ha configurado ninguna cuenta de ownCloud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>La configuración del servidor para este cliente está obsoleta</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Por favor, actualice a la última versión del servidor y reinicie el cliente</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Error de autenticación: El usuario o la contraseña son incorrectos</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>tiempo de espera</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Las credenciales proporcionadas no son correctas</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Tiempo de conexión agotado</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Interrumpido por el usuario</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>La carpeta local %1 no existe.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 debería ser un directorio, pero no lo es.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 es ilegible.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido eliminado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido descargado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido actualizado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 ha sido renombrado a %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 ha sido movido a %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 y otro archivo han sido borrados.</numerusform><numerusform>%1 y otros %n archivos han sido borrados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 y otro archivo han sido descargados.</numerusform><numerusform>%1 y otros %n archivos han sido descargados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 y otro archivo han sido actualizados.</numerusform><numerusform>%1 y otros %n archivos han sido actualizados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 ha sido renombrado a %2 y otro archivo ha sido renombrado.</numerusform><numerusform>%1 ha sido renombrado a %2 y otros %n archivos han sido renombrado.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 ha sido movido a %2 y otro archivo ha sido movido.</numerusform><numerusform>%1 ha sido movido a %2 y otros %n archivos han sido movidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 y otro archivo han tenido conflictos al sincronizar.</numerusform><numerusform>%1 y otros %n archivos han tenido conflictos al sincronizar.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>Conflicto al sincronizar %1. Por favor compruebe el archivo!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 y otro archivo no pudieron ser sincronizados debido a errores. Para más detalles vea el registro.</numerusform><numerusform>%1 y otros %n archivos no pudieron ser sincronizados debido a errores. Para más detalles vea el registro.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 no pudo ser sincronizado debido a un error. Para más detalles, vea el registro.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Actividad de la sincronización</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>No se ha podido leer el archivo de exclusión del sistema</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Se ha añadido una nueva carpeta más grande de %1 MB: %2.
Por favor diríjase a los ajustes para seleccionarlo si desea descargarlo.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,41 @@ 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/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>¿Eliminar todos los archivos?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Eliminar todos los archivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Conservar archivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Esta sincronización reseteará el estado de los archivos en la carpeta &apos;%1&apos;.
-esto es similar a restaurar un backup en el servidor.
-Continuar con la sincronización hará que todos los archivos sean sobreescritos con versiones anteriores de los mismos. Desea mantener los archivos locales sin cambios en caso de conflicto?</translation>
+ <translation>Esta sincronización reseteará los archivos en la carpeta &apos;%1&apos; a una versión previa.
+Esto puede deberse a que una copia de seguridad fue restaurada en el servidor.
+Si continua con la sincronización todos los archivos serán remplazados por su versión previa. ¿Desea mantener los archivos locales en su versión actual como archivos en conflicto?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup detectado</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Sincronización Normal</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Mantener los archivos locales en caso de conflicto</translation>
</message>
@@ -742,112 +757,112 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>No se ha podido restablecer el estado de la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Se ha encontrado un antiguo registro de sincronización &apos;%1&apos;; pero no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación la esté utilizando.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(copia de seguridad)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(copia de seguridad %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estado no definido.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Esperando para comenzar la sincronización.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Preparándose para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Sincronización en funcionamiento.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>La última sincronización se ha realizado con éxito.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>La última sincronización salió bien; pero hay advertencias para archivos individuales.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Error de configuración.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Interrumpido por el usuario.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>La sincronización está en pausa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Sincronización en pausa)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>¡La carpeta seleccionada no es válida!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>¡La ruta seleccionada no es un directorio!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>¡Usted no tiene permiso para escribir en la carpeta seleccionada!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>El directorio local %1 ya se usa en una conexión de sincronización de directorios. Por favor, elija otro.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>El directorio local %1 es un enlace simbólico. El objetivo del enlace ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>El directorio local %1 es un enlace simbólico. El objetivo está incluido en un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro.</translation>
</message>
@@ -873,127 +888,133 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Necesita estar conectado para añadir una carpeta</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Haga clic en este botón para añadir una carpeta a sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Error mientras se cargaba la lista de carpetas desde el servidor.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Cerrar sesión</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Añadir carpetas está deshabilitado debido a que ya están sincronizándose todos sus archivos. Si desea sincronizar múltiples carpeta, elimine la carpeta raíz actualmente configurada.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Obtención de lista de carpetas del servidor...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Buscando cambios en &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sincronizando %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>descargando: %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>cargar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 restantes, %1 de %2, archivo %3 de %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, archivo %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>archivo %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Esperando...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Esperando por %n carpeta...</numerusform><numerusform>Esperando por %n otras carpetas...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Preparando para sincronizar...</translation>
</message>
@@ -1106,22 +1127,22 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>No se ha recibido ninguna e-tag del servidor, revise el proxy/puerta de enlace</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Se ha recibido una e-tag distinta para reanudar. Se volverá a intentar.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>El servidor ha devuelto un content-range erróneo</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Tiempo de espera de conexión agotado</translation>
</message>
@@ -1203,28 +1224,25 @@ Continuar con la sincronización hará que todos los archivos sean sobreescritos
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Por favor introduzca la contraseña de %1:
-
-Usuario: %2
-Cuenta: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Por favor introduzca la contraseña de %1:&lt;br&gt;&lt;br&gt;Usuario: %2&lt;br&gt;Cuenta: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>La lectura del llavero ha fallado y ha generado este error: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Introduzca la contraseña</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Haga clic aquí&lt;/a&gt; para solicitar una contraseña de aplicación desde la interfaz web.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1287,7 @@ Cuenta: %3
<translation>Eliminar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Los elementos cuya eliminación está permitida serán eliminados si impiden que un directorio sea eliminado. Esto es útil para sus metadatos.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>No se ha podido abrir el archivo</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>No se pueden guardar cambios en &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Añadir patrón para ignorar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Añadir nuevo patrón para ignorar:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Esta entrada la proporciona el sistema en &apos;%1&apos; y no se puede modificar en esta vista.</translation>
</message>
@@ -1372,7 +1390,7 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Tiempo de conexión agotado</translation>
</message>
@@ -1488,32 +1506,32 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que
<translation>Limitar automáticamente</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nombre del host para servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nombre de usuario para el servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Contraseña para el servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 necesario para utilizar el límite de ancho de banda</translation>
</message>
@@ -1521,23 +1539,23 @@ Los elementos cuya eliminación está permitida serán eliminados si impiden que
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Creado en %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Cerrando en pocos segundos...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 petición fallida en %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; seleccionado en %2</translation>
@@ -1674,7 +1692,7 @@ for additional privileges during the process.</source>
<translation>Configurar certificado TLS del Cliente</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Fallo al conectar con la dirección del servidor seguro &lt;em&gt;%1&lt;/em&gt;. ¿Cómo desea proceder&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1682,17 +1700,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Email</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Conectar a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Introduzca las credenciales de usuario</translation>
</message>
@@ -1730,139 +1748,139 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Conectado con éxito a %1: versión %2 %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Fallo al conectar %1 a %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Tiempo de espera agotado mientras se intentaba conectar a %1 en %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Intentando conectar a %1 desde %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>La petición autenticada al servidor ha sido redirigida a &apos;%1&apos;. La dirección URL es errónea, el servidor está mal configurado.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Ha habido una respuesta no válida a una solicitud autenticada de webdav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Acceso denegado por el servidor. Para verificar que usted tiene acceso, &lt;a href=&quot;%1&quot;&gt;haga clic aquí&lt;/a&gt; para acceder al servicio con su navegador.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Creando carpeta de sincronización local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>bien</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>ha fallado.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>No se ha podido crear la carpeta local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>¡No se ha especificado ninguna carpeta remota!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Error: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>creando carpeta en ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Carpeta remota %1 creado correctamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>La carpeta remota %1 ya existe. Conectándola para sincronizacion.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>La creación de la carpeta ha producido el código de error HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!&lt;br/&gt;Por favor, vuelva atrás y compruebe sus credenciales&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.&lt;/font&gt;&lt;br/&gt;Por favor, vuelva atrás y compruebe sus credenciales.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Creación %1 de carpeta remota ha fallado con el error &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>¡Conectado con éxito a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Error al renombrar la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>No se puede eliminar y respaldar la carpeta porque la misma o un fichero en ella está abierto por otro programa. Por favor, cierre la carpeta o el fichero y reintente, o cancele la instalación.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Carpeta de sincronización local %1 creada con éxito&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1870,12 +1888,12 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Asistente de conexión %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Omitir la configuración de carpetas</translation>
</message>
@@ -1901,7 +1919,7 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Tiempo de espera de conexión agotado</translation>
</message>
@@ -1909,7 +1927,7 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Respuesta JSON invalida desde URL</translation>
</message>
@@ -1917,55 +1935,55 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Error al escribir los metadatos en la base de datos</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>La descarga reduciría el espacio libre en disco por debajo de %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>El espacio libre en el disco es inferior a %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Se ha eliminado el archivo del servidor</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>No se ha podido descargar el archivo completamente.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>¡El fichero %1 no puede guardarse debido a un conflicto con el nombre de otro fichero local!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>El archivo ha cambiado desde que fue descubierto</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Error al escribir los metadatos en la base de datos</translation>
</message>
@@ -2037,7 +2055,8 @@ No se recomienda usarla.</translation>
<translation>El archivo %1 no se puede renombrar a %2 por causa de un conflicto con el nombre de un archivo local</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Error al escribir los metadatos en la base de datos</translation>
</message>
@@ -2045,12 +2064,12 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>El archvo fue eliminado de una carpeta compartida en modo de solo lectura. Ha sido recuperado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>El código HTTP devuelto por el servidor es erróneo. Esperado 204, pero recibido &quot;%1 %2&quot;.</translation>
</message>
@@ -2071,78 +2090,119 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Esta carpeta no debe ser renombrada. Ha sido renombrada a su nombre original</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Esta carpeta no debe ser renombrada. Favor de renombrar a Compartida.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>El archivo fue renombrado, pero es parte de una carpeta compartida en modo de solo lectura. El archivo original ha sido recuperado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>El código HTTP devuelto por el servidor es erróneo. Esperado 201, pero recibido &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Error al escribir los metadatos en la base de datos</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Archivo eliminado</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Archivo local cambió durante la sincronización. Será actualizado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Un archivo local fue modificado durante la sincronización.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Error al escribir los metadatos en la base de datos</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Forzar el trabajo en una conexión HTTP, causará un Reset si Qt&lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>El archivo local ha sido eliminado durante la sincronización.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Un archivo local fue modificado durante la sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Respuesta inesperada del servidor (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Perdido archivo ID del servidor</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Perdido ETag del servidor</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Forzar el trabajo en una conexión HTTP, causará un Reset si Qt&lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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 sólo lectura. Ha sido recuperado y su modificación está en el archivo de conflicto.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Falta la URL de la encuesta</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>El archivo local ha sido eliminado durante la sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>El servidor no reconoció la última parte. (No había una e-tag presente)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Un archivo local fue modificado durante la sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Error al escribir los metadatos en la base de datos</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>El servidor no reconoció la última parte. (No había una e-tag presente)</translation>
</message>
</context>
<context>
@@ -2158,42 +2218,42 @@ No se recomienda usarla.</translation>
<translation>Etiqueta de texto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Archivo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Acción</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocolo de sincronización local</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copie la lista de actividades al portapapeles</translation>
</message>
@@ -2291,22 +2351,22 @@ No se recomienda usarla.</translation>
<translation>Ajustes</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2314,27 +2374,27 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2362,32 +2422,32 @@ No se recomienda usarla.</translation>
<translation>Ruta de OwnCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Compartiendo</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Carpeta: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>El servidor no permite compartir</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Descargando el maximo número de permisos compartidos del servidor...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El archivo no puede compartirse; ya que fue compartido sin permisos correspondientes.</translation>
</message>
@@ -2426,43 +2486,58 @@ No se recomienda usarla.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>Enlace &amp;Correo</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copiar &amp;enlace</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permitir edición</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Protegido por contr&amp;aseña </translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protegido con contraseña</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>El archivo no puede compartirse; ya que fue compartido sin permisos correspondientes.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Compartir public&amp;amente requiere contraseña</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Por favor establece una contraseña</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>No se pudo abrir el cliente de correo</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Ocurrió un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Compartir enlace</translation>
</message>
@@ -2480,7 +2555,7 @@ No se recomienda usarla.</translation>
<translation>Compartir con usuarios o grupos ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>No hay resultados para &apos;%1&apos;</translation>
</message>
@@ -2513,17 +2588,17 @@ No se recomienda usarla.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>crear</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>cambio</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>borrar</translation>
</message>
@@ -2531,12 +2606,12 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Error al iniciar sesión</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Debe iniciar sesión como el usuario %1</translation>
</message>
@@ -2544,17 +2619,22 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticar</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Vista depuradador Chipher SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Debe volver a autenticarse</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Su sesión ha caducado. Necesita volver a iniciarla para continuar usando el cliente.</translation>
</message>
@@ -2562,7 +2642,7 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartir con %1</translation>
@@ -2571,119 +2651,119 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Detalles del certificado&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nombre común (NC):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Nombres alternativos del sujeto:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organización (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unidad organizacional (UO):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estado/provincia:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>País:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Nº de serie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emisor&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emisor:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Emitido en:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Expira en:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Firma&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Notificación:&lt;/b&gt; Este certificado fue aprobado manualmente&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (autofirmado)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Esta conexión está cifrada con %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>No admite tickets de sesión/dentificadores SSL</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Información del certificado:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Esta conexión NO ES SEGURA, pues no está cifrada.
@@ -2771,270 +2851,275 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Completado con éxito.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync falló al cargar el archivo de diaro. El darchivo de diario se encuentra corrupto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;El %1 complemento para csync no se ha podido cargar.&lt;br/&gt;Por favor, verifique la instalación&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync encontró un error mientras procesaba los árboles de datos internos.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Hubo un fallo al reservar memoria para Csync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Error fatal de parámetro en CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>El proceso de actualización de CSync ha fallado.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Falló el proceso de composición de CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync no pudo autenticar el proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync falló al realizar la búsqueda del proxy</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync: Falló la autenticación con el servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync: Falló la conexión con la red.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Se sobrepasó el tiempo de espera de la conexión de red.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Se ha producido un error de transmisión HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>El directorio montado no está disponible temporalmente en el servidor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Se produjo un error al abrir un directorio</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Error al leer el directorio.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Se ignoran los Archivos/Carpetas ocultos.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Solo %1 disponible, se necesita por lo menos %2 para comenzar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>No permitido porque no tienes permiso para añadir un directorio padre</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>No permitido porque no tienes permiso para añadir archivos a ese directorio</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: No queda espacio disponible en el servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Error no especificado de CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Interrumpido por el usuario</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>El nombre del archivo contiene caracteres inválidos que no pueden ser sincronizados entre las plataformas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync ha fallado al acceder</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync falló al cargar o crear el archivo de diario. Asegúrese de tener permisos de lectura y escritura en el directorio local de sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync falló debido a un permiso denegado.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync trató de crear un directorio que ya existe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>El servicio no está disponible temporalmente </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Acceso prohibido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Ocurrió un error interno número %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>El elemento no está sincronizado por errores previos: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>No se admiten enlaces simbólicos en la sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>El fichero está en la lista de ignorados</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>El nombre del archivo contiene espacios finales.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>El nombre del archivo es demasiado largo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat ha fallado.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Los caracteres del nombre de fichero no son válidos</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caracteres inválidos, por favor renombre &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<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/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>No se pudo leer la lista de bloqueo de la base de datos local</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>No se ha podido leer desde el registro de sincronización</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>No es posible abrir el diario de sincronización</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Nombre de archivo contiene al menos un caracter no válido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorado porque se encuentra en la lista negra de &quot;elija qué va a sincronizar&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>No permitido porque no tienes permiso para añadir subdirectorios a ese directorio</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>No está permitido borrar, restaurando.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Se han eliminado los archivos locales y la carpeta compartida.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>No está permitido mover, elemento restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>No está permitido mover, porque %1 es de sólo lectura.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>destino</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>origen</translation>
</message>
@@ -3058,17 +3143,17 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;La versión %1. Para obtener más información, visite&lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, incorporado&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuido por %1 y bajo la licencia GNU General Public License (GPL) versión 2.0.&lt;br/&gt;%2 y el logotipo de %2 son marcas registradas de %1 en los Estados Unidos y otros países, o ambos.&lt;/p&gt;</translation>
</message>
@@ -3094,202 +3179,217 @@ No se recomienda usarla.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Por favor, regístrese</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Archivo %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>No hay carpetas de sincronización configuradas.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>No hay carpetas configuradas para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Abrir en navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Inicio de sesión...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Cerrar sesión</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Cambios recientes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Buscando cambios en &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Carpetas administradas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Abrir carpeta &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Abrir %1 en el navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Estado desconocido</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Configuraciones...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalles...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ayuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Salir de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Desconectado de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Versión del servidor no soportada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>El servidor en la cuenta %1 usa una versión antigua y no soportada %2. Usando este cliente con las versiones de servidor no soportadas no está probado y es potencialmente peligroso. Procede bajo tu propio riesgo.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Desconectado desde cuentas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Cuenta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>La sincronización está deshabilitada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Despausar todas las carpetas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pausar todas las carpetas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Despausar todas las sincronizaciones</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Despausar la sincronización</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pausar todas las sincronizaciones</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pausar la sincronización</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Terminar sessión en todas las cuentas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Iniciar sesión en todas las cuentas...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Se ha producido un fallo</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>No se han sincronizado elementos recientemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronizando %1 de %2 (quedan %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Sincronizando %1 de %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sincronizando %1 (quedan %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sincronizando %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Actualizado</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versión %2. Para más información, visite &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Creado por Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz y otros.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Está bajo la Licencia General Pública (GPL, en inglés) GNU Versión 2.0&lt;br/&gt;ownCloud y el logo de ownCloud son marcas registradas de ownCloud, Inc. en los Estados Unidos, otros países, o ambos.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Versiòn %2. Para más información visita:&lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Para ayuda y fallos conocidos, visita: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3304,9 +3404,9 @@ No se recomienda usarla.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Etiqueta de texto</translation>
</message>
@@ -3326,7 +3426,7 @@ No se recomienda usarla.</translation>
<translation>Empezar con una sincronización &amp;limpia (¡Elimina la carpeta local!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Elija qué sincronizar</translation>
</message>
@@ -3351,7 +3451,7 @@ No se recomienda usarla.</translation>
<translation>Sincronizar todo desde el servidor</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Mensaje de estado</translation>
</message>
@@ -3364,26 +3464,15 @@ No se recomienda usarla.</translation>
<translation>Formulario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Nombre de usuario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Contraseña</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etiqueta de error</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Texto de un etiqueta</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3500,7 +3589,7 @@ No se recomienda usarla.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3508,37 +3597,37 @@ No se recomienda usarla.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>en el futuro</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>Hace %n día(s)</numerusform><numerusform>Hace %n día(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>Hace %n hora(s)</numerusform><numerusform>Hace %n hora(s)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>ahora</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Hace menos de un minuto</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>Hace %n minutos(s)</numerusform><numerusform>Hace %n minutos(s)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Hace unos momentos</translation>
</message>
@@ -3546,57 +3635,57 @@ No se recomienda usarla.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n año</numerusform><numerusform>%n año(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n Mes</numerusform><numerusform>%n Mese(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n dia</numerusform><numerusform>%n dia(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n hora</numerusform><numerusform>%n hora(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuto</numerusform><numerusform>%n minuto(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n segundo</numerusform><numerusform>%n segundo(s)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3617,7 +3706,7 @@ No se recomienda usarla.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Revisión Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; en %3, %4 compilada usando Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3625,82 +3714,92 @@ No se recomienda usarla.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Descargado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Subido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Versión del servidor descargada, se ha copiado el fichero local cambiado al fichero en conflicto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Eliminado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Movido a %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Error de acceso al sistema de archivos</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Actualizados metadatos locales</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Desconocido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>descargando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>subiendo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>eliminando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>moviendo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>error</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>actualizando metadatos locales</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_es_AR.ts b/translations/client_es_AR.ts
index a280c28d4..a2664ced8 100644
--- a/translations/client_es_AR.ts
+++ b/translations/client_es_AR.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_AR" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_AR" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>El archivo de destino tiene un tamaño o fecha de modificación inesperado</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Deseleccionar Carpetas que serán &lt;b&gt;eliminadas&lt;/b&gt; de su sistema de archivos local y no será sincronizado más en este equipo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplicar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Conectado con &lt;server&gt; como &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>No hay cuenta configurada.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Borrar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Falló la creacion de la carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;No pudó ser creada la carpeta local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sincronización en curso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>La sincronización está en curso.&lt;br/&gt;¿Querés interrumpirla?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 de &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Conectado a %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>El servidor %1 esta temporalmente sin conexión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Registrado desde %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Sin conexión a %1 desde %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Iniciar sesión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmar la eliminación de la cuenta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Eliminar conexión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Abrir carpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Cerrar la sesión</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Reanudar sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausar sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Realmente quieres detener la sincronización de la carpeta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Esto &lt;b&gt;no&lt;/b&gt; eliminara ningun archivo.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 en uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actualmente no hay información disponible acerca del uso del almacenamiento.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>No hay ninguna conexión de %1 configurada.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Desautentificado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Conectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Servicio no disponible</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Error de red</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Error de configuración</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estado de la cuenta desconocido</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocolo de Sincronización</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar la lista de actividades al portapapeles.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiado al portapapeles</translation>
</message>
@@ -413,47 +428,47 @@
<translation>EtiquetaDeTexto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar la lista de actividades al portapapeles.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Contraseña del certificado:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Seleccionar certificado</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Archivo de certificado (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autentificación requerida</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Ingrese usuario y contraseña para &apos;%1&apos; at %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;User:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Contraseña</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>No hay una cuenta ownCloud configurada.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>La configuración del servidor al cliente es obsoleta</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Por favor actualice a la última versión del servidor y reinicie el cliente.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Error de autentificación: el usuario o contraseña es incorrecta.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>agotado</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Las credenciales otorgadas no son correctas</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Tiempo de conexión agotado</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Interrumpido por el usuario</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>El directorio local %1 no existe.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 debé ser una carpeta pero no lo es.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>No se puede leer %1.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido eliminado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido descargado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 ha sido actualizado</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Actividad de Sync</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>¿Borrar todos los archivos?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Borrar todos los archivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Conservar archivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>No se pudo </translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Una antigua sincronización con journaling &apos;%1&apos; fue encontrada, pero no se pudo eliminar. Por favor, asegurate que ninguna aplicación la está utilizando.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estado no definido.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Preparando la sincronización.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Sincronización en funcionamiento.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>La última sincronización fue exitosa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>El último Sync fue exitoso, pero hubo advertencias en archivos individuales.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Error de configuración.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Interrumpir.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>La sincronización está en pausa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Sincronización en pausa)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>¡No tenés permisos para escribir el directorio seleccionado!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Desautentificado</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sincronizando %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>Cargado %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, archivo %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>Archivo %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Esperando...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Preparando para sincronizar...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation type="unfinished"/>
</message>
@@ -1198,24 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Ingresar contraseña</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1260,34 +1282,34 @@ Account: %3
<translation>Borrar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>No se pudo abrir el archivo</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>No se pueden guardar cambios en &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Agregar patrón a ignorar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Añadir nuevo patrón a ignorar:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Esta entrada es provista por el sistema en &apos;%1&apos; y no puede ser modificada en esta vista.</translation>
</message>
@@ -1361,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Tiempo de conexión agotado</translation>
</message>
@@ -1477,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Limitar automáticamente</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nombre del host para servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nombre de usuario para el servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Contraseña para el servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1510,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1663,7 +1685,7 @@ for additional privileges during the process.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
@@ -1671,17 +1693,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Conectar a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Ingresá las credenciales de usuario</translation>
</message>
@@ -1718,139 +1740,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Conectado a %1: versión de %2 %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Falló al conectarse a %1 en %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Tiempo excedido mientras se intentaba conectar a %1 desde %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Intentando conectar a %1 en %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>El directorio de sincronización local %1 ya existe, configurándolo para la sincronización.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>aceptar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>Error.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>No fue posible crear el directorio local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>¡No se ha especificado un directorio remoto!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Error: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>Creando carpeta en ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>El directorio remoto %1 fue creado con éxito.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>El directorio remoto %1 ya existe. Estableciendo conexión para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>La creación del directorio resultó en un error HTTP con código de error %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Error al crear el directorio remoto porque las credenciales provistas son incorrectas.&lt;/font&gt;&lt;br/&gt;Por favor, volvé atrás y verificá tus credenciales.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Error al crear el directorio remoto, probablemente porque las credenciales provistas son incorrectas.&lt;/font&gt;&lt;br/&gt;Por favor, volvé atrás y verificá tus credenciales.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Se prtodujo un error &lt;tt&gt;%2&lt;/tt&gt; al crear el directorio remoto %1.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Fue creada una conexión de sincronización desde %1 al directorio remoto %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Conectado con éxito a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>No fue posible establecer la conexión a %1. Por favor, intentalo nuevamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Error Al Renombrar Directorio</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Directorio local %1 creado&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1858,12 +1880,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Asistente de Conexión</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation type="unfinished"/>
</message>
@@ -1889,7 +1911,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation type="unfinished"/>
</message>
@@ -1897,7 +1919,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1905,55 +1927,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2025,7 +2047,8 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2033,12 +2056,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2059,77 +2082,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2146,42 +2210,42 @@ It is not advisable to use it.</source>
<translation>EtiquetaDeTexto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Archivo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Carpeta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Acción</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar la lista de actividades al portapapeles.</translation>
</message>
@@ -2279,22 +2343,22 @@ It is not advisable to use it.</source>
<translation>Configuración</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2302,27 +2366,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Actividad</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Cuenta</translation>
</message>
@@ -2350,32 +2414,32 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2414,43 +2478,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation type="unfinished"/>
</message>
@@ -2468,7 +2547,7 @@ It is not advisable to use it.</source>
<translation>Compartir con usuario o grupo ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2501,17 +2580,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>crear</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>borrar</translation>
</message>
@@ -2519,12 +2598,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@@ -2532,17 +2611,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticarse</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2550,7 +2634,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
@@ -2559,118 +2643,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Pais:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation type="unfinished"/>
@@ -2757,270 +2841,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Éxito.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;No fue posible cargar el plugin de %1 para csync.&lt;br/&gt;Por favor, verificá la instalación&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync tuvo un error mientras procesaba los árboles de datos internos.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync falló al reservar memoria.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Error fatal de parámetro en CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Falló el proceso de actualización de CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Falló el proceso de composición de CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync no pudo autenticar el proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync falló al realizar la busqueda del proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync: fallo al autenticarse en el servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync: fallo al conectarse a la red</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Ha ocurrido un error de transmisión HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: No hay más espacio disponible en el servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Error no especificado de CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Interrumpido por el usuario</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Los vínculos simbólicos no está soportados al sincronizar.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>El archivo está en la lista de ignorados.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Imposible inicializar un diario de sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation type="unfinished"/>
</message>
@@ -3044,17 +3133,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3080,201 +3169,216 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Por favor, inicie sesión</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Directorio %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Los directorios de sincronización no están configurados.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Cerrar la sesión</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Cambios recientes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Directorios administrados:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Abrir carpeta &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Abrir %1 en el navegador...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Estado desconocido</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Configuraciones...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalles...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ayuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Cancelar %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>No se sincronizaron elementos recientemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sincronizando %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>actualizado</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
</context>
@@ -3290,9 +3394,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>EtiquetaDeTexto</translation>
</message>
@@ -3312,7 +3416,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation type="unfinished"/>
</message>
@@ -3337,7 +3441,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Mensaje de estado</translation>
</message>
@@ -3350,26 +3454,15 @@ It is not advisable to use it.</source>
<translation>Formulario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Nombre de usuario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Contraseña</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etiqueta de error</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>EtiquetaDeTexto</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3487,7 +3580,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3495,37 +3588,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3533,57 +3626,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3604,7 +3697,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3612,82 +3705,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Descargado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Subido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Borrado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Movido a %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Error de acceso al sistema de archivos</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Desconocido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>descargando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>subiendo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>Eliminado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>Movido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>error</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_et.ts b/translations/client_et.ts
index 6d712fe34..5fab746b9 100644
--- a/translations/client_et.ts
+++ b/translations/client_et.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="et_EE" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="et_EE" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Sihtkausta fail on ootamatu suuruse või muutmise ajaga</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Märkimata kataloogid &lt;b&gt;eemaldatakse&lt;/b&gt; kohalikust failisüsteemist ning neid ei sünkroniseerita enam sellesse arvutisse</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Rakenda</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Loobu</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Ühendatud &lt;server&gt; kasutajana &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Ühtegi kontot pole seadistatud</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Lisa uus</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Eemalda</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Konto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Vali, mida sünkroniseerida</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Kausta loomine ebaõnnestus</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sünkroniseerimine on käimas</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Sünkroniseerimine on käimas.&lt;br/&gt;Kas sa soovid seda lõpetada?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 kasutusel</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 as &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Ühendatud %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 pole ajutiselt saadaval.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Logi sisse</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Kinnita konto eemaldamine</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Eemalda ühendus</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Ava kaust</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Logi välja</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Taasta sünroonimist</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Peata sünkroonimine</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Hetkel pole mahu kasutuse info saadaval.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Ühtegi %1 ühendust pole seadistatud.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Välja logitud</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Lahti ühendatud</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Ühendatud</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Teenus pole saadaval</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Võrgu viga</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Seadistamise tõrge</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Tundmatu konto olek</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Serveri aktiivsus</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Sünkroniseerimisprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopeeri</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopeeri tegevuste nimistu puhvrisse.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Pole sünkroonitud</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Kopeeritud lõikepuhvrisse</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Tekstisilt</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Serveri tegevused</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopeeri</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopeeri tegevuste nimistu puhvrisse.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Sertifikaadi parool:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Vali sertifikaat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Sertifikaadifailid (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Vajalik on autentimine.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Sisesta kasutajanimi ja parool &apos;%1&apos; %2</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>Kas&amp;utaja:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Parool:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Ühtegi ownCloud kontot pole seadistatud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Seadistatud server on selle kliendi jaoks liiga vana</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Palun uuenda server viimasele versioonile ning taaskäivita klient.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Autentimise tõrge: Kasutajanimi või parool on vale</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>aegumine</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Sisestatud kasutajatunnused pole õiged</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Ühendus aegus</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Kasutaja poolt tühistatud</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Kohalikku kausta %1 pole olemas.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 pole loetav.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 on eemaldatud.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 on alla laaditud.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 on uuendatud.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 on ümber nimetatud %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 on tõstetud %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 sünkroniseerimine ebaõnnestus tõrke tõttu. Lisainfot vaata logist.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Sünkroniseerimise tegevus</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Süsteemi väljajätmiste faili lugemine ebaõnnestus</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Kustutada kõik failid?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Kustutada kõik failid</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Säilita failid</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Leiti varukoopia</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Tavaline sünkroonimine</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Ei suutnud tühistada kataloogi staatust</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Leiti vana sünkroniseeringu zurnaal &apos;%1&apos;, kuid selle eemaldamine ebaõnnenstus. Palun veendu, et seda kasutaks ükski programm.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(varukoopia)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (varukoopia %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Määramata staatus.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Oodatakse sünkroonimise alustamist.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Valmistun sünkroniseerima.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Sünkroniseerimine on käimas.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Viimane sünkroniseerimine oli edukas.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Viimane sünkroniseering oli edukas, kuid mõned failid põhjustasid tõrkeid.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Seadistamise viga.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Kasutaja tühistamine.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Sünkroniseerimine on peatatud.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Sünkroniseerimine on peatatud)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Sobilikku kausta pole valitud!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Valitud asukoht pole kaust!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Sul puuduvad õigused valitud kataloogi kirjutamiseks!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Kausta lisamiseks pead sa olema ühendatud</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Sünkroniseeritava kausta lisamiseks kliki sellele nupule.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Välja logitud</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kontrollitakse muudatusi kaustas &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sünkroniseerimine %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>allalaadimine %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>üleslaadimine %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 / %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 / %2, fail %3 / %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>fail %1 / %2-st</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Ootamine...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Sünkroniseerimiseks valmistumine...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Server tagastas vale vahemiku</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Ühenduse aegumine</translation>
</message>
@@ -1198,24 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Sisesta parool</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1260,34 +1282,34 @@ Account: %3
<translation>Eemalda</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Ei suutunud avada faili</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Ei saa kirjutada muudatusi &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Lisa ignoreerimise muster</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Lisa uus ignoreerimise muster:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Selle kirje on pakkunud süsteem &apos;%1&apos; ning seda ei saa antud vaates muuta.</translation>
</message>
@@ -1361,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Ühendus aegus</translation>
</message>
@@ -1477,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Piira automaatselt</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Proksiserveri hostinimi</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Proksiserveri kasutajanimi</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Proksiserveri parool</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proksi</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proksi</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1510,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1663,7 +1685,7 @@ for additional privileges during the process.</source>
<translation>Seadista kliendipoolne TLS sertifikaat</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
@@ -1671,17 +1693,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Ühendu %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Sisesta kasutajaandmed</translation>
</message>
@@ -1719,139 +1741,139 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Edukalt ühendatud %1: %2 versioon %3 (4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Ühendumine ebaõnnestus %1 %2-st:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Püüan ühenduda %1 kohast %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Kohalik kataloog %1 on juba olemas. Valmistan selle ette sünkroniseerimiseks.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Kohaliku kausta %1 sünkroonimise loomine ... </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Ei suuda tekitada kohalikku kataloogi %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Ühtegi võrgukataloogi pole määratletud!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Viga: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>loon uue kataloogi ownCloudi: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Eemalolev kaust %1 on loodud.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Serveris on kataloog %1 juba olemas. Ühendan selle sünkroniseerimiseks.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Kausta tekitamine lõppes HTTP veakoodiga %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Kataloogi loomine serverisse ebaõnnestus, kuna kasutajatõendid on valed!&lt;br/&gt;Palun kontrolli oma kasutajatunnust ja parooli.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Serveris oleva kataloogi tekitamine ebaõnnestus tõenäoliselt valede kasutajatunnuste tõttu.&lt;/font&gt;&lt;br/&gt;Palun mine tagasi ning kontrolli kasutajatunnust ning parooli.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Kataloogi %1 tekitamine serverisse ebaõnnestus veaga &lt;tt&gt;%2&lt;/tt&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Loodi sünkroniseerimisühendus kataloogist %1 serveri kataloogi %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Edukalt ühendatud %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Ühenduse loomine %1 ebaõnnestus. Palun kontrolli uuesti.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Kataloogi ümbernimetamine ebaõnnestus</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Ei suuda eemaldada ning varundada kataloogi kuna kataloog või selles asuv fail on avatud mõne teise programmi poolt. Palun sulge kataloog või fail ning proovi uuesti või katkesta paigaldus.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Kohalik kataloog %1 edukalt loodud!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1859,12 +1881,12 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 seadistamise juhendaja</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Jäta kaustade seadistamine vahele</translation>
</message>
@@ -1890,7 +1912,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Ühenduse aegumine</translation>
</message>
@@ -1898,7 +1920,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1906,55 +1928,55 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Fail on serverist kustutatud</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Faili täielik allalaadimine ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Faili on pärast avastamist muudetud</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2026,7 +2048,8 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Faili %1 ei saa ümber nimetada %2-ks, kuna on konflikt kohaliku faili nimega</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2034,12 +2057,12 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Fail oli eemaldatud kirjutamisõiguseta kataloogist. See on nüüd taastatud.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Server saatis vale HTTP koodi. Ootuspärane kood oli 204, aga saadeti kood &quot;%1 %2&quot;.</translation>
</message>
@@ -2060,77 +2083,118 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Kausta ei tohi ümber nimetada. Kausta algne nimi taastati.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Kausta nime ei tohi muuta. Palun pane selle nimeks tagasi Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Fail oli ümber nimetatud, kuid see on osa kirjutamisõiguseta jagamisest. Algne fail taastati.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Server saatis vale HTTP koodi. Ootuspärane kood oli 201, aga saadeti kood &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fail eemaldatud</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Kohalik fail muutus sünkroniseeringu käigus. See taastakse.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Kohalik fail on eemaldatud sünkroniseeringu käigus.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Küsitluse URL puudub</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Kohalik fail on eemaldatud sünkroniseeringu käigus.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2147,42 +2211,42 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Tekstisilt</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Aeg</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fail</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Kaust</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Tegevus</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Suurus</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopeeri</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopeeri tegevuste nimistu puhvrisse.</translation>
</message>
@@ -2280,22 +2344,22 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Seaded</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Toimingud</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Üldine</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Võrk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2303,27 +2367,27 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Toimingud</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Üldine</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Võrk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2351,32 +2415,32 @@ Selle kasutamine pole soovitatav.</translation>
<translation>ownCloudi kaust:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 jagamine</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Kaust: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>See server ei luba jagamist</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2415,43 +2479,58 @@ Selle kasutamine pole soovitatav.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopeeri &amp;link</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Luba muutmine</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>P&amp;arooliga kaitstud</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Parooliga kaitstud</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Avalik j&amp;agamine nõuab parooli</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Palun määra parool</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Jaga linki</translation>
</message>
@@ -2469,7 +2548,7 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Jaga kasutajate või gruppidega ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2502,17 +2581,17 @@ Selle kasutamine pole soovitatav.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>loo</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>muuda</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>kustuta</translation>
</message>
@@ -2520,12 +2599,12 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Sisselogimise viga</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Pead sisse logima kui kasutaja %1</translation>
</message>
@@ -2533,17 +2612,22 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - autentimine</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Vajalik on uuesti autentimine</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Sinu sessioon on aegunud. Sa pead kliendi kasutamiseks uuesti sisse logima.</translation>
</message>
@@ -2551,7 +2635,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Jagatud kasutajaga %1</translation>
@@ -2560,119 +2644,119 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Sertifikaadi detailid&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Üldine nimi (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Subjekti Alternatiivsed Nimed:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisatsioon (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organisatsiooni üksus (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Riik/Maakond:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Riik:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Järjenumber:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Väljastaja&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Väljastaja:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Väljastatud:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Aegub:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Sõrmejäljendid&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Märkus&lt;/b&gt;See sertifikaat on käsitsi heakskiidetud&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (oma-signeering)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Ühendus on krüpteeritud kasutades %1 bitt %2
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Seritifikaadi informatsioon:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>See url EI OLE turvaline, kuna see pole krüpteeritud.
@@ -2760,270 +2844,275 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Korras.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Ei suuda laadida csync lisa %1.&lt;br/&gt;Palun kontrolli paigaldust!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync sai vea sisemiste andmestruktuuride töötlemisel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync ei suutnud mälu reserveerida.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync parameetri saatuslik viga.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync uuendusprotsess ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync tasakaalustuse protsess ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync ei suutnud puhverserveris autoriseerida.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>Csync ei suuda leida puhverserverit.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync autoriseering serveris %1 ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync võrguga ühendumine ebaõnnestus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Toimus võrgukatkestus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTP ülekande viga.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Serveris %1 on ruum otsas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync tuvastamatu viga.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Kasutaja poolt tühistatud</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSyncile ligipääs ebaõnnestus</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Teenus pole ajutiselt saadaval</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Ligipääs on keelatud</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Üksust ei sünkroniseeritud eelnenud vigade tõttu: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Sümboolsed lingid ei ole sünkroniseerimisel toetatud.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Fail on märgitud ignoreeritavate nimistus.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Faili nimi on liiga pikk.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Failinime kodeering pole kehtiv</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ei suuda lähtestada sünkroniseeringu zurnaali.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Ei suuda avada sünkroniseeringu zurnaali</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Faili nimesonvähemalt üks keelatud märk</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<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/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Eemaldamine pole lubatud, taastan</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Kohalikud failid ja jagatud kaustad eemaldatud.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Liigutamine pole lubatud, üksus taastatud</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>sihtkoht</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>allikas</translation>
</message>
@@ -3047,17 +3136,17 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3083,201 +3172,216 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Palun logi sisse</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Kaust %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Sünkroniseeritavaid kaustasid pole seadistatud.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Sünkroniseeritavaid kaustasid pole määratud.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Ava veebilehitsejas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Logi sisse...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Logi välja</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Hiljutised muudatused</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kontrollitakse muudatusi kaustas &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Hallatavad kaustad:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Ava kaust &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Ava %1 veebilehitsejas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Tundmatu staatus</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Seaded...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Üksikasjad...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Abiinfo</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Lõpeta %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Kontodest lahtiühendatud</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Konto %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Logi välja kõikidelt kontodelt</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Logi sisse kõikidesse kontodesse...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Jookse kokku</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Ühtegi üksust pole hiljuti sünkroniseeritud</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sünkroniseerin %1 %2-st (%3 veel)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sünkroniseerin %1 (%2 veel)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sünkroniseerimine %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Ajakohane</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
</context>
@@ -3293,9 +3397,9 @@ Selle kasutamine pole soovitatav.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Tekstisilt</translation>
</message>
@@ -3315,7 +3419,7 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Vali, mida sünkroniseerida</translation>
</message>
@@ -3340,7 +3444,7 @@ Selle kasutamine pole soovitatav.</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Staatuse teade</translation>
</message>
@@ -3353,26 +3457,15 @@ Selle kasutamine pole soovitatav.</translation>
<translation>Vorm</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Kasutajatunnus</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Parool</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Vea silt</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Tekstisilt</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3489,7 +3582,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3497,37 +3590,37 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>tulevikus</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>kohe</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Vähem kui minut tagasi</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Mõni aeg tagasi</translation>
</message>
@@ -3535,57 +3628,57 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3606,7 +3699,7 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3614,82 +3707,92 @@ Selle kasutamine pole soovitatav.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Allalaetud</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Üles laetud</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Kustutatud</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Tõstetud %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Eiratud</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Failisüsteemi ligipääsu viga</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Viga</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Tundmatu</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>allalaadimine</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>üleslaadimine</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>kustutan</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>liigutan</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>eiran</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>viga</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_eu.ts b/translations/client_eu.ts
index 30f6eade5..d43335d62 100644
--- a/translations/client_eu.ts
+++ b/translations/client_eu.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="eu" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="eu" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Helburuko fitxategiak espero ez den tamaina edo aldaketa data du</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Desmarkatutako karpetak zure bertako fitxategi sistematik &lt;b&gt;ezabatuko&lt;/b&gt; dira eta ez dira gehiago ordenagailu honekin sinkronizatuko</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplikatu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Ezeztatu</translation>
</message>
@@ -121,168 +136,168 @@
<translation>&lt;user&gt; bezala &lt;server&gt;-n konektatuta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Ez da konturik konfiguratu.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Gehitu berria</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Ezabatu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Kontua</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Hautatu zer sinkronizatu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Ezabatu karpeta honen konexioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Karpeta sortzeak huts egin du</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Ezin izan da &lt;i&gt;%1&lt;/i&gt; bertako karpeta sortu.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Baieztatu Karpetaren Konexioaren Ezabatzea</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Ezabatu Karpeta Honen Konexioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sinkronizazioa martxan da</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Sinkronizazio martxan da.&lt;br/&gt;Bukatu nahi al duzu?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>%1ra konektatuta.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>%1 zerbitzaria ez dago orain eskuragarri</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>%1etik saioa itxita.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Hasi saioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Sinkronizatuko ez diren oso handiak diren karpeta berriak daude:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Baieztatu Kontuaren Ezabatzea</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Ezabatu konexioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Ireki karpeta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Saioa bukatu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Berrekin sinkronizazioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Gelditu sinkronizazioa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%2tik %1 erabilita</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Orain ez dago eskuragarri biltegiratze erabileraren informazioa.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Ez dago %1 konexiorik konfiguratuta.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Saioa bukatuta</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Deskonektatuta</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Konektatuta</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Zerbitzua ez dago eskuragarri</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Sare errorea</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Konfigurazio errorea</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Kontuaren egoera ezezaguna</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Zerbitzariaren Jarduera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Sinkronizazio protokoloa</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopiatu</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiatu jarduera zerrenda arbelara.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Sinkronizatu gabekoak</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Arbelera kopiatua</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TestuEtiketa</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Zerbitzariaren Jarduerak</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopiatu</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiatu jarduera zerrenda arbelara.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;%1 kontuak ez ditu jarduerak gaituta.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Ziurtagiriaren pasahitza:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Hautatu ziurtagiri bat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Ziurtagiri fitxategiak (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autentikazioa beharrezkoa</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Sartu erabiltzaile izena eta pasahitza &apos;%1&apos;-rentzat hemen: %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Erabiltzailea:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Pasahitza:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Ez dago ownCloud konturik konfiguratuta</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Bezero honentzako konfiguratutako zerbitzaria oso zaharra da</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Mesedez eguneratu zerbitzarira eta berrabiarazi bezeroa.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Autentikazio errorea: Erabiltzaile izena edota pasahitza gaizki daude.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>denbora iraungi da</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Emandako kredentzialak ez dira zuzenak</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Konexioa iraungi da</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Erabiltzaileak bertan behera utzita</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Bertako %1 karpeta ez da existitzen.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 karpeta bat izan behar zen baina ez da.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 ezin da irakurri.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ezabatua izan da.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 deskargatu da.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 kargatu da.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 %2-(e)ra berrizendatu da.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 %2-(e)ra mugitu da.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 ezin izan da sinkronizatu akats bat dela eta. Ikusi egunerkoa zehaztapen gehiago izateko.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Sinkronizazio Jarduerak</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Ezin izan da sistemako baztertutakoen fitxategia irakurri</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Ezabatu Fitxategi Guztiak?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Ezabatu fitxategi guztiak</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Mantendu fitxategiak</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Ezin izan da karpetaren egoera berrezarri</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Aurkitu da &apos;%1&apos; sinkronizazio erregistro zaharra, baina ezin da ezabatu. Ziurtatu aplikaziorik ez dela erabiltzen ari.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Definitu gabeko egoera.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Itxoiten sinkronizazioa hasteko.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Sinkronizazioa prestatzen.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Sinkronizazioa martxan da.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Azkeneko sinkronizazioa ongi burutu zen.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Azkenengo sinkronizazioa ongi burutu zen, baina banakako fitxategi batzuetan abisuak egon dira.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Konfigurazio errorea.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Erabiltzaileak bertan behera utzi.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Sinkronizazioa pausatuta dago.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Sinkronizazioa pausatuta dago)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Ez da karpeta egokirik hautatu!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Hautatutako bidea ez da karpeta bat!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Ez daukazu hautatutako karpetan idazteko baimenik!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Errorea zerbitzaritik karpeten zerrenda eskuratzean.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Saioa bukatuta</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Zerbitzaritik karpeta zerrenda eskuratzen...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>%1 Sinkronizatzen</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>Deskargatu %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>igo %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%4 - %3tik)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>%1. fitxategia %2tik</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Itxoiten...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Itxoiten beste karpeta %n...</numerusform><numerusform>Itxoiten beste %n karpeta...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Sinkronizatzeko prestatzen...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Jarraitzeko E-Tag ezberdina jaso dugu. Hurrengoan saiatuko gara berriz.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Zerbitzariak eduki-hein desegokia itzuli du</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Konexioa denboraz kanpo</translation>
</message>
@@ -1198,28 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Mesedez sartu %1 pasahitza:
-
-Erabiltzailea: %2
-Kontua: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Sartu Pasahitza</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1264,7 +1282,7 @@ Kontua: %3
<translation>Ezabatu</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1273,27 +1291,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten ez badute. Hau meta datuentzat interesgarria da.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Ezin izan da fitxategia ireki</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Ezin izan dira aldaketa idatzi hemen &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Gehitu Baztertzeko Eredua</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Gehitu baztertzeko eredu berria:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation type="unfinished"/>
</message>
@@ -1367,7 +1385,7 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Konexioa denboraz kanpo</translation>
</message>
@@ -1483,32 +1501,32 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
<translation>Automatikoki mugatu</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Proxy zerbitzariaren hostalari izena</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Proxy zerbitzariaren erabiltzaile izena</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Proxy zerbitzarirako pasahitza</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1516,23 +1534,23 @@ Ezabatzeko baimena duten itemak ezabatuko dira hauek karpeta bat ezabatzea uzten
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1669,7 +1687,7 @@ for additional privileges during the process.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
@@ -1677,17 +1695,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>%1ra konektatu</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Sartu erabiltzailearen kredentzialak</translation>
</message>
@@ -1725,139 +1743,139 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Konexioa ongi burutu da %1 zerbitzarian: %2 bertsioa %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Denbora iraungi da %1era %2n konektatzen saiatzean.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>%2 zerbitzarian dagoen %1 konektatzen...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Bertako %1 karpeta dagoeneko existitzen da, sinkronizaziorako prestatzen.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ados</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>huts egin du.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Ezin da %1 karpeta lokala sortu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Ez da urruneko karpeta zehaztu!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Errorea: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>ownClouden karpeta sortzen: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Urruneko %1 karpeta ongi sortu da.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Urruneko %1 karpeta dagoeneko existintzen da. Bertara konetatuko da sinkronizatzeko.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Karpeta sortzeak HTTP %1 errore kodea igorri du</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Huts egin du urrutiko karpeta sortzen emandako kredintzialak ez direlako zuzenak!&lt;br/&gt; Egin atzera eta egiaztatu zure kredentzialak.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Urruneko karpeten sortzeak huts egin du ziuraski emandako kredentzialak gaizki daudelako.&lt;/font&gt;&lt;br/&gt;Mesedez atzera joan eta egiaztatu zure kredentzialak.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Urruneko %1 karpetaren sortzeak huts egin du &lt;tt&gt;%2&lt;/tt&gt; errorearekin.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Sinkronizazio konexio bat konfiguratu da %1 karpetatik urruneko %2 karpetara.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>%1-era ongi konektatu da!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>%1 konexioa ezin da ezarri. Mesedez egiaztatu berriz.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Karpetaren berrizendatzeak huts egin du</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Ezin da karpeta ezabatu eta kopia egin, karpeta edo barruko fitxategiren bat beste programa batean irekita dagoelako. Mesedez itxi karpeta edo fitxategia eta sakatu berrekin edo ezeztatu konfigurazioa.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Bertako sinkronizazio %1 karpeta ongi sortu da!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1865,12 +1883,12 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Konexio Morroia</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Saltatu karpeten ezarpenak</translation>
</message>
@@ -1896,7 +1914,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Konexioa denboraz kanpo</translation>
</message>
@@ -1904,7 +1922,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1912,55 +1930,55 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Fitxategia zerbitzaritik ezabatua izan da</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2032,7 +2050,8 @@ Ez da gomendagarria erabltzea.</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2040,12 +2059,12 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2066,77 +2085,118 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Karpeta hau ezin da berrizendatu. Bere jatorrizko izenera berrizendatu da.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Karpeta hau ezin da berrizendatu. Mesedez jarri berriz Shared izena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fitxategia Ezabatua</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Fitxategi lokala ezabatu da sinkronizazioan.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Fitxategi lokala ezabatu da sinkronizazioan.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2153,42 +2213,42 @@ Ez da gomendagarria erabltzea.</translation>
<translation>TestuEtiketa</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Noiz</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fitxategia</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Karpeta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Ekintza</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamaina</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Bertako sinkronizazio protokolo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopiatu</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiatu jarduera zerrenda arbelara.</translation>
</message>
@@ -2286,22 +2346,22 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Ezarpenak</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Jarduera</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Orokorra</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Sarea</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Kontua</translation>
</message>
@@ -2309,27 +2369,27 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Jarduera</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Orokorra</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Sarea</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Kontua</translation>
</message>
@@ -2357,32 +2417,32 @@ Ez da gomendagarria erabltzea.</translation>
<translation>ownCloud-en bidea:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Karpeta: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2421,43 +2481,58 @@ Ez da gomendagarria erabltzea.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopiatu &amp;lotura</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Baimendu editatzea</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Mesedez Ezarri Pasahitza</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation type="unfinished"/>
</message>
@@ -2475,7 +2550,7 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Elkarbanatu erabiltzaile edo taldearekin...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2508,17 +2583,17 @@ Ez da gomendagarria erabltzea.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>sortu</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>aldatu</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>ezabatu</translation>
</message>
@@ -2526,12 +2601,12 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Errorea sartzean</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@@ -2539,17 +2614,22 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Berautentikatzea beharrezkoa</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2557,7 +2637,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
@@ -2566,118 +2646,118 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;&gt;Ziurtagiriaren Zehaztapenak&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Izen Arrunta (IA):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Erakundea (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Erakunde Atala (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estatua/Erkidegoa:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Herrialdea:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Jaulkitzailea:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Jaulkitze-data:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Iraungitze-data:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Hatz-markak&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Ziurtagiriaren informazioa:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation type="unfinished"/>
@@ -2764,270 +2844,275 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Arrakasta.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;csyncen %1 plugina ezin da kargatu.&lt;br/&gt;Mesedez egiaztatu instalazioa!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSyncek errorea izan du barne zuhaitzak prozesatzerakoan.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSyncek huts egin du memoria alokatzean.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync parametro larri errorea.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync prozesatzearen eguneratu urratsak huts egin du.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync prozesatzearen berdinkatze urratsak huts egin du.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSyncek ezin izan du proxya autentikatu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSyncek huts egin du zerbitzaria edo proxia bilatzean.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSyncek huts egin du %1 zerbitzarian autentikatzean.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSyncek sarera konektatzean huts egin du.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTP transmisio errore bat gertatu da.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Errore bat egon da karpeta bat irekitzearkoan</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Ez dago lekurik %1 zerbitzarian.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSyncen zehaztugabeko errorea.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Erabiltzaileak bertan behera utzita</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Esteka sinbolikoak ezin dira sinkronizatu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Fitxategia baztertutakoen zerrendan dago.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Ezin izan da sinkronizazio egunerokoa hasieratu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Ezin da sinkronizazio egunerokoa ireki</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Fitxategi izenak behintzat baliogabeko karaktere bat du</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Ezabatzeko baimenik gabe, berrezartzen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Mugitzea ez dago baimenduta, elementua berrezarri da</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>helburua</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>jatorria</translation>
</message>
@@ -3051,17 +3136,17 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;%1 Bertsioa. Informazio gehiago eskuratzeko ikusi &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3087,202 +3172,217 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Mesedez saioa hasi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Ez dago sinkronizazio karpetarik definituta.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Ez dago sinkronizazio karpetarik definituta.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Ireki nabigatzailean</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Saioa hasi...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Saioa bukatu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Azkenengo Aldaketak</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Kudeatutako karpetak:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Ireki &apos;%1&apos; karpeta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Ireki %1 arakatzailean</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Egoera ezezaguna</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Ezarpenak...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Xehetasunak...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Laguntza</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1etik Irten</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>%1etik deskonektatuta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Kontuetatik deskonektatuta:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>%1 Kontua: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Saioa bukatu kontu guztietan</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Saioa hasi kontu guztietan...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Ez da azken aldian ezer sinkronizatu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sinkronizatzen %1 %2tik (%3 faltan)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sinkronizatzen %1 (%2faltan)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>%1 Sinkronizatzen</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Eguneratua</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;%2 Bertsioa. Informazio gehiago eskuratzeko ikusi &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Egileak: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz eta bestea batzuk.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;GNU General Public License (GPL) 2.0 bertsioaren lizentziapean banatuta.&lt;br/&gt;ownCloud eta ownCloud-en Logoa ownCloud, Inc. enpresaren marka erregistratuak dira Estatu Batuetan, beste herrialdeetan edo bietan.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3297,9 +3397,9 @@ Ez da gomendagarria erabltzea.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TestuEtiketa</translation>
</message>
@@ -3319,7 +3419,7 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Hasi sinkronizazio &amp;garbia (Bertako karpeta ezabatzen du!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Hautatu zer sinkronizatu</translation>
</message>
@@ -3344,7 +3444,7 @@ Ez da gomendagarria erabltzea.</translation>
<translation>&amp;Sinkronizatu zerbitzarian dagoen guztia</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Egoera mezua</translation>
</message>
@@ -3357,26 +3457,15 @@ Ez da gomendagarria erabltzea.</translation>
<translation>Formularioa</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Erabiltzaile-izena</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Pasahitza</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TestuEtiketa</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3493,7 +3582,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3501,37 +3590,37 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Orain dela minutu bat baino gutxiago</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3539,57 +3628,57 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3610,7 +3699,7 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Giteko &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;. errebisiotik konpilatuta %3-an, %4etan Qt %5, %6 erabiliz&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3618,82 +3707,92 @@ Ez da gomendagarria erabltzea.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Deskargatua</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Igoa</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Ezabatuta</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>%1era mugituta</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Errorea</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Ezezaguna</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>deskargatzen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>igotzen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>ezabatzen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>mugitzen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>errorea</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_fa.ts b/translations/client_fa.ts
index 411395fb1..e48dd4722 100644
--- a/translations/client_fa.ts
+++ b/translations/client_fa.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="fa" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fa" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>فایل مقصد دارای سایز و یا تاریخ ویرایش غیرمتعارف است</translation>
</message>
@@ -104,14 +104,29 @@
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>اعمال</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>منصرف شدن</translation>
</message>
@@ -121,168 +136,168 @@
<translation>متصل به &lt;server&gt; به عنوان &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>هیچ حساب‌کاربری‌ای تنظیم نشده‌ است.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>حذف</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>حساب کاربری</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>انتخاب موارد همگام‌سازی</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>همگام سازی در حال اجراست</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>عملیات همگام سازی در حال اجراست.&lt;br/&gt;آیا دوست دارید آن را متوقف کنید؟</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>متصل به %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>سرور %1 بصورت موقت خارج از دسترس است.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>ورود</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>بازکردن پوشه</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>خروج</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>از سر‎گیری همگام‌سازی</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>توقف به‌هنگام‌سازی </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>بدون %1 اتصال پیکربندی شده.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>خارج شد</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>متصل</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>سرویس خارج از دسترس</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>خطای شبکه</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation type="unfinished"/>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>پروتکل همگام سازی</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>کپی کردن</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>کپی به کلیپ بورد</translation>
</message>
@@ -413,47 +428,47 @@
<translation>برچسب متنی</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>کپی کردن</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation type="unfinished"/>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;کاربر:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;رمزعبور:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation type="unfinished"/>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation type="unfinished"/>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>متوقف شده توسط کاربر</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>پوشه محلی %1 موجود نیست.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 قابل خواندن نیست.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 حذف شده است.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 بارگزاری شد.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 بروز رسانی شده است.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 به %2 تغییر نام داده شده است.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 به %2 انتقال داده شده است.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>فعالیت همگام سازی</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>حذف تمام فایل ها؟</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>حذف تمام فایل ها</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>نگه داشتن فایل ها</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>نمی تواند حالت پوشه را تنظیم مجدد کند</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (backup)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (پشتیبان %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>موقعیت تعریف نشده</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>آماده سازی برای همگام سازی کردن.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>همگام سازی در حال اجراست</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>آخرین همگام سازی موفقیت آمیز بود</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>خطا در پیکر بندی.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>خارج کردن کاربر.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>همگام سازی فعلا متوقف شده است</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (همگام‌سازی موقتا متوقف شده است)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>هیچ پوشه‌ی معتبری انتخاب نشده است!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>شما اجازه نوشتن در پوشه های انتخاب شده را ندارید!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>برای افزودن پوشه به همگام‌سازی روی این دکمه کلیک کنید.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>خارج شد</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>همگام‌سازی %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>رشته های ترجمه نشده</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>دانلود %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>آپلود %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 از %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>فایل %1 از %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>درحال انتظار...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>در انتظار برای %n پوشه‌‎ی دیگر ...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>آماده‌سازی همگام‌سازی ...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>تایم اوت اتصال</translation>
</message>
@@ -1198,24 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>رمز را وارد کنید</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1260,34 +1282,34 @@ Account: %3
<translation>حذف</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>امکان باز کردن فایل وجود ندارد</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation type="unfinished"/>
</message>
@@ -1361,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation type="unfinished"/>
</message>
@@ -1477,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>محدودسازی خودکار</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>نام میزبان سرور پروکسی</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>نام کاربری سرور پروکسی</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>رمزعبور برای سرور پروکسی</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>پروکسی HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>پروکسی SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1510,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1663,7 +1685,7 @@ for additional privileges during the process.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
@@ -1671,17 +1693,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>متصل به %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation type="unfinished"/>
</message>
@@ -1718,139 +1740,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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; با موفقیت متصل شده است به %1: %2 نسخه %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>ارتباط ناموفق با %1 در %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>تلاش برای اتصال %1 به %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>پوشه همگام سازی محلی %1 در حال حاضر موجود است، تنظیم آن برای همگام سازی. &lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>خوب</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>ناموفق.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>نمی تواند پوشه محلی ایجاد کند %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>خطا: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>ایجاد کردن پوشه بر روی ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>پوشه از راه دور %1 با موفقیت ایجاد شده است.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>در حال حاضر پوشه از راه دور %1 موجود است. برای همگام سازی به آن متصل شوید.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>ایجاد پوشه از راه دور ناموفق بود به علت اینکه اعتبارهای ارائه شده اشتباه هستند!&lt;br/&gt;لطفا اعتبارهای خودتان را بررسی کنید.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt; ایجاد پوشه از راه دور ناموفق بود، شاید به علت اعتبارهایی که ارئه شده اند، اشتباه هستند.&lt;/font&gt;&lt;br/&gt; لطفا باز گردید و اعتبار خود را بررسی کنید.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>ایجاد پوشه از راه دور %1 ناموفق بود با خطا &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>یک اتصال همگام سازی از %1 تا %2 پوشه از راه دور راه اندازی شد.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>با موفقیت به %1 اتصال یافت!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>اتصال به %1 نمی تواند مقرر باشد. لطفا دوباره بررسی کنید.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>تغییر نام پوشه ناموفق بود</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt; پوشه همگام سازی محلی %1 با موفقیت ساخته شده است!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1858,12 +1880,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation type="unfinished"/>
</message>
@@ -1889,7 +1911,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>تایم اوت اتصال</translation>
</message>
@@ -1897,7 +1919,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1905,55 +1927,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>فایل از روی سرور حذف شد</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2025,7 +2047,8 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2033,12 +2056,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2059,77 +2082,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>فایل حذف شد</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>فایل محلی در حین همگام‌سازی تغییر کرده است.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>فایل محلی در حین همگام‌سازی حذف شده است.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>فایل محلی در حین همگام‌سازی تغییر کرده است.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>فایل محلی در حین همگام‌سازی حذف شده است.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>فایل محلی در حین همگام‌سازی تغییر کرده است.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2146,42 +2210,42 @@ It is not advisable to use it.</source>
<translation>برچسب متنی</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>زمان</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>فایل</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>پوشه</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>فعالیت</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>اندازه</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>کپی کردن</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation type="unfinished"/>
</message>
@@ -2279,22 +2343,22 @@ It is not advisable to use it.</source>
<translation>تنظیمات</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>فعالیت</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>عمومی</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>شبکه</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>حساب کاربری</translation>
</message>
@@ -2302,27 +2366,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>فعالیت</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>عمومی</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>شبکه</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>حساب کاربری</translation>
</message>
@@ -2350,32 +2414,32 @@ It is not advisable to use it.</source>
<translation>مسیر ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 اشتراک‌گذاری</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>پوشه: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2414,43 +2478,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>کپی &amp; لینک</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>اجازه‌ی ویرایش</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>محافظت شده توسط رمزعبور</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>لطفا رمزعبور را تعیین کنید</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;اشتراک‌گذاری لینک</translation>
</message>
@@ -2468,7 +2547,7 @@ It is not advisable to use it.</source>
<translation>اشتراک گذاری با کاربران یا گروه ها ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2501,17 +2580,17 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>ایجاد</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>تغییر</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>حذف</translation>
</message>
@@ -2519,12 +2598,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>خطای ورود</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation type="unfinished"/>
</message>
@@ -2532,17 +2611,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2550,7 +2634,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>اشتراک‌گذاری با %1</translation>
@@ -2559,118 +2643,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;جزئیات گواهینامه s&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>نام مشترک (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>سازمان (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>واحد سازمان (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>استان:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>کشور:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>سریال:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;صادر کننده&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>صادرکننده:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>صدور در:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>منقضی شده در:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (self-signed)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>اطلاعات گواهینامه:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation type="unfinished"/>
@@ -2757,270 +2841,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>موفقیت</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;ماژول %1 برای csync نمی تواند بارگذاری شود.&lt;br/&gt;لطفا نصب را بررسی کنید!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync هنگام پردازش درختان داخلی یک خطا دریافت نمود.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync موفق به رزرو حافظه نشد است.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>مرحله به روز روسانی پردازش CSync ناموفق بود.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>مرحله تطبیق پردازش CSync ناموفق بود.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>عدم موفقیت CSync برای مراجعه به پروکسی یا سرور.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>عدم موفقیت CSync برای اعتبار دادن در %1 سرور.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>عدم موفقیت CSync برای اتصال به شبکه.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>خطا در انتقال HTTP اتفاق افتاده است.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>یک خطا در هنگام باز کردن یک پوشه رخ داده‌ است</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>خطا در هنگام خواندن پوشه</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: فضا در %1 سرور در دسترس نیست.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>خطای نامشخص CSync </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>متوقف شده توسط کاربر</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>سرویس بصورت موقت خارج از دسترس است</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>یک خطای داخلی با شماره خطای %1 رخ داده است.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>نام فایل خیلی طولانی است.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>وضعیت ناموفق</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>رمزگذاری نام فایل معتبر نیست</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>کاراکتر نامعتبر، لطفا &quot;%1&quot; را تغییر نام دهید</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>نام فایل دارای حداقل یک کاراکتر نامعتبر است</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>با توجه به عدم اجازه‌ی شما به ایجاد زیرپوشه به پوشه مجاز نیست</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>آپلود این فایل با توجه به فقط-خواندنی بودن آن در سرور مجاز نیست، در حال بازگرداندن</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>حذف مجاز نیست، در حال بازگردادن</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>فایل‌های محلی و پوشه‌ی اشتراک حذف شد.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>انتقال مجاز نیست، مورد بازگردانده شد</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>مقصد</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>مبدا</translation>
</message>
@@ -3044,17 +3133,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;نسخه %1. برای اطلاعات بیشتر لطفا اینجا را مشاهده کنید t &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3080,201 +3169,216 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>لطفا وارد شوید</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>پوشه %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>هیچ پوشه ای همگام سازی شده‌ای تنظیم نشده است</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>هیچ پوشه‌ای برای همگام‌سازی تنظیم نشده است.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>باز کردن در مرورگر</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>ورود...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>خروج</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>تغییرات اخیر</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>پوشه های مدیریت شده:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>بازکردن پوشه‌ی &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>وضعیت نامعلوم</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>تنظیمات...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>جزئیات...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>راه‌نما</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>خروج %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>قطع‌شده از %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>حساب‌کاربری %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>هیچ موردی به تازگی همگام‌سازی نشده است</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>همگام‌سازی %1 از%2 (%3 باقیمانده)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>همگام‌سازی %1 (%2 باقیمانده)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>همگام‌سازی %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>تا تاریخ</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
</context>
@@ -3290,9 +3394,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>برچسب متنی</translation>
</message>
@@ -3312,7 +3416,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>انتخاب موارد همگام‌سازی</translation>
</message>
@@ -3337,7 +3441,7 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>پیغام وضعیت</translation>
</message>
@@ -3350,26 +3454,15 @@ It is not advisable to use it.</source>
<translation>فرم</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;نام‌کاربری</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;رمزعبور</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>برچسب خطا</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>برچسب متنی</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3486,7 +3579,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3494,37 +3587,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3532,57 +3625,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3603,7 +3696,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3611,82 +3704,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>دریافت شده اند</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>بارگذاری شده است.</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>حذف شده</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>به %1 انتقال یافت </translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>نادیده گرفته شد</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>خطای دسترسی به فایل‌های سیستمی</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>خطا</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>نامشخص</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>در حال دانلود</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>در حال آپلود</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>در حال حذف</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>در حال انتقال</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>نادیده گرفتن</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>خطا</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_fi.ts b/translations/client_fi.ts
index afa8e9b8e..ae6acde6c 100644
--- a/translations/client_fi.ts
+++ b/translations/client_fi.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="fi_FI" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fi_FI" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Kohdetiedostolla on odottamaton koko tai muokkausaika</translation>
</message>
@@ -104,14 +104,29 @@
<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>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Toteuta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Peruuta</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Yhdistetty palvelimeen &lt;server&gt; käyttäen tunnusta &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Tiliä ei ole määritelty.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Lisää uusi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Poista</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Tili</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Valitse synkronoitavat tiedot</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Poista kansion synkronointiyhteys</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Kansion luominen epäonnistui</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Paikallisen kansion &lt;i&gt;%1&lt;/i&gt; luominen epäonnistui.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Vahvista kansion synkronointiyhteyden poisto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Poista kansion synkronointiyhteys</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synkronointi meneillään</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Synkronointioperaatio on meneillään.&lt;br/&gt;Haluatko keskeyttää sen?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 käytössä</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 käyttäjänä &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Palvelimen versio %1 on vanha ja sen tuki on loppunut! Jatka omalla vastuulla.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Yhteys muodostettu kohteeseen %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Palvelin %1 ei ole juuri nyt saatavilla.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Kirjauduttu ulos kohteesta %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Ei yhteyttä kohteeseen %1 osoitteessa %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Kirjaudu sisään</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Havaittiin uusia kansioita, joita ei synkronoitu niiden suuren koon vuoksi:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Vahvista tilin poistaminen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Haluatko varmasti poistaa tilin &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Huomio:&lt;/b&gt; Tämä toimenpide &lt;b&gt;ei&lt;/b&gt; poista mitään tiedostoja.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Poista yhteys</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Avaa kansio</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Kirjaudu ulos</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Palauta synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Keskeytä synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Haluatko varmasti lopettaa kansion &lt;i&gt;%1&lt;/i&gt; synkronoinnin?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Huomio:&lt;/b&gt; Tämä toimenpide &lt;b&gt;ei&lt;/b&gt; poista mitään tiedostoja.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1/%2 (%3 %) käytössä. Jotkin kansiot, mukaan lukien verkkojaot ja jaetut kansiot, voivat sisältää eri rajoitukset.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1/%2 käytössä</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Tallennustilan käyttötietoja ei ole juuri nyt saatavilla.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>%1-yhteyttä ei ole määritelty.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Kirjauduttu ulos</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Yhteys katkaistu</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Yhdistetty</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Palvelu ei ole käytettävissä</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Verkkovirhe</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Asetusvirhe</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Tuntematon tilin tila</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Palvelimen toimet</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Synkronointiprotokolla</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Luettelo ohitettavista tai virheellisistä tiedostoista</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopioi</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopioi toimilista leikepöydälle.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Ei synkronoitu</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Ei synkronoitu (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Kopioitu leikepöydälle</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TekstiLeima</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Palvelimen toimet</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopioi</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopioi toimilista leikepöydälle.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Toimenpiteitä vaaditaan: ilmoitukset</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Tilillä %1 ei ole toimia käytössä.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Varmenteen salasana:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Valitse varmenne</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Varmennetiedostot (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Tunnistautuminen vaaditaan</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Anna käyttäjätunnus ja salasana kohteeseen &apos;%1&apos; osoitteessa %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>K&amp;äyttäjä:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Salasana:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>ownCloud-tiliä ei ole määritelty</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Määritelty palvelin on ohjelmistoversioltaan liian vanha tälle asiakasohjelmistolle</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Päivitä uusimpaan palvelinversioon ja käynnistä asiakasohjelmisto uudelleen.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Tunnistautumisvirhe: käyttäjätunnus tai salasana on väärin.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>aikakatkaisu</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Annetut tilitiedot eivät ole oikein</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Yhteys aikakatkaistiin</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Keskeytetty käyttäjän toimesta</translation>
</message>
@@ -579,158 +594,158 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Paikallista kansiota %1 ei ole olemassa.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>Kohteen %1 pitäisi olla kansio, mutta se ei kuitenkaan ole kansio.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 ei ole luettavissa.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 on poistettu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 on ladattu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 on päivitetty.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 on nimetty uudeelleen muotoon %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 on siirretty kohteeseen %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>Kohdetta %1 ei voi synkronoida virheen vuoksi. Katso tarkemmat tiedot lokista.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Synkronointiaktiviteetti</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Uusi kansio, joka on suurempi kuin %1 Mt, on lisätty: %2.
Siirry asetuksiin valitaksesi sen, jos haluat ladata kyseisen kansion.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Poistetaanko kaikki tiedostot?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Poista kaikki tiedostot</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Säilytä tiedostot</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Varmuuskopio poistettu</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normaali synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -738,112 +753,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Kansion tilaa ei voitu alustaa</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (varmuuskopio)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (varmuuskopio %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Määrittelemätön tila.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Odotetaan synkronoinnin aloitusta.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Valmistellaan synkronointia.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synkronointi on meneillään.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Viimeisin synkronointi suoritettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Viimeisin synkronointi onnistui, mutta yksittäisten tiedostojen kanssa ilmeni varoituksia.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Asetusvirhe.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synkronointi on keskeytetty.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synkronointi on keskeytetty)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Kelvollista kansiota ei ole valittu!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Valittu polku ei ole kansio!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Sinulla ei ole kirjoitusoikeutta valittuun kansioon!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Paikallinen kansio %1 on jo käytössä kansion synkronointiyhteydessä. Valitse toinen kansio!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Paikallinen kansio %1 sisältää kansion, jota käytetään kansion synkronointiyhteydessä. Valitse toinen kansio!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -869,127 +884,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Yhteyden tulee olla muodostettu, jotta voit lisätä kansion</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Napsauta valitaksesi synkronoitavan kansion.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Virhe ladatessa kansiolistausta palvelimelta.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Kirjauduttu ulos</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Kansion lisääminen on poistettu käytöstä, koska synkronoit jo kaikki tiedostot. Jos haluat synkronoida useita kansioita, poista nykyisen juurikansion synkronointiyhteys.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Haetaan kansioluetteloa palvelimelta...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synkronoidaan %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3/%4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1/%2, tiedosto %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>tiedosto %1/%2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Odotetaan...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Odotetaan %n muuta kansiota...</numerusform><numerusform>Odotetaan %n muuta kansiota...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Valmistaudutaan synkronointiin...</translation>
</message>
@@ -1102,22 +1123,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Yhteys aikakatkaistiin</translation>
</message>
@@ -1199,28 +1220,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Anna %1-salasana:
-
-Käyttäjä: %2
-Tili: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Anna salasana</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1265,7 +1283,7 @@ Tili: %3
<translation>Poista</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1274,27 +1292,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistamisen. Tämä on hyödyllistä metatietojen osalta.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Tiedoston avaaminen ei onnistunut</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Muutoksien kirjoittaminen kohteeseen &apos;%1&apos; epäonnistui.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Lisää ohituskaava</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Lisää uusi ohituskaava:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation type="unfinished"/>
</message>
@@ -1368,7 +1386,7 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Yhteys aikakatkaistiin</translation>
</message>
@@ -1484,32 +1502,32 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<translation>Rajoita automaattisesti</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Välityspalvelinkoneen nimi</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Välityspalvelimen käyttäjätunnus</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Välityspalvelimen salasana</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S)-välityspalvelin</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5-välityspalvelin</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 vaaditaan kaistanrajoituksen käyttöä varten</translation>
</message>
@@ -1517,23 +1535,23 @@ Kohteet, joiden poisto on sallittu, poistetaan, jos ne estävät kansion poistam
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Suljetaan muutamassa sekunnissa...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1670,7 +1688,7 @@ for additional privileges during the process.</source>
<translation>Määritä asiakaspuolen TLS-varmenteen asetukset</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Yhteys palvelimen salattuun osoitteeseen &lt;em&gt;%1&lt;/em&gt; epäonnistui. Miten haluat edetä?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1678,17 +1696,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Sähköpostiosoite</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Muodosta yhteys - %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Anna käyttäjätiedot</translation>
</message>
@@ -1726,139 +1744,139 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Muodostettu yhteys onnistuneesti kohteeseen %1: %2 versio %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Yhteys %1iin osoitteessa %2 epäonnistui:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Aikakatkaisu yrittäessä yhteyttä kohteeseen %1 osoitteessa %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Yritetään yhdistetää palvelimeen %1 portissa %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Todennettuun webdav-pyyntöön saatiin virheellinen vastaus</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Palvelin esti käyttämisen. Vahvista käyttöoikeutesi palvelimeen &lt;a href=&quot;%1&quot;&gt;napsauttamalla tästä&lt;/a&gt; ja kirjaudu palveluun selaimella.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Paikallinen kansio %1 on jo olemassa, asetetaan se synkronoitavaksi.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Luodaan paikallista synkronointikansiota %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>epäonnistui.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Paikalliskansion %1 luonti epäonnistui</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Etäkansiota ei määritelty!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Virhe: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>luodaan kansio ownCloudiin: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Etäkansio %1 luotiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Etäkansio %1 on jo olemassa. Otetaan siihen yhteyttä tiedostojen täsmäystä varten.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Kansion luonti aiheutti HTTP-virhekoodin %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Etäkansion luominen epäonnistui koska antamasi tunnus/salasana ei täsmää!&lt;br/&gt;Ole hyvä ja palaa tarkistamaan tunnus/salasana&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Pilvipalvelun etäkansion luominen ei onnistunut , koska tunnistautumistietosi ovat todennäköisesti väärin.&lt;/font&gt;&lt;br/&gt;Palaa takaisin ja tarkista käyttäjätunnus ja salasana.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Etäkansion %1 luonti epäonnistui, virhe &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Täsmäysyhteys kansiosta %1 etäkansioon %2 on asetettu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Yhteys kohteeseen %1 muodostettiin onnistuneesti!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Yhteyttä osoitteeseen %1 ei voitu muodostaa. Ole hyvä ja tarkista uudelleen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Kansion nimen muuttaminen epäonnistui</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Paikallinen synkronointikansio %1 luotu onnistuneesti!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1866,12 +1884,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1-yhteysavustaja</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Ohita kansioiden määritykset</translation>
</message>
@@ -1897,7 +1915,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Yhteys aikakatkaistiin</translation>
</message>
@@ -1905,7 +1923,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1913,55 +1931,55 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Lataaminen laskisi vapaan levytilan määrän alle rajan %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Levyllä on vapaata tilaa vähemmän kuin %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Tiedosto poistettiin palvelimelta</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Tiedostoa ei voitu ladata täysin.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Tiedosto on muuttunut löytymisen jälkeen</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
</message>
@@ -2033,7 +2051,8 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
</message>
@@ -2041,12 +2060,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>HTTP-palvelin palautti väärän koodin. Odotettiin koodia 204, vastaanotettiin &quot;%1 %2&quot;.</translation>
</message>
@@ -2067,78 +2086,119 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Tätä kansiota ei ole tule nimetä uudelleen. Muutetaan takaisin alkuperäinen nimi.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Tiedosto nimettiin uudelleen, mutta se on osa &quot;vain luku&quot;-jakoa. Alkuperäinen tiedosto palautettiin.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>HTTP-palvelin palautti väärän koodin. Odotettiin koodia 201, vastaanotettiin &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Tiedosto poistettu</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Paikallinen tiedosto muuttui synkronoinnin aikana.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Paikallinen tiedosto poistettiin synkronoinnin aikana.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Paikallinen tiedosto muuttui synkronoinnin aikana.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Paikallinen tiedosto poistettiin synkronoinnin aikana.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Paikallinen tiedosto muuttui synkronoinnin aikana.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Virhe kirjoittaessa metadataa tietokantaan</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -2154,42 +2214,42 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>TekstiLeima</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Aika</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Tiedosto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Kansio</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Toiminto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Koko</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Paikallinen synkronointiprotokolla</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopioi</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopioi toimilista leikepöydälle.</translation>
</message>
@@ -2287,22 +2347,22 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Asetukset</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Toimet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Yleiset</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Verkko</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Tili</translation>
</message>
@@ -2310,27 +2370,27 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Toimet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Yleiset</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Verkko</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Tili</translation>
</message>
@@ -2358,32 +2418,32 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>ownCloud-polku:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 - Jakaminen</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Kansio: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Palvelin ei salli jakamista</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2422,43 +2482,58 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopioi &amp;linkki</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Salli muokkaus</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Suojaa salasanalla</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Salasanasuojattu</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>&amp;Julkinen jakaminen vaatii salasanan</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Aseta salasana</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Jaa linkki</translation>
</message>
@@ -2476,7 +2551,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Jaa käyttäjien tai ryhmien kanssa…</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Ei tuloksia haulla &apos;%1&apos;</translation>
</message>
@@ -2509,17 +2584,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>luo</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>muuta</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>poista</translation>
</message>
@@ -2527,12 +2602,12 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Kirjautumisvirhe</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Sinun tulee kirjautua käyttäjänä %1</translation>
</message>
@@ -2540,17 +2615,22 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Tunnistaudu</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Tunnistaudu uudelleen</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Istunto on vanhentunut. Kirjaudu uudelleen jatkaaksesi sovelluksen käyttämistä.</translation>
</message>
@@ -2558,7 +2638,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation type="unfinished"/>
@@ -2567,119 +2647,119 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Varmenteen tiedot&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Yleinen nimi (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisaatio (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organisaatioyksikkö (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Lääni/maakunta/provinssi:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Maa:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Sarjanumero:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Myöntäjä&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Myöntäjä:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Myönnetty:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Vanhenee:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Sormenjäljet&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Huomio:&lt;/b&gt; Tämä varmenne hyväksyttiin käsin&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (allekirjoitettu itse)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Yhteys on salattu, käytössä %1-bittinen %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Varmenteen tiedot:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Yhteys EI OLE turvallinen, koska sitä ei ole salattu.
@@ -2767,270 +2847,275 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Onnistui.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;%1-liitännäistä csyncia varten ei voitu ladata.&lt;br/&gt;Varmista asennuksen toimivuus!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Csync-synkronointipalvelussa tapahtui virhe sisäisten puurakenteiden prosessoinnissa.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync ei onnistunut varaamaan muistia.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync ei onnistunut yhdistämään verkkoon.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Tapahtui verkon aikakatkaisu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Tapahtui HTTP-välitysvirhe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Liitetty kansio on väliaikaisesti pois käytöstä tällä palvelimella</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Kansiota avatessa tapahtui virhe</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Kansiota lukiessa tapahtui virhe</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Vain %1 on käytettävissä, käynnistymiseen tarvitaan %2</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Ei sallittu, koska käyttöoikeutesi eivät riitä ylätason kansion lisäämiseen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Ei sallittu, koska käyttöoikeutesi eivät riitä tiedostojen lisäämiseen kyseiseen kansioon</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: %1-palvelimella ei ole tilaa vapaana.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync - määrittämätön virhe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Keskeytetty käyttäjän toimesta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Tiedoston nimi sisältää virheellisiä merkkejä, joita ei voi synkronoida alustariippumattomasti.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Palvelu ei ole juuri nyt käytettävissä</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Pääsy estetty</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Sisäinen virhe, numero %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Kohdetta ei synkronoitu aiempien virheiden vuoksi: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symboliset linkit eivät ole tuettuja synkronoinnissa.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Tiedosto on ohituslistalla.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Tiedoston nimi on liian pitkä.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat epäonnistui.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Tiedostonimen merkistökoodaus ei ole kelvollista</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Virheellisiä merkkejä, anna uusi nimi kohteelle &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Tiedoston nimi sisältää ainakin yhden virheellisen merkin</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Ei sallittu, koska oikeutesi eivät riitä alikansioiden lisäämiseen kyseiseen kansioon</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Poistaminen ei ole sallittua, palautetaan</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Paikalliset tiedostot ja jakokansio poistettu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Siirtäminen ei ole sallittua, kohde palautettu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>kohde</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>lähde</translation>
</message>
@@ -3054,17 +3139,17 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versio %1. Lisätietoja osoitteessa &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Tekijänoikeus ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3090,202 +3175,217 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Kirjaudu sisään</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Kansio %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Synkronointikansioita ei ole määritetty.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Synkronointikansioita ei ole määritelty.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Avaa selaimessa</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Kirjaudu sisään...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Kirjaudu ulos</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Viimeisimmät muutokset</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Hallitut kansiot:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Avaa kansio &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Avaa %1 selaimeen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Tuntematon tila</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Asetukset...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Tiedot...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ohje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Lopeta %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Katkaise yhteys kohteeseen %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Palvelimen versio ei ole tuettu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Katkaistu yhteys tileihin:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Tili %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Tilin synkronointi on poistettu käytöstä</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Keskeytä kaikki kansiot</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Palauta kaikki synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Palauta synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Keskeytä kaikki synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Keskeytä synkronointi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Kirjaudu ulos kaikista tileistä</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Kirjaudu kaikille tileille...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Kohteita ei ole synkronoitu äskettäin</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synkronoidaan %1/%2 (%3 jäljellä)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synkronoidaan %1 (%2 jäljellä)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synkronoidaan %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Ajan tasalla</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versio %2. Lisätietoja osoitteessa &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Tehnyt Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz ja muut.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Tekijänoikeus ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Lisensoitu GNU General Public License (GPL), versio 2.0 -lisenssillä&lt;br/&gt;ownCloud ja ownCloudin logo ovat ownCloud, Incin rekisteröimiä tavaramerkkejä Yhdysvalloissa ja muissa maissa.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3300,9 +3400,9 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TekstiLeima</translation>
</message>
@@ -3322,7 +3422,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Aloita &amp;puhdas synkronointi (poistaa paikallisen kansion!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Valitse synkronoitavat tiedot</translation>
</message>
@@ -3347,7 +3447,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>S&amp;ynkronoi kaikki palvelimelta</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Tilaviesti</translation>
</message>
@@ -3360,26 +3460,15 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<translation>Lomake</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Käyttäjätunnus</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Salasana</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TekstiLeima</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3496,7 +3585,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3504,37 +3593,37 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>tulevaisuudessa</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n päivä sitten</numerusform><numerusform>%n päivää sitten</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n tunti sitten</numerusform><numerusform>%n tuntia sitten</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>nyt</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Alle minuutti sitten</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minuutti sitten</numerusform><numerusform>%n minuuttia sitten</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Jokin aika sitten</translation>
</message>
@@ -3542,57 +3631,57 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 Gt</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 Mt</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 kt</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 t</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n vuosi</numerusform><numerusform>%n vuotta</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n kuukausi</numerusform><numerusform>%n kuukautta</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n päivä</numerusform><numerusform>%n päivää</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n tunti</numerusform><numerusform>%n tuntia</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuutti</numerusform><numerusform>%n minuuttia</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n sekunti</numerusform><numerusform>%n sekuntia</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3613,7 +3702,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Koostettu Git-revisiosta &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3, %4 käyttäen Qt:n versiota %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3621,82 +3710,92 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Ladattu</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Lähetetty</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Poistettu</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Tiedostojärjestelmän käyttövirhe</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Virhe</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Tuntematon</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>ladataan</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>lähetetään</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>poistetaan</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>siirretään</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>virhe</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_fr.ts b/translations/client_fr.ts
index d82c94dbb..4a64f9e93 100644
--- a/translations/client_fr.ts
+++ b/translations/client_fr.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Le fichier de destination a une erreur de taille ou de date de modification</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Décochez les dossiers qui doivent être &lt;b&gt;supprimés&lt;/b&gt; de votre disque local et qui ne doivent pas être synchronisés avec cet ordinateur.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Appliquer</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Connecté à &lt;server&gt; en tant que &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Aucun compte configuré.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Ajouter un nouveau</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Compte</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Choisir le contenu à synchroniser</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Supprimer la synchronisation du dossier</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Échec de création du dossier</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Impossible de créer le dossier local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Confirmer une suppression de synchronisation de dossier</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Supprimer la synchronisation de ce dossier</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synchronisation en cours</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>La synchronisation est en cours.&lt;br/&gt;Voulez-vous l&apos;arrêter ?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 utilisés</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 en tant que &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>La version %1 du serveur est ancienne et n&apos;est pas prise en charge. Continuez à vos risques et périls.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Connecté à %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Le serveur %1 est temporairement indisponible.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Session sur %1 fermée.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Pas de connexion à %1 sur %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Se connecter</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Certains dossiers n&apos;ont pas été synchronisés en raison de leur taille trop importante :</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmer la suppression du compte</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Êtes-vous sûr de vouloir enlever le compte &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note :&lt;/b&gt; Aucun fichier ne sera supprimé&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Supprimer la connexion</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Ouvrir le dossier</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Se déconnecter</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Reprendre</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Mettre en pause</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Voulez-vous vraiment arrêter de synchroniser le dossier &lt;i&gt;%1&lt;/i&gt; ?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note :&lt;/b&gt; Aucun fichier ne sera supprimé.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) de %2 utilisés. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 sur %2 utilisés</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actuellement aucune information d&apos;utilisation de stockage n&apos;est disponible.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Aucune connexion à %1 configurée</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Session fermée</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Déconnecté</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Connecté</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Service indisponible</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Erreur réseau</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Erreur de configuration</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Etat du compte inconnu</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Activité du serveur</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocole de synchronisation</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Liste des fichiers ignorés ou en erreur</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copier la liste d&apos;activités dans le presse-papier.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Fichiers non synchronisés</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Non Synchronisé (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>La liste des activités du serveur a été copiée dans le presse-papier.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>La liste des activités de synchronisation a été copiée dans le presse-papier.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>La liste des éléments non synchronisés a été copiée dans le presse-papier.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copié dans le presse-papier</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Activités Serveur</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copier la liste d&apos;activités dans le presse-papier.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Action exigée : Notifications</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Le compte %1 n&apos;a aucune activité activée.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Vous avez reçu %n nouvelle notification de %2.</numerusform><numerusform>Vous avez reçu %n nouvelles notifications de %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Vous avez reçu 1 nouvelle notification de %1 et %2.</numerusform><numerusform>Vous avez reçu %n nouvelles notifications de %1 et %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Vous avez reçu de nouvelles notifications de %1, %2 et d&apos;autres comptes.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Notifications - Action Requise</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Mot de passe du certificat :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Sélectionner un certificat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Fichiers de certificats (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Authentification requise</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Saisir le nom d&apos;utilisateur et le mot de passe pour &apos;%1&apos; sur %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Utilisateur :</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Mot de passe :</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Aucun compte ownCloud configuré</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Le serveur configuré pour ce client est trop vieux</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Erreur d&apos;authentification: nom d&apos;utilisateur et/ou mot de passe incorrect(s).</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>délai d&apos;attente</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Les informations d&apos;identification fournies ne sont pas correctes</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Délai de connexion dépassé</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Interrompu par l&apos;utilisateur</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Le dossier local %1 n&apos;existe pas.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 devrait être un dossier mais ne l&apos;est pas.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 ne peut pas être lu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1 : %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 a été supprimé.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 a été téléchargé.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 a été mis à jour.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 a été renommé en %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 a été déplacé vers %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 a été supprimé.</numerusform><numerusform>%1 et %n autres fichiers ont été supprimés.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 a été téléchargé.</numerusform><numerusform>%1 et %n autres fichiers ont été téléchargés.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 a été mis à jour.</numerusform><numerusform>%1 et %n autres fichiers ont été mis à jour.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 a été renommé en %2.</numerusform><numerusform>%1 a été renommé en %2 et %n autres fichiers ont été renommés.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 a été déplacé vers %2.</numerusform><numerusform>%1 a été déplacé vers %2 et %n autres fichiers ont été déplacés.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 a un conflit de synchronisation.</numerusform><numerusform>%1 et %n autres fichiers ont des problèmes de synchronisation.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 a un problème de synchronisation. Merci de vérifier le fichier conflit !</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 ne peut pas être synchronisé en raison d&apos;erreurs. Consultez les logs pour les détails.</numerusform><numerusform>%1 et %n autres fichiers n&apos;ont pas pu être synchronisés en raison d&apos;erreurs. Consultez les logs pour les détails.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 n&apos;a pu être synchronisé pour cause d&apos;erreur. Consultez les logs pour les détails.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Activité de synchronisation</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<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/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2.
Veuillez le sélectionner dans la fenêtre des paramètres pour le télécharger.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Peut-être la configuration a-t-elle été modifiée, ou les fichiers supprimé
Êtes-vous sûr de vouloir effectuer cette opération ?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Supprimer tous les fichiers ?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Supprimer tous les fichiers</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Garder les fichiers</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Cette synchronisation remettra une version précédente des fichiers dans le dossier de synchronisation &apos;%1&apos;.
-Cela peut être dû à une copie de sauvegarde restaurée sur le serveur.
-Continuer la synchronisation comme d&apos;habitude fera en sorte que tous les fichiers soient remplacés par des fichiers plus vieux d&apos;un état précédent. Voulez-vous garder les versions les plus récentes de vos fichiers en tant que fichiers conflictuels ?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Sauvegarde détecté</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Synchronisation normale</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Garder les fichiers locaux comme Conflits</translation>
</message>
@@ -742,112 +755,112 @@ Continuer la synchronisation comme d&apos;habitude fera en sorte que tous les fi
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Impossible de réinitialiser l&apos;état du dossier</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Un ancien fichier journal &apos;%1&apos; a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l&apos;utilise en ce moment.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(sauvegarde)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(sauvegarde %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Statut indéfini.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>En attente de synchronisation.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Préparation de la synchronisation.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>La synchronisation est en cours.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Dernière synchronisation effectuée avec succès</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<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 avertissement à propos de certains fichiers.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Erreur d&apos;installation.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Abandon par l&apos;utilisateur.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>La synchronisation est en pause.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synchronisation en pause)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Aucun dossier valable sélectionné !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Le chemin sélectionné n&apos;est pas un dossier !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Vous n&apos;avez pas la permission d&apos;écrire dans le dossier sélectionné !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Le dossier local %1 est déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Le dossier local %1 est un lien symbolique. Le dossier vers lequel le lien pointe contient un dossier déjà utilisé pour une synchronisation de dossier. Veuillez en choisir un autre !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre !</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Le dossier local %1 est un lien symbolique. Le dossier vers lequel le lien pointe est inclus dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre !</translation>
</message>
@@ -873,127 +886,133 @@ Continuer la synchronisation comme d&apos;habitude fera en sorte que tous les fi
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Vous devez être connecté pour ajouter un dossier</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Cliquez ce bouton pour ajouter un dossier à synchroniser.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Session fermée</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>L&apos;ajout de dossier est désactivé car vous synchronisez déjà tous vos fichiers. Si vous voulez synchroniser plusieurs dossiers, supprimez d&apos;abord le dossier racine configuré actuellement.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Récupération de la liste des dossiers depuis le serveur...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Recherche de modifications dans &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchronisation de %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>réception %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>envoi %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 restant, %1 sur %2, fichier %3 sur %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, fichier %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>fichier %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>En attente ...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>En attente de %n autre(s) dossier(s)</numerusform><numerusform>En attente de %n autre(s) dossier(s)</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Préparation à la synchronisation</translation>
</message>
@@ -1106,22 +1125,22 @@ Continuer la synchronisation comme d&apos;habitude fera en sorte que tous les fi
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Le serveur a retourné une gamme de contenu erronée</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Délai d&apos;attente de connexion dépassé</translation>
</message>
@@ -1203,28 +1222,25 @@ Continuer la synchronisation comme d&apos;habitude fera en sorte que tous les fi
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Veuillez entrer le mot de passe %1 :
-
-Utilisateur : %2
-Compte : %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Erreur lors de l&apos;accès au trousseau : &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Saisissez le mot de passe</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1285,7 @@ Compte : %3
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Les éléments dont la suppression automatique est permise seront supprimés s&apos;ils empêchent l&apos;effacement d&apos;un répertoire. C&apos;est utile pour les fichiers de méta-données.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Impossible d&apos;ouvrir le fichier</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Impossible d&apos;écrire les modifications sur &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Ajouter un motif à ignorer</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Ajoutez un nouveau motif à ignorer :</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Cette entrée est fournie par le système dans &apos;%1&apos; et ne peut être modifiée dans cette vue.</translation>
</message>
@@ -1372,7 +1388,7 @@ Les éléments dont la suppression automatique est permise seront supprimés s&a
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Délai de connexion dépassé</translation>
</message>
@@ -1488,32 +1504,32 @@ Les éléments dont la suppression automatique est permise seront supprimés s&a
<translation>Limiter automatiquement</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nom d&apos;hôte du serveur proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nom d&apos;utilisateur pour le serveur proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Mot de passe pour le serveur proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 est requis pour utiliser la limite de bande passante</translation>
</message>
@@ -1521,23 +1537,23 @@ Les éléments dont la suppression automatique est permise seront supprimés s&a
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Créé à %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Fermeture dans quelques secondes...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>La requête %1 a échoué à %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; sélectionné à %2</translation>
@@ -1675,7 +1691,7 @@ L&apos;assistant peut demander des privilèges additionnels durant le processus.
<translation>Configurer le certificat TLS client</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Impossible de se connecter à l&apos;adresse sécurisée &lt;em&gt;%1&lt;/em&gt;. Que souhaitez-vous faire ?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1699,17 @@ L&apos;assistant peut demander des privilèges additionnels durant le processus.
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Adresse mail</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Connexion à %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Saisissez les identifiants de connexion de l&apos;utilisateur</translation>
</message>
@@ -1731,139 +1747,139 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Échec de la connexion à %1 sur %2 :&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Délai d&apos;attente dépassé lors de la connexion à %1 sur %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Tentative de connexion à %1 sur %2 ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>La requête d&apos;authentification vers le serveur a été redirigée vers &apos;%1&apos;. L&apos;URL est erronée, le serveur est mal configuré.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Une réponse non valide a été reçue suite à une requête WebDav authentifiée.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Accès refusé par le serveur. Pour vérifier que vous avez accès, &lt;a href=&quot;%1&quot;&gt;cliquez ici&lt;/a&gt; pour accéder au service avec votre navigateur.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Création du dossier local de synchronisation %1... </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>échoué.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Impossible de créer le répertoire local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Aucun dossier distant spécifié !</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Erreur : %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>création d&apos;un répertoire sur ownCloud : %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Le dossier distant %1 a été créé avec succès.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Le dossier distant %1 existe déjà. Connexion.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>La création du dossier a généré le code d&apos;erreur HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>La création du répertoire distant a échoué car les informations d&apos;identification sont erronées !&lt;br/&gt;Veuillez revenir en arrière et les vérifier.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;La création du dossier distant a échoué, probablement parce que les informations d&apos;identification fournies sont fausses.&lt;/font&gt;&lt;br/&gt;Veuillez revenir en arrière et les vérifier.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>La création du dossier distant &quot;%1&quot; a échouée avec l&apos;erreur &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Connecté avec succès à %1 !</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>La connexion à %1 n&apos;a pu être établie. Veuillez réessayer.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Echec du renommage du dossier</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Impossible de supprimer et de sauvegarder le dossier parce que ce dossier ou un de ses fichiers est ouvert dans un autre programme. Veuillez fermer le dossier ou le fichier et ré-essayer, ou annuler l&apos;installation.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Dossier de synchronisation local %1 créé avec succès !&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1887,12 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Assistant de Connexion %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Passer outre la configuration des dossiers</translation>
</message>
@@ -1902,7 +1918,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Délai d&apos;attente de connexion dépassé</translation>
</message>
@@ -1910,7 +1926,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>L&apos;URL interrogéé a renvoyé une réponse json non valide</translation>
</message>
@@ -1918,55 +1934,55 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Le fichier %1 ne peut pas être téléchargé en raison d&apos;un conflit sur le nom de fichier local. </translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Le téléchargement réduirait l&apos;espace libre à moins de %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Il y a moins de %1 d&apos;espace libre sur le disque</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Le fichier a été supprimé du serveur</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<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/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Le fichier téléchargé est vide malgré que le serveur a annoncé qu&apos;il aurait dû être %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Le fichier a changé depuis sa découverte</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
</message>
@@ -2038,7 +2054,8 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Le fichier %1 ne peut pas être renommé en %2 à cause d&apos;un conflit local de nom de fichier</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
</message>
@@ -2046,12 +2063,12 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Le fichier a été supprimé d&apos;un partage en lecture seule. Il a été restauré.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Le code HTTP retourné par le serveur n&apos;est pas valide. La valeur attendue est 204 mais la valeur reçue est &quot;%1 %2&quot;.</translation>
</message>
@@ -2072,78 +2089,119 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Ce dossier ne doit pas être renommé. Il sera renommé avec son nom original.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Le nom de ce dossier ne doit pas être changé. Veuillez le renommer en Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Le fichier a été renommé mais appartient à un partage en lecture seule. Le fichier original a été restauré.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Le code HTTP retourné par le serveur n&apos;est pas valide. La valeur attendue est 201 mais la valeur reçue est &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fichier supprimé</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Fichier local modifié pendant la synchronisation. Elle va reprendre. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Fichier local modifié pendant la synchronisation.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Arrêt forcé du job après réinitialisation de connexion HTTP avec Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Fichier local supprimé pendant la synchronisation.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Fichier local modifié pendant la synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Arrêt forcé du job après réinitialisation de connexion HTTP avec Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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 été modifié localement mais appartient à un partage en lecture seule. Il a été restauré et vos modifications sont présentes dans le fichiers de conflit.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>URL de sondage manquante</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Fichier local supprimé pendant la synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Le serveur n&apos;a pas confirmé la réception du dernier morceau. (Aucun e-tag n&apos;était présent).</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Fichier local modifié pendant la synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Erreur à l&apos;écriture des métadonnées dans la base de données</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Le serveur n&apos;a pas confirmé la réception du dernier morceau. (Aucun e-tag n&apos;était présent).</translation>
</message>
</context>
<context>
@@ -2159,42 +2217,42 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Heure</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fichier</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Dossier</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Action</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocole de synchronisation locale</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copier la liste d&apos;activités dans le presse-papier.</translation>
</message>
@@ -2292,22 +2350,22 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Paramètres</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Activité</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Généraux</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2315,27 +2373,27 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Activité</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Généraux</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Compte</translation>
</message>
@@ -2363,32 +2421,32 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Chemin ownCloud :</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Partage %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Dossier: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Le serveur ne prend pas en charge le partage</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Récupération des permissions de partage maximales possibles depuis le serveur...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Le fichier ne peut pas être partagé car il a été partagé sans permission de repartage.</translation>
</message>
@@ -2427,43 +2485,58 @@ Il est déconseillé de l&apos;utiliser.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copier le &amp;lien</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permettre la modification</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Protéger par mot de p&amp;asse</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protégé par mot de passe</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Le fichier ne peut pas être partagé car il a été partagé sans permission de repartage.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Le p&amp;artage public nécessite un mot de passe</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Veuillez choisir un mot de passe</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Partager par &amp;lien public</translation>
</message>
@@ -2481,7 +2554,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Partager avec des utilisateurs ou groupes...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Aucun résultat pour &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2587,17 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>création</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>modification</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>suppression</translation>
</message>
@@ -2532,12 +2605,12 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Erreur de connexion</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Vous devez vous connecter en tant qu&apos;utilisateur %1</translation>
</message>
@@ -2545,17 +2618,22 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Authentifier</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Vue de débug Chipher SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Nouvelle authentification nécessaire</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Votre session a expiré. Vous devez vous connecter à nouveau pour continuer à utiliser le client.</translation>
</message>
@@ -2563,7 +2641,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Partager avec %1</translation>
@@ -2572,119 +2650,119 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Détails du certificat&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nom commun (CN) :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Noms alternatifs du sujet :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisation (O) :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unité d&apos;organisation (OU) :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>État/Région :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Pays :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Numéro de série :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Émetteur&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Émetteur :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Émis le :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Expire le :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Empreintes numériques&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5 :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256 :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1 :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Note :&lt;/b&gt; Ce certificat a été approuvé manuellement&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (auto-signé)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Cette connexion est chiffrée en utilisant %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Identifiants/tickets de sessions SSL non pris en charge</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informations du certificat :</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Cette connexion n&apos;est PAS sécurisée car elle n&apos;est pas chiffrée.
@@ -2772,270 +2850,275 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Succès.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync a échoué à charger du fichier journal. Le fichier journal est corrompu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Le module additionnel %1 pour csync n&apos;a pas pu être chargé.&lt;br/&gt;Merci de vérifier votre installation !&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Erreur CSync lors du traitement des arbres internes.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Erreur lors de l&apos;allocation mémoire par CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Erreur fatale CSync : mauvais paramètre.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Erreur CSync lors de l&apos;opération de mise à jour</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Erreur CSync lors de l&apos;opération de réconciliation</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync n&apos;a pu s&apos;authentifier auprès du proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync n&apos;a pu trouver le proxy ou serveur auquel se connecter.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync n&apos;a pu s&apos;authentifier auprès du serveur %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync n&apos;a pu établir une connexion au réseau.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Le délai d&apos;attente de la connexion réseau a été dépassé.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Une erreur de transmission HTTP s&apos;est produite.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Le dossier monté est temporairement indisponible sur le serveur</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Une erreur est survenue lors de l&apos;ouverture d&apos;un dossier</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Erreur lors de la lecture du dossier.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Le fichier/dossier est ignoré car il est caché.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Seulement %1 disponibles, il faut au moins %2 pour démarrer</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Non autorisé car vous n&apos;avez pas la permission d&apos;ajouter un dossier parent</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</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/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync : Aucun espace disponible sur le serveur %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Erreur CSync inconnue.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Interrompu par l&apos;utilisateur</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Le nom de fichier contient des caractères non valides qui ne peuvent être synchronisés entre plate-formes.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync n&apos;a pas pu accéder à</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync n’a pu charger ou créer le fichier de journalisation. Veuillez vérifier que vous possédez les droits en lecture/écriture dans le dossier de synchronisation local.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync a échoué en raison d&apos;un refus de permission non pris en charge.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync a tenté de créer un dossier déjà présent.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Le service est temporairement indisponible.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>L&apos;accès est interdit</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Une erreur interne numéro %1 est survenue.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Cet élément n&apos;a pas été synchronisé en raison des erreurs précédentes : %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Les liens symboliques ne sont pas pris en charge par la synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Le fichier est dans la liste des fichiers à ignorer.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Le nom de fichier est trop long.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat échoué.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>L&apos;encodage du nom de fichier n&apos;est pas valide</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caractères non valides. Veuillez renommer &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossible d&apos;initialiser un journal de synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Impossible de lire la liste noire de la base de données locale</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Impossible de lire le journal de synchronisation.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Impossible d&apos;ouvrir le journal de synchronisation</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Le nom de fichier contient au moins un caractère non valable</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignoré à cause de la liste noire &quot;Choisir le contenu à synchroniser&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</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/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Non autorisé à supprimer. Restauration</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Fichiers locaux et répertoire de partage supprimés.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Déplacement non autorisé, élément restauré</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>la destination</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>la source</translation>
</message>
@@ -3059,17 +3142,17 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Version %1. Pour plus d&apos;information, visitez &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribué par %1 et sous licence GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 et le logo %2 sont des marques enregistrées de %1 aux Etats-Unis, dans d&apos;autres pays, ou les deux.&lt;/p&gt;</translation>
</message>
@@ -3095,202 +3178,217 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Veuillez vous connecter</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Dossier %1 : %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Aucun répertoire synchronisé n&apos;est configuré.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Aucun répertoire à synchroniser n&apos;est configuré.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Connexion...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Se déconnecter</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Modifications récentes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Recherche de modifications dans &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Répertoires configurés :</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Ouvrir le dossier &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Ouvrir %1 dans le navigateur</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Statut inconnu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Paramètres...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Détails...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Quitter %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Déconnecté de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Version du Serveur non prise en charge</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Le serveur sur le compte %1 fonctionne avec une version ancienne et non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n&apos;est pas testé et est potentiellement dangereux. Procédez à vos risques et périls.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Déconnecté des comptes :</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Compte %1 : %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>La synchronisation du compte est désactiver .</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Relance tous les dossiers </translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Mettre en pause tous les dossiers</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>relancer toutes les synchronisations</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>relancer la synchronisation </translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Mettre en pause tout la synchronisation </translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Mettre en pause la synchronisation </translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Se déconnecter de tous les comptes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Se connecter à tous les comptes...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Plantage maintenant</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Aucun élément synchronisé récemment</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synchronisation de %1 sur %2 (%3 restant)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synchronisation de %1 (%2 restant)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchronisation de %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>À jour</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Version %2. Pour plus d&apos;informations, consultez &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;/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;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3305,9 +3403,9 @@ Il est déconseillé de l&apos;utiliser.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3327,7 +3425,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Réinitialiser la syn&amp;chronisation (Supprime le dossier local !)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Choisir le contenu à synchroniser</translation>
</message>
@@ -3352,7 +3450,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>S&amp;ynchroniser tout le contenu depuis le serveur</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Message d&apos;état</translation>
</message>
@@ -3365,26 +3463,15 @@ Il est déconseillé de l&apos;utiliser.</translation>
<translation>Formulaire</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Nom d&apos;utilisateur</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Mot de passe</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Message d&apos;erreur</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Zone de texte</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3588,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3509,37 +3596,37 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>Dans le futur</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>Hier</numerusform><numerusform>Il y a %n jours</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>Il y a %n heure</numerusform><numerusform>Il y a %n heures</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>maintenant</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Il y a moins d&apos;une minute</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>Il y a %n minute</numerusform><numerusform>Il y a %n minutes</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Il y a quelque temps</translation>
</message>
@@ -3547,57 +3634,57 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 Go</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 Mo</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 Ko</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 octets</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n an</numerusform><numerusform>%n ans</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n mois</numerusform><numerusform>%n mois</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n jour</numerusform><numerusform>%n jours</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n heure</numerusform><numerusform>%n heures</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minute</numerusform><numerusform>%n minutes</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n seconde</numerusform><numerusform>%n secondes</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3705,7 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Construit à partir de la révision Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; du %3, %4 en utilisant Qt %5, %6.&lt;/small&gt;&lt;p&gt;</translation>
</message>
@@ -3626,82 +3713,92 @@ Il est déconseillé de l&apos;utiliser.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Téléchargé</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Téléversé</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit.</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Effacé</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Déplacé vers %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignoré</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Erreur d&apos;accès au système de fichiers</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Inconnu</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>téléchargement de</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>téléversement</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>suppression</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>déplacement</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>Ignore</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>erreur</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_gl.ts b/translations/client_gl.ts
index 770c38315..fc49e2f8f 100644
--- a/translations/client_gl.ts
+++ b/translations/client_gl.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="gl" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="gl" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>O ficheiro de destino ten un tamaño ou unha hora de modificación non agardados</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Os cartafoles non seleccionados van seren &lt;b&gt;eliminados&lt;/b&gt; do seu sistema de ficheiros local e non volverán sincronizarse con esta computadora</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplicar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Conectado con &lt;server&gt; como &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Non hai contas configuradas.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Retirar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Conta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Escolla que sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Non foi posíbel crear o cartafol</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Non foi posíbel crear o cartafol local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sincronización en proceso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Estase a realizar a sincronización.&lt;br/&gt;Quere interrompela e rematala?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 como &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Conectado a %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>O servidor %1 non está dispoñíbel temporalmente.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Desconectado de %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Non hai conexión con %1 en %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Acceder</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Abrir o cartafol</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Desconectar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Continuar coa sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Por en pausa a sincronización</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Actualmente non hai dispoñíbel ningunha información sobre o uso do almacenamento.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Non se configurou a conexión %1.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Conectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Servizo non dispoñíbel</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Produciuse un erro de rede</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Produciuse un erro de configuración</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estado da conta descoñecido</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocolo de sincronización</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista da actividade no portapapeis.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiado no portapapeis.</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Etiqueta de texto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista da actividade no portapapeis.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Contrasinal do certificado :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Seleccione un certificado</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Ficheiros de certificado (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>É necesario autenticarse</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Escriba o nome de usuario e o contrasinal para «%1» en %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Usuario:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Contrasinal:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Non hai configurada ningunha conta ownCloud </translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>O servidor configurado para este cliente é moi antigo</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Actualice ao último servidor e reinicie o cliente.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Produciuse un erro de autenticación: Ou o nome de usuario ou o contrasinal poderían ser erróneos</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>caducidade</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>As credenciais fornecidas non son correctas</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Esgotouse o tempo de conexión</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Interrompido polo usuario</translation>
</message>
@@ -579,158 +594,158 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>O cartafol local %1 non existe.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 non é lexíbel.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi retirado satisfactoriamente.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi descargado satisfactoriamente.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi enviado satisfactoriamente.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 foi renomeado satisfactoriamente a %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 foi movido satisfactoriamente a %2</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 non puido sincronizarse por mor dun erro. Vexa os detalles no rexistro.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Actividade de sincronización</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Non foi posíbel ler o ficheiro de exclusión do sistema</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Foi engadido un novo cartafol maior de %1 MB: %2.
Vaia aos axustes e seleccióneo se quere descargalo.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Retirar todos os ficheiros?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Retirar todos os ficheiros</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Manter os ficheiros</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -738,112 +753,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Non foi posíbel restabelecer o estado do cartafol</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Atopouse un rexistro de sincronización antigo en «%1» máis non pode ser retirado. Asegúrese de que non o está a usar ningunha aplicación.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(copia de seguranza)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(copia de seguranza %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estado sen definir.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Preparando para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Estase sincronizando.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>A última sincronización fíxose correctamente.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>A última sincronización fíxose correctamente, mais con algún aviso en ficheiros individuais.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Erro de configuración.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Interrompido polo usuario.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Sincronización en pausa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (sincronización en pausa)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Non seleccionou ningún cartafol correcto!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Vostede non ten permiso para escribir neste cartafol!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -869,127 +884,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Ten que estar conectado para engadir un cartafol</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Prema nesta botón para engadir un cartafol para sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sincronizando %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>descargar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>enviar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, ficheiro %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>ficheiro %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation type="unfinished"/>
</message>
@@ -1102,22 +1123,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>O servidor devolveu un intervalo de contidos estragado</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Esgotouse o tempo de conexión</translation>
</message>
@@ -1199,28 +1220,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Escriba o contrasinal %1:
-
-Usuario: %2
-Conta: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>A lectura do chaveiro fallou co erro: «%1»</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Escriba o contrasinal</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1265,34 +1283,34 @@ Conta: %3
<translation>Retirar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Non foi posíbel abrir o ficheiro</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Non é posíbel escribir os cambios en «%1».</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Engadir o patrón a ignorar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Engadir un novo patrón a ignorar:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Esta entrada é fornecida polo sistema en «%1» e non pode ser modificado nesta vista.</translation>
</message>
@@ -1366,7 +1384,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Esgotouse o tempo de conexión</translation>
</message>
@@ -1482,32 +1500,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Limitar automáticamente</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nome de host para o servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nome de usuario para o servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Contrasinal para o servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1515,23 +1533,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1669,7 +1687,7 @@ actualización pode pedir privilexios adicionais durante o procedemento.</transl
<translation>Configurar o certificado TLS do lado do cliente</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Produciuse un erro ao conectar co enderezo seguro do servidor &lt;em&gt;%1&lt;/em&gt;. Como quere proceder?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1677,17 +1695,17 @@ actualización pode pedir privilexios adicionais durante o procedemento.</transl
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Conectar con %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Escriba as credenciais do usuario</translation>
</message>
@@ -1725,139 +1743,139 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Conectouse correctamente a %1: %2 versión %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Non foi posíbel conectar con %1 en %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Esgotouse o tempo tentando conectarse a %1 en %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Tentando conectarse a %1 en %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>A solicitude autenticada no servidor foi redirixida a «%1», O URL é incorrecto, o servidor está mal configurado.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Deuse unha resposta incorrecta a unha solicitude de WebDAV autenticada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Acceso prohibido polo servidor. Para comprobar que dispón do acceso axeitado, &lt;a href=&quot;%1&quot;&gt;prema aquí&lt;/a&gt; para acceder ao servizo co seu navegador.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>O cartafol de sincronización local %1 xa existe. Configurándoo para a sincronización.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Creando un cartafol local de sincronización %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>aceptar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>fallou.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Non foi posíbel crear o cartafol local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Non foi especificado o cartafol remoto!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Erro: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>creando o cartafol en ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>O cartafol remoto %1 creouse correctamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>O cartafol remoto %1 xa existe. Conectándoo para a sincronización.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>A creación do cartafol resultou nun código de erro HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>A creación do cartafol remoto fracasou por por de seren incorrectas as credenciais!&lt;br/&gt;Volva atrás e comprobe as súas credenciais.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;A creación do cartafol remoto fallou probabelmente debido a que as credenciais que se deron non foran as correctas.&lt;/font&gt;&lt;br/&gt;Volva atrás e comprobe as súas credenciais.&lt;/p&gt; </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Produciuse un fallo ao crear o cartafol remoto %1 e dou o erro &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Estabeleceuse a conexión de sincronización de %1 ao directorio remoto %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Conectou satisfactoriamente con %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Non foi posíbel estabelecer a conexión con %1. Compróbeo de novo.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Non foi posíbel renomear o cartafol</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Non é posíbel retirar e facer unha copia de seguranza do cartafol, xa que o cartafol ou un ficheiro está aberto noutro programa Peche o cartafol ou o ficheiro e ténteo de novo, ou cancele a acción.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;O cartafol local de sincronización %1 creouse correctamente!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1865,12 +1883,12 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Asistente de conexión %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Omitir a configuración dos cartafoles</translation>
</message>
@@ -1896,7 +1914,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Esgotouse o tempo de conexión</translation>
</message>
@@ -1904,7 +1922,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>O URL requirido devolveu unha resposta JSON incorrecta</translation>
</message>
@@ -1912,55 +1930,55 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>O ficheiro vai seren eliminado do servidor</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Non foi posíbel descargar completamente o ficheiro.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Non foi posíbel gardar o ficheiro %1 por mor dunha colisión co nome dun ficheiro local!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>O ficheiro cambiou após seren atopado</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2032,7 +2050,8 @@ Recomendámoslle que non o use.</translation>
<translation>Non é posíbel renomear o ficheiro %1 como %2 por mor dunha colisión co nome dun ficheiro local</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2040,12 +2059,12 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Foi retirado un ficheiro desde unha compartición de só lectura. Foi restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>O servidor devolveu código HTTP incorrecto. Agardábase 204, mais recibiuse «%1 %2».</translation>
</message>
@@ -2066,77 +2085,118 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Non é posíbel renomear este cartafol. Non se lle cambiou o nome, mantense o orixinal.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Non é posíbel renomear este cartafol. Devólvalle o nome ao compartido.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>O ficheiro foi renomeado mais é parte dunha compartición de só lectura. O ficheiro orixinal foi restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>O servidor devolveu código HTTP incorrecto. Agardábase 201, mais recibiuse «%1 %2».</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Ficheiro retirado</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>O ficheiro local cambiou durante a sincronización. Retomase.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>O ficheiro local cambiou durante a sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Forzando a interrupción do traballo na conexión HTTP reiniciandoa con Qt &lt;5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>O ficheiro local retirarase durante a sincronización.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>O ficheiro local cambiou durante a sincronización.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Forzando a interrupción do traballo na conexión HTTP reiniciandoa con Qt &lt;5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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 só lectura. O ficheiro foi restaurado e a súa edición atopase no ficheiro de conflitos.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Non se atopa o URL requirido</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>O ficheiro local retirarase durante a sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>O ficheiro local cambiou durante a sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2153,42 +2213,42 @@ Recomendámoslle que non o use.</translation>
<translation>Etiqueta de texto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Hora</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Ficheiro</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Cartafol</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Acción</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista da actividade no portapapeis.</translation>
</message>
@@ -2286,22 +2346,22 @@ Recomendámoslle que non o use.</translation>
<translation>Axustes</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Actividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Xeral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2309,27 +2369,27 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Actividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Xeral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2357,32 +2417,32 @@ Recomendámoslle que non o use.</translation>
<translation>Ruta ao ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Compartindo %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Cartafol: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Non é posíbel compartir o ficheiro, xa que foi compartido sen permisis para compartir.</translation>
</message>
@@ -2421,43 +2481,58 @@ Recomendámoslle que non o use.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copiar a &amp;ligazón</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permitir a edición</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Contr&amp;asinal de protección</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protexido con contrasinal</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Non é posíbel compartir o ficheiro, xa que foi compartido sen permisis para compartir.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>A comp&amp;artición pública precisa de contrasinal </translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Estabeleza o contrasinal</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Ligazón para compartir</translation>
</message>
@@ -2475,7 +2550,7 @@ Recomendámoslle que non o use.</translation>
<translation>Compartir con usuarios ou grupos ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2508,17 +2583,17 @@ Recomendámoslle que non o use.</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>crear</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>cambio</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>eliminar</translation>
</message>
@@ -2526,12 +2601,12 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Erro de acceso</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Ten que rexistrarse como usuario %1</translation>
</message>
@@ -2539,17 +2614,22 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticado</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>É necesario volver autenticarse</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Caducou a sesión. É necesario que volva a acceder para seguir usando o cliente. </translation>
</message>
@@ -2557,7 +2637,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartir con %1</translation>
@@ -2566,119 +2646,119 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Detalles do certificado&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nome común (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Nomes alternativos do titular:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organización (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unidade organizativa (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estado/provincia:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>País</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emisor&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emisor:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Emitido o:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Caduca o:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Pegadas dixitais&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Este certificado foi aprobado manualmente&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (autoasinada)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Esta conexión está cifrada empregando %1 a %2 bits.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Información do certificado:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Esta conexión non é segura e non está cifrada.
@@ -2766,270 +2846,275 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Correcto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>Produciuse un fallo en CSync ao cargar o ficheiro de rexistro. O ficheiro de rexistro está estragado.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Non foi posíbel cargar o engadido %1 para CSync.&lt;br/&gt;Verifique a instalación!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync tivo un erro ao procesar árbores internas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Produciuse un fallo ao reservar memoria para CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Produciuse un erro fatal de parámetro CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Produciuse un fallo ao procesar o paso de actualización de CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Produciuse un fallo ao procesar o paso de reconciliación de CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync non puido autenticarse no proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSYNC no puido atopar o servidor proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync non puido autenticarse no servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSYNC no puido conectarse á rede.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Excedeuse do tempo de espera para a conexión á rede.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Produciuse un erro na transmisión HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Non hai espazo dispoñíbel no servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Produciuse un erro non especificado de CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Interrompido polo usuario</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>O nome de ficheiro conten caracteres incorrectos que non poden sincronizarse entre distintas plataformas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>Produciuse un fallo ao reservar memoria para CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>O servizo está temporalmente inaccesíbel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Produciuse un erro interno número %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Este elemento non foi sincronizado por mor de erros anteriores: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>As ligazóns simbolicas non son admitidas nas sincronizacións</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>O ficheiro está na lista de ignorados.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>O nome de ficheiro é longo de máis.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Fallou a obtención de estatísticas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>O nome de ficheiro codificado non é correcto</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caracteres incorrectos, déalle outro nome a «%1»</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Non é posíbel preparar un rexistro de sincronización.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Non foi posíbel abrir o rexistro de sincronización</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>O nome de ficheiro contén algún carácter incorrecto</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorado por mor da lista negra de «escolla que sincronizar»</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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 é só de lectura no servidor, restaurando</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Non está permitido retiralo, restaurando</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Retirados os ficheiros locais e o cartafol compartido.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Nos está permitido movelo, elemento restaurado</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Bon está permitido movelo xa que %1 é só de lectura</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>o destino</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>a orixe</translation>
</message>
@@ -3053,17 +3138,17 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versión %1. Para obter máis información visite &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuído por %1 e licenciado baixo a Licenza Pública Xeral (GPL) GNU Versión 2.0.&lt;br/&gt;Os logotipos %2 e %2 son marcas rexistradas de %1 nos Estados Unidos de Norte América e/ou outros países.&lt;/p&gt;</translation>
</message>
@@ -3089,202 +3174,217 @@ Recomendámoslle que non o use.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Ten que rexistrarse</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Cartafol %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Non se configuraron cartafoles de sincronización.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Non existen cartafoles de sincronización configurados.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Abrir no navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Desconectar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Cambios recentes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Cartafoles xestionados:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Abrir o cartafol «%1»</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Abrir %1 nun navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Estado descoñecido</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Axustes...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalles...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Axuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Saír de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Desconectado de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Desconectado das contas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Conta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Quebrou agora</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Non hai elementos sincronizados recentemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronizando %1 of %2 (restan %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sincronizando %1 (restan %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sincronizando %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Actualizado</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versión %2. Para obter 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;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licenciado baixo a Licenza Publica Xeral (GPL) GNU Version 2.0&lt;br/&gt;ownCloud e o logotipo ownCloud son marcas rexistradas da ownCloud, Inc. nos EE.UU de Norte América, noutros países ou en ambos.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3299,9 +3399,9 @@ Recomendámoslle que non o use.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Etiqueta de texto</translation>
</message>
@@ -3321,7 +3421,7 @@ Recomendámoslle que non o use.</translation>
<translation>Iniciar unha sincronización &amp;limpa (Borra o cartafol local!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Escolla que sincronizar</translation>
</message>
@@ -3346,7 +3446,7 @@ Recomendámoslle que non o use.</translation>
<translation>Sincronizar &amp;todo o contido do servidor</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Mensaxe de estado</translation>
</message>
@@ -3359,26 +3459,15 @@ Recomendámoslle que non o use.</translation>
<translation>Formulario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>Nome do &amp;usuario</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Contrasinal</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etiqueta de erro</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Etiqueta de texto</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3495,7 +3584,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3503,37 +3592,37 @@ Recomendámoslle que non o use.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3541,57 +3630,57 @@ Recomendámoslle que non o use.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3612,7 +3701,7 @@ Recomendámoslle que non o use.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Construído a partir de la revisión Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; en %3, %4 usando Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3620,82 +3709,92 @@ Recomendámoslle que non o use.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Descargado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Enviado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Eliminado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Movido a %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Produciuse un erro de acceso ao sistema de ficheiros</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Descoñecido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>descargando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>enviando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>eliminando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>movendo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>erro</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_hu.ts b/translations/client_hu.ts
index 942c0132c..9cb928ddb 100644
--- a/translations/client_hu.ts
+++ b/translations/client_hu.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="hu_HU" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="hu_HU" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>A cél fájl váratlan méretű vagy módosítási dátumú</translation>
</message>
@@ -104,14 +104,29 @@
<translation>A jelöletlen könyvtárak &lt;b&gt;törlésre kerülnek&lt;/b&gt; a helyi fájlrendszeredről és a továbbiakban nem lesz szinkronizálva ezzel a számítógéppel</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Alkalmaz</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Mégsem</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Csatlakoztatva &lt;user&gt; felhasználóval ehhez: &lt;server&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Nincs beállított kapcsolat.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Új hozzáadása</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Eltávolítás</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Fiók</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Szinkronizálandó elemek kiválasztása</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Könyvtár szinkronizációs kapcsolat törlése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Könyvtár létrehozása nem sikerült</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Nem lehet helyi könyvtárat létrehozni: &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Könyvtár szinkronizációs kapcsolat törlésének megerősítése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Könyvtár szinkronizációs kapcsolat törlése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Szinkronizálás fut</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>A szinkronizálás folyamatban van. &lt;br/&gt;Szakítsuk meg?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 használatban</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1, mint &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>%1 szerver verzió régi és már nem támogatott! Folytatás saját felelősségre.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Csatlakozva: %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>%1 szerver jelenleg nem elérhető.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Kijelentkezve innen: %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Nincs kapcsolat ehhez: %1 ekkor: %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Bejelentkezés</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Néhány új könyvtár nem került szinkronizálása, mert azok túl nagyok:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Fiók törlésének megerősítése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Tényleg törölni szeretné a kapcsolatot &lt;i&gt;%1&lt;/i&gt; fiókkal?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Megjegyzés:&lt;/b&gt; Ez &lt;b&gt;nem&lt;/b&gt; töröl fájlokat.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Kapcsolat törlése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Könyvtár megnyitása</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Kilépés</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Szinkronizálás folytatása</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Szinkronizálás szüneteltetése</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Tényleg leszeretné állítani &lt;i&gt;%1&lt;/i&gt; könyvtár szinkronizálását?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Megjegyzés:&lt;/b&gt; Ez &lt;b&gt;nem&lt;/b&gt; töröl fájlokat.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) / %2 használatban. Néhány könyvtár - beleértve a hálózati megosztásokat és a megosztott könyvtárakat - eltérő korlátozással rendelkezhet.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 / %2 használatban</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Jelenleg nem érhető el tárhelyhasználati információ.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Nincs beállított kapcsolat: %1.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Kijelentkezve</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Szétcsatlakozva</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Csatlakozva</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Szolgáltatás nem érhető el</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Hálózati hiba</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Beállítási hiba</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Ismeretlen fiók állapot</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Szerver aktivitás</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Szinkronizációs protokoll</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Kihagyott vagy hibás fájlok listázása</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Másolás</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Az aktivitási lista másolása a vágólapra.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Nincs szinkronizálva</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Nincs szinkronizálva (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>A szerver aktivitási lista a vágólapra másolva.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>A szinkronizációs aktivitási lista a vágólapra másolva.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>A nem szinkronizált elemek a vágólapra másolva.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Másolva a vágólapra</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Szerver aktivitások</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Másolás</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Aktivitási lista másolása a vágólapra.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Beavatkozás szükséges: Értesítések</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br /&gt; %1 fióknak nincsenek engedélyezve az aktivitások.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>%n új értesítést kapott innen: %2.</numerusform><numerusform>%n új értesítést kapott innen: %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>%n új értesítést kapott innen: %1 és %2.</numerusform><numerusform>%n új értesítést kapott innen: %1 és %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Új értesítést kapott innen: %1, %2 és további fiókoktól.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 értesítések - Beavatkozás szükséges</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Tanúsítvány jelszava:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Válasszon tanúsítványt</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Tanúsítvány fájlok (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Hitelesítés szükséges</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Felhasználónév és jelszó beírása ehhez: %1 itt: %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Felhasználó:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Jelszó:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Nincs ownCloud fiók beállítva</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>A beállított szerver ehhez a klienshez túl régi</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Kérjük, frissítse a szervert az utolsó verzióra és indítsa újra a klienst.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Hitelesítési hiba: A felhasználónév vagy a jelszó hibás.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>időtúllépés</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>A megadott adatok helytelenek.</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>A kapcsolat időtúllépés miatt megszakadt</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Felhasználó megszakította</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>%1 helyi mappa nem létezik.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 valószínűleg könyvtár, de nem az.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 nem olvasható.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 sikeresen törölve.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 sikeresen letöltve.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 sikeresen feltöltve.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 átnevezve erre: %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 áthelyezve ide: %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 és %n további fájl törölve.</numerusform><numerusform>%1 és %n további fájl törölve.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 és %n további fájl letöltve.</numerusform><numerusform>%1 és %n további fájl letöltve.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 és %n további fájl feltöltve.</numerusform><numerusform>%1 és %n további fájl feltöltve.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 átnevezve erre: %2 és még %n további fájl átnevezve.</numerusform><numerusform>%1 átnevezve erre: %2 és még %n további fájl átnevezve.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 áthelyezve ide: %2 és még %n további fájl áthelyezve.</numerusform><numerusform>%1 áthelyezve ide: %2 és még %n további fájl áthelyezve.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 és %n további fájl szinkronizálási konfliktussal rendelkezik.</numerusform><numerusform>%1 és %n további fájl szinkronizálási konfliktussal rendelkezik.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 fájl szinkronizálási konfliktussal rendelkezik. Kérjük ellenőrizze a konfliktus fájlt!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 és %n további fájlt nem sikerült szinkronizálni. Bővebb információ a naplófájlban.</numerusform><numerusform>%1 és %n további fájlt nem sikerült szinkronizálni. Bővebb információ a naplófájlban.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 nem sikerült szinkronizálni. Bővebb információ a naplófájlban.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Szinkronizálási aktivitás</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Törli az összes fájlt?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Összes fájl eltávolítása</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Fájlok megtartása</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Biztonsági mentés észlelve</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normal szinkronizáció</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Helyi file-ok megtartása konfliktusként</translation>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(biztonsági mentés)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(biztonsági mentés: %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Ismeretlen állapot.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Várakozás a szinkronizálás elindítására.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Előkészítés szinkronizációhoz.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Szinkronizálás fut.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Legutolsó szinkronizálás sikeres volt.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Az utolsó szinkronizáció sikeresen lefutott, de néhány figyelmeztetés van.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Beállítás hiba.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Felhasználó megszakította.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Szinkronizálás megállítva.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (szinkronizálás megállítva)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nincs érvényes könyvtár kiválasztva!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>A kiválasztott elérési út nem könyvtár!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Nincs joga a kiválasztott könyvtár írásához!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Kijelentkezve</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>%1 szinkronizálása</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>letöltés: %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>feltöltés: %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 / %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 maradt, %1 / %2, %3 / %4 fájl</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>%1 / %2 fájl</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Várakozás...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Várakozás %n további könyvtárra...</numerusform><numerusform>Várakozás %n további könyvtárra...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Felkészülés szinkronizálásra...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Kapcsolat időtúllépés</translation>
</message>
@@ -1198,28 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Kérjük, add meg %1 jelszót:
-
-Felhasználó: %2
-Fiók: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Jelszómegadás</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1264,34 +1282,34 @@ Fiók: %3
<translation>Eltávolítás</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Nem sikerült a fájl megnyitása</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation type="unfinished"/>
</message>
@@ -1365,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>A kapcsolat időtúllépés miatt megszakadt</translation>
</message>
@@ -1481,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Korlátozás automatikusan</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Proxy kiszolgáló</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Proxy felhasználónév</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Proxy jelszó</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1514,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1667,7 +1685,7 @@ for additional privileges during the process.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
@@ -1675,17 +1693,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Csatlakozás: %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Azonosítási adatok megadása</translation>
</message>
@@ -1722,139 +1740,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Sikeresen csatlakozott az %1-hoz: %2 verziószám %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Próbál kapcsolódni az %1-hoz: %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>A helyi %1 mappa már létezik, állítsa be a szinkronizálódását.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation> sikertelen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Hiba: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>%1 távoli nappa sikeresen létrehozva.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>A %1 távoli mappa már létezik. Csatlakoztassa a szinkronizációhoz.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>A könyvtár létrehozásakor keletkezett HTTP hibakód %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;A távoli mappa létrehozása sikertelen, valószínűleg mivel hibásak a megdott hitelesítési adatok.&lt;/font&gt;&lt;br/&gt;Lépjen vissza és ellenőrizze a belépési adatokat.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>A távoli %1 mappa létrehozása nem sikerült. Hibaüzenet: &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>A szinkronizációs kapcsolat a %1 és a %2 távoli mappa között létrejött.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Sikeresen csatlakozva: %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>A kapcsolat a %1 kiszolgálóhoz sikertelen. Ellenőrizze újra.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>A mappa átnevezése nem sikerült</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Helyi %1 szinkronizációs mappa sikeresen létrehozva!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1862,12 +1880,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 kapcsolódási varázsló</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation type="unfinished"/>
</message>
@@ -1893,7 +1911,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Kapcsolat időtúllépés</translation>
</message>
@@ -1901,7 +1919,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1909,55 +1927,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>A fájl törlésre került a szerverről</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2029,7 +2047,8 @@ It is not advisable to use it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2037,12 +2056,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2063,77 +2082,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fájl törölve</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>A helyi fájl el lett távolítva a szinkronizálás alatt.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>A helyi fájl el lett távolítva a szinkronizálás alatt.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2150,42 +2210,42 @@ It is not advisable to use it.</source>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Idő</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fájl</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Mappa</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Művelet</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Méret</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Másolás</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Az aktivitási lista másolása a vágólapra.</translation>
</message>
@@ -2283,22 +2343,22 @@ It is not advisable to use it.</source>
<translation>Beállítások</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivitás</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Általános</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Hálózat</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Fiók</translation>
</message>
@@ -2306,27 +2366,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivitás</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Általános</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Hálózat</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Fiók</translation>
</message>
@@ -2354,32 +2414,32 @@ It is not advisable to use it.</source>
<translation>ownCloud útvonala:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 megosztás</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Könyvtár: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>A fájlt nem lehetett megosztani, mert megosztási jogosultság nélkül lett megosztva.</translation>
</message>
@@ -2418,43 +2478,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>&amp;Hivatkozás másolása</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Szerkesztés engedélyezése</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>J&amp;elszóval védve</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Jelszóval védett</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>A fájlt nem lehetett megosztani, mert megosztási jogosultság nélkül lett megosztva.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Nyilvános me&amp;gosztáshoz szükség van jelszóra</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Kérjük, állíts be egy jelszót</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Hivatkozás &amp;megosztása</translation>
</message>
@@ -2472,7 +2547,7 @@ It is not advisable to use it.</source>
<translation>Megosztás felhasználókkal vagy csoportokkal ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2505,17 +2580,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>létrehoz</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>változtatás</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>törlés</translation>
</message>
@@ -2523,12 +2598,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Bejelentkezési hiba</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>%1 felhasználóként kell belépned</translation>
</message>
@@ -2536,17 +2611,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Azonosítás</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Felhasználóazonosítás szükséges</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation type="unfinished"/>
</message>
@@ -2554,7 +2634,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Megosztás vele: %1</translation>
@@ -2563,119 +2643,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Tanúsítvány részletei&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Általános név (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>A tárgy további nevei:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Szervezet (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Szervezeti egység (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Tagállam/Megye:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Ország:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Sorozatszám:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Kibocsátó&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Aláíró:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Kibocsátva:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Lejárat:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Ujjlenyomatok&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Megjegyzés:&lt;/b&gt; A tanúsítvány kézileg jóváhagyva&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (önaláírt)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Ez a kapcsolat %1 bittel van titkosítva: %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Tanúsítvány adatok:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation type="unfinished"/>
@@ -2762,270 +2842,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Sikerült.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Az %1 beépülőmodul a csync-hez nem tölthető be.&lt;br/&gt;Ellenőrizze a telepítést!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>A CSync hibába ütközött a belső adatok feldolgozása közben.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Hiba a CSync memórifoglalásakor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync hibás paraméterhiba.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync frissítés feldolgozása meghíusult.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync egyeztetési lépés meghíusult.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>A CSync nem találja a proxy kiszolgálót.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>A CSync nem tuja azonosítani magát a %1 kiszolgálón.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync hálózati kapcsolódási hiba.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTP átviteli hiba történt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Nincs szabad tárhely az %1 kiszolgálón.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync ismeretlen hiba.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Felhasználó megszakította</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>A szolgáltatás ideiglenesen nem elérhető</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Fájl a kizárási listán.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Fájlnév túl nagy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Érvénytelen karakterek, kérjük nevezd át: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>A fájlnév legalább egy érvénytelen karaktert tartalmaz!</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>a cél</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>a forrás</translation>
</message>
@@ -3049,17 +3134,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>%1 verzió elérhető. &lt;p&gt;További információk: &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Szerzői jog: ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3085,202 +3170,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Belépés szükséges</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Mappa %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nincsenek megadva szinkronizálandó mappák.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Nincsenek megadva szinkronizálandó mappák.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Megnyitás böngészőben</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Bejelentkezés...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Kilépés</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Legutóbbi változások</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Kezelt mappák:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>„%1” könyvtár megnyitása</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>%1 megnyitása böngészőben</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Ismeretlen állapot</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Beállítások...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Részletek...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Súgó</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1 kilépés</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Szétcsatlakozva innen: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Szétcsatlakozva a fiókokból: ó</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>%1 fiók: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Mostanában nincs szinkronizált elem</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>%1/%2 szinkronizálása (%3 maradt)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>%1 szinkronizálása (%2 maradt)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>%1 szinkronizálása</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Naprakész</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Verzió: %2. Bővebb információért látogass el ide: &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Készítők: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz és még mások.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Minden jog fenntartva. ownCloud, Inc.&lt;/p&gt;&lt;p&gt;A GNU General Public License (GPL) 2.0-ás verziója alatt licencelve&lt;br/&gt;A ownCloud és a ownCloud logó a ownCloud, Inc. bejegyzett védjegye az Egyesült Államokban és más országokban.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3295,9 +3395,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3317,7 +3417,7 @@ It is not advisable to use it.</source>
<translation>&amp;Tiszta szinkronizálás elindítása (Mindent töröl a helyi könyvtárból!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Szinkronizálandó elemek kiválasztása</translation>
</message>
@@ -3342,7 +3442,7 @@ It is not advisable to use it.</source>
<translation>M&amp;inden szinkronizálása a szerverről</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Állapotüzenet</translation>
</message>
@@ -3355,26 +3455,15 @@ It is not advisable to use it.</source>
<translation>Űrlap</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Felhasználónév</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Jelszó</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Hiba címke</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3491,7 +3580,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3499,37 +3588,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation type="unfinished"/>
</message>
@@ -3537,57 +3626,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3608,7 +3697,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Fordítva a &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; Git revizíóból, %3, %4 Qt %5, %6 felhasználásával&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3616,82 +3705,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Letöltve</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Feltöltve</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Törölve</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Áthelyezve ide: %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Kihagyva</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Fájlrendszer hozzáférési hiba</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Ismeretlen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>letöltés</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>feltöltés</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>törlés</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>áthelyezés</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>kihagyás</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>hiba</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_it.ts b/translations/client_it.ts
index af94fd14f..bb62a0264 100644
--- a/translations/client_it.ts
+++ b/translations/client_it.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="it" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="it" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Il file di destinazione ha una dimensione o un&apos;ora di modifica inattesa</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Le cartelle non marcate saranno &lt;b&gt;rimosse&lt;/b&gt; dal file system locale e non saranno sincronizzate più con questo computer</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Sincronizza tutto</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Non sincronizzare</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Applica le modifiche manuali</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Applica</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Annulla</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Connesso a &lt;server&gt; come &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Nessun account configurato.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Aggiungi nuovo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Rimuovi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Account</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Scegli cosa sincronizzare</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Rimuovi connessione di sincronizzazione cartelle</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Creazione della cartella non riuscita</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Impossibile creare la cartella locale &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Conferma rimozione connessione di sincronizzazione cartelle</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Rimuovi connessione di sincronizzazione cartelle</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>La sincronizzazione è in corso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>L&apos;operazione di sincronizzazione è in corso.&lt;br/&gt;Vuoi terminarla?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 in uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 come &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>La versione %1 del server è datata e non supportata! Continua a tuo rischio.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Connesso a %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Il server %1 è temporaneamente non disponibile.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Disconnesso da %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Nessuna connessione a %1 su %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Accedi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Ci sono nuove cartelle che non sono state sincronizzate poiché sono troppo grandi:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Conferma rimozione account</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vuoi davvero eliminare la connessione all&apos;account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; ciò &lt;b&gt;non&lt;/b&gt; eliminerà alcun file.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Rimuovi connessione</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Apri cartella</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Esci</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Riprendi la sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Sospendi la sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vuoi davvero fermare la sincronizzazione della cartella &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; ciò &lt;b&gt;non&lt;/b&gt; eliminerà alcun file.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) di %2 in uso. Alcune cartelle, incluse quelle montate in rete o le cartelle condivise, potrebbero avere limiti diversi.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1% di %2 in uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Non ci sono informazioni disponibili sull&apos;utilizzo dello spazio di archiviazione.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Nessuna connessione di %1 configurata.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Disconnesso</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Disconnesso</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Connesso</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Servizio non disponibile</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Errore di rete</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Errore di configurazione</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Stato dell&apos;account sconosciuto</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Attività del server</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocollo di sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Elenco dei file ignorati o errati</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia l&apos;elenco delle attività negli appunti.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Non sincronizzata</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Non sincronizzata (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>L&apos;elenco di attività del server è stato copiato negli appunti.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>L&apos;elenco di attività di sincronizzazione è stato copiato negli appunti.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>L&apos;elenco di elementi non sincronizzati è stato copiato negli appunti.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiato negli appunti</translation>
</message>
@@ -413,47 +428,47 @@
<translation>EtichettaTesto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Attività del server</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia l&apos;elenco delle attività negli appunti.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Azione richiesta: notifiche</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;L&apos;account %1 non ha attività abilitate.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Hai ricevuto %n nuova notifica da %2.</numerusform><numerusform>Hai ricevuto %n nuove notifiche da %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Hai ricevuto %n nuova notifica da %1 e %2.</numerusform><numerusform>Hai ricevuto %n nuove notifiche da %1 e %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Hai ricevuto nuove notifiche da %1, %2 e altri account.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 notifiche - azione richiesta</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Password del certificato:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Seleziona un certificato</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>File di certificato (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autenticazione richiesta</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Digita nome utente e password per &apos;%1&apos; su %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Utente:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Password:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Errore durante la scrittura dei metadati nel database</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Nessun account ownCloud configurato.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Il server configurato per questo client è troppo datato</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Aggiorna all&apos;ultima versione del server e riavvia il client.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Errore di autenticazione: nome utente o password errati.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>timeout</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Le credenziali fornite non sono corrette</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Connessione scaduta</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Interrotto dall&apos;utente</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>La cartella locale %1 non esiste.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 dovrebbe essere una cartella, ma non lo è.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 non è leggibile.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 è stato rimosso.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 è stato scaricato.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 è stato aggiornato.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 è stato rinominato in %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 è stato spostato in %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 e %n altro file sono stati rimossi.</numerusform><numerusform>%1 e %n altri file sono stati rimossi.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 e %n altro file sono stati scaricati.</numerusform><numerusform>%1 e %n altri file sono stati scaricati.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 e %n altro file sono stati aggiornati.</numerusform><numerusform>%1 e %n altri file sono stati aggiornati.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 è stato rinominato in %2 e %n altro file sono stati rinominati.</numerusform><numerusform>%1 è stato rinominato in %2 e %n altri file sono stati rinominati.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 è stato spostato in %2 e %n altro file sono stati spostati.</numerusform><numerusform>%1 è stato spostato in %2 e %n altri file sono stati spostati.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 e %n altro file hanno conflitti di sincronizzazione.</numerusform><numerusform>%1 e %n altri file hanno conflitti di sincronizzazione.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 ha un conflitto di sincronizzazione. Controlla il file in conflitto!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>1% e %n altro file non sono stati sincronizzati a causa di errori. Controlla il log per i dettagli.</numerusform><numerusform>1% e %n altri file non sono stati sincronizzati a causa di errori. Controlla il log per i dettagli.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 non può essere sincronizzato a causa di un errore. Controlla il log per i dettagli.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Sincronizza attività</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Impossibile leggere il file di esclusione di sistema</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Una nuova cartella più grande di %1 MB è stata aggiunta: %2.
Vai nelle impostazioni per selezionarla se desideri scaricarla.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,23 +715,23 @@ 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/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Vuoi rimuovere tutti i file?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Rimuovi tutti i file</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Mantieni i file</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation>Questa sincronizzazione potrebbe ripristinare i file a una data precedente nella cartella di sincronizzazione &apos;%1&apos;.
@@ -724,17 +739,17 @@ Ciò potrebbe verificarsi in seguito al ripristino di un backup sul server.
Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tutti i tuoi file con file più datati in uno stato precedente. Vuoi mantenere i tuoi file locali più recenti come file di conflitto?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup rilevato</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Sincronizzazione normale</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Mantieni i file locali come conflitto</translation>
</message>
@@ -742,112 +757,112 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Impossibile ripristinare lo stato della cartella</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>È stato trovato un vecchio registro di sincronizzazione &apos;%1&apos;, ma non può essere rimosso. Assicurati che nessuna applicazione lo stia utilizzando.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(copia di sicurezza)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(copia di sicurezza %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Stato non definito.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>In attesa di iniziare la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Preparazione della sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>La sincronizzazione è in corso.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>L&apos;ultima sincronizzazione è stata completata correttamente.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Ultima sincronizzazione avvenuta, ma con avvisi relativi a singoli file.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Errore di configurazione.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Interrotto dall&apos;utente.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>La sincronizzazione è sospesa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation> %1 (La sincronizzazione è sospesa)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nessuna cartella valida selezionata!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Il percorso selezionato non è una cartella!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Non hai i permessi di scrittura per la cartella selezionata!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>La cartella locale %1 è già utilizzata in una connessione di sincronizzazione delle cartelle. Selezionane un&apos;altra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>La cartella locale %1 contiene già una cartella utilizzata in una connessione di sincronizzazione delle cartelle. Selezionane un&apos;altra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>La cartella locale %1 è un collegamento simbolico. La destinazione del collegamento contiene già una cartella utilizzata in una connessione di sincronizzazione delle cartelle. Selezionane un&apos;altra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>La cartella locale %1 è già contenuta in una cartella utilizzata in una connessione di sincronizzazione delle cartelle. Selezionane un&apos;altra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>La cartella locale %1 è un collegamento simbolico. La destinazione del collegamento è già contenuta in una cartella utilizzata in una connessione di sincronizzazione delle cartelle. Selezionane un&apos;altra!</translation>
</message>
@@ -873,127 +888,133 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Devi essere connesso per aggiungere una cartella</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Fai clic su questo pulsante per aggiungere una cartella da sincronizzare.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Errore durante il caricamento dell&apos;elenco delle cartelle dal server.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Disconnesso</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>L&apos;aggiunta di una cartella è disabilitata perché stai già sincronizzando tutti i tuoi file. Se desideri sincronizzare più cartelle, rimuovi la cartella radice attualmente configurata.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Recupero dell&apos;elenco delle cartelle dal server...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Controllo delle modifiche in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sincronizzazione di %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>ricezione %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>invio %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 di %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 rimanenti, %1 di %2, file %3 di %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 di %2, file %3 di %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>file %1 di %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Attendere...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>In attesa di %n altra cartella...</numerusform><numerusform>In attesa di %n altre cartelle...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Preparazione della sincronizzazione...</translation>
</message>
@@ -1106,22 +1127,22 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Il server ha restituito un content-range errato</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Connessione scaduta</translation>
</message>
@@ -1203,28 +1224,25 @@ Se continui normalmente la sincronizzazione provocherai la sovrascrittura di tut
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Digita la password di %1:
-
-Utente: &apos;%2
-Account: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Digita la password di %1:&lt;br&gt;&lt;br&gt;Utente: &apos;%2&lt;br&gt;Account: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Lettura dal portachiavi non riuscita con errore: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Digita password</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Fai clic qui&lt;/a&gt; per richiedere una password dell&apos;applicazione dall&apos;interfaccia web.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1287,7 @@ Account: %3
<translation>Rimuovi</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se impediscono la rimozione di una cartella. Utile per i metadati.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Impossibile aprire il file</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Impossibile scrivere le modifiche in &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Aggiungi modello Ignora</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Aggiungi un nuovo modello di esclusione:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Questa voce è fornita dal sistema in &apos;%1&apos; e non può essere modificata in questa vista.</translation>
</message>
@@ -1372,7 +1390,7 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Connessione scaduta</translation>
</message>
@@ -1488,32 +1506,32 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
<translation>Limita automaticamente</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nome host del server proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nome utente del server proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Password del server proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 richieste per utilizzare il limite di banda</translation>
</message>
@@ -1521,23 +1539,23 @@ Gli elementi per i quali è consentita l&apos;eliminazione, saranno eliminati se
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Creato alle %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Chiusura tra pochi secondi...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 richiesta non riuscita alle %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; selezionato alle %2</translation>
@@ -1674,7 +1692,7 @@ for additional privileges during the process.</source>
<translation>Configura certificato TLS lato client</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Connessione all&apos;indirizzo sicuro del server &lt;em&gt;%1&lt;/em&gt; non riuscita. Come desideri procedere?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1682,17 +1700,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>Posta &amp;elettronica</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Connetti a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Digita le credenziali dell&apos;utente</translation>
</message>
@@ -1730,139 +1748,139 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Connesso correttamente a %1: %2 versione %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Connessione a %1 su %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Tempo scaduto durante il tentativo di connessione a %1 su %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Tentativo di connessione a %1 su %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>La richiesta autenticata al server è stata rediretta a &apos;%1&apos;. L&apos;URL è errato, il server non è configurato correttamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Ricevuta una risposta non valida a una richiesta webdav autenticata.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Accesso negato dal server. Per verificare di avere i permessi appropriati, &lt;a href=&quot;%1&quot;&gt;fai clic qui&lt;/a&gt; per accedere al servizio con il tuo browser.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>La cartella di sincronizzazione locale %1 esiste già, impostata per la sincronizzazione.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Creazione della cartella locale di sincronizzazione %1... </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>non riuscita.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Impossibile creare la cartella locale %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Nessuna cartella remota specificata!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Errore: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>creazione cartella su ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>La cartella remota %1 è stata creata correttamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>La cartella remota %1 esiste già. Connessione in corso per la sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>La creazione della cartella ha restituito un codice di errore HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>La creazione della cartella remota non è riuscita poiché le credenziali fornite sono errate!&lt;br/&gt;Torna indietro e verifica le credenziali.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;La creazione della cartella remota non è riuscita probabilmente perché le credenziali fornite non sono corrette.&lt;/font&gt;&lt;br/&gt;Torna indietro e controlla le credenziali inserite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Creazione della cartella remota %1 non riuscita con errore &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Una connessione di sincronizzazione da %1 alla cartella remota %2 è stata stabilita.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Connesso con successo a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>La connessione a %1 non può essere stabilita. Prova ancora.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Rinomina della cartella non riuscita</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Impossibile rimuovere o creare una copia di sicurezza della cartella poiché la cartella o un file in essa contenuto è aperta in un altro programma. Chiudi la cartella o il file e premi Riprova o annulla la configurazione.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Cartella locale %1 creata correttamente!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1870,12 +1888,12 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Procedura guidata di connessione di %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Salta la configurazione delle cartelle</translation>
</message>
@@ -1901,7 +1919,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Connessione scaduta</translation>
</message>
@@ -1909,7 +1927,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Risposta JSON non valida dall&apos;URL di richiesta</translation>
</message>
@@ -1917,55 +1935,55 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Errore durante la scrittura dei metadati nel database</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Lo scaricamento ridurrà lo spazio libero su disco al di sotto di %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Lo spazio libero su disco è inferiore a %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Il file è stato eliminato dal server</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Il file non può essere scaricato completamente.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Il file scaricato è vuoto nonostante il server indicasse una dimensione di %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Il file è stato modificato dal suo rilevamento</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Errore durante la scrittura dei metadati nel database</translation>
</message>
@@ -2037,7 +2055,8 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Il file %1 non può essere rinominato in %2 a causa di un conflitto con il nome di un file locale</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Errore durante la scrittura dei metadati nel database</translation>
</message>
@@ -2045,12 +2064,12 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Il file è stato rimosso da una condivisione in sola lettura. È stato ripristinato.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Codice HTTP errato restituito dal server. Atteso 204, ma ricevuto &quot;%1 %2&quot;.</translation>
</message>
@@ -2071,78 +2090,119 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Questa cartella non può essere rinominata. Il nome originale è stato ripristinato.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Questa cartella non può essere rinominata. Ripristina il nome Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Il file è stato rinominato, ma è parte di una condivisione in sola lettura. Il file originale è stato ripristinato.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Codice HTTP errato restituito dal server. Atteso 201, ma ricevuto &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Errore durante la scrittura dei metadati nel database</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>File rimosso</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Il file locale è stato modificato durante la sincronizzazione. Sarà ripristinato.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Un file locale è cambiato durante la sincronizzazione.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Errore durante la scrittura dei metadati nel database</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Forzare l&apos;interruzione dell&apos;operazione in caso di ripristino della connessione HTTP con Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Il file locale è stato rimosso durante la sincronizzazione.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Un file locale è cambiato durante la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Codice di uscita inatteso dal server (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>File ID mancante dal server</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>ETag mancante dal server</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Forzare l&apos;interruzione dell&apos;operazione in caso di ripristino della connessione HTTP con Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>URL di richiesta mancante</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Il file locale è stato rimosso durante la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Il server non ha riconosciuto l&apos;ultimo pezzo. (Non era presente alcun e-tag)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Un file locale è cambiato durante la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Errore durante la scrittura dei metadati nel database</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Il server non ha riconosciuto l&apos;ultimo pezzo. (Non era presente alcun e-tag)</translation>
</message>
</context>
<context>
@@ -2158,42 +2218,42 @@ Non è consigliabile utilizzarlo.</translation>
<translation>EtichettaTesto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Ora</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>File</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Cartella</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Azione</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Dimensione</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocollo di sincronizzazione locale</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copia</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copia l&apos;elenco delle attività negli appunti.</translation>
</message>
@@ -2291,22 +2351,22 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Impostazioni</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Attività</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Generale</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Rete</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2314,27 +2374,27 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Attività</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Generale</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Rete</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2362,32 +2422,32 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Percorso di ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Condivisione %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Cartella: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Il server non consente la condivisione</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Recupero di tutti i permessi di condivisione possibili dal server...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Il file non può essere condiviso poiché è stato condiviso senza il permesso di condivisione.</translation>
</message>
@@ -2426,43 +2486,58 @@ Non è consigliabile utilizzarlo.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>Collega&amp;mento tramite posta</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copia co&amp;llegamento</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Consenti la modifica</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Proteggi con p&amp;assword</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protetta da password</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Il file non può essere condiviso poiché è stato condiviso senza il permesso di condivisione.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>La condivisione pubblic&amp;a richiede una password</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>imposta la password</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Impossibile aprire il client di posta</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Si è verificato un errore durante l&apos;avvio del client di posta per creare un nuovo messaggio. Forse non hai ancora configurato alcun client di posta predefinito?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Condividi colle&amp;gamento</translation>
</message>
@@ -2480,7 +2555,7 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Condividi con utenti o gruppi...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Nessun risultato per &apos;%1&apos;</translation>
</message>
@@ -2513,17 +2588,17 @@ Non è consigliabile utilizzarlo.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>crea</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>cambia</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>elimina</translation>
</message>
@@ -2531,12 +2606,12 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Errore di accesso</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Devi accedere con l&apos;utente %1</translation>
</message>
@@ -2544,17 +2619,22 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticazione</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Vista debug cifrario SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Nuova autenticazione richiesta</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>La tua sessione è scaduta. Devi effettuare nuovamente l&apos;accesso per continuare a utilizzare il client.</translation>
</message>
@@ -2562,7 +2642,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Condividi con %1</translation>
@@ -2571,119 +2651,119 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Dettagli del certificato&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nome comune (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Nomi alternativi soggetto (SAN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organizzazione (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unità organizzativa (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Stato/Regione:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Nazione:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Numero di serie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emittente&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emittente:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Emesso il:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Scade il:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Impronte digitali&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; questo certificato è stato approvato manualmente&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (autofirmato)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Questa connessione è cifrata utilizzando %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Nessun supporto per i ticket/identificatori di sessione SSL</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informazioni sul certificato:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Questa connessione NON è sicura poiché non è cifrata.
@@ -2771,270 +2851,275 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Successo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync non è riuscito a scrivere il file di registro. Il file di registro è danneggiato.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Il plugin %1 per csync non può essere caricato.&lt;br/&gt;Verifica l&apos;installazione!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Errore di CSync durante l&apos;elaborazione degli alberi interni.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync non è riuscito a riservare la memoria.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Errore grave di parametro di CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>La fase di aggiornamento di CSync non è riuscita.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>La fase di riconciliazione di CSync non è riuscita.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync non è in grado di autenticarsi al proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync non è riuscito a trovare un proxy o server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync non è riuscito ad autenticarsi al server %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync non è riuscito a connettersi alla rete.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Si è verificato un timeout della connessione di rete.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Si è verificato un errore di trasmissione HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>La cartella montata è temporaneamente indisponibile sul server</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Si è verificato un errore durante l&apos;apertura di una cartella</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Errore durante la lettura della cartella.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Il file/cartella è ignorato poiché è nascosto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Sono disponibili solo %1, servono almeno %2 per iniziare</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere la cartella superiore</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere file in quella cartella</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: spazio insufficiente sul server %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Errore non specificato di CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Interrotto dall&apos;utente</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Il nome del file contiene caratteri non validi che non possono essere sincronizzati su diverse piattaforme.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync non è riuscito ad accedere</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync non è riuscito a caricare o a creare il file journal. Assicurati di avere i permessi di lettura e scrittura nella cartella di sincronizzazione locale.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>Problema di CSync a causa di un permesso negato non gestito.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync ha cercato di creare una cartella già esistente.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Il servizio è temporaneamente non disponibile</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>L&apos;accesso è vietato</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>SI è verificato un errore interno numero %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>L&apos;elemento non è sincronizzato a causa dell&apos;errore precedente: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>I collegamenti simbolici non sono supportati dalla sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Il file è stato aggiunto alla lista ignorati.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Il nome del file contiene spazi alla fine.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Il nome del file è troppo lungo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat non riuscita.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>La codifica del nome del file non è valida</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caratteri non validi, rinomina &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossibile inizializzare il registro di sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Impossibile leggere la lista nera dal database locale</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Impossibile leggere dal registro di sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Impossibile aprire il registro di sincronizzazione</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Il nome del file contiene almeno un carattere non valido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<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/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Non consentito poiché non disponi dei permessi per aggiungere sottocartelle in quella cartella</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Rimozione non consentita, ripristino</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<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/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Spostamento non consentito, elemento ripristinato</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>la destinazione</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>l&apos;origine</translation>
</message>
@@ -3058,17 +3143,17 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versione %1. Per ulteriori informazioni vedi &lt;a href=&quot;%2&quot;&gt;3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuito da %1 e sotto licenza GNU General Public License (GPL) versione 2.0.&lt;br/&gt;%2 e il logo di %2 sono marchi registrati di %1 negli Stati Uniti, in altri paesi o entrambi.&lt;/p&gt;</translation>
</message>
@@ -3094,202 +3179,217 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Accedi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Cartella %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nessuna cartella configurata per la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Non è stata configurata alcuna cartella per la sincronizzazione.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Apri nel browser</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Accedi...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Esci</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Modifiche recenti</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Controllo delle modifiche in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Cartelle gestite:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Apri la cartella &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Apri %1 nel browser...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Stato sconosciuto</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Impostazioni...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Dettagli...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Aiuto</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Esci da %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Disconnesso dal %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Versione del server non supportata</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Il server dell&apos;account %1 esegue una versione %2 datata e non supportata. L&apos;utilizzo del client con versioni non supportate non è sperimentato ed è potenzialmente pericoloso. Continua a tuo rischio.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Disconnesso dagli account:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Account %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>La sincronizzazione dell&apos;account è disabilitata</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Riprendi tutte le cartelle</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Sospendi tutte le cartelle</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Riprendi tutte le sincronizzazioni</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Riprendi la sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Sospendi tutte le sincronizzazioni</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Sospendi la sincronizzazione</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Disconnetti tutti gli account</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Accedi a tutti gli account...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>Nuovo account...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Chiusura immediata</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Nessun elemento sincronizzato di recente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronizzazione di %1 di %2 (%3 rimanenti)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Sincronizzazione di %1 di %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sincronizzazione di %1 (%2 rimanenti)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sincronizzazione di %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Aggiornato</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versione %2. Per ulteriori informazioni, visita &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Di Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz e altri.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Sotto licenza GNU General Public License (GPL) versione 2.0&lt;br/&gt;ownCloud e il logo di ownCloud sono marchi registrati di ownCloud, Inc. negli Stati Uniti, in altri paesi o entrambi&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Versione %2. Per ulteriori informazioni, visita &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Per problemi noti e aiuto, visita:&lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Di Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, e altri.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;&lt;p&gt;Sotto licenza GNU General Public License (GPL) versione 2.0&lt;br/&gt;ownCloud e il logo di ownCloud sono marchi registrati di ownCloud, Inc. negli Stati Uniti, in altri paesi o entrambi.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3304,9 +3404,9 @@ Non è consigliabile utilizzarlo.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>EtichettaTesto</translation>
</message>
@@ -3326,7 +3426,7 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Avvia una nuova sin&amp;cronizzazione (Cancella la cartella locale!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Scegli cosa sincronizzare</translation>
</message>
@@ -3351,7 +3451,7 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Sincroni&amp;zza tutto dal server</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Messaggio di stato</translation>
</message>
@@ -3364,26 +3464,15 @@ Non è consigliabile utilizzarlo.</translation>
<translation>Modulo</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>Nome &amp;utente</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Password</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etichetta di errore</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>EtichettaTesto</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3500,7 +3589,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3508,37 +3597,37 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>nel futuro</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n giorno fa</numerusform><numerusform>%n giorni fa</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n ora fa</numerusform><numerusform>%n ore fa</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>adesso</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Meno di un minuto fa</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minuto fa</numerusform><numerusform>%n minuti fa</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Tempo fa</translation>
</message>
@@ -3546,57 +3635,57 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>% anno</numerusform><numerusform>%n anni</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n mese</numerusform><numerusform>%n mesi</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n giorno</numerusform><numerusform>%n giorni</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n ora</numerusform><numerusform>%n ore</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuto</numerusform><numerusform>%n minuti</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n secondo</numerusform><numerusform>%n secondi</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3617,7 +3706,7 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Compilato dalla revisione Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; il %3, %4 utilizzando Qt %5, %6&lt;/small&gt;&lt;p&gt;</translation>
</message>
@@ -3625,82 +3714,92 @@ Non è consigliabile utilizzarlo.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Scaricato</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Caricato</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Versione del server scaricata, il file locale modificato è stato copiato come file di conflitto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Eliminato</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Spostato in %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorato</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Errore di accesso al filesystem</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Metadati locali aggiornati</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Sconosciuto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>scaricamento in corso</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>caricamento in corso</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>eliminazione</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>spostamento</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorare</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>errore</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>metadati locali aggiornati</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_ja.ts b/translations/client_ja.ts
index 06dcb0269..e8a12ef38 100644
--- a/translations/client_ja.ts
+++ b/translations/client_ja.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="ja_JP" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ja_JP" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>指定先のファイルは予期しないサイズまたは変更時間です</translation>
</message>
@@ -104,14 +104,29 @@
<translation>チェックしていないフォルダーはローカルファイルシステムから &lt;b&gt;削除&lt;/b&gt;され、このコンピューターと同期されなくなります。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>適用</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
@@ -121,168 +136,168 @@
<translation>&lt;server&gt; に &lt;user&gt; で接続中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>アカウントが未設定です。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>新規追加</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>削除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>アカウント</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>同期フォルダーを選択</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>同期フォルダー接続を削除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>フォルダーの作成に失敗しました</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;ローカルフォルダー &lt;i&gt;%1&lt;/i&gt; を作成できません。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>同期フォルダー接続の削除を確認</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>同期フォルダー接続を削除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>同期を実行中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>同期作業を実行中です。&lt;br/&gt;終了しますか?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 を使用中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>&lt;i&gt;%2&lt;/i&gt; の %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>サーバーバージョン %1 は古くサポートされていません!自己責任で進んでください。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>%1 に接続</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>サーバー %1 は一時的に利用できません</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>%1 からサインアウトしました。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>%2 の %1 への接続がありません。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>ログイン</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>容量が大きいため、同期されていない新規フォルダーがあります:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>アカウント削除確認</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt; アカウント &lt;i&gt;%1&lt;/i&gt; を本当に削除しますか?&lt;/p&gt;&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt; これによりファイルが一切削除されることはありません。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>接続削除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>フォルダーを開く</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>ログアウト</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>再開</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>一時停止</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;フォルダー&lt;i&gt;%1&lt;/i&gt;の同期を本当に止めますか?&lt;/p&gt;&lt;p&gt;&lt;b&gt;注:&lt;/b&gt; これによりファイルが一切削除されることはありません。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%2 の %1(%3%) 利用中。外部ネットワークストレージや共有フォルダーを含むフォルダーがある場合は、容量の上限値が異なる可能性があります。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%2 のうち %1 を使用中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>現在、利用できるストレージ利用状況はありません。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>%1 の接続は設定されていません。</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>サインアウト</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>切断しました</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>接続しました</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>サービスが利用できません</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>ネットワークエラー</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>設定エラー</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>不明なアカウント状態</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>サーバーアクティビティ</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>同期状況</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>無視またはエラーになったファイルのリスト</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>コピー</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>アクティビティ一覧をコピーする</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>同期対象外</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>未同期 (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>サーバアクティビティリストをクリップボードにコピーしました。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>同期状況をクリップボードにコピーしました。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>非同期アイテムリストをクリップボードにコピーしました。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>クリップボードにコピー</translation>
</message>
@@ -413,47 +428,47 @@
<translation>テキストラベル</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>サーバーアクティビティ</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>コピー</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>アクティビティ一覧をコピーする</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>操作が必要: 通知</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;%1 アカウントは、 アクティビティを有効にしていません。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>%2 から %n の新しい通知がありました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>%1 と %2 から %n の新しい通知がありました。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>%1 と %2 、その他アカウントから新しい通知がありました。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>通知 %1 - 操作が必要です。</translation>
</message>
@@ -486,12 +501,12 @@
<translation>証明書のパスワード:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>証明書を選択</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>証明書ファイル (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>認証が必要</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>%2 で &apos;%1&apos; に対してユーザー名とパスワードを入力してください。</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>ユーザー(&amp;U):</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>パスワード(&amp;P):</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>メタデータのデータベースへの書き込みに失敗</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>ownCloudアカウントが設定されていません</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>このクライアントのサーバー設定は古すぎます。</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>サーバーを最新にアップデートして、クライアントを再起動してください。</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>認証エラー: ユーザー名またはパスワードが間違っています。</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>タイムアウト</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>入力された資格情報が正しくありません</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>接続タイムアウト</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>ユーザーによって中止されました</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>ローカルフォルダー %1 は存在しません。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 はフォルダーのはずですが、そうではないようです。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 は読み込み可能ではありません。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 は削除されました。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 はダウンロードされました。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 が更新されました。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 の名前が %2 に変更されました。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 は %2 に移動しました。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 とその他 %n 個のファイルが削除されました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 とその他 %n 個のファイルがダウンロードされました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 とその他 %n 個のファイルが更新されました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 を %2 にファイル名を変更し、その他 %n 個のファイル名を変更しました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 を %2 に移動し、その他 %n 個のファイルを移動しました。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 と その他 %n 個のファイルが同期で衝突しました。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 が同期で衝突しています。コンフリクトファイルを確認してください。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>エラーにより、%1 と その他 %n 個のファイルが同期できませんでした。ログで詳細を確認してください。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>エラーにより %1 が未同期です。ログで詳細を確認してください。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>同期アクティビティ</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>システム上の除外ファイルを読み込めません</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>新しい %1 MB以上のフォルダーが追加されました: %2
ダウンロードしたい場合は、設定画面で選択してください。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Are you sure you want to perform this operation?</source>
本当にこの操作を実行しますか?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>すべてのファイルを削除しますか?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>すべてのファイルを削除</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>ファイルを残す</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>この同期のタイミングで同期フォルダー &apos;%1&apos; のファイルが古いファイルに戻る可能性があります。
-これはサーバーのファイルがバックアップとして復旧されるかもしれないからです。
-このまま同期を続けた場合、あたらしいファイルが全て古いファイルで上書きされます。ローカルファイルで新しいものをコンフリクトファイルとして保持しますか?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>バックアップが検出されました</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>正常同期</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>コンフリクト時にローカルファイルを保持</translation>
</message>
@@ -742,112 +755,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>フォルダーの状態をリセットできませんでした</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>古い同期ジャーナル &apos;%1&apos; が見つかりましたが、削除できませんでした。それを現在使用しているアプリケーションが存在しないか確認してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(バックアップ)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(%1をバックアップ)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>未定義の状態。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>同期開始を待機中</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>同期の準備中。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>同期を実行中です。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>最後の同期は成功しました。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>最新の同期は成功しました。しかし、一部のファイルに問題がありました。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>設定エラー。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>ユーザーによる中止。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>同期を一時停止しました。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (同期を一時停止)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>有効なフォルダーが選択されていません!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>指定のパスは、フォルダーではありません!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>選択されたフォルダーに書き込み権限がありません</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>ローカルフォルダー %1 はすでに同期フォルダーとして利用されています。他のフォルダーを選択してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
- <translation>ローカルフォルダー %1 にはすでに同期フォルダーとして利用されてるフォルダを含んでいます。他のフォルダーを選択してください。</translation>
+ <translation>ローカルフォルダー %1 にはすでに同期フォルダーとして利用されてるフォルダーを含んでいます。他のフォルダーを選択してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
- <translation>ローカルフォルダー %1 はシンボリックリンクです。リンク先のフォルダにはすでに同期フォルダーとして利用されているフォルダーを含みます。他のフォルダーを選択してください。</translation>
+ <translation>ローカルフォルダー %1 はシンボリックリンクです。リンク先のフォルダーにはすでに同期フォルダーとして利用されているフォルダーを含みます。他のフォルダーを選択してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>ローカルフォルダー %1 には同期フォルダーとして利用されているフォルダーがあります。他のフォルダーを選択してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>ローカルフォルダー %1 には同期フォルダーとして利用されているフォルダーがあります。他のフォルダーを選択してください!</translation>
</message>
@@ -873,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>フォルダーを追加するためには、接続している必要があります。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>このボタンをクリックして同期フォルダーを追加してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>サーバーからフォルダーのリスト取得時にエラー</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>サインアウト</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
- <translation>既に同期対象のフォルダーのため、追加したフォルダーを無効にしました。複数のフォルダーを同期したい場合は、現在設定されているルートフォルダーの同期設定を削除してください。</translation>
+ <translation>すでに同期対象のフォルダーのため、追加したフォルダーを無効にしました。複数のフォルダーを同期したい場合は、現在設定されているルートフォルダーの同期設定を削除してください。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
- <translation>サーバーからフォルダリストを取得中...</translation>
+ <translation>サーバーからフォルダーリストを取得中...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>&apos;%1&apos; の更新を確認しています</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>同期中 %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>ダウンロード %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>アップロード %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%4 中 %3 完了)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation>残り %5分、%2中 %1完了 、%4中 %3 ファイル完了</translation>
+ <translation>残り %5、%2中 %1完了 、%4中 %3 ファイル完了</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 of %2, ファイル数 %3 of %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>%1 / %2 ファイル</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>待機中...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>%n 他のフォルダーの完了待ち...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>同期の準備中...</translation>
</message>
@@ -1106,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>サーバーからE-Tagを受信できません。プロキシ/ゲートウェイを確認してください。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>同期再開時に違う E-Tagを受信しました。次回リトライします。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>サーバーが間違ったcontent-rangeを返しました</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>接続タイムアウト</translation>
</message>
@@ -1203,28 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>%1 のパスワードを入れてください:
-
-ユーザー名: %2
-アカウント: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>鍵情報の読み込みに失敗しました。エラー: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>パスワードを入力してください</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1285,7 @@ Account: %3
<translation>削除</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
パターンによってディレクトリを削除から除外する場合は,パターンに含まれた項目も削除されます。例えばメタデータファイルに有用です。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>ファイルが開けませんでした</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>&apos;%1&apos;を更新できません。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>除外するファイルパターンを追加</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>除外するファイルパターンを新しく追加:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>このエントリーは、システム &apos;%1&apos; から提供されています。この画面では変更できません。</translation>
</message>
@@ -1372,7 +1388,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>接続タイムアウト</translation>
</message>
@@ -1488,32 +1504,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>自動的に制限</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>プロキシサーバーのホスト名</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>プロキシサーバーのユーザー名</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>プロキシサーバーのパスワード</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S)プロキシ</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5プロキシ</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>帯域制限にはQt5.4以上が必要です</translation>
</message>
@@ -1521,23 +1537,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>%1 を作成しました。</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>数秒以内に接続を終了します。</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>リクエスト %1 が %2 に失敗 </translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; が %2 に選択されました</translation>
@@ -1674,7 +1690,7 @@ for additional privileges during the process.</source>
<translation>クライアントサイドTLS証明書を設定</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;安全なサーバーアドレス &lt;em&gt;%1&lt;/em&gt; に接続できませんでした。どのように進めますか?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1682,17 +1698,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>メール(&amp;E)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>%1 に接続中</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>ユーザー資格情報を入力</translation>
</message>
@@ -1729,139 +1745,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;正常に %1 へ接続されました:%2 バージョン %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>%2 の %1 に接続に失敗:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>%2 の %1 へ接続を試みた際にタイムアウトしました。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>%2 の %1 へ接続を試みています...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>サーバーへの認証リクエストは &apos;%1&apos; へリダイレクトされました。URLは不正です、サーバーの設定に誤りがあります。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>認証された WebDav リクエストに不正な応答がありました</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>サーバーによってアクセスが拒否されています。適切なアクセス権があるか検証するには、&lt;a href=&quot;%1&quot;&gt;ここをクリック&lt;/a&gt;してブラウザーでサービスにアクセスしてください。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>ローカルの同期フォルダー %1 はすでに存在するため、同期の設定をしてください。&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>ローカル同期フォルダー %1 を作成中...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>失敗。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>ローカルフォルダー %1 を作成できませんでした</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>リモートフォルダーが指定されていません!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>エラー: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>ownCloud上にフォルダーを作成中: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>リモートフォルダー %1 は正常に生成されました。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>リモートフォルダー %1 はすでに存在します。同期のために接続しています。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>フォルダーの作成はHTTPのエラーコード %1 で終了しました</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>指定された資格情報が間違っているため、リモートフォルダーの作成に失敗しました!&lt;br/&gt;前に戻って資格情報を確認してください。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;おそらく資格情報が間違っているため、リモートフォルダーの作成に失敗しました。&lt;/font&gt;&lt;br/&gt;前に戻り、資格情報をチェックしてください。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>リモートフォルダー %1 の作成がエラーで失敗しました。&lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>%1 からリモートディレクトリ %2 への同期接続を設定しました。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>%1への接続に成功しました!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>%1 への接続を確立できませんでした。もう一度確認してください。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>フォルダー名の変更に失敗しました。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>フォルダーまたはその中にあるファイルが他のプログラムで開かれているため、フォルダーの削除やバックアップができません。フォルダーまたはファイルを閉じてから再試行するか、セットアップをキャンセルしてください。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;ローカルの同期フォルダー %1 は正常に作成されました!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1885,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 接続ウィザード</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>フォルダー設定をスキップ</translation>
</message>
@@ -1900,7 +1916,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>接続タイムアウト</translation>
</message>
@@ -1908,7 +1924,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>不正なJSONがポーリングURLから返りました</translation>
</message>
@@ -1916,55 +1932,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>メタデータのデータベースへの書き込みに失敗</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>ファイル %1 はローカルファイル名が衝突しているためダウンロードできません!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>ダウンロードすると、空き容量が %1 になります</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>ディスク空き容量が %1 よりも少なくなっています</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>ファイルはサーバーから削除されました</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>このファイルのダウンロードは完了しませんでした</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>サーバーが通知しているファイルは %1 であるべきですが、ダウンロードファイルは空でした。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>%1 はローカルファイル名が衝突しているため保存できません!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>ファイルは発見以降に変更されました</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>メタデータのデータベースへの書き込みに失敗</translation>
</message>
@@ -1992,7 +2008,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="155"/>
<source>could not delete file %1, error: %2</source>
- <translation>ファイル %1 を削除出来ませんでした,エラー : %2</translation>
+ <translation>ファイル %1 を削除できません。エラー: %2</translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="163"/>
@@ -2002,7 +2018,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="169"/>
<source>could not create folder %1</source>
- <translation>フォルダー %1 を作成できませんでした</translation>
+ <translation>フォルダー %1 を作成できません</translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
@@ -2020,7 +2036,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="98"/>
<source>Could not remove folder &apos;%1&apos;</source>
- <translation>フォルダ &apos;%1&apos;を削除できません</translation>
+ <translation>フォルダー &apos;%1&apos;を削除できません</translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="116"/>
@@ -2036,7 +2052,8 @@ It is not advisable to use it.</source>
<translation>ファイル %1 はローカルファイル名が衝突しているため %2 に名前を変更できません</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>メタデータのデータベースへの書き込みに失敗</translation>
</message>
@@ -2044,12 +2061,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>ファイルが読み込み専用の共有から削除されました。ファイルは復元されました。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>誤ったHTTPコードがサーバーから返されました。204のはずが、&quot;%1 %2&quot;が返りました。</translation>
</message>
@@ -2070,78 +2087,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>このフォルダー名は変更できません。元の名前に戻します。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>このフォルダー名は変更できません。名前を Shared に戻してください。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>ファイルの名前が変更されましたが、読み込み専用の共有の一部です。オリジナルのファイルが復元されました。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>誤ったHTTPコードがサーバーから返されました。201のはずが、&quot;%1 %2&quot;が返りました。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>メタデータのデータベースへの書き込みに失敗</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>ファイルを削除しました</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>ローカルファイルが同期中に変更されました。再開されます。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>ローカルのファイルが同期中に変更されました。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>メタデータのデータベースへの書き込みに失敗</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>5.4.2 以下のQt でHTTP 接続リセットが強制終了されました</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>ローカルファイルを同期中に削除します。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>ローカルのファイルが同期中に変更されました。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>5.4.2 以下のQt でHTTP 接続リセットが強制終了されました</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>ポーリングURLがありません</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>ローカルファイルを同期中に削除します。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>サーバーは最終チャンクを認識しませんでした。(e-tag が存在しませんでした)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>ローカルのファイルが同期中に変更されました。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>メタデータのデータベースへの書き込みに失敗</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>サーバーは最終チャンクを認識しませんでした。(e-tag が存在しませんでした)</translation>
</message>
</context>
<context>
@@ -2157,42 +2215,42 @@ It is not advisable to use it.</source>
<translation>テキストラベル</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>時刻</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>ファイル</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>フォルダー</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>アクション</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>サイズ</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>ローカルファイル同期状況</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>コピー</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>アクティビティ一覧をコピーする</translation>
</message>
@@ -2217,7 +2275,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/proxyauthdialog.ui" line="43"/>
<source>The proxy server needs a username and password.</source>
- <translation>プロキシサーバーにユーザー名とパスワードが必要です。</translation>
+ <translation>プロキシサーバーにはユーザー名とパスワードが必要です。</translation>
</message>
<message>
<location filename="../src/gui/proxyauthdialog.ui" line="50"/>
@@ -2290,22 +2348,22 @@ It is not advisable to use it.</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>アクティビティ</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>ネットワーク</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>アカウント</translation>
</message>
@@ -2313,27 +2371,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>アクティビティ</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>ネットワーク</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>アカウント</translation>
</message>
@@ -2361,32 +2419,32 @@ It is not advisable to use it.</source>
<translation>OwnCloudのパス:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 を共有中</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>フォルダー: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>サーバーで共有を許可していません</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>サーバーから共有権限を取得できる最大数で取得しています</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>再共有権限がない共有ため、このファイルは共有できません。</translation>
</message>
@@ -2425,43 +2483,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>&amp;linkをコピー</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>編集を許可</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>パスワード保護(&amp;A)</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>パスワード保護</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>再共有権限がない共有ため、このファイルは共有できません。</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>共有するにはパスワードが必要(&amp;A)</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>パスワードを入力してください</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>リンク共有(&amp;S)</translation>
</message>
@@ -2479,7 +2552,7 @@ It is not advisable to use it.</source>
<translation>ユーザーもしくはグループと共有 ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>&apos;%1&apos; は見つかりませんでした</translation>
</message>
@@ -2512,17 +2585,17 @@ It is not advisable to use it.</source>
<translation>…</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>作成</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>削除</translation>
</message>
@@ -2530,12 +2603,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>ログインエラー</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>ユーザー %1 としてログインする必要があります</translation>
</message>
@@ -2543,17 +2616,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - 認証</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>SSL暗号デバッグ表示</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>再認証が必要</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>セッションの期限が切れました。クライアントを使用し続けるには再ログインが必要です。</translation>
</message>
@@ -2561,7 +2639,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>%1 と共有</translation>
@@ -2570,119 +2648,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;詳細認証情報&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>コモンネーム(CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>サブジェクトの別名:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>組織(O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>部門名(OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>州/県:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>国:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>シリアル番号:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;発行者&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>発行者: </translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>発行日:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>有効期限:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;フィンガープリント&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt; この認証は手動で承認されました&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (自己証明書)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>この接続は、%1 の %2 bit を使って暗号化されています。
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>SSLセッションチケット/識別子はサポートされていません</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>認証情報:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>暗号化されていないので、この接続は安全ではありません。
@@ -2770,270 +2848,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>成功。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSyncはジャーナルファイルの読み込みに失敗しました。ジャーナルファイルが破損しています。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;csync 用の %1 プラグインをロードできませんでした。&lt;br/&gt;インストール状態を確認してください!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSyncは内部ツリーの処理中にエラーに遭遇しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSyncで使用するメモリの確保に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSyncの致命的なパラメータエラーです。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSyncの処理ステップの更新に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSyncの処理ステップの調停に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSyncはそのプロキシで認証できませんでした。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSyncはプロキシもしくはサーバーの参照に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSyncは %1 サーバーでの認証に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSyncはネットワークへの接続に失敗しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>ネットワーク接続のタイムアウトが発生しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTPの伝送エラーが発生しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>サーバー上のマウント済フォルダーが一時的に利用できません。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>フォルダーを開く際にエラーが発生しました</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>フォルダーの読み込みエラー</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
- <translation>隠しファイル/フォルダのため無視されました</translation>
+ <translation>隠しファイル/フォルダーのため無視されました</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>%1 しか空き容量がありません、開始するためには少なくとも %2 は必要です。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>親フォルダーを追加する権限がありません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>そのフォルダーにファイルを追加する権限がありません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: %1 サーバーには利用可能な空き領域がありません。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSyncの未指定のエラーです。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>ユーザーによって中止されました</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>異なるプラットフォームOS間で利用できない不正な文字コードがファイル名に含まれているため、同期できません。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync は接続できませんでした</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSyncはジャーナルファイルの読み込みや作成に失敗しました。ローカルの同期フォルダーに読み書きの権限があるか確認してください。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync が処理できないパーミション拒否により失敗しました</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSyncはすでに存在するフォルダーを作成しようとしました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>サーバーは一時的に利用できません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>アクセスが禁止されています</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>内部エラー番号 %1 が発生しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>このアイテムは以前にエラーが発生したため同期しません: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>同期機能はシンボリックリンクをサポートしていません。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>ファイルは除外リストに登録されています。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>ファイル名が長すぎます</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>情報取得エラー</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>ファイル名のエンコーディングが無効です。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>無効な文字です、&quot;%1&quot; を変更してください。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>同期ジャーナルの初期化ができません。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>ローカルデータベースからブラックリストを読み込みできません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>同期ジャーナルから読み込みできません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>同期ジャーナルを開くことができません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>ファイル名に1文字以上の無効な文字が含まれています</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>&quot;同期対象先&quot; ブラックリストにより無視されました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>そのフォルダーにサブフォルダーを追加する権限がありません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>サーバーでは読み取り専用となっているため、このファイルをアップロードすることはできません、復元しています</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>削除できないので復元しています</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>ローカルファイルと共有フォルダーを削除しました。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>移動できないので項目を復元しました</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>%1 は読み取り専用のため移動できません</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>移動先</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>移動元</translation>
</message>
@@ -3057,17 +3140,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;バージョン %1. 詳細な情報は&lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;を確認してください。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;%1 が配布し、 GNU General Public License (GPL) バージョン2.0 の下でライセンスされています。&lt;br/&gt;%2 及び %2 のロゴはアメリカ合衆国またはその他の国、あるいはその両方における %1 の登録商標です。&lt;/p&gt;</translation>
</message>
@@ -3093,202 +3176,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>サインインしてください</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>フォルダー %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>同期フォルダーが設定されていません。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>同期するフォルダーがありません。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>ブラウザーで開く</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>ログイン...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>ログアウト</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>最近変更されたファイル</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>&apos;%1&apos; の更新を確認しています</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>管理フォルダー:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>フォルダー ’%1’ を開く</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>%1をブラウザーで開く</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>不明な状態</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>設定...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>詳細...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>ヘルプ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1 を終了</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>%1 から切断されました</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>サポートされていないサーバーバージョン</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>%1 アカウントのサーバーのバージョン %2 は古く、未サポートです。この未サポートのサーバーバージョンとこのクライアントでの組み合わせは、未テストで潜在的な危険があります。ご利用は自己責任でお願いいたします。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>アカウントから切断:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>アカウント %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
- <translation>アカウントの同期は無効です</translation>
+ <translation>アカウントの同期は無効になっています</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
- <translation>すべてのフォルダ同期を再開</translation>
+ <translation>すべてのフォルダーの同期を再開</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
- <translation>フォルダ同期を一時停止</translation>
+ <translation>すべてのフォルダーの同期を一時停止</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>すべての同期を再開</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>同期を再開</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>すべての同期を一時停止</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
- <translation>同期を停止</translation>
+ <translation>同期を一時停止</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>全てのアカウントからログアウト</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>全てのアカウントにログイン</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>クラッシュしました。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>最近同期されたアイテムはありません。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>同期中 %2 中 %1 (残り %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>同期中 %1 (残り %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>同期中 %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>最新です</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;バージョン %2 詳細については、&lt;a href=&quot;%3&quot;&gt;%4&lt;/a&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;著作権 ownCloud, Inc.&lt;p&gt;&lt;p&gt;%4 が配布し、 GNU General Public License (GPL) バージョン2.0 の下でライセンスされています。&lt;br&gt;ownCloud 及び ownCloud のロゴはアメリカ合衆国またはその他の国、あるいはその両方における&lt;br&gt; ownCloud, Inc.の登録商標です。&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3303,9 +3401,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>テキストラベル</translation>
</message>
@@ -3325,7 +3423,7 @@ It is not advisable to use it.</source>
<translation>クリーン同期を開始(ローカルフォルダーは削除されます!)(&amp;C)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>同期フォルダーを選択</translation>
</message>
@@ -3350,7 +3448,7 @@ It is not advisable to use it.</source>
<translation>サーバーからすべてのファイルを同期(&amp;Y)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>状態メッセージ</translation>
</message>
@@ -3363,26 +3461,15 @@ It is not advisable to use it.</source>
<translation>フォーム</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>ユーザー名(&amp;U)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>パスワード(&amp;P)</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>エラーラベル</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>テキストラベル</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3586,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3507,37 +3594,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>今後</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n日前</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n 時間前</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>今</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>1分以内</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform> %n 分前</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>数分前</translation>
</message>
@@ -3545,57 +3632,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n 年</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n ヶ月</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n 日</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n 時間</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n 分</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n 秒</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3703,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3, %4 のGitリビジョンからのビルド Qt %5, %6 を利用&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3711,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>ダウンロード済み</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>アップロード済み</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>サーバー側バージョンがダウンロードされました。変更されたローカルファイルは、コンフリクトファイルにコピーしました。</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>削除済み</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>%1に移動済み</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>除外しました</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>ファイルシステムのアクセスエラー</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>エラー</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>不明</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>ダウンロード中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>アップロード中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>削除しています</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>移動しています</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>除外:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>エラー</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_nb_NO.ts b/translations/client_nb_NO.ts
index 59e0227b8..f03251538 100644
--- a/translations/client_nb_NO.ts
+++ b/translations/client_nb_NO.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="nb_NO" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nb_NO" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Målfilen har uventet størrelse eller endringstidspunkt</translation>
</message>
@@ -68,12 +68,12 @@
<message>
<location filename="../src/gui/notificationwidget.ui" line="56"/>
<source>Lorem ipsum dolor sit amet</source>
- <translation type="unfinished"/>
+ <translation>Lorem ipsum dolor sit amet</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="69"/>
<source>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </source>
- <translation type="unfinished"/>
+ <translation>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="89"/>
@@ -104,14 +104,29 @@
<translation>Umarkerte mapper vil bli &lt;b&gt;fjernet&lt;/b&gt; fra ditt lokale filsystem og vil ikke bli synkronisert med denne maskinen lenger</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Synkroniser alle</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Synkroniser ingen</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Bruk manuelle endringer</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Bruk</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Tilkoblet &lt;server&gt; som &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Ingen konto konfigurert.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Legg til ny</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Fjern</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Konto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Velg hva som synkroniseres</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Fjern tilkobling for mappe-synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Oppretting av mappe feilet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Klarte ikke å opprette lokal mappe &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bekreft fjerning av tilkobling for mappe-synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Fjern tilkobling for mappe-synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synkroniserer...</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Synkronisering kjører.&lt;br/&gt;Vil du avbryte den?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 i bruk</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 som &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Server-versjonen %1 er gammel og støttes ikke! Fortsett på egen risiko.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Tilkoblet %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 er midlertidig utilgjengelig.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Logget ut fra %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Ingen tilkobling til %1 på %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Logg inn</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Det finnes nye mapper som ikke ble synkronisert fordi de er for store: </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Bekreft fjerning av konto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vil du virkelig fjerne tilkoblingen til kontoen &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Merk:&lt;/b&gt; Dette vil &lt;b&gt;ikke&lt;/b&gt; slette noen filer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Fjern tilkobling</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Åpne mappe</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Logg ut</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Fortsett synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Sett synkronisering på pause</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vil du virkelig stoppe synkronisering av mappen &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Merk:&lt;/b&gt; Dette vil &lt;b&gt;ikke&lt;/b&gt; slette noen filer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) av %2 i bruk. Noen mapper, inkludert nettverkstilkoblede eller delte mapper, kan ha andre begrensninger.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 av %2 i bruk</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Ingen informasjon om bruk av lagringsplass tilgjengelig for øyeblikket.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Ingen %1-forbindelse konfigurert.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Logget ut</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Frakoblet</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Tilkoblet</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Tjeneste utilgjengelig</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Nettverksfeil</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Konfigurasjonsfeil</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Ukjent kontotilstand</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Server-aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Synkroniseringsprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Liste over filer som er ignorert eller har feil</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopier</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopier aktivitetslisten til utklippstavlen.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Ikke synkronisert</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
- <translation type="unfinished"/>
+ <translation>Ikke synkronisert (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Server-aktivitetslisten er kopiert til utklippstavlen.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Synkroniserings-aktivitetslisten er kopiert til utklippstavlen.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Listen med usynkroniserte elementer er kopiert til utklippstavlen.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Kopiert til utklippstavlen</translation>
</message>
@@ -413,49 +428,49 @@
<translation>Tekst-etikett</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Server-aktiviteter</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopier</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopier aktivitetslisten til utklippstavlen.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
- <translation type="unfinished"/>
+ <translation>Handling kreves: Varsler</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Konto %1 har ikke aktiviteter aktivert.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Du mottok %n nytt varsel fra %2.</numerusform><numerusform>Du mottok %n nye varsler fra %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Du mottok %n nytt varsel fra %1 og %2.</numerusform><numerusform>Du mottok %n nye varsler fra %1 og %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
- <translation type="unfinished"/>
+ <translation>Du mottok nye varsler fra %1, %2 og andre kontoer.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
- <translation type="unfinished"/>
+ <translation>%1 varsler - Handling kreves</translation>
</message>
</context>
<context>
@@ -486,12 +501,12 @@
<translation>Passord for sertifikatet :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Velg et sertifikat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Sertifikat-filer (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autentisering kreves</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Legg inn brukernavn og passord for &apos;%1&apos; på %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Bruker:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Passord</translation>
</message>
@@ -522,40 +537,40 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Ingen ownCloud-konter konfigurert</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Den konfigurerte serveren for denne klienten er for gammel</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Vennligst oppdatert til den nyeste serveren og start klienten på nytt.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Autentiseringsfeil: Bruker navn eller passord er feil.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>tidsavbrudd</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Oppgitt påloggingsinformasjon er feil</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Forbindelsen fikk tidsavbrudd</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Avbrutt av brukeren</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Lokal mappe %1 eksisterer ikke.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 skal være en mappe men er ikke det.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 kan ikke leses.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 har blitt fjernet.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 har blitt lastet ned.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 har blitt oppdatert.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 har blitt omdøpt til %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 har blitt flyttet til %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 og %2 annen fil har blitt fjernet.</numerusform><numerusform>%1 og %2 andre filer har blitt fjernet.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 og %2 annen fil har blitt lastet ned.</numerusform><numerusform>%1 og %2 andre filer har blitt lastet ned.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 og %2 annen fil har blitt oppdatert.</numerusform><numerusform>%1 og %2 andre filer har blitt oppdatert.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 er blitt omdøpt til %2 og %n annen fil har blitt omdøpt.</numerusform><numerusform>%1 er blitt omdøpt til %2 og %n andre filer har blitt omdøpt.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 er blitt flyttet til %2 og %n annen fil har blitt flyttet.</numerusform><numerusform>%1 er blitt flyttet til %2 og %n andre filer har blitt flyttet.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 og %n andre filer har synkroniseringskonflikter.</numerusform><numerusform>%1 og %n andre filer har synkroniseringskonflikter.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
- <translation type="unfinished"/>
+ <translation>%1 har en synkroniseringskonflikt. Sjekk konflikt-filen.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 og %n andre filer kunne ikke synkroniseres pga. feil. Se loggen for detaljer.</numerusform><numerusform>%1 og %n andre filer kunne ikke synkroniseres pga. feil. Se loggen for detaljer.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 kunne ikke synkroniseres pga. en feil. Se loggen for detaljer.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Synkroniseringsaktivitet</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Klarte ikke å lese systemets ekskluderingsfil</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>En ny mappe større enn %1 MB er blitt lagt til: %2.
Gå til Innstillinger og velg mappen hvis du ønsker å laste den ned.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,23 +715,23 @@ Dette kan være fordi mappen ble omkonfigurert i det stille, eller alle filene b
Er du sikker på at du vil utføre denne operasjonen?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Fjerne alle filer?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Fjern alle filer</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Behold filer</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation>Denne synkroniseringen vil tilbakestille filene til et tidligere tidspunkt i mappe &apos;%1&apos;.
@@ -724,17 +739,17 @@ Dette kan være fordi en backup ble gjenopprettet på serveren.
Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrevet av en eldre fil i en tidligere tilstand. Ønsker du å beholde dine ferskeste lokale filer som konflikt-filer?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup oppdaget</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normal synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Behold lokale filer som konflikt</translation>
</message>
@@ -742,112 +757,112 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Klarte ikke å tilbakestille mappetilstand</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>En gammel synkroniseringsjournal &apos;%1&apos; ble funnet men kunne ikke fjernes. Pass på at ingen applikasjoner bruker den.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (sikkerhetskopi)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (sikkerhetskopi %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Udefinert tilstand.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Venter på å starte synkronisering.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Forbereder synkronisering.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synkronisering kjører.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Siste synkronisering var vellykket.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Siste synkronisering var vellykket, men med advarsler på enkelte filer.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Feil med oppsett.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Brukeravbrudd.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synkronisering er satt på pause.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synkronisering er satt på pause)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Ingen gyldig mappe valgt!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Den valgte stien er ikke en mappe!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Du har ikke skrivetilgang til den valgte mappen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Den lokale mappen %1 er allerede brukt i en mappe-synkronisering. Velg en annen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokale mappen %1 inneholder allerede en mappe brukt i en mappe-synkronisering. Velg en annen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokale mappen %1 er en symbolsk lenke. Målet for lenken inneholder allerede en mappe brukt i en mappe-synkronisering. Velg en annen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokale mappen %1 er allerede en undermappe av en mappe brukt i en mappe-synkronisering. Velg en annen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokale mappen %1 er en symbolsk lenke. Målet for lenken er allerede en undermappe av en mappe brukt i en mappe-synkronisering. Velg en annen!</translation>
</message>
@@ -862,7 +877,7 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="241"/>
<source>Synchronizing with local folder</source>
- <translation type="unfinished"/>
+ <translation>Synkroniserer med lokal mappe</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="285"/>
@@ -873,127 +888,133 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Du må være tilkoblet for å legge til en mappe</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Klikk denne knappen for å legge til en mappe som skal synkroniseres.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Feil ved innlasting av listen av mapper fra serveren.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Logget ut</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Du kan ikke legge til en mappe fordi du allerede synkroniserer alle filene dine. Hvis du ønsker å synkronisere individuelle mapper, må du fjerne synkroniseringen av rotmappen som er konfigurert.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Henter mappeliste fra server..</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Ser etter endringer i &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synkroniserer %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>nedlasting %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>opplasting %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 av %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation type="unfinished"/>
+ <translation>%5 igjen, %1 av %2, fil %3 of %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 av %2, fil %3 av %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>fil %1 av %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Venter..</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Venter på %n annen mappe...</numerusform><numerusform>Venter på %n andre mappe(r)...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Forbereder synkronisering...</translation>
</message>
@@ -1106,22 +1127,22 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ingen E-Tag mottatt fra server. Sjekk proxy/gateway.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Vi mottok en forskjellig E-Tag for å fortsette. Prøver igjen neste gang.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Serveren returnerte feil content-range</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Tidsavbrudd ved tilkobling</translation>
</message>
@@ -1203,28 +1224,25 @@ Hvis synkroniseringen fortsetter som normalt, vil alle filene dine bli overskrev
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Vennligst legg inn %1-passord:
-
-Bruker: %2
-Konto: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Legg inn %1-passord:&lt;br&gt;&lt;br&gt;Bruker: %2&lt;br&gt;Konto: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Lesing fra nøkkelring feilet med feil: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Legg inn passord</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Klikk her&lt;/a&gt; for å be om et app-passord fra web-grensesnittet.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1287,7 @@ Konto: %3
<translation>Fjern</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning av en mappe. Dette er hendig for metadata.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Klarte ikke å åpne fil</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Kan ikke skrive endringer til &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Nytt mønster</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Legg til ignoreringsmønster:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Denne oppføringen er gitt av systemet på &apos;%1&apos; og kan ikke endres i denne visningen.</translation>
</message>
@@ -1372,7 +1390,7 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Forbindelsen fikk tidsavbrudd</translation>
</message>
@@ -1488,32 +1506,32 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<translation>Begrens automatisk</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Servernavnet til proxy-serveren</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Brukernavn for proxy-server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Passord for proxy-server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 kreves for å bruke båndbreddebegrensing</translation>
</message>
@@ -1521,26 +1539,26 @@ Elementer hvor sletting er tillatt, vil bli slettet hvis de forhindrer fjerning
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation type="unfinished"/>
+ <translation>Opprettet %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>Lukkes om noen sekunder...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%1 forespørsel feilet %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>&apos;%1&apos; valgt %2</translation>
</message>
</context>
<context>
@@ -1675,7 +1693,7 @@ kan be om ytterligere rettigheter under behandlingen.</translation>
<translation>Konfigurer TLS-sertifikat på klientsiden</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Klarte ikke å koble til den sikre server-addressen &lt;em&gt;%1&lt;/em&gt;. Hvordan vil du gå videre?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1701,17 @@ kan be om ytterligere rettigheter under behandlingen.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
- <translation type="unfinished"/>
+ <translation>&amp;E-post</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Koble til %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Legg inn påloggingsinformasjon</translation>
</message>
@@ -1731,139 +1749,139 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Vellykket oppkobling mot %1: %2 versjon %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Klarte ikke å koble til %1 på %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Tidsavbrudd ved oppkobling mot %1 på %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Prøver å koble til %1 på %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Autentisert forespørsel til serveren ble omdirigert til &apos;%1&apos;. URL-en er ugyldig, serveren er feilkonfigurert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Det kom et uventet svar fra en autentisert webdav-forespørsel.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Tilgang forbudt av serveren. For å sjekke om du har gyldig tilgang, &lt;a href=&quot;%1&quot;&gt;klikk her&lt;/a&gt; for å aksessere tjenesten med nettleseren din.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokal synkroniseringsmappe %1 finnes allerede. Setter den opp for synkronisering.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Oppretter lokal synkroniseringsmappe %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>feilet.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Klarte ikke å opprette lokal mappe %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Ingen ekstern mappe spesifisert!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Feil: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>oppretter mappe på ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Ekstern mappe %1 ble opprettet.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Ekstern mappe %1 finnes allerede. Kobler den til for synkronisering.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Oppretting av mappe resulterte i HTTP-feilkode %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Oppretting av ekstern mappe feilet fordi påloggingsinformasjonen er feil!&lt;br/&gt;Gå tilbake og sjekk brukernavnet og passordet ditt.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Oppretting av ekstern mappe feilet, sannsynligvis fordi oppgitt påloggingsinformasjon er feil.&lt;/font&gt;&lt;br/&gt;Vennligst gå tilbake og sjekk ditt brukernavn og passord.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Oppretting av ekstern mappe %1 feilet med feil &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>En synkroniseringsforbindelse fra %1 til ekstern mappe %2 ble satt opp.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Forbindelse til %1 opprettet!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Klarte ikke å etablere forbindelse til %1. Sjekk igjen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Omdøping av mappe feilet</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Kan ikke fjerne og sikkerhetskopiere mappen fordi mappen eller en fil i mappen er åpen i et annet program. Lukk mappen eller filen og prøv igjen, eller avbryt oppsettet.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Oppretting av lokal synkroniseringsmappe %1 vellykket!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1889,12 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Veiviser for tilkobling</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Hopp over mappekonfigurasjon</translation>
</message>
@@ -1902,7 +1920,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Tidsavbrudd ved tilkobling</translation>
</message>
@@ -1910,7 +1928,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Ugyldig JSON-svar fra forespørsels-URL</translation>
</message>
@@ -1918,57 +1936,57 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Fil %1 kan ikke lastes ned på grunn av lokalt sammenfall av filnavn!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Nedlastingen ville ha redusert ledig diskplass til under %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Ledig plass på disk er mindre enn %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Filen ble slettet fra serveren</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Hele filen kunne ikke lastes ned.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
- <translation type="unfinished"/>
+ <translation>Nedlastet fil er tom, selv om serveren annonserte at den skulle være %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Fil %1 kan ikke lagres på grunn av lokal konflikt med filnavn.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Filen er endret siden den ble oppdaget</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
@@ -2009,7 +2027,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
@@ -2038,20 +2056,21 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Fil %1 kan ikke omdøpes til %2 på grunn av lokalt sammenfall av filnavn</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Filen er blitt fjernet fra en deling med lesetilgang. Den ble gjenopprettet.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Feil HTTP-kode returnert fra server. Ventet 204, men mottok &quot;%1 %2&quot;.</translation>
</message>
@@ -2066,84 +2085,125 @@ Det er ikke tilrådelig å bruke den.</translation>
<message>
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Denne mappen må ikke omdøpes. Den er omdøpt tilbake til sitt opprinnelige navn.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Denne mappen må ikke omdøpes. Vennligst omdøp den tilbake til Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Filen ble gitt nytt navn mer er en del av en deling med lesetilgang. Den opprinnelige filen ble gjenopprettet.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Feil HTTP-kode returnert fra server. Ventet 201, men mottok &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving av metadata til databasen</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Fil fjernet</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokal fil endret under synkronisering. Den vil gjenopptas.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokal fil endret under synkronisering.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Feil ved skriving av metadata til databasen</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Tvinger avbryting av jobb ved HTTP connection reset med Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Den lokale filen ble fjernet under synkronisering.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Lokal fil endret under synkronisering.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Uventet returkode fra serveren (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Mangler File ID fra server</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Mangler ETag fra server</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Tvinger avbryting av jobb ved HTTP connection reset med Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>Filen ble redigert lokalt men er en del av en deling med lesetilgang. Den er blitt gjenopprettet og din endring er i konfliktfilen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Forespørsels-URL mangler</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Den lokale filen ble fjernet under synkronisering.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Serveren godtok ikke den siste deloverføringen. (Ingen e-tag var tilstede)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokal fil endret under synkronisering.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Serveren godtok ikke den siste deloverføringen. (Ingen e-tag var tilstede)</translation>
</message>
</context>
<context>
@@ -2159,42 +2219,42 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Tekst-etikett</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fil</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Mappe</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Handling</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Størrelse</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Lokal synkroniseringsprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopier</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopier aktivitetslisten til utklippstavlen.</translation>
</message>
@@ -2292,22 +2352,22 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Innstillinger</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Generelt</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Nettverk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2315,27 +2375,27 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Generelt</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Nettverk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2363,32 +2423,32 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>ownCloud-sti:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1-deling</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Mappe: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Serveren tillater ikke deling</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
- <translation type="unfinished"/>
+ <translation>Henter maksimalt mulige delerettigheter fra serveren...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Filen kan ikke deles fordi den ble delt uten adgang til å dele.</translation>
</message>
@@ -2427,43 +2487,58 @@ Det er ikke tilrådelig å bruke den.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Epost-lenke</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopier &amp;lenke</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Tillat redigering</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>P&amp;assordbeskyttelse</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Passordbeskyttet</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Filen kan ikke deles fordi den ble delt uten adgang til å dele.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Offentlig d&amp;eling krever et passord</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Sett passord</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Klarte ikke å åpne epost-klient</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Det oppstod en feil ved oppstart av epost-klienten for å lage en ny melding. Kanskje ingen standard epost-klient er konfigurert?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Del lenke</translation>
</message>
@@ -2481,7 +2556,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Del med brukere eller grupper ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Ingen resultater for &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2589,17 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>opprette</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>endre</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>slett</translation>
</message>
@@ -2532,12 +2607,12 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Innloggingsfeil</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Du må logge inn som bruker %1</translation>
</message>
@@ -2545,17 +2620,22 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autentiser</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>SSL Chipher Debug View</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Ny autentisering kreves</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Økten din har utløpt. Du må logge inn på nytt for å fortsette å bruke klienten.</translation>
</message>
@@ -2563,7 +2643,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Del med %1</translation>
@@ -2572,119 +2652,119 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Sertifikatdetaljer&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Common Name (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Subject Alternative Names:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organization (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organizational Unit (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>State/Province:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Land:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serial:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Utsteder&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Utsteder:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Utstedt dato:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Utløper dato:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Fingeravtrykk&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;NB:&lt;/b&gt; Dette sertifikatet ble godkjent manuelt&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (egensignert)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Denne forbindelsen er kryptert med %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Ingen støtte for billett/ID for SSL-økt</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Sertifikatinformasjon:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Denne forbindelsen er IKKE sikker da den ikke er kryptert.
@@ -2772,270 +2852,275 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Suksess.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync kunne ikke laste inn journalfilen. Journalfilen er ødelagt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Klarte ikke å laste utvidelse %1 for csync.&lt;br/&gt;Verifiser installasjonen!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync fikk en feil under behandling av intern trestruktur.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync klarte ikke å reservere minne.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync fatal parmeterfeil.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync-behandlingssteg oppdatering feilet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync-behandlingssteg overensstemming feilet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync klarte ikke å autentisere mot proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync klarte ikke å slå opp proxy eller server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync karte ikke å autentisere på serveren %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync klarte ikke å koble seg til nettverket.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Det oppstod et tidsavbrudd for en nettverksforbindelse.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>En HTTP-overføringsfeil oppstod.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Den oppkoblede mappen er for tiden ikke tilgjengelig på serveren</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Det oppstod en feil ved åpning av en mappe</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Feil ved lesing av mappe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Filen/mappen ignoreres fordi den er skjult.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Bare %1 er tilgjengelig, trenger minst %2 for å begynne</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Ikke tillatt fordi du ikke har lov til å legge til foreldremappe</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Ikke tillatt fordi du ikke har lov til å opprette filer i den mappen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Ikke ledig plass tilgjengelig på server %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync uspesifisert feil.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Avbrutt av brukeren</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Filnavnet inneholder ugyldige tegn som ikke kan synkroniseres på tvers av plattformer.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync klarte ikke å aksessere</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync klarte ikke å laste eller opprette journalfilen. Sjekk at du har lese- og skrivetilgang i den lokale synkroniseringsmappen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync feilet fordi nektet tilgang ikke ble håndtert.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync prøvde å opprette en mappe som finnes allerede.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Tjenesten er midlertidig utilgjengelig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Tilgang er nektet</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>En intern feil nummer %1 oppstod.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Elementet er ikke synkronisert på grunn av tidligere feil: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolske lenker støttes ikke i synkronisering.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Filen ligger på ignoreringslisten.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Filnavn inneholder blanke på slutten.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Filnavn er for langt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat feilet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Filnavn-koding er ikke gyldig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Ugyldige tegn, gi et annet navn til &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Kan ikke initialisere en synkroniseringsjournal.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lese svartelisten fra den lokale databasen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lese fra synkroniseringsjournalen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Kan ikke åpne synkroniseringsjournalen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Filnavnet inneholder minst ett ulovlig tegn</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorert på grunn av svartelisten &quot;velg hva som skal synkroniseres&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Ikke tillatt fordi du ikke har lov til å lage undermapper i den mappen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Ikke tillatt å laste opp denne filenfordi den er skrivebeskyttet på serveren, gjenoppretter</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Ikke tillatt å fjerne, gjenoppretter</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Lokale filer og delingsmappe fjernet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Flytting ikke tillatt, element gjenopprettet</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Flytting ikke tillatt fordi %1 er skrivebeskyttet</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>målet</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>kilden</translation>
</message>
@@ -3059,17 +3144,17 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versjon %1. For mer informasjon gå til &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuert av %1 og lisensiert under GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 og %2-logoet er registrerte varemerker for %1 i USA, i andre land eller begge deler.&lt;/p&gt;</translation>
</message>
@@ -3095,202 +3180,217 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Vennligst logg inn</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Mappe %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Ingen synkronisering-mapper konfigurert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Ingen synkroniseringsmapper er konfigurert.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Åpne i nettleser</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Logg inn..</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Logg ut</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Siste endringer</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Ser etter endringer i &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Administrerte mapper:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Åpne mappe &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Åpne %1 i nettleser</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Ukjent status</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Innstillinger...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detaljer...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Hjelp</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Avslutt %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Koble fra %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Server-versjonen støttes ikke</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Serveren på konto %1 kjører en gammel %2 som ikke støttes. Bruk av denne klienten med ikke-støttede server-versjoner er ikke testet og kan være farlig. Fortsett på egen risiko.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Koblet fra kontoer:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Konto %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Kontosynkronisering er deaktivert</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Fortsett alle mapper</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Sett alle mapper på pause</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Fortsett all synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Fortsett synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Sett all synkronisering på pause</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Sett synkronisering på pause</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Logg ut av alle kontoer</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Logg inn på alle kontoer...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>Ny konto...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Krasj nå</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Ingenting synkronisert nylig</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synkroniserer %1 av %2 (%3 gjenstår)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Synkroniserer %1 av %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synkroniserer %1 (%2 gjenstår)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synkroniserer %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Oppdatert</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versjon %2. For mer informasjon gå til &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Av Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz med flere.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Lisensiert under GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud og ownCloud-logo er registrerte varemerker for ownCloud, Inc. i USA, andre land, eller begge deler.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Versjon %2. For mer informasjon gå til &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For kjente problemer og hjelp, gå til: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Av Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt med flere.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;&lt;p&gt;Lisensiert under GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud og ownCloud-logo er registrerte varemerker for ownCloud GmbH i USA, andre land eller begge deler.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3305,9 +3405,9 @@ Det er ikke tilrådelig å bruke den.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Tekst-etikett</translation>
</message>
@@ -3327,7 +3427,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Start en &amp;ren synkronisering (sletter den lokale mappen!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Velg hva som synkroniseres</translation>
</message>
@@ -3352,7 +3452,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>S&amp;ynkroniser alt fra serveren</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Statusmelding</translation>
</message>
@@ -3365,26 +3465,15 @@ Det er ikke tilrådelig å bruke den.</translation>
<translation>Skjema</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Brukernavn</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Passord</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Feiletikett</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Tekst-etikett</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3590,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>LTR</translation>
</message>
@@ -3509,37 +3598,37 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>fram i tid</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>i går</numerusform><numerusform>for %n dager siden</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>for %n time siden</numerusform><numerusform>for %n timer siden</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>nå</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>For mindre enn et minutt siden</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>for %n minutt siden</numerusform><numerusform>for %n minutter siden</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>For en stund siden</translation>
</message>
@@ -3547,57 +3636,57 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n år</numerusform><numerusform>%n år</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n måned</numerusform><numerusform>%n måneder</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n dag</numerusform><numerusform>%n dager</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n time</numerusform><numerusform>%n timer</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n minutt</numerusform><numerusform>%n minutter</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n sekund</numerusform><numerusform>%n sekunder</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3707,7 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Bygget fra Git-revisjon &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3, %4 med Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3626,82 +3715,92 @@ Det er ikke tilrådelig å bruke den.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Nedlastet</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Opplastet</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
- <translation type="unfinished"/>
+ <translation>Server-versjon lastet ned, kopierte endret lokal fil til konfliktfil</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Slettet</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Flyttet til %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorert</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Feil med tilgang til filsystemet</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Feil</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Oppdaterte lokale metadata</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Ukjent</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>laster ned</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>laster opp</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>sletter</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>flytter</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorerer</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>feil</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>oppdaterer lokale metadata</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_nl.ts b/translations/client_nl.ts
index 7c9700dee..383a3ad90 100644
--- a/translations/client_nl.ts
+++ b/translations/client_nl.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="nl" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="nl" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Het doelbestand heeft een onverwachte omvang of tijdstempel</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Niet geselecteerde mappen worden &lt;b&gt;verwijderd&lt;/b&gt; van uw lokale bestandssysteem en worden niet meer gesynchroniseerd met deze computer</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Alles synchroniseren</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Niets synchroniseren</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Toepassen handmatige wijzigingen</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Toepassen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Annuleren</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Verbonden met &lt;server&gt; als &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Geen account ingesteld.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Toevoegen nieuw</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Verwijder</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Account</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Selectieve synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Verwijderen map sync verbinding</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Maken map mislukt</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Kon lokale map &lt;i&gt;%1&lt;/i&gt; niet maken.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bevestig verwijderen Map Sync verbinding</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Verwijderen Map Sync verbinding</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Bezig met synchroniseren</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Bezig met synchroniseren.&lt;br/&gt;Wilt u stoppen met synchroniseren?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 in gebruik</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 als &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>De serverversie %1 is oud en wordt niet meer ondersteund. Verdergaan is op eigen risico.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Verbonden met %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 is tijdelijk niet beschikbaar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Uitgelogd van %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Geen verbinding met %1 op %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Meld u aan</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Er zijn nieuwe mappen die niet gesynchroniseerd werden, omdat ze te groot zijn:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Bevestig verwijderen account</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wilt u echt de verbinding met het account &lt;i&gt;%1&lt;/i&gt; verbreken?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Let op:&lt;/b&gt; Hierdoor verwijdert u &lt;b&gt;geen&lt;/b&gt; bestanden.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Verwijderen verbinding</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Openen map</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Afmelden</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Hervatten sync</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pauzeren sync</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Weet u zeker dat u de synchronisatie van map &lt;i&gt;%1&lt;/i&gt; wilt stoppen?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Opmerking:&lt;/b&gt; Dit zal &lt;b&gt;geen&lt;/b&gt; bestanden verwijderen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 van %2 in gebruik</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Geen %1 connectie geconfigureerd.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Afgemeld</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Niet verbonden</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Verbonden</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Dienst niet beschikbaar</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Netwerkfout</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Configuratiefout</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Onbekende account-status</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Serveractiviteit</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Synchronisatiegeschiedenis</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lijst van genegeerde of foutieve bestanden</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopiëren</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopieer de activiteitenlijst naar het klembord.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Niet gesynchroniseerd</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Niet gesynchroniseerd (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>De server activiteitenlijst is gekopieerd naar het klembord.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>De sync activiteitenlijst is gekopieerd naar het klembord.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>De lijst met niet gesyncte objecten is gekopieerd naar het klembord.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Gekopieerd naar het klembord</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Tekstlabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Serveractiviteiten</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopiëren</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopieer de activiteitenlijst naar het klembord.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Actie verwacht: Berichten</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Account %1 heeft geen activiteiten ingeschakeld.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>U ontving %n nieuw bericht van %2.</numerusform><numerusform>U ontving %n nieuwe berichten van %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>U ontving %n nieuwe melding(en) van %1 en %2.</numerusform><numerusform>U ontving %n nieuwe melding(en) van %1 en %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Je hebt nieuwe berichten ontvangen van %1, %2 en andere acounts</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Berichten - Actie verwacht</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Wachtwoord certificaat :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Selecteer een certificaat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Certificaat bestanden (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Authenticatie vereist</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Geef gebruikersnaam en wachtwoord op voor &apos;%1&apos; bij %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Gebruiker:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Wachtwoord:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Fout bij schrijven van Metadata naar de database</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Geen ownCloud-account geconfigureerd</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>De voor dit programma ingestelde server is te oud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Werk de server bij naar de nieuwste versie en herstart het programma.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Authenticatiefout: Gebruikersnaam of wachtwoord onjuist.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>time-out</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>De verstrekte inloggegevens zijn niet juist</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Time-out verbinding</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Afgebroken door de gebruiker</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Lokale map %1 bestaat niet.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 zou een map moeten zijn, maar is dat niet.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 is niet leesbaar.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 is verwijderd.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 is gedownload.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 is bijgewerkt.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 is hernoemd naar %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 is verplaatst naar %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 en %n ander bestand(en) zijn verwijderd.</numerusform><numerusform>%1 en %n andere bestand(en) zijn verwijderd.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 en %n ander bestand(en) zijn gedownload.</numerusform><numerusform>%1 en %n andere bestand(en) zijn gedownload.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 en %n ander bestand(en) zijn bijgewerkt.</numerusform><numerusform>%1 en %n andere bestand(en) zijn bijgewerkt.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd.</numerusform><numerusform>%1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst.</numerusform><numerusform>%1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 en %n ander bestand(en) hebben een sync conflict.</numerusform><numerusform>%1 en %n andere bestand(en) hebben sync conflicten.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 heeft een sync conflict. Controleer het conflict bestand!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform><numerusform>%1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Synchronisatie-activiteit</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Kon het systeem-uitsluitingsbestand niet lezen</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Een nieuwe map groter dan %1 MB is toegevoegd: %2
Ga naar de instellingen om het te selecteren als u deze wilt downloaden.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,41 @@ Dat zou kunnen gebeuren, omdat de map stilletjes was geherconfigureerd, of omdat
Weet je zeker dat je door wilt gaan?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Verwijder alle bestanden?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Verwijder alle bestanden</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Bewaar bestanden</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation>Deze synchronisatie zou uw bestanden terug zetten naar een eerdere staat van de synchronisatie map &apos;%1&apos;.
Dit kan komen doordat een backup is hersteld op de server.
-Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere versie. Wilt u uw lokale meer recentere bestanden behouden als conflict bestanden?</translation>
+Doorgaan met deze synchronisatie overschrijft al uw bestanden door een eerdere versie. Wilt u uw lokale meer recente bestanden behouden als conflict bestanden?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup gedetecteerd</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normale synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Behoud lokale bestanden als conflict</translation>
</message>
@@ -742,112 +757,112 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Kan de beginstaat van de map niet terugzetten</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Een oud synchronisatieverslag &apos;%1&apos; is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(backup)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(backup %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Ongedefiniëerde staat</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>In afwachting van synchronisatie.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Synchronisatie wordt voorbereid</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Bezig met synchroniseren.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Laatste synchronisatie was geslaagd.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Laatste synchronisatie geslaagd, maar met waarschuwingen over individuele bestanden.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Installatiefout.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Afgebroken door gebruiker.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synchronisatie gepauzeerd.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synchronisatie onderbroken)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Geen geldige map geselecteerd!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Het geselecteerde pad is geen map!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>U heeft geen permissie om te schrijven naar de geselecteerde map!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 wordt al in de mapsync gebruikt. Kies een andere map!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 is een symbolische link. De doellink bevat al een map die in een mapsync verbinding wordt gebruikt. Kies een andere!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokale map %1 is een symbolische link. De doellink zit al in een map die in een mapsync verbinding wordt gebruikt. Kies een andere!</translation>
</message>
@@ -873,128 +888,134 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>U moet verbonden zijn om een map toe te voegen</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Klik op deze knop om een te synchroniseren map toe te voegen.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>
%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Fout bij ophalen mappenlijst van de server.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Afgemeld</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Het toevoegen van een map is uitgeschakeld, omdat u reeds al uw bestanden synchroniseert. Als u meerdere mappen wilt synchroniseren moet u de nu geconfigureerde hoofdmap verwijderen.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Mappenlijst ophalen van de server...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Controleren op wijzigingen in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchroniseren %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>download %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>upload %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 van %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 over, %1 van %2, bestand %3 van %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 van %2, bestand %3 van %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>bestand %1 van %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Aan het wachten...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Wacht op %n andere map...</numerusform><numerusform>Wacht op %n andere mappen...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Voorbereiden op sync...</translation>
</message>
@@ -1107,22 +1128,22 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Server retourneerde verkeerde content-bandbreedte</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Verbindingstime-out</translation>
</message>
@@ -1204,28 +1225,29 @@ Doorgaan met deze synchronisatie overschrijft al uw bestandend door een eerdere
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation>Voer %1 wachtwoord in:
-gebruiker: %2
-account: %3
+Gebruiker: %2
+Account: %3
</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Het lezen van de sleutelketen is mislukt met fout: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Vul het wachtwoord in</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Klik hier&lt;/a&gt; om een nieuw app wachtwoord via de web interface op te vragen.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1270,7 +1292,7 @@ account: %3
<translation>Verwijder</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1279,27 +1301,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een map verdwijnt. Dit is nuttig voor metadata.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Kon het bestand niet openen</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Er kunnen geen wijzigingen worden geschreven naar %1</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Toevoegen negeerpatroon</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Voeg nieuw negeerpatroon toe:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Deze entry is door het systeem geleverd op &apos;%1&apos; en kan niet worden aangepast in deze sessie.</translation>
</message>
@@ -1373,7 +1395,7 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Verbinding time-out</translation>
</message>
@@ -1489,32 +1511,32 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<translation>Beperk automatisch</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Hostnaam van proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Gebruikersnaam voor proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Wachtwoord voor proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 is vereist om de bandbreedte-limieten toe te passen</translation>
</message>
@@ -1522,23 +1544,23 @@ Onderdelen die gewist mogen worden worden verwijderd als ze voorkomen dat een ma
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Aangemaakt op %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Wordt afgesloten binnen enkele seconden...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 aanvraag mislukt om %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; geselecteerd om %2</translation>
@@ -1676,7 +1698,7 @@ vragen om extra autorisaties tijdens installatie.</translation>
<translation>Configureer het client-side TLS-certificaat</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Kon niet verbinden met het opgegeven beveiligde serveradres &lt;em&gt;%1&lt;/em&gt;.Hoe wilt u verder gaan?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1684,17 +1706,17 @@ vragen om extra autorisaties tijdens installatie.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;E-mail</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Verbinden met %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Vul uw inloggegevens in</translation>
</message>
@@ -1732,139 +1754,139 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Succesvol verbonden met %1: %2 versie %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Kon geen verbinding maken met %1 op %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Time-out bij verbinden met %1 om %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Probeer te verbinden met %1 om %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>De geauthentiseerde aanvraag voor de server werd omgeleid naar &apos;%1&apos;. De URL is onjuist, de server is verkeerd geconfigureerd.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Er was een ongeldig antwoord op een geauthenticeerde webdav opvraging</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Toegang door server verboden. Om te verifiëren dat u toegang mag hebben, &lt;a href=&quot;%1&quot;&gt;klik hier&lt;/a&gt; om met uw browser toegang tot de service te krijgen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokale synch map %1 bestaat al, deze wordt ingesteld voor synchronisatie.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Creëren lokale sync map %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>mislukt.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Kon lokale map %1 niet aanmaken</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Geen externe map opgegeven!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Fout: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>aanmaken map op ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Externe map %1 succesvol gecreërd.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>De remote map %1 bestaat al. Verbinden voor synchroniseren.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Het aanmaken van de map resulteerde in HTTP foutcode %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.&lt;br/&gt;Ga terug en controleer uw inloggegevens.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Het aanmaken van de remote map is mislukt, waarschijnlijk omdat uw inloggegevens fout waren.&lt;/font&gt;&lt;br/&gt;ga terug en controleer uw inloggevens.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Aanmaken van remote map %1 mislukt met fout &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Er is een sync verbinding van %1 naar remote directory %2 opgezet.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Succesvol verbonden met %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Verbinding met %1 niet geslaagd. Probeer het nog eens.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Hernoemen map mislukt</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Kan de map niet verwijderen en backuppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Lokale synch map %1 is succesvol aangemaakt!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1872,12 +1894,12 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Verbindingswizard</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Sla configuratie van mappen over</translation>
</message>
@@ -1903,7 +1925,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Verbindingstime-out</translation>
</message>
@@ -1911,7 +1933,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Ongeldig JSON antwoord van de opgegeven URL</translation>
</message>
@@ -1919,55 +1941,55 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Fout bij schrijven van Metadata naar de database</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>De download zou de vrije schijfruimte beperken tot onder %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Vrije schijfruimte is minder dan %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Bestand was verwijderd van de server</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Het bestand kon niet volledig worden gedownload.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<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>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Het bestand is gewijzigd sinds het is gevonden</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Fout bij schrijven van Metadata naar de database</translation>
</message>
@@ -2039,7 +2061,8 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Bestand %1 kan niet worden hernoemd naar %2, omdat de naam conflicteert met een lokaal bestand</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Fout bij schrijven van Metadata naar de database</translation>
</message>
@@ -2047,12 +2070,12 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Het bestand is verwijderd van een alleen-lezen share. Het is teruggezet.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen &quot;%1 %2&quot;.</translation>
</message>
@@ -2073,78 +2096,119 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Deze map mag niet worden hernoemd. De naam van de map is teruggezet naar de originele naam.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Deze map mag niet worden hernoemd. Verander de naam terug in Gedeeld.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Het bestand is hernoemd, maar hoort bij een alleen-lezen share. Het originele bestand is teruggezet.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Foutieve HTTP code ontvangen van de server. Verwacht werd 201, maar ontvangen &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Fout bij schrijven van Metadata naar de database</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Bestand verwijderd</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokaal bestand gewijzigd bij sync. Wordt opnieuw meengenomen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokaal bestand gewijzigd bij sync.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Fout bij schrijven van Metadata naar de database</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Forceren job-beëindiging op HTTP verbindingsreset met Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Het lokale bestand werd verwijderd tijdens sync.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Lokaal bestand gewijzigd bij sync.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Onverwachte reactie van server (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Ontbrekende File ID van de server</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Ontbrekende ETag van de server</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Forceren job-beëindiging op HTTP verbindingsreset met Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>URL opvraag ontbreekt</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Het lokale bestand werd verwijderd tijdens sync.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokaal bestand gewijzigd bij sync.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Fout bij schrijven van Metadata naar de database</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig)</translation>
</message>
</context>
<context>
@@ -2160,42 +2224,42 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Tekstlabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Tijd</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Bestand</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Map</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Handeling</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Grootte</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Lokaal sync protocol</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopiëren</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopieer de activiteitenlijst naar het klembord.</translation>
</message>
@@ -2293,22 +2357,22 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Instellingen</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Activiteit</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Algemeen</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Netwerk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2316,27 +2380,27 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Activiteit</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Algemeen</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Netwerk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Account</translation>
</message>
@@ -2364,32 +2428,32 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>OwnCloud Pad:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Delen</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Map: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>De server staat delen niet toe</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Maximum aantal mogelijke permissies van de server ophalen...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Het bestand kan niet worden gedeeld, omdat het werd gedeeld zonder verder delen toestemming.</translation>
</message>
@@ -2428,43 +2492,58 @@ We adviseren deze site niet te gebruiken.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Mailen link</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopiëren &amp;link</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Toestaan bewerken</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Wachtwoord beveiligd</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Wachtwoord beveiligd</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Het bestand kan niet worden gedeeld, omdat het werd gedeeld zonder verder delen toestemming.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Openbaar de&amp;len vereist een wachtwoord</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Stel uw wachtwoord in</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Kon e-mailclient niet openen</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Deel link</translation>
</message>
@@ -2482,7 +2561,7 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Delen met gebruikers of groepen ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Geen resultaten voor &apos;%1&apos;</translation>
</message>
@@ -2515,17 +2594,17 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>creëer</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>wijzig</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>verwijderen</translation>
</message>
@@ -2533,12 +2612,12 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Inlogfout</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>U moet inloggen als gebruiker %1</translation>
</message>
@@ -2546,17 +2625,22 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - authenticeren</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>SSL Cipher Debug View</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Hernieuwde authenticatie nodig</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Uw sessie is verstreken. U moet opnieuw inloggen om de client-applicatie te gebruiken.</translation>
</message>
@@ -2564,7 +2648,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Delen met %1</translation>
@@ -2573,119 +2657,119 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Certificaat details&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Common Name (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Alternatieve subject namen:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisatie (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organisatie unit (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Land/Provincie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Land:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serienummer:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Uitgever&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Uitgever:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Uitgegeven op:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Vervalt op:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Vingerafdrukken&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Let op:&lt;/b&gt; Dit certificaat werd handmatig goedgekeurd&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (zelf ondertekend)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Deze verbinding is versleuteld via %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Geen ondersteuning voor SSL-sessie tickets/identifiers</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Certificaat informatie:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Deze verbinding is NIET veilig, omdat deze niet versleuteld is.
@@ -2773,270 +2857,275 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Succes.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync kon het journal bestand niet inladen. Het journal bestand is kapot.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;De %1 plugin voor csync kon niet worden geladen.&lt;br/&gt;Verifieer de installatie!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync kreeg een fout tijdens het verwerken van de interne mappenstructuur.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync kon geen geheugen reserveren.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync fatale parameter fout.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync verwerkingsstap bijwerken mislukt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync verwerkingsstap verzamelen mislukt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync kon niet authenticeren bij de proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync kon geen proxy of server vinden.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync kon niet authenticeren bij de %1 server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync kon niet verbinden met het netwerk.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Er trad een netwerk time-out op.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Er trad een HTTP transmissiefout plaats.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>De gemounte map is tijdelijk niet beschikbaar op de server</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Er trad een fout op bij het openen van een map</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Fout tijdens lezen map.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Bestand/Map is genegeerd omdat het verborgen is. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Niet toegestaan omdat u geen rechten hebt om een bovenliggende map toe te voegen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Niet toegestaan omdat u geen rechten hebt om bestanden in die map toe te voegen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Geen ruimte op %1 server beschikbaar.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync ongedefinieerde fout.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Afgebroken door de gebruiker</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Bestandsnaam bevat ongeldige tekens die niet tussen platformen gesynchroniseerd kunnen worden.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync kreeg geen toegang</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync kon het journal bestand niet maken of lezen. Controleer of u de juiste lees- en schrijfrechten in de lokale syncmap hebt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync mislukt omdat de benodigde toegang werd geweigerd.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync probeerde een al bestaande map aan te maken.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>De dienst is tijdelijk niet beschikbaar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Toegang verboden</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Een interne fout met nummer %1 is opgetreden.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Dit onderwerp is niet gesynchroniseerd door eerdere fouten: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolische links worden niet ondersteund bij het synchroniseren.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Het bestand is opgenomen op de negeerlijst.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>De bestandsnaam bevat spaties achteraan.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>De bestandsnaam is te lang.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat mislukt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Bestandsnaamcodering is niet geldig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Ongeldige tekens, hernoem &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Niet in staat om een synchronisatie transactielog te starten.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Kan de blacklist niet lezen uit de lokale database</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Niet mogelijk om te lezen uit het synchronisatie verslag.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Kan het sync transactielog niet openen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>De bestandsnaam bevat ten minste één ongeldig teken</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Genegeerd vanwege de &quot;wat synchroniseren&quot; zwarte lijst</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Niet toegestaan, omdat je geen permissies hebt om submappen aan die map toe te voegen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Niet toegestaan om te verwijderen, herstellen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Lokale bestanden en share-map verwijderd. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Verplaatsen niet toegestaan, object hersteld</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>bestemming</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>bron</translation>
</message>
@@ -3060,17 +3149,17 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versie %1. Voor meer informatie bezoek &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gedistribueerd door %1 en gelicenseerd onder de GNU General Public License (GPL) Versie 2.0.&lt;br/&gt;%2 en het %2 logo zijn geregistreerde handelsmerken van %1 in de Verenigde Staten, in andere landen of beide.&lt;/p&gt;</translation>
</message>
@@ -3096,202 +3185,217 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Log alstublieft in</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Map %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Geen synchronisatie-mappen geconfigureerd.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Er zijn geen synchronisatie-mappen geconfigureerd.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Open in browser</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Inloggen...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Afmelden</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Recente wijzigingen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Controleren op wijzigingen in &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Beheerde mappen:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Open map &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Open %1 in browser</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Onbekende status</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Instellingen...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Details ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Help</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1 afsluiten</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Losgekoppeld van %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Niet-ondersteunde server versie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>De server van account %1 gebruikt een oude versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is voor uw eigen risico.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Losgekoppeld van account:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Account %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Account synchronisatie is uitgeschakeld</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Hervat alle mappen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pauzeer alle mappen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Hervat alle synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Hervat synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pauzeer alle synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pauzeer synchronisatie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Uitloggen van alle accounts...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Inloggen op alle accounts...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>Nieuw account...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Crash nu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Recent niets gesynchroniseerd</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sync %1 van %2 (%3 over)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Synchroniseren %1 van %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sync %1 (%2 over)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchroniseren %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Bijgewerkt</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versie %2. Bezoek voor meer informatie bezoek &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;Door Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz en anderen.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Gelicenseerd onder de GNU Genertal Public License (GPL) Versie 2.0&lt;br&gt;ownCloud en het ownCloud logo zijn geregistreerde handelsmerken van ownCloud, Inc. in de Verenigde Staten, andere landen, of beide.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Versie %2. Voor meer informatie bezoek &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Voor bekende problemen en hulp, bezoek: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;Door Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt en anderen.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, GmbH&lt;/p&gt;&lt;p&gt;Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0&lt;br&gt;ownCloud en het ownCloud logo zijn geregistreerde handelsmerken van ownCloud GmbH in de Verenigde Staten, andere landen, of beide.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3306,9 +3410,9 @@ We adviseren deze site niet te gebruiken.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TekstLabel</translation>
</message>
@@ -3328,7 +3432,7 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Starten &amp;Schone sync (maakt lokale map leeg!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Selectieve synchronisatie</translation>
</message>
@@ -3353,7 +3457,7 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>S&amp;ynchroniseer alles vanaf de server</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Statusbericht</translation>
</message>
@@ -3366,26 +3470,15 @@ We adviseren deze site niet te gebruiken.</translation>
<translation>Formulier</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Gebruikersnaam</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Wachtwoord</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Foutlabel</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Tekstlabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3502,7 +3595,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3510,37 +3603,37 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>in de toekomst</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n dag geleden</numerusform><numerusform>%n dagen geleden</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n uur geleden</numerusform><numerusform>%n uur geleden</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>nu</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Minder dan een minuut geleden</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minuut geleden</numerusform><numerusform>%n minuten geleden</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Even geleden</translation>
</message>
@@ -3548,57 +3641,57 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n jaar</numerusform><numerusform>%n jaar</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n maand</numerusform><numerusform>%n maanden</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n dag</numerusform><numerusform>%n dagen</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n uur</numerusform><numerusform>%n uur</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuut</numerusform><numerusform>%n minuten</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation><numerusform>%n seconde</numerusform><numerusform>%n seconden</numerusform></translation>
+ <translation><numerusform>%n seconde</numerusform><numerusform>%n seconde(n)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3619,7 +3712,7 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Gebouwd vanuit Git revisie &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; op %3, %4 gebruik makend van Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3627,82 +3720,92 @@ We adviseren deze site niet te gebruiken.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Gedownload</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Geüpload</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Verwijderd</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Verplaatst naar %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Genegeerd</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Toegangsfout van het bestandssysteem</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Lokale metadata ge-uploaded</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Onbekend</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>downloaden</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>uploaden</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>verwijderen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>verplaatsen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>negerend</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>fout</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>Bijwerken lokale metadata</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_pl.ts b/translations/client_pl.ts
index 397048c15..df9f26d4d 100644
--- a/translations/client_pl.ts
+++ b/translations/client_pl.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Plik docelowy ma nieznaną wielkość lub datę modyfikacji</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Niezaznaczone katalogi zostaną &lt;b&gt;usunięte&lt;/b&gt; z lokalnego systemu plików i nie będą już więcej synchronizowane na tym komputerze.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Zastosuj</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Połączony z &lt;server&gt; jako &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Brak skonfigurowanych kont.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Dodaj nowe</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Usuń</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Konto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Wybierz co synchronizować</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Usuń folder połączenia synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Nie udało się stworzyć katalogu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Nie można stworzyć lokalnego katalogu &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Usuń folder połączenia synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Usuń folder połączenia synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synchronizacja uruchomiona</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Operacja synchronizacji jest uruchomiona.&lt;br&gt;Czy chcesz ją zakończyć?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 w użyciu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 jako &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Wersja serwera %1 jest przestarzała i nie jest już wspierana. Kontynuujesz na własne ryzyko.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Podłączony do %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Serwer %1 jest tymczasowo niedostępny.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Wylogowano z %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Brak połączenia do %1 z %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Zaloguj</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Istnieją nowe foldery, które nie zostały zsynchronizowane, gdyż są za duże.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Potwierdź usunięcie konta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Czy na pewno chcesz usunąć połączenie z kontem &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Uwaga:&lt;/b&gt; ta operacja &lt;b&gt;nie&lt;/b&gt; usunie plików klienta.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Usuwanie połączenia</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Otwórz katalog</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Wyloguj</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Przywróć synchronizację</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Zatrzymaj synchronizację</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Czy na pewno chcesz zatrzymać synchronizację folderu &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Uwaga:&lt;/b&gt; ta operacja &lt;b&gt;nie&lt;/b&gt; usunie plików z klienta.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) z %2 w użyciu. Niektóre foldery, w tym zamontowane lub udostępnione foldery w sieci, mogą mieć różne limity.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 z %2 w użyciu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Obecnie nie ma dostępnych informacji o wykorzystaniu pamięci masowej.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Połączenie %1 nie skonfigurowane.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Odłączony</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Rozłączony</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Połączony</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Usługa niedostępna</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Błąd sieci</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Błąd konfiguracji</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Status konta nieznany</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Aktywność serwera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protokół synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lista pominiętych lub błędnych plików</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiuj listę aktywności do schowka.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Niezsynchronizowany</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Niezsynchronizowany (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Log aktywności serwera został skopiowany do schowka.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Przebieg synchronizacji został skopiowany do schowka.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Lista niezsynchronizowanych plików została skopiowana do schowka.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Skopiuj do schowka</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Etykieta</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Działania serwera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiuj listę aktywności do schowka.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Wymagana akcja: Powiadomienia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Użytkownik %1 nie ma włączonej historii aktywności.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Otrzymano %n nowe powiadomienie od %2.</numerusform><numerusform>Otrzymano %n nowe powiadomienia od %2.</numerusform><numerusform>Otrzymano %n nowych powiadomień od %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Otrzymano %n nowe powiadomienie od %1 i %2.</numerusform><numerusform>Otrzymano %n nowe powiadomienia od %1 i %2.</numerusform><numerusform>Otrzymano %n nowych powiadomień %1 i %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Otrzymałeś nowe powiadomienia z %1, %2 i innych kont.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Powiadomień - Wymagana akcja</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Hasło certyfikatu:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Wybierz certyfikat:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Pliki certyfikatu (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Wymagana autoryzacja</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Wprowadź użytkwownika i hasło dla &apos;%1&apos; w %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Użytkownik:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Hasło</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Nie skonfigurowano konta ownCloud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Konfigurowany serwer dla tego klienta jest za stary</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Proszę zaaktualizować serwer do najnowszej wersji i zrestartować klienta.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Błąd autentykacji: nazwa użytkownika lub hasło są nieprawidłowe.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>wygaśnięcie</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Podane dane logowania są nieprawidłowe</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Przekroczono czas odpowiedzi</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Anulowane przez użytkownika</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Folder lokalny %1 nie istnieje.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 powinien być katalogiem, ale nie jest.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 jest nie do odczytu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 został usunięty.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 został ściągnięty.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 został uaktualniony.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 zmienił nazwę na %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 został przeniesiony do %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 i %n inny plik został usunięty.</numerusform><numerusform>%1 i %n inne pliki zostały usunięte.</numerusform><numerusform>%1 i %n innych plików zostało usuniętych.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 i %n inny plik został pobrany.</numerusform><numerusform>%1 i %n inne pliki zostały pobrane.</numerusform><numerusform>%1 i %n innych plików zostało pobranych.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 i %n inny plik został zaktualizowany.</numerusform><numerusform>%1 i %n inne pliki zostały zaktualizowane.</numerusform><numerusform>%1 i %n innych plików zostało zaktualizowanych.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 ma konflikt synchronizacji. Sprawdź konfliktujący plik!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 nie może zostać zsynchronizowany z powodu błędu. Zobacz szczegóły w logu.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Aktywności synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Nie można przeczytać pliku wyłączeń</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Nowy folder większy od %1 MB został dodany
Przejdź do ustawień i zaznacz go, jeśli chcesz go pobrać.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Może to być spowodowane faktem, że folder został przekonfigurowany lub wszys
Czy jesteś pewien, że chcesz wykonać tę operację ? </translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Usunąć wszystkie pliki?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Usuń wszystkie pliki</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Pozostaw pliki</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Bieżąca synchronizacja przywróci pliki do poprzedniego czasu w folderze %1.
-Być może została przywrócona kopia zapasowa serwera?
-Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwotny stan. Czy chcesz zatrzymać swoje ostatnie pliki i nadać im status konfliktu?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Wykryto kopię zapasową.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normalna synchronizacja.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Zatrzymaj pliki lokalne i ustaw status konfliktu.</translation>
</message>
@@ -742,112 +755,112 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Nie udało się zresetować stanu folderu</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Stary sync journal &apos;%1&apos; został znaleziony, lecz nie mógł być usunięty. Proszę się upewnić, że żaden program go obecnie nie używa.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(kopia zapasowa)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(kopia zapasowa %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Niezdefiniowany stan</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Poczekaj na rozpoczęcie synchronizacji.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Przygotowuję do synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synchronizacja w toku</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Ostatnia synchronizacja zakończona powodzeniem.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Ostatnia synchronizacja udana, ale istnieją ostrzeżenia z pojedynczymi plikami.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Błąd ustawień.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Użytkownik anulował.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synchronizacja wstrzymana</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation> %1 (Synchronizacja jest zatrzymana)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nie wybrano poprawnego folderu.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Wybrana ścieżka nie jest katalogiem!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Nie masz uprawnień, aby zapisywać w tym katalogu!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Wybrany folder lokalny %1 jest już użyty na potrzeby innej synchronizacji. Proszę wybrać inny folder lokalny.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokalny folder %1 już zawiera folder użyty na potrzeby synchronizacji. Proszę wybrać inny folder lokalny.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Lokalny folder %1 jest dowiązaniem symbolicznym. Cel dowiązania zawiera folder użyty na potrzeby innej synchronizacji. Proszę wybrać inny folder lokalny bądź dowiązanie.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
- <translation type="unfinished"/>
+ <translation>Lokalny folder %1 już zawiera folder użyty na potrzeby synchronizacji. Proszę wybrać inny folder lokalny.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -873,127 +886,133 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Musisz być podłączony, by dodać folder.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Kliknij ten przycisk, by dodać folder do synchronizacji.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Wystąpił błąd podczas pobierania listy folderów z serwera.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Odłączony</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Dodawanie folderu jest zablokowane, ponieważ już synchronizujesz wszystkie swoje pliki. Jeśli chcesz zsynchronizować wiele folderów, usuń folder aktualnie skonfigurowany.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Pobieranie listy folderów z serwera.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Sprawdzanie zmian na &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchronizowanie %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>pobieranie %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>wysyłanie %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 z %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>Plik %3 z %4, pozostało czasu %5 (%1 z %2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 z %2, plik %3 z %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>plik %1 z %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Czekaj...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Przygotowanie do synchronizacji ...</translation>
</message>
@@ -1059,7 +1078,7 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<message>
<location filename="../src/gui/folderwizard.cpp" line="226"/>
<source>Failed to list a folder. Error: %1</source>
- <translation type="unfinished"/>
+ <translation>Nie udało się wyświetlić folderu. Błąd: %1</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="307"/>
@@ -1106,22 +1125,22 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<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/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<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/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Serwer zwrócił błędną zakres zawartości</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Limit czasu połączenia</translation>
</message>
@@ -1156,7 +1175,7 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<message>
<location filename="../src/gui/generalsettings.ui" line="26"/>
<source>&amp;Launch on System Startup</source>
- <translation>&amp;Uruchamiaj podczas startu systemu Windows</translation>
+ <translation>&amp;Uruchamiaj podczas startu systemu</translation>
</message>
<message>
<location filename="../src/gui/generalsettings.ui" line="33"/>
@@ -1203,28 +1222,25 @@ Jeśli kontynuujesz synchronizację, pliki zostaną nadpisane przez swój pierwo
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Proszę podać %1 hasło:
-
-Użytkownik: %2
-Konto: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Wprowadź hasło</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1285,7 @@ Konto: %3
<translation>Usuń</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawnienia katalogu dopuszczają usuwanie.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Nie można otworzyć plików</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Nie mogę zapisać zmian do &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Dodaj ignorowany</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Dodaj nowy ignorowany:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Ten wpis jest podawany przez system w &apos;%1&apos; i nie może być zmieniony w tym widoku.</translation>
</message>
@@ -1372,7 +1388,7 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Przekroczono czas odpowiedzi</translation>
</message>
@@ -1474,7 +1490,7 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
<location filename="../src/gui/networksettings.ui" line="250"/>
<location filename="../src/gui/networksettings.ui" line="282"/>
<source>Limit to 3/4 of estimated bandwidth</source>
- <translation type="unfinished"/>
+ <translation>Ogranicz do 3/4 szacowanego pasma</translation>
</message>
<message>
<location filename="../src/gui/networksettings.ui" line="269"/>
@@ -1488,56 +1504,56 @@ Pozycje, dla których usuwanie jest dozwolone zostaną usunięte, jeżeli uprawn
<translation>Limit automatyczniy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nazwa hosta serwera proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nazwa użytkownika serwera proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Hasło użytkownika serwera proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
- <translation type="unfinished"/>
+ <translation>Aby ustawiać limit pasma wymagana jest biblioteka Qt &gt;= 5.4</translation>
</message>
</context>
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation type="unfinished"/>
+ <translation>Utworzono o %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>Za kilka sekund nastąpi zamknięcie...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1628,7 +1644,7 @@ o dodatkowe uprawnienia podczas procesu aktualizacji.</translation>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="142"/>
<source>Sync the folder &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Synchronizuj folder &apos;%1&apos;</translation>
</message>
<message>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="147"/>
@@ -1672,10 +1688,10 @@ o dodatkowe uprawnienia podczas procesu aktualizacji.</translation>
<message>
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.ui" line="69"/>
<source>Configure client-side TLS certificate</source>
- <translation type="unfinished"/>
+ <translation>Konfiguruj certyfikat TLS po stronie klienta</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nie można połączyć się z bezpiecznym adresem serwera &lt;em&gt;%1&lt;/em&gt;. Co chcesz zrobić ?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1699,17 @@ o dodatkowe uprawnienia podczas procesu aktualizacji.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
- <translation type="unfinished"/>
+ <translation>&amp;E-mail</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Podłącz do %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Wprowadź poświadczenia użytkownika</translation>
</message>
@@ -1731,139 +1747,139 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Udane połączenie z %1: %2 wersja %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Nie udało się połączyć do %1 w %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Upłynął czas podczas próby połączenia do %1 na %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Próba połączenia z %1 w %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Dostęp zabroniony przez serwer. Aby sprawdzić, czy masz odpowiednie uprawnienia, kliknij &lt;a href=&quot;%1&quot;&gt;tutaj&lt;/a&gt;, aby połączyć się z usługą poprzez przeglądarkę.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokalny folder synchronizacji %1 już istnieje. Ustawiam go do synchronizacji.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
- <translation type="unfinished"/>
+ <translation>Tworzenie lokalnego folderu synchronizacji %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>Błąd.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Nie udało się utworzyć lokalnego folderu %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Nie określono folderu zdalnego!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Błąd: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>tworzę folder na ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Zdalny folder %1 został utworzony pomyślnie.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Zdalny folder %1 już istnieje. Podłączam go do synchronizowania.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Tworzenie folderu spowodowało kod błędu HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Nie udało się utworzyć zdalnego folderu ponieważ podane dane dostępowe są nieprawidłowe!&lt;br/&gt;Wróć i sprawdź podane dane dostępowe.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Tworzenie folderu zdalnego nie powiodło się. Prawdopodobnie dostarczone poświadczenia są błędne.&lt;/font&gt;&lt;br/&gt;Wróć i sprawdź poświadczenia.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Tworzenie folderu zdalnego %1 nie powiodło się z powodu błędu &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Połączenie synchronizacji z %1 do katalogu zdalnego %2 zostało utworzone.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Udane połączenie z %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Połączenie z %1 nie może być nawiązane. Sprawdź ponownie.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Zmiana nazwy folderu nie powiodła się</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Nie można usunąć i zarchiwizować folderu ponieważ znajdujący się w nim plik lub folder jest otwarty przez inny program. Proszę zamknąć folder lub plik albo kliknąć ponów lub anuluj setup.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Utworzenie lokalnego folderu synchronizowanego %1 zakończone pomyślnie!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1887,12 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Kreator połączeń</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Pomiń konfigurację folderów</translation>
</message>
@@ -1902,7 +1918,7 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Limit czasu połączenia</translation>
</message>
@@ -1910,7 +1926,7 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation type="unfinished"/>
</message>
@@ -1918,55 +1934,55 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<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/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
- <translation type="unfinished"/>
+ <translation>Pobranie zmniejszy ilość wolnego miejsca poniżej %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Wolne miejsce na dysku jest mniejsze niż %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Plik został usunięty z serwera</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Ten plik nie mógł być całkowicie pobrany.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
@@ -2004,7 +2020,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="169"/>
<source>could not create folder %1</source>
- <translation type="unfinished"/>
+ <translation>nie można utworzyć folderu %1</translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
@@ -2017,7 +2033,7 @@ Niezalecane jest jego użycie.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="72"/>
<source>Error removing &apos;%1&apos;: %2;</source>
- <translation type="unfinished"/>
+ <translation>Błąd usuwania &apos;%1&apos;: %2; </translation>
</message>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="98"/>
@@ -2038,7 +2054,8 @@ Niezalecane jest jego użycie.</translation>
<translation>Plik %1 nie może być nazwany %2 z powodu kolizji z lokalną nazwą pliku</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
@@ -2046,12 +2063,12 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Plik został usunięty z zasobu z prawem tylko do odczytu. Został przywrócony.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
@@ -2072,78 +2089,119 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Folder ten nie może być zmieniony. Został zmieniony z powrotem do pierwotnej nazwy.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Nie wolno zmieniać nazwy tego folderu. Proszę zmień nazwę z powrotem na Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Plik był edytowany lokalnie ale jest częścią udziału z prawem tylko do odczytu. Przywrócono oryginalny plik</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Błąd podczas zapisu metadanych do bazy</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Usunięto plik</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokalny plik zmienił się podczas synchronizacji.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Błąd podczas zapisu metadanych do bazy</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Pliki lokalny został usunięty podczas synchronizacji.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Lokalny plik zmienił się podczas synchronizacji.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Pliki lokalny został usunięty podczas synchronizacji.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokalny plik zmienił się podczas synchronizacji.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Błąd podczas zapisu metadanych do bazy</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -2159,42 +2217,42 @@ Niezalecane jest jego użycie.</translation>
<translation>Etykieta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Czas</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Plik</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Folder</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Akcja</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Rozmiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Lokalny protokół synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiuj listę aktywności do schowka.</translation>
</message>
@@ -2292,22 +2350,22 @@ Niezalecane jest jego użycie.</translation>
<translation>Ustawienia</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktywność</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Ogólne</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Sieć</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2315,27 +2373,27 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktywność</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Ogólne</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Sieć</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2363,32 +2421,32 @@ Niezalecane jest jego użycie.</translation>
<translation>Ścieżka ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 udostępnione</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Folder: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Serwer nie zezwala na współdzielenie</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
@@ -2427,43 +2485,58 @@ Niezalecane jest jego użycie.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopiuj &amp;link</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Pozwól na edycję</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Zabezpieczone hasłem</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Proszę podać hasło</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation type="unfinished"/>
</message>
@@ -2481,9 +2554,9 @@ Niezalecane jest jego użycie.</translation>
<translation>Współdziel z użytkownikami lub grupami</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Brak wyników dla &apos;%1&apos;</translation>
</message>
</context>
<context>
@@ -2514,17 +2587,17 @@ Niezalecane jest jego użycie.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>utwórz</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>zmiany</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>skasuj</translation>
</message>
@@ -2532,12 +2605,12 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Błąd logowania</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Musisz zalogować się jako użytkownik %1</translation>
</message>
@@ -2545,17 +2618,22 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Uwierzytelnienia</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Wymagana powtórna autoryzacja</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Twoja sesja wygasła. Musisz ponownie się zalogować, aby nadal używać klienta</translation>
</message>
@@ -2563,7 +2641,7 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Współdzielone z %1</translation>
@@ -2572,119 +2650,119 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Szczegóły certyfikatu&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nazwa (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Alternatywna nazwa tematu:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organizacja (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Jednostka organizacyjna (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Województwo </translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Kraj:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Numer seryjny:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Wystawca&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emitent:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Data wydania:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Wygasa:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Odciski palców&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Uwaga:&lt;/b&gt; Ten certyfikat został ręcznie zaakceptowany&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (własnoręcznie podpisany)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>o połączenie jest szyfrowane przy użyciu %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informacje Certyfikatu:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>To połączenie NIE jest bezpieczne, ponieważ jest nieszyfrowane.
@@ -2772,270 +2850,275 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Sukces.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
- <translation type="unfinished"/>
+ <translation>CSync nie udało się wczytać pliku dziennika. Plik dziennika jest uszkodzony.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Wtyczka %1 do csync nie może być załadowana.&lt;br/&gt;Sprawdź poprawność instalacji!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync napotkał błąd podczas przetwarzania wewnętrznych drzew.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync nie mógł zarezerwować pamięci.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Krytyczny błąd parametru CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Aktualizacja procesu przetwarzania CSync nie powiodła się.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Scalenie w procesie przetwarzania CSync nie powiodło się.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync nie mógł się uwierzytelnić przez proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync nie mógł odnaleźć serwera proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync nie mógł uwierzytelnić się na serwerze %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync nie mógł połączyć się z siecią.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Upłynął limit czasu połączenia.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Wystąpił błąd transmisji HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
- <translation type="unfinished"/>
+ <translation>Chwilowy brak dostępu do serwera, z którego montowany jest folder.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Wystąpił błąd podczas otwierania katalogu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Błąd podczas odczytu katalogu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Plik / katalog zostanie zignorowany, ponieważ jest ukryty.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Niedozwolone, ponieważ nie masz uprawnień do dodawania katalogu nadrzędnego</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Niedozwolone, ponieważ nie masz uprawnień do dodawania plików w tym katalogu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Brak dostępnego miejsca na serwerze %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Nieokreślony błąd CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Anulowane przez użytkownika</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Nazwa pliku zawiera niedozwolone znaki, przez co może nie być synchronizowany.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Usługa jest czasowo niedostępna</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Dostęp zabroniony</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Ten element nie jest zsynchronizowane z powodu poprzednich błędów: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Linki symboliczne nie są wspierane przy synchronizacji. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Plik jest na liście plików ignorowanych.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Nazwa pliku zbyt długa</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Błąd statystyk.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Nie można zainicjować synchronizacji dziennika.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
- <translation type="unfinished"/>
+ <translation>Nie można czytać z dziennika synchronizacji.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Nie można otworzyć dziennika synchronizacji</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Niedozwolone, ponieważ nie masz uprawnień do dodawania podkatalogów w tym katalogu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<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/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Brak uprawnień by usunąć, przywracanie</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
- <translation type="unfinished"/>
+ <translation>Lokalne pliki i udostępniane foldery zostały usunięte.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Przenoszenie niedozwolone, obiekt przywrócony</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<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/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>docelowy</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>źródło</translation>
</message>
@@ -3059,17 +3142,17 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Wersja %1. Aby uzyskać więcej informacji prosimy odwiedzić &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3095,202 +3178,217 @@ Niezalecane jest jego użycie.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Proszę się zalogować</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Folder %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nie skonfigurowano synchronizowanych folderów.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Nie skonfigurowano żadnych folderów synchronizacji.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Otwórz w przeglądarce</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Wyloguj</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Ostatnie zmiany</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Sprawdzanie zmian na &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Zarządzane foldery:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Otwórz katalog &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Otwórz %1 w przeglądarce</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Nieznany status</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Ustawienia...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Szczegóły...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Wyjdź %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Rozłączony z %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
- <translation type="unfinished"/>
+ <translation>Nie wspierana wersja serwera</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
- <translation type="unfinished"/>
+ <translation>Rozłączony z kontami:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Dostęp %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Konto synchronizacji jest wyłączone</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Wznów wszystkie katalogi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Wstrzymaj wszystkie katalogi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Wznów wszystkie synchronizacje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Wznów synchronizację</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Wstrzymaj wszystkie synchronizacje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Wstrzymaj synchronizację</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Wyloguj się się ze wszystkich kont</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Zaloguj się do wszystkich kont</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Brak ostatnich synchronizacji</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synchronizacja %1 z %2 (%3 pozostało)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synchronizuję %1 (%2 pozostało)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchronizowanie %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Aktualne</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Wersja%2. Aby uzyskać więcej informacji prosimy odwiedzić &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;/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;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3305,9 +3403,9 @@ Niezalecane jest jego użycie.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Etykieta</translation>
</message>
@@ -3327,7 +3425,7 @@ Niezalecane jest jego użycie.</translation>
<translation>Zacznij od &amp;czystej synchronizacji (usuwa lokalny katalog !)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Wybierz co synchronizować</translation>
</message>
@@ -3352,7 +3450,7 @@ Niezalecane jest jego użycie.</translation>
<translation>S&amp;ynchronizuj wszystko z serwera</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Status wiadomości</translation>
</message>
@@ -3365,26 +3463,15 @@ Niezalecane jest jego użycie.</translation>
<translation>Formularz</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Nazwa użytkownika</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Hasło</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Etykieta błędu</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Etykieta</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3502,7 +3589,7 @@ Kliknij</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3510,37 +3597,37 @@ Kliknij</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>w przyszłości</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n dzień temu</numerusform><numerusform>%n dni temu</numerusform><numerusform>%n dni temu</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n godzinę temu</numerusform><numerusform>%n godziny temu</numerusform><numerusform>%n godzin temu</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>teraz</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Mniej niż minutę temu</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n minutę temu</numerusform><numerusform>%n minuty temu</numerusform><numerusform>%n minut temu</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Jakiś czas temu</translation>
</message>
@@ -3548,57 +3635,57 @@ Kliknij</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n rok</numerusform><numerusform>%n lata</numerusform><numerusform>%n lat</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n miesiąc</numerusform><numerusform>%n miesiące</numerusform><numerusform>%n miesięcy</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n dzień</numerusform><numerusform>%n dni</numerusform><numerusform>%n dni</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n godzina</numerusform><numerusform>%n godziny</numerusform><numerusform>%n godzin</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n minuta</numerusform><numerusform>%n minuty</numerusform><numerusform>%n minut</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3619,7 +3706,7 @@ Kliknij</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3627,82 +3714,92 @@ Kliknij</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Pobrane</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Wysłane</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Usunięte</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Przeniesione do %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorowany</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Błąd dostępu do systemu plików</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Nieznany</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>pobieram</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>przesyłanie</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>usuwam</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>przenoszę</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorowane</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>błąd</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_pt.ts b/translations/client_pt.ts
index 3cc852a26..c10377642 100644
--- a/translations/client_pt.ts
+++ b/translations/client_pt.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_PT" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_PT" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>O ficheiro de destino tem um tamanho inesperado ou a hora foi modificada</translation>
</message>
@@ -104,14 +104,29 @@
<translation>As pastas não selecionadas serão &lt;b&gt;removidas&lt;/b&gt; do seu sistema de ficheiros local e já não serão sincronizadas para este computador</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplicar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Ligado ao &lt;server&gt; como &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Nenhuma conta configurada.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Adicionar nova</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Remover</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Conta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Escolher o que sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Remover ligação de sincronização de pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Não foi possível criar a pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Não foi possível criar a pasta local&lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Confirmar Remoção da Ligação de Sincronização de Pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Remover Ligação da Sincronização de Pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sincronização em Execução</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>A operação de sincronização está em execução.&lt;br/&gt;Deseja terminá-la?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 em utilização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 como &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>A versão %1 do servidor é antiga e não é suportada! Prossiga por sua conta e risco.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Ligado a %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>O servidor %1 está temporariamente indisponível.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Terminou a sessão de %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Sem ligação para %1 em %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Iniciar Sessão</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Existem novas pastas que não foram sincronizadas porque são demasiado grandes:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmar Remoção da Conta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Deseja mesmo remover a ligação da conta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; isto &lt;b&gt;não&lt;/b&gt; irá eliminar quaisquer ficheiros.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Remover ligação</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Abrir pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Terminar sessão</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Retomar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Deseja mesmo parar a sincronização da pasta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; isto &lt;b&gt;não&lt;/b&gt; irá eliminar quaisquer ficheiros.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Deseja mesmo parar a sincronização da pasta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; isto &lt;b&gt;não&lt;/b&gt; irá eliminar qualquer ficheiro.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) de %2 em utilização. Algumas pastas, incluindo a rede montada ou as pastas partilhadas, podem ter limites diferentes.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 em utilização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Atualmente não está disponível nenhuma informação da utilização do armazenamento.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>%1 sem ligação configurada.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Sessão terminada</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desligado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Ligado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Serviço indisponível</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Erro de rede</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Erro de configuração</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estado de conta desconhecido</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Atividade do Servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocolo de Sincronização</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lista de ficheiros ignorados ou com erros</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista de atividades para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Não Sincronizado</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Não Sincronizado (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>A lista de atividades do servidor foi copiada para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>A lista de atividades de sincronização foi copiada para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>A lista de itens não sincronizados foi copiada para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiado para a área de transferência</translation>
</message>
@@ -413,47 +428,47 @@
<translation>EtiquetaTexto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Atividades do Servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista de actividades para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Ação necessária: Notificações</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;A conta %1 não tem atividades ativadas.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Recebeu %n nova notificação de %2.</numerusform><numerusform>Recebeu %n novas notificações de %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Recebeu %n nova notificação de %1 e %2.</numerusform><numerusform>Recebeu %n novas notificações de %1 e %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Recebeu novas notificações de %1, %2 e outras contas.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Notificações - Ação Necessária</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Palavra-passe do certificado:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Selecionar um certificado</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Ficheiros de certificado (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autenticação Requerida</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Insira o nome de utilizador e a palavra-passe para &apos;%1&apos; em %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Utilizador:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Palavra-passe:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Erro ao gravar os metadados para a base de dados</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Não foi configurada nenhuma conta ownCloud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>O servidor configurado para este cliente é muito antigo</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Por favor, atualize para a ultima versão do servidor e reinicie o cliente.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Erro de autenticação: o nome de utilizador ou a palavra-passe estão errados.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>tempo expirado</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>As credenciais fornecidas não estão corretas</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>A ligação expirou</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Abortado pelo utilizador</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>A pasta local %1 não existe.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 deveria ser uma pasta, mas não é.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 não é legível.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi removido.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi transferido.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi atualizado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 foi renomeado para %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 foi movido para %2</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
- <translation><numerusform>&apos;%1&apos; e %n outro(s) ficheiro(s) foram removidos</numerusform><numerusform>&apos;%1&apos; e %n outros ficheiros foram removidos</numerusform></translation>
+ <translation><numerusform>&apos;%1&apos; e %n outro(s) ficheiro(s) foram removidos</numerusform><numerusform>&apos;%1&apos; e %n outros ficheiros foram removidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 e %n outro ficheiro foram transferidos.</numerusform><numerusform>%1 e %n outros ficheiros foram transferidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 e %n outro ficheiro foram actualizados.</numerusform><numerusform>%1 e %n outros ficheiros foram actualizados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 foi renomeado para %2 e %n outro ficheiro foi renomeado.</numerusform><numerusform>%1 foi renomeado para %2 e %n outros ficheiros foram renomeados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 foi movido para %2 e %n outro ficheiro foi movido.</numerusform><numerusform>%1 foi movido para %2 e %n outros ficheiros foram movidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 tem e %n outro ficheiro têm problemas de sincronização.</numerusform><numerusform>%1 tem e %n outros ficheiros têm problemas de sincronização.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 tem um problema de sincronização. Por favor, verifique o ficheiro com conflito!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 e %n outro ficheiro não podem ser sincronizados devido a erros. Consulte o registo de eventos para mais detalhes.</numerusform><numerusform>%1 e %n outros ficheiros não podem ser sincronizados devido a erros. Consulte o registo de eventos para mais detalhes.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>Não foi possível sincronizar %1 devido a um erro. Consulte o registo para detalhes.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Atividade de Sincronização</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Não foi possível ler o ficheiro excluir do sistema</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Foi adicionada uma nova pasta maior do que %1 MB: %2.
Por favor, vá às configurações para a selecionar, se a desejar transferir.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Isto poderá acontecer porque a pasta foi reconfigurada silenciosamente, ou todo
Tem a certeza que deseja realizar esta operação?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Remover todos os ficheiros?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Remover todos os ficheiros</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Manter ficheiros</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Esta sincronização iria repor os ficheiros para um momento anterior na pasta de sincronização &apos;%1&apos;.
-Isto pode ser porque um backup foi restaurado no servidor.
-Continuando a sincronização fará com que todos os seus ficheiros sejam substituídos por um ficheiro mais velho num estado anterior. Deseja manter os seus ficheiros locais mais recentes como ficheiros de conflito?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Detetada cópia de segurança</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Sincronização Normal</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Manter Ficheiros Locais como Conflito</translation>
</message>
@@ -742,112 +755,112 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Não foi possível reiniciar o estado da pasta</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Foi encontrado um &apos;journal&apos; de sincronização, mas não foi possível removê-lo. Por favor, certifique-se que nenhuma aplicação o está a utilizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(cópia de segurança)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(cópia de segurança %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estado indefinido.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>A aguardar para iniciar a sincronização.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>A preparar para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>A sincronização está em execução.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>A última sincronização foi bem sucedida.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>A última sincronização foi bem sucedida, mas com avisos nos ficheiros individuais.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Erro de instalação.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Abortado pelo utilizador.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>A sincronização está pausada.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (A sincronização está pausada)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Não foi selecionada nenhuma pasta válida!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>O caminho selecionado não é uma pasta!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Não tem permissão para gravar para a pasta selecionada!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já foi utilizada numa ligação de sincronização da pasta. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já contém uma pasta utilizada numa ligação de sincronização de pasta. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 é uma hiperligação simbólica. A hiperligação de destino já contém uma pasta usada numa ligação de sincronização de pasta. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já contém uma pasta usada numa ligação de sincronização de pasta. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 é uma hiperligação simbólica. A hiperligação de destino já contém uma pasta usada numa ligação de sincronização de pasta. Por favor, escolha outra!</translation>
</message>
@@ -873,127 +886,133 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Precisa de estar ligado para adicionar uma pasta</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Clique neste botão para adicionar uma pasta para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Erro durante o carregamento da lista de pastas a partir do servidor.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Sessão terminada</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Adicionar pasta está desativada porque já está a sincronizar todos os seus ficheiros. Se deseja sincronizar múltiplas pastas, por favor, remova a pasta raiz atualmente configurada.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>A obter a lista de pastas do servidor...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>A procurar por alterações em &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>A sincronizar %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>transferir %s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>enviar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 restante, %1 de %2, ficheiro %3 de %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de %2, ficheiro %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>ficheiro %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>A aguardar...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>A aguardar por %n outra pasta...</numerusform><numerusform>A aguardar por %n outra(s) pasta(s)...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>A preparar para sincronizar...</translation>
</message>
@@ -1106,22 +1125,22 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nenhum E-Tag recebida do servidor, verifique Proxy / Acesso</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Nós recebemos uma E-Tag diferente para retomar. Tentar da próxima vez.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>O servidor devolveu o alcance-conteúdo errado</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>O tempo de ligação expirou</translation>
</message>
@@ -1203,28 +1222,25 @@ Continuando a sincronização fará com que todos os seus ficheiros sejam substi
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Por favor, insira a palavra-passe %1:
-
-Utilizador: %2
-Conta: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>A leitura da cadeia de dados falhou com um erro: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Insira a Palavra-passe</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1285,7 @@ Conta: %3
<translation>Remover</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Os itens onde é permitido a eliminação serão eliminados se estes impedirem a remoção de uma diretoria. Isto é útil para os metadados.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Não foi possível abrir o ficheiro</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Não foi possível gravar as alterações para &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Adicione Padrão de ignorar</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Adicione um novo padrão de ignorar:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Esta entrada é fornecida pelo sistema em &apos;%1&apos; e não pode ser modificada nesta visualização.</translation>
</message>
@@ -1372,7 +1388,7 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>A ligação expirou</translation>
</message>
@@ -1488,32 +1504,32 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a
<translation>Limitar automaticamente</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Nome de anfitrião do servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nome de utilizador para o servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Palavra-passe para o servidor proxy.</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Proxy de HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Proxy de SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 é necessário para poder utilizar o limite da largura de banda</translation>
</message>
@@ -1521,23 +1537,23 @@ Os itens onde é permitido a eliminação serão eliminados se estes impedirem a
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Criado às %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>A fechar dentro de alguns segundos...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 pedido falhou a %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; selecionado a %2</translation>
@@ -1675,7 +1691,7 @@ poderá pedir por privilégios adicionais durante o processo.</translation>
<translation>Configurar certificado TLS do lado do cliente</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Não foi possível ligar ao endereço do servidor seguro &lt;em&gt;%1&lt;/em&gt;. Como deseja proceder?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1699,17 @@ poderá pedir por privilégios adicionais durante o processo.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Correio Eletrónico</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Ligar a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Insira as credenciais do utilizador</translation>
</message>
@@ -1731,139 +1747,139 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Ligado com sucesso a %1: %2 - versão: %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Não foi possível ligar a %1 em %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Tempo expirou enquanto tentava ligar a %1 em %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>A tentar ligar a %1 em %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>O pedido de autenticação para o servidor foi redirecionado para &apos;%1&apos;. O URL é mau, o servidor está mal configurado. </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Houve uma resposta inválida para o pedido de autenticação webdav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Acesso proibido pelo servidor. Para verificar que tem o acesso adequado, &lt;a href=&quot;%1&quot;&gt;clique aqui&lt;/a&gt; para aceder ao serviço com o seu navegador.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>A pasta de sincronização local %1 já existe, a configurar para sincronizar.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>A criar a pasta de sincronização local %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>Falhou.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Não foi possível criar a pasta local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Não foi indicada a pasta remota!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Erro: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>a criar a pasta na ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Criação da pasta remota %1 com sucesso!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>A pasta remota %1 já existe. Ligue-a para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>A criação da pasta resultou num erro HTTP com o código %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.&lt;br/&gt;Por favor, verifique as suas credenciais.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;A criação da pasta remota falhou, provavelmente por ter introduzido as credenciais erradas.&lt;/font&gt;&lt;br/&gt;Por favor, verifique as suas credenciais.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>A criação da pasta remota %1 falhou com o erro &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>A sincronização de %1 com a pasta remota %2 foi criada com sucesso.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Conectado com sucesso a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Não foi possível ligar a %1 . Por Favor verifique novamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Erro ao renomear a pasta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Não é possível remover e fazer backup à pasta porque a pasta ou um ficheiro nesta está aberto em outro programa. Por favor, feche a pasta ou o ficheiro e clique novamente ou cancele a configuração.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Pasta de sincronização local %1 criada com sucesso!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1887,12 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Assistente de ligação %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Saltar a configuração das pastas</translation>
</message>
@@ -1902,7 +1918,7 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>O tempo de ligação expirou</translation>
</message>
@@ -1910,7 +1926,7 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Resposta JSON inválida do URL poll</translation>
</message>
@@ -1918,57 +1934,57 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Erro ao escrever a meta-informação par a base de dados</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Não foi possível transferir o ficheiro %1 devido a um conflito com o nome de ficheiro local!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>A transferência poderá reduzir o espaço livre em disco para abaixo de %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>O Espaço livre no disco é inferior a %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>O ficheiro foi eliminado do servidor</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Não foi possível transferir o ficheiro na totalidade.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>O ficheiro transferido está vazio, apesar do servidor indicar que este deveria ter %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Ficheiro %1 não pode ser guardado devido à existência de um ficheiro local com o mesmo nome.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>O ficheiro alterou-se desde a sua descoberta</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
- <translation>Erro ao escrever a meta-informação par a base de dados</translation>
+ <translation>Erro ao gravar os metadados para a base de dados</translation>
</message>
</context>
<context>
@@ -2038,7 +2054,8 @@ Não é aconselhada a sua utilização.</translation>
<translation>O ficheiro %1 nao pode ser renomeado para %2 devido a conflito com nome de ficheiro local</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Erro ao escrever a meta-informação par a base de dados</translation>
</message>
@@ -2046,12 +2063,12 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>O ficheiro havia sido removido de uma partilha apenas de leitura. Ficheiro restaurado. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Código HTTP errado devolvido pelo servidor. Esperado 204, mas foi recebido &quot;%1 %2&quot;.</translation>
</message>
@@ -2072,78 +2089,119 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Esta pasta não pode ser renomeada. A alterar para nome original.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Esta pasta não pode ser renomeada. Por favor renomeie para o seu nome original: Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>O ficheiro foi renomeado mas faz parte de uma partilha só de leitura. O ficheiro original foi restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Código HTTP errado devolvido pelo servidor. Esperado 201, mas foi recebido &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Erro ao escrever a meta-informação par a base de dados</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Ficheiro Eliminado</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>O ficheiro local foi alterado durante a sincronização. Vai ser finalizado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Ficheiro local alterado durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Erro ao gravar os metadados para a base de dados</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>A forçar aborto no trabalho de redefinição de conexão HTTP com Qt &lt; 5.4.3</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>O arquivo local foi removido durante a sincronização.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Ficheiro local alterado durante a sincronização.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>A forçar aborto no trabalho de redefinição de conexão HTTP com Qt &lt; 5.4.3</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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 mas faz parte de uma prtilha só de leitura. Foi restaurado mas a edição está no ficheiro de conflito.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>URL poll em falta</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>O arquivo local foi removido durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>O servidor não reconheceu a última parte. (Nenhuma e-tag estava presente)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Ficheiro local alterado durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Erro ao escrever a meta-informação par a base de dados</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>O servidor não reconheceu a última parte. (Nenhuma e-tag estava presente)</translation>
</message>
</context>
<context>
@@ -2159,42 +2217,42 @@ Não é aconselhada a sua utilização.</translation>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Tempo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Ficheiro</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Pasta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Ação</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamanho</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocolo de sincronização local</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar lista de actividades para a área de transferência.</translation>
</message>
@@ -2292,22 +2350,22 @@ Não é aconselhada a sua utilização.</translation>
<translation>Definições</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2315,27 +2373,27 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2363,32 +2421,32 @@ Não é aconselhada a sua utilização.</translation>
<translation>Caminho OwnCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Partilhando</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Pasta: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>O servidor não permite partilhas</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>A obter do servidor as permissões máximas de partilha...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O ficheiro não pode ser partilhado porque foi partilhado sem permissão de partilha.</translation>
</message>
@@ -2427,43 +2485,58 @@ Não é aconselhada a sua utilização.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copie a &amp;hiperligação</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permitir edição</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Protegida por senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protegido com Senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O ficheiro não pode ser partilhado porque foi partilhado sem permissão de partilha.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>A pa&amp;rtilha pública requer uma palavra-passe:</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Por favor, Definir Senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Compartilhe a hiperligação </translation>
</message>
@@ -2481,7 +2554,7 @@ Não é aconselhada a sua utilização.</translation>
<translation>Partilhar com utilizadores ou grupos...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Sem resultados para &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2587,17 @@ Não é aconselhada a sua utilização.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>criar</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>alterar</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>eliminar</translation>
</message>
@@ -2532,12 +2605,12 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Erro de login</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Deve fazer o login como utilizador %1.</translation>
</message>
@@ -2545,17 +2618,22 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticação</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Requerido reautenticação</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>A sessão expirou. Precisa reiniciar a sessão para poder continuar usando o cliente.</translation>
</message>
@@ -2563,7 +2641,7 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Partilhar com %1</translation>
@@ -2572,119 +2650,119 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Detalhes do Certificado&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nome Comum (NC):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Nomes alternativos</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organização (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unidade Organizacional (UO):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estado/Distrito:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>País:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serial:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emissor&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emissor:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Emitido em:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Expira em:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Impressões digitais&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Este certificado foi aprovado manualmente&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (auto-assinado)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Esta ligação é encriptada a %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Nenhum suporte para tickets/identificadores de sessão SSL</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informação do certificado:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Esta ligação NÃO é segura uma vez que não está encriptada.
@@ -2772,270 +2850,275 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Sucesso</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync falhou a carregar o ficheiro do jornal. O ficheiro do jornal está corrupto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;O plugin %1 para o CSync não foi carregado.&lt;br/&gt;Por favor verifique a instalação!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Csync obteve um erro enquanto processava as árvores internas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>O CSync falhou a reservar memória</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Parametro errado, CSync falhou</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>O passo de processamento do CSyn falhou</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync: Processo de reconciliação falhou.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync: não foi possível autenticar no servidor proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync: não conseguiu contactar o proxy ou o servidor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync: Erro a autenticar no servidor %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync: Erro na conecção à rede</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Houve um erro de timeout de rede.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Ocorreu um erro de transmissão HTTP</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>O pasta montada está temporariamente indisponível no servidor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Ocorreu um erro ao abrir uma pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Erro ao ler o ficheiro.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>O ficheiro/pasta foi ignorado porque está oculto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Apenas %1 estão disponíveis, é preciso um mínimo de %2 para começar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Não permitido, porque não tem permissão para adicionar a pasta fonte</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Não permitido, porque não tem permissão para adicionar os ficheiros nessa pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Não ha espaço disponível no servidor %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync: erro não especificado</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Cancelado pelo utilizador</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>O nome do ficheiro contém carateres inválidos que não podem ser sincronizados através das plataformas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync falhou o acesso</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync falhou no carregamento ou criação do ficheiro jornal. Certifique-se de que tem permissões de gravação e leitura na pasta de sincronização local.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync falhou devido a permissão não tratada negada.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>O CSync tentou criar uma pasta que já existe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>O serviço está temporariamente indisponível</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>O acesso é proibido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Ocorreu o erro interno número %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>O item não está sincronizado devido a erros anteriores: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Hiperligações simbólicas não são suportadas em sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>O ficheiro está na lista de ficheiros a ignorar.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>O nome do ficheiro é muito grande</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Estado falhou.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Codificação de nome de ficheiro não é válida</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Carateres inválidos, por favor, renomeie &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossível inicializar sincronização &apos;journal&apos;.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Não foi possível ler a lista negra a partir da base de dados local</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Não foi possível ler a partir do jornal de sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Impossível abrir o jornal de sincronismo</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>O nome de ficheiro contém pelo menos um caráter inválido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorado devido à blacklist de escolha para sincronização</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Não permitido, porque não tem permissão para adicionar as subpastas nessa pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Não é permitido enviar este ficheiro porque este é só de leitura no servidor, a restaurar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Não autorizado para remoção, restaurando</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Ficheiros locais e pasta partilhada removidos.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Mover não foi permitido, item restaurado</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Mover não foi autorizado porque %1 é só de leitura</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>o destino</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>a origem</translation>
</message>
@@ -3059,17 +3142,17 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versão %1. Para mais informações visite &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporado&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuído por %1 e licenciado sob a GNU General Public License (GPL) Versão 2.0.&lt;br/&gt;%2 e o logótipo %2 são marcas registadas da %1 nos Estados Unidos, outros países, ou ambos &lt;/p&gt;</translation>
</message>
@@ -3095,202 +3178,217 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Por favor inicie a sessão</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Pasta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nenhuma pasta de sincronização configurada.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Não há pastas de sincronização configurado.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Abrir no navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Iniciar sessão...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Terminar sessão</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Alterações recentes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Procurando por alterações em &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Pastas Geridas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Abrir pasta &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Abrir %1 no navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Estado desconhecido</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Configurações...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalhes...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Sair do %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Desconetado de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Versão de servidor não suportada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>O servidor na conta %1 está a correr uma versão %2 antiga e não suportada. O uso deste cliente com versões de servidor não suportadas não está testado e é potencialmente perigos. Prossiga por sua conta e risco.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Desconetado das contas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Conta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>A sincronização de contas está desactivada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Continuar todas as pastas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pausar todas as pastas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Continuar toda a sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Continuar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pausar toda a sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pausar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Sair de todas as contas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Entrar em todas as contas...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Crash agora</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Sem itens sincronizados recentemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronizar %1 de %2 (%3 faltando)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>A sincronizar %1 (%2 em falta)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>A sincronizar %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Atualizado</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versão %2. Para mais informação 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;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licenciado sob a GNU General Public License (GPL) Versão 2.0&lt;br/&gt;ownCloud e o logótipo ownCloud são marcas registadas de ownCloud, Inc. nos Estados Unidos da América, outros países, ou ambos.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3305,9 +3403,9 @@ Não é aconselhada a sua utilização.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3327,7 +3425,7 @@ Não é aconselhada a sua utilização.</translation>
<translation>&amp;Iniciar uma nova sincronização (Apaga a pasta local)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Escolher o que sincronizar</translation>
</message>
@@ -3352,7 +3450,7 @@ Não é aconselhada a sua utilização.</translation>
<translation>Sincronizar tudo do servidor</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Mensagem de estado</translation>
</message>
@@ -3365,26 +3463,15 @@ Não é aconselhada a sua utilização.</translation>
<translation>Formulário</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>Nome de &amp;utilizador</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Senha</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Error Label</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3588,7 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3509,37 +3596,37 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>no futuro</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n dia atrás</numerusform><numerusform>%n dias atrás</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n hora atrás</numerusform><numerusform>%n horas atrás</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>agora</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Menos de um minuto atrás</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minuto atrás</numerusform><numerusform>%n minutos atrás</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Algum tempo atrás</translation>
</message>
@@ -3547,57 +3634,57 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n ano</numerusform><numerusform>%n ano(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n mês</numerusform><numerusform>%n meses</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n dia</numerusform><numerusform>%n dias</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n hora</numerusform><numerusform>%n horas</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuto</numerusform><numerusform>%n minutos</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n segundo</numerusform><numerusform>%n segundos</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3705,7 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Construído a partir da revisão Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; em %3, %4 usando Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3626,82 +3713,92 @@ Não é aconselhada a sua utilização.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Transferido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Enviado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>A versão do servidor transferida, o ficheiro local alterado foi copiado para o ficheiro de conflito</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Apagado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Movido para %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorado.</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Erro ao acesso do sistema de ficheiros</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Desconhecido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>A transferir</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>A enviar</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>a apagar</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>a mover</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>erro</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_pt_BR.ts b/translations/client_pt_BR.ts
index 24fe575f0..4ad96c310 100644
--- a/translations/client_pt_BR.ts
+++ b/translations/client_pt_BR.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_BR" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="pt_BR" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>O arquivo de destino tem um tamanho ou tempo de modificação inesperado</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Pastas não marcadas serão &lt;b&gt;removidos&lt;/b&gt; de seu sistema de arquivos local e não serão mais sincronizadas com este computador</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Sincronizar tudo</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Não sincronizar</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Aplicar alterações manuais</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplicar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Conectado com &lt;server&gt; como &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Nenhuma conta configurada.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Adicionar nova</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Remover</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Conta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Escolha o que quer sincronizar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Remover a conexão de sincronização de pastas</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Falha na criação de pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Não foi possível criar pasta local &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Confirme a Remoção de Sincronização de Pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Remover a Conexão de Sincronização de pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Sincronização Acontecendo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>A operação de sincronização está acontecendo.&lt;br/&gt;Você deseja finaliza-la?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 em uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 como &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>A versão do servidor %1 é antiga e não suportada! Prossiga por conta própria.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Conectado a %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>O Servidor %1 está temporariamente indisponível.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Desconectado de %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Sem conexão para %1 em %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Entrar</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Há novas pastas que não foram sincronizadas, porque eles são muito grandes:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Confirmar a Remoção da Conta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Você realmente deseja remover a conexão desta conta&lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Isto &lt;b&gt;não&lt;/b&gt; irá deletar nenhum arquivo.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Remover conexão</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Abrir pasta</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Sair</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Resumir sincronização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Você realmente deseja para a sincronização desta pasta &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Isto &lt;b&gt;não&lt;/b&gt; vai deletar qualquer arquivo.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) de%2 em uso. Algumas pastas, incluindo montadas na rede ou pastas compartilhadas, podem ter limites diferenes.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 de %2 em uso</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Atualmente, não há informações de uso de armazenamento disponível.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Nenhuma %1 conexão configurada.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Conectado</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Serviço indisponível</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Erro de rede</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Erro de configuração</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Estado da conta desconhecido</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Atividade do Servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protocolo de Sincronização</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lista de arquivos ignorados ou errôneos</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista de atividades para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Não Sincronizado</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Não sincronizada (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>A lista de atividades do servidor tem sido copiados para o clipboard.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>A lista de atividades do servidor foi copiada para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>A lista de itens não sincronizados foi copiada para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Copiado para área de transferência</translation>
</message>
@@ -413,47 +428,47 @@
<translation>RótuloTexto</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Atividades do Servidor</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista de atividades para a área de transferência.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Ação Requerida: Notificações</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;A conta %1 não tem atividades ativadas.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Você recebeu %n nova notificação de %2.</numerusform><numerusform>Você recebeu %n notificações de %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Você recebeu %n nova notificação de %1 e %2.</numerusform><numerusform>Você recebeu %n novas notificações de %1 e %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Você recebeu novas notificações de %1, %2 e outras contas.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Notificações - Ação Requerida</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Senha do certificado:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Selecione um certificado</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Arquivos de certificado (* p12 * .pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autenticação é Requerida</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Entrar com o nome do usuário e senha para &apos;%1&apos; em %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Usuário:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Senha:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Nenhuma conta ownCloud configurada</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>O servidor configurado para este cliente é muito antigo</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Por favor, atualize para o último servidor e reinicie o cliente.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Erro de autenticação. Ou nome de usuário ou senha está errada.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>tempo limite</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>As credenciais fornecidas não estão corretas</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Conexão expirou</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Abortado pelo usuário</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>A pasta local %1 não existe.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 deve ser uma pasta, mas não é.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 não pode ser lido.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi removido.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi baixado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 foi atualizado.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 foi renomeado para %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 foi movido para %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 e %n outro arquivo foi removido.</numerusform><numerusform>%1 e %n outros arquivos foram removidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
- <translation><numerusform>%1 e %n outro arquivo foi baixado.</numerusform><numerusform>%1 e %n outros arquivos foram removidos.</numerusform></translation>
+ <translation><numerusform>%1 e %n outro(s) arquivo(s) foi(foram) baixados.</numerusform><numerusform>%1 e %n outro(s) arquivo(s) foi(foram) baixados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 e %n outro arquivo foi atualizado.</numerusform><numerusform>%1 e %n outros arquivos foram atualizados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 foi renomeado para %2 e %n outro arquivo foi renomeado.</numerusform><numerusform>%1 foi renomeado para %2 e %n outros arquivos foram renomeados.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 foi movido para %2 e %n outro arquivo foi movido.</numerusform><numerusform>%1 foi movido para %2 e %n outros arquivos foram movidos.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 tem e %n outro arquivo tem conflito na sincronização.</numerusform><numerusform>%1 tem e %n outros arquivos teem conflito na sincronização.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 tem um conflito na sincronização. Por favor verifique o arquivo de conflito!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 e %n outro arquivo não pode ser sincronizado devido a erros. Veja o log para detalhes.</numerusform><numerusform>%1 e %n outros arquivos não poderam ser sincronizados devido a erros. Veja o log para detalhes.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 não pode ser sincronizado devido a um erro. Veja o log para obter detalhes.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Atividade de Sincronização</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Não foi possível ler o sistema de arquivo de exclusão</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Uma nova pasta maior que %1 MB foi adicionada: %2.
Por favor, vá nas configurações para selecionar o que você deseja para fazer o download.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,41 @@ Isso pode ser porque a pasta foi reconfigurada em silêncio, ou porque todos os
Tem certeza de que deseja executar esta operação?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Deseja Remover Todos os Arquivos?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Remover todos os arquivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Manter arquivos</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Esta sincronização iria repor os arquivos para um instante anterior na pasta de sincronização &apos;%1&apos;.
+ <translation>Essa sincronização redefinira os arquivos para uma hora anterior na pasta de sincronização &apos;%1&apos;.
Isso pode ser porque um backup foi restaurado no servidor.
-Continuando a sincronização como normal fará com que todos os seus arquivos sejam substituídos por um arquivo mais velho em um estado anterior. Você deseja manter seus locais de arquivos mais recentes como arquivos de conflito?</translation>
+Continuar a sincronização como normal fará com que todos os seus arquivos sejam substituídos por um arquivo antigo em um estado anterior. Deseja manter seus arquivos mais recentes locais como arquivos de conflito?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup detectado</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Sincronização Normal</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Manter Arquivos Locais como Conflito</translation>
</message>
@@ -742,112 +757,112 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Não foi possível redefinir o estado da pasta</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Uma velha revista de sincronização &apos;%1&apos; foi encontrada, mas não pôde ser removida. Por favor, certifique-se de que nenhuma aplicação está a usá-la.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (backup)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (backup %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Estado indefinido.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>À espera do início da sincronização.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Preparando para sincronização.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>A sincronização está ocorrendo.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>A última sincronização foi feita com sucesso.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>A última sincronização foi executada com sucesso, mas com advertências em arquivos individuais.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Erro de Configuração.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Usuário Abortou.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Sincronização pausada.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Pausa na Sincronização) </translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nenhuma pasta válida selecionada!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>O caminho selecionado não é uma pasta!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Voce não tem permissão para escrita na pasta selecionada!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já está sendo utilizada em uma conexão de sincronização de pastas. Por favor, escolha uma outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já contém uma pasta utilizada numa ligação de sincronização de pasta. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 é um link simbólico. O destino do link já contém uma pasta usada em uma conexão de sincronização de pastas. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 já está contida em uma pasta usada em uma conexão de sincronização de pastas. Por favor, escolha outra!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>A pasta local %1 é um link simbólico. O destino do link já está contido em uma pasta usada em uma conexão de sincronização de pastas. Por favor, escolha outra!</translation>
</message>
@@ -873,127 +888,133 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Você precisa estar conectado para adicionar uma pasta</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Clique nesse botão para adicionar uma pasta para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Erro enquanto carregava a lista de pastas do servidor.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Desconectado</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Adição de pasta está desativado porque você já está sincronizando todos os seus arquivos. Se você deseja sincronizar várias pastas, por favor, remova a pasta raiz configurada atualmente.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Obtendo lista de pastas do servidor...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Verificando alterações em &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Sincronizando %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>baixar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>enviar %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 de %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 restando, %1 de %2, arquivo %3 de %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 de%2, arquivo %3 de %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>arquivo %1 de %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Esperando...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Esperando por %n outra pasta...</numerusform><numerusform>Esperando por %n outras pastas...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Preparando para sincronizar...</translation>
</message>
@@ -1106,22 +1127,22 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Nenhuma E-Tag recebida do servidor, verifique Proxy / gateway</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Recebemos um e-Tag diferente para resumir. Tente uma próxima vez.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>O servidor retornou erro numa série-de-conteúdo</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Conexão Finalizada</translation>
</message>
@@ -1204,28 +1225,25 @@ Continuando a sincronização como normal fará com que todos os seus arquivos s
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Digite %1 a senha:
-
-Usuário: %2
-Conta: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Por favor entre uma senha %1:&lt;br&gt;&lt;br&gt;Usuário: %2&lt;br&gt;Conta: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Leitura de chaveiro falhou com o erro: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Entrar Senha</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Click aqui&lt;/a&gt; para solicitar uma senha de aplicativo na interface da web.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1270,7 +1288,7 @@ Conta: %3
<translation>Remover</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1279,27 +1297,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Itens onde a eliminação é permitida serão excluídos se eles evitarem que um diretório seja removido. Isso é útil para metadados.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Não foi possível abrir o arquivo</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Não é possível gravar as alterações em &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Adicionar Ignorar Padrão</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Adicionar um novo padrão ignorar:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Esta entrada é fornecida pelo sistema em &apos;%1&apos; e não pode ser modificado aqui.</translation>
</message>
@@ -1373,7 +1391,7 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Conexão expirou</translation>
</message>
@@ -1489,32 +1507,32 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
<translation>Limite automático</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Hostname do servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Nome de usuário para servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Senha para servidor proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt&gt;= 5,4 é necessário, a fim de utilizar o limite de banda</translation>
</message>
@@ -1522,23 +1540,23 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Criada em %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Fechando em poucos segundos...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>requisição %1 falhou em %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; selecionada em %2</translation>
@@ -1555,8 +1573,7 @@ Itens onde a eliminação é permitida serão excluídos se eles evitarem que um
<location filename="../src/gui/updater/ocupdater.cpp" line="104"/>
<source>A new update for %1 is about to be installed. The updater may ask
for additional privileges during the process.</source>
- <translation>Uma nova atualização para %1 está para ser instalada. O atualizador pode solicitar
-por privilégios adicionais durante o processo.</translation>
+ <translation>Uma nova atualização para %1 está para ser instalada. O atualizador pode solicitar por privilégios adicionais durante o processo.</translation>
</message>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="141"/>
@@ -1676,7 +1693,7 @@ por privilégios adicionais durante o processo.</translation>
<translation>Configurar certificado TLS do lado do cliente</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Falha na conexão com o endereço do servidor seguro &lt;em&gt;%1&lt;/em&gt;. Como você deseja prosseguir?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1684,17 +1701,17 @@ por privilégios adicionais durante o processo.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Email</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Conectar a %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Entre com as credenciais do usuário</translation>
</message>
@@ -1731,139 +1748,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Conectado com sucesso a %1: %2 versão %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Falha ao conectar a %1 em %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>O tempo expirou ao tentar contactar %1 e %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Tentando conectar a %1 em %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>A solicitação de autenticação ao servidor foi direcionada para &apos;%1&apos;. A URL está errada, a configuração do servidor está errada.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Houve uma resposta inválida a um pedido de autenticação WebDAV</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Acesso proibido pelo servidor. Para verificar se você tem acesso adequado, &lt;a href=&quot;%1&quot;&gt;clique aqui&lt;/a&gt; para acessar o serviço com o seu navegador.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Pasta local de sincronização %1 já existe, configurando para sincronização. &lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Criação de pasta de sincronização local %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>falhou.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Não foi possível criar pasta local %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Nenhuma pasta remota foi especificada!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Erro: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>criar pasta no ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Pasta remota %1 criada com sucesso.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Pasta remota %1 já existe. Conectando para sincronizar.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>A criação da pasta resultou em um erro do código HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>A criação da pasta remota falhou porque as credenciais fornecidas estão erradas!&lt;br/&gt;Por favor, volte e verifique suas credenciais.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;A criação remota de pasta falhou provavelmente as causas da falha na criação da pasta remota são credenciais erradas&lt;/font&gt;&lt;br/&gt;Volte e verifique suas credenciais, por favor.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Falha na criação da pasta remota %1 com erro &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Uma conexão de sincronização de %1 para o diretório remoto %2 foi realizada.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Conectado com sucesso a %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Conexão à %1 não foi estabelecida. Por favor, verifique novamente.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Falha no nome da pasta</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Não é possível remover e fazer backup da pasta porque a pasta ou um arquivo que está nesta pasta está aberto em outro programa. Por favor, feche a pasta ou arquivo e clique tentar novamente ou cancelar a operação.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Pasta de sincronização local %1 criada com sucesso!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1888,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Assistente de Conexões do %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Pular etapa de configuração de pastas</translation>
</message>
@@ -1902,7 +1919,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Conexão Finalizada</translation>
</message>
@@ -1910,7 +1927,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Resposta JSON inválida a partir do conjunto de URL</translation>
</message>
@@ -1918,55 +1935,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
- <translation>O arquivo %1 não pode ser baixado por causa de um confronto local no nome do arquivo!</translation>
+ <translation>O arquivo %1 não pode ser baixado devido a um confronto local no nome do arquivo!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
- <translation>O download reduziá o espaço livre em disco abaixo de %1</translation>
+ <translation>O download reduzirá o espaço livre em disco abaixo de %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>O espaço livre no disco é inferior a %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>O arquivo foi eliminado do servidor</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>O arquivo não pode ser baixado completamente.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>O arquivo baixado está vazio apesar do servidor anunciou que deveria ter %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
- <translation>O arquivo %1 não pode ser salvo por causa de um confronto com um nome de arquivo local!</translation>
+ <translation>O arquivo %1 não pode ser salvo devido a um confronto com um nome de arquivo local!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Arquivo foi alterado desde a descoberta</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
</message>
@@ -2038,7 +2055,8 @@ It is not advisable to use it.</source>
<translation>O arquivo %1 não pode ser renomeado para %2 por causa de um choque com nome de arquivo local</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
</message>
@@ -2046,12 +2064,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>O arquivo foi removido de um compartilhamento somente de leitura. Ele foi restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Código HTTP retornado errado pelo servidor. 204 esperado, mas recebeu &quot;%1 %2&quot;.</translation>
</message>
@@ -2072,78 +2090,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Esta pasta não pode ser renomeada. Ela será renomeado de volta ao seu nome original.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Esta pasta não pode ser renomeada. Por favor, nomeie-a de volta para Compartilhada.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>O arquivo foi renomeado mas faz parte de compartilhamento só de leitura. O arquivo original foi restaurado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Código HTTP retornado errado pelo servidor. 201 esperado, mas recebeu &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Arquivo Removido</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Arquivo local alterado durante a sincronização. Ele será retomado.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Arquivo local modificado durante a sincronização.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Forçando cancelamento do trabalho em redefinição de conexão HTTP com o Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>O arquivo local foi removido durante a sincronização.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Arquivo local modificado durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>Código de retorno inesperado do servidor (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>Falta ID do arquivo do servidor</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>Falta ETag do servidor</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Forçando cancelamento do trabalho em redefinição de conexão HTTP com o Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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 arquivo foi editado localmente mas faz parte de compartilhamento só de leitura. Ele foi restaurado mas sua edição está em conflito com o arquivo.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Faltando conjunto de URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>O arquivo local foi removido durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>O servidor não reconheceu o último pedaço. (Nenhuma e-tag estava presente)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Arquivo local modificado durante a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Ocorreu um erro ao escrever metadados ao banco de dados</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>O servidor não reconheceu o último pedaço. (Nenhuma e-tag estava presente)</translation>
</message>
</context>
<context>
@@ -2159,42 +2218,42 @@ It is not advisable to use it.</source>
<translation>RótuloTexto</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Tempo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Arquivo</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Pasta</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Ação</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Tamanho</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Protocolo de sincronização local</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Copiar</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Copiar a lista de atividades para a área de transferência.</translation>
</message>
@@ -2292,22 +2351,22 @@ It is not advisable to use it.</source>
<translation>Configurações</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2315,27 +2374,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Atividade</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Conta</translation>
</message>
@@ -2363,32 +2422,32 @@ It is not advisable to use it.</source>
<translation>Caminho ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Compartilhamento %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Pasta: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>O servidor não permitir o compartilhamento</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Recuperando máximo possível de permissões de compartilhamento do servidor...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O arquivo não pode ser partilhado, pois foi compartilhado sem permissão de compartilhamento.</translation>
</message>
@@ -2427,43 +2486,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Mail link</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Copiar &amp;link</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Permitir edição</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>S&amp;enha de proteção</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Protegido por Senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>O arquivo não pode ser partilhado, pois foi compartilhado sem permissão de compartilhamento.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Comp&amp;artilhamento público requer uma senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Por favor, Definir senha</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Não foi possível abrir o cliente de e-mail</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Ocorreu um erro ao iniciar o cliente de e-mail para criar uma nova mensagem. Talvez nenhum cliente de e-mail padrão esteja configurado?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Link de &amp;Compartilhamento</translation>
</message>
@@ -2481,7 +2555,7 @@ It is not advisable to use it.</source>
<translation>Compartilhar com usuários ou grupos ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Sem resultados para &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2588,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>criar</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>mudança</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>excluir</translation>
</message>
@@ -2532,12 +2606,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Erro de Login</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Você deve entrar como usuário %1</translation>
</message>
@@ -2545,17 +2619,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autenticar</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Ver depuração da criptografia SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Reautenticação necessária</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Sua sessão expirou. É preciso re-login para continuar a usar o cliente.</translation>
</message>
@@ -2563,7 +2642,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Compartilhar com %1</translation>
@@ -2572,119 +2651,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt; Detalhes do Certificado &lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Nome Comum (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Assunto Nomes Alternativos:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organização (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Unidade Organizacional (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Estado/Província:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>País:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Série:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Emissor&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Emissor:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Emitido em:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Expira em:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Impressões Digitais&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt; Nota:&lt;/b&gt;Este certificado foi aprovado manualmente&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (auto-assinado)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Esta conexão é criptografada usando %1 bit %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Não há suporte para sessão SSL tickets/identificadores</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informações do certificado:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Esta conexão não é segura, uma vez que não é criptografada.
@@ -2772,270 +2851,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Sucesso.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync não conseguiu carregar o arquivo journal. O arquivo journal está corrompido.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;O plugin %1 para csync não foi carregado.&lt;br/&gt;Por favor verifique a instalação!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Erro do CSync enquanto processava árvores internas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync falhou ao reservar memória.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Erro fatal de parametro do CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Processamento da atualização do CSync falhou.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Processamento da conciliação do CSync falhou.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>Csync não conseguiu autenticação no proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync falhou ao localizar o proxy ou servidor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync falhou ao autenticar no servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync falhou ao conectar à rede.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Ocorreu uma desconexão de rede. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Houve um erro na transmissão HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>A pasta montada não está temporariamente disponível no servidor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Ocorreu um erro ao abrir uma pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Erro ao ler pasta.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Arquivo/pasta ignorado porque porque está escondido.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Apenas %1 estão disponíveis, precisamos de pelo menos %2 para começar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Não permitido porque você não tem permissão para adicionar pasta mãe</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Não permitido porque você não tem permissão para adicionar arquivos na pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Sem espaço disponível no servidor %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Erro não especificado no CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Abortado pelo usuário</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Nome do arquivo contém caracteres inválidos que não podem ser sincronizados entre plataformas.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync não conseguiu o acesso</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync falhou ao carregar ou criar o arquivo de diário. Certifique-se de ter permissão de ler e escrever na pasta de sincronização local.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync falhou devido a permissão de não manipulação negada.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync tentou criar uma pasta que já existe.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>O serviço está temporariamente indisponível</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Acesso proibido</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Um erro interno de número %1 ocorreu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>O item não está sincronizado devido a erros anteriores: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Linques simbólicos não são suportados em sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>O arquivo está listado na lista de ignorados.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>O nome do arquivo contém espaços deixados para trás.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>O nome do arquivo é muito longo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat falhou.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>A codificação do nome do arquivo não é válida</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Caracteres inválidos, por favor renomear &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Impossibilitado de iniciar a sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Não é possível ler a lista negra a partir do banco de dados local</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Não é possível ler a partir do relatório de sincronização.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Não é possível abrir o arquivo de sincronização</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>O nome do arquivo contem pelo menos um caractere inválido </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorado por causa da lista negra &quot;escolher o que sincronizar&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Não permitido porque você não tem permissão para adicionar subpastas para essa pasta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Não é permitido fazer o upload deste arquivo porque ele é somente leitura no servidor, restaurando</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Não é permitido remover, restaurando</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Arquivos locais e pasta compartilhada removida.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Não é permitido mover, item restaurado</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Não é permitido mover porque %1 é somente para leitura</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>o destino</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>a fonte</translation>
</message>
@@ -3059,17 +3143,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Versão %1. Para mais informações por favor visite &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Direitos autorais ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribuído por %1 e licenciado sobre a GNU General Public License (GPL) Versão 2.0.&lt;br/&gt;%2 e o %2 logo são marcas registradas de %1 nos Estados Unidos, outros países ou ambos.&lt;/p&gt;</translation>
</message>
@@ -3095,202 +3179,218 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Favor conectar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Pasta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Pastas de sincronização não configuradas.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Não há pastas de sincronização configuradas.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Abrir no navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Entrar...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Sair</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Alterações Recentes</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Verificando por alterações em &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Pastas Gerenciadas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Abrir pasta &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Abrir %1 no navegador</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Status desconhecido</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Configurações...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detalhes...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Sair %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Desconectado de %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Versão do Servidor Não Suportada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>O servidor da conta %1 está executando uma versão %2 antiga e não suportada. Usar esse cliente junto com versões não suportadas e não testadas é potencialmente perigoso. Prossiga por conta própria.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Desconectado de contas:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Conta %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>A sincronização de conta está desativada</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Retomar todas as pastas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pausar todas as pastas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Retomar toda a sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Retomar sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Dar uma pausa em toda a sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Dar uma pausa na sincronização</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Desconectar todas as contas</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Conectar todas as contas...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>Nova conta...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Quebrar agora</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Não há itens sincronizados recentemente</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Sincronizar %1 de %2 (%3 faltando)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Sincronizando %1 de %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Sincronizando %1 (%2 faltando)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Sincronizando %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Até a data</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Versão %2. Para mais informações 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;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licenciado sob a GNU General Public License (GPL) Versão 2.0&lt;br/&gt;ownCloud e o logotipo ownCloud são marcas registradas da ownCloud, Inc. nos Estados Unidos, outros países, ou ambos.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Versão %2. Para mais informações visite &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
+Para problemas conhecidos e ajuda, visite: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Por Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, e outros.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;&lt;p&gt;Licenciado sob o GNU General Public License (GPL) Versão 2.0&lt;br/&gt;ownCloud e o ownCloud Logo são marcas registradas da ownCloud GmbH nos United States, outros países, ou ambos.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3305,9 +3405,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3327,7 +3427,7 @@ It is not advisable to use it.</source>
<translation>Iniciar uma sincronização &amp;limpa (Elimina a pasta local!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Escolha o que quer sincronizar</translation>
</message>
@@ -3352,7 +3452,7 @@ It is not advisable to use it.</source>
<translation>S&amp;ync tudo do servidor</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Mensagem de status</translation>
</message>
@@ -3365,26 +3465,15 @@ It is not advisable to use it.</source>
<translation>Formulário</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Nome do Usuário</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Senha</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Rótulo de Erro</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3590,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3509,37 +3598,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>no futuro</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n dia(s) atrás</numerusform><numerusform>%n dia(s) atrás</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n hora(s) atrás</numerusform><numerusform>%n hora(s) atrás</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>agora</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>A menos de um minuto atrás</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minuto(s) atrás</numerusform><numerusform>%n minuto(s) atrás</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Algum tempo atrás</translation>
</message>
@@ -3547,57 +3636,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n ano</numerusform><numerusform>%n ano(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n mês</numerusform><numerusform>%n mês(es)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n day</numerusform><numerusform>%n dia(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n hora</numerusform><numerusform>%n hora(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minuto</numerusform><numerusform>%n minuto(s)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n segundo</numerusform><numerusform>%n segundo(s)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3707,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Construído a partir de revisão Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; em %3, %4 usando Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3626,82 +3715,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Baixado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Enviado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Versão do servidor baixada, copiada a modificação do local do arquivo dentro do arquivo de conflito</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Excluído</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Movido para %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorado</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Erro ao acesso do sistema de arquivos</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Metadado local enviado</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Desconhecido</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>baixando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>enviando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>eliminando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>movendo</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorando</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>erro</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>Atualizando metadados locais</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_ru.ts b/translations/client_ru.ts
index 692f23448..8d29bddea 100644
--- a/translations/client_ru.ts
+++ b/translations/client_ru.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Конечный файл имеет некорректный размер или время изменения</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Неотмеченные каталоги будут &lt;b&gt;удалены&lt;/b&gt; из вашей локальной файловой системы и больше не будут синхронизироваться на этом компьютере</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Синхронизировать всё</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Не синхронизировать ничего</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Применить ручные изменения</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Применить</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Подключен к &lt;server&gt; как &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Учётная запись не настроена.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Добавить новый</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Уч.запись</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
- <translation>Уточнить объекты для синхронизации</translation>
+ <translation>Выбрать объекты для синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Удалить подключение синхронизации каталога</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Ошибка создания каталога</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Не удалось создать локальный каталог &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Подтвердите удаление подключения синхронизации каталога</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Удалить подключение синхронизации каталога</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Синхронизация запущена</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Выполняется синхронизация.&lt;br/&gt;Вы хотите её остановить?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 используется</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 как &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Сервер версии %1 устарел и не поддерживается! Продолжайте на свой страх и риск.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Соединен с %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Сервер %1 временно недоступен.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Успешно вышли из %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Нет соединения с %1 в %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Войти</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Есть новые каталоги, которые не были синхронизированы, так как они слишком большие:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Подтверждение удаления учетной записи</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Вы действительно желаете удалить подключение к учетной записи &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Примечание:&lt;/b&gt; Это действие &lt;b&gt;НЕ&lt;/b&gt; удалит ваши файлы.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Удалить подключение</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Открыть папку</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Выйти</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Продолжить синхронизацию</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Приостановить синхронизацию</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Вы действительно желаете остановить синхронизацию папки &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Примечание:&lt;/b&gt; Это действие &lt;b&gt;НЕ&lt;/b&gt; удалит ваши файлы.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) из %2 используется. Некоторые папки, включая сетевые или общие, могут иметь свои собственные ограничения.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 из %2 используется</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>В данный момент информация о заполненности хранилища недоступна.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Нет настроенного подключения %1.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Вышли из аккаунта</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Отсоединен</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Соединен</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Сервис недоступен</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Ошибка сети</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Ошибка конфигурации</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Неизвестное состояние учетной записи</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Действия Сервера</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Протокол синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Список игнорируемых или ошибочных файлов</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопировать журнал синхронизации в буфер обмена.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Не синхронизировано</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Не синхронизировано (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Список активности сервера скопирован в буфер обмена.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Список активности синхронизации скопирован в буфер обмена.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Список несинхронизированных элементов скопирован в буфер обмена.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Скопировано в буфер обмена</translation>
</message>
@@ -413,47 +428,47 @@
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Действия Сервера</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопировать журнал синхронизации в буфер обмена.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Требуется действие: уведомления</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;У учетной записи %1 не включены события.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Вы получили %n новое уведомление от %2.</numerusform><numerusform>Вы получили %n новых уведомления от %2.</numerusform><numerusform>Вы получили %n новых уведомлений от %2.</numerusform><numerusform>Вы получили %n новых уведомлений от %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Вы получили %n новое уведомление от %1 и %2.</numerusform><numerusform>Вы получили %n новых уведомления от %1 и %2.</numerusform><numerusform>Вы получили %n новых уведомлений от %1 и %2.</numerusform><numerusform>Вы получили %n новых уведомлений от %1 и %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Для Вас получено %n новых уведомлений из %1, %2 и других уч.записей.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 уведомлений - требуются действия.</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Пароль для сертификата :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Выберите сертификат</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Файлы сертификатов (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Требуется аутентификация </translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Введите имя пользователя и пароль для &apos;%1&apos; в %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Пользователь:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Пароль:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Ошибка записи метаданных в базу данных</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Учётная запись OwnCloud не настроена</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Настроенный сервер слишком стар для этого клиента</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Обновите сервер до последней версии и перезапустите клиент.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Ошибка авторизации: Имя пользователя или пароль не верны.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>тайм-аут</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Введённые учётные данные не верны</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Время ожидания соединения превышено</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Прервано пользов</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Локальный каталог %1 не существует.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 должен быть папкой, но ей не является.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 не может быть прочитан.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>&apos;%1&apos; был удалён</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 был загружен.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 был обновлён.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 был переименован в %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 был перемещён в %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 и ещё %n другой файл был удалён.</numerusform><numerusform>%1 и ещё %n других файла было удалено.</numerusform><numerusform>%1 и ещё %n других файлов были удалены.</numerusform><numerusform>%1 и ещё %n других файлов были удалены.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 и ещё %n другой файл были скачаны.</numerusform><numerusform>%1 и ещё %n других файла были скачаны.</numerusform><numerusform>%1 и ещё %n других файлов были скачаны.</numerusform><numerusform>%1 и ещё %n других файлов были скачаны.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 и ещё %n другой файл были обновлены.</numerusform><numerusform>%1 и ещё %n других файла были обновлены.</numerusform><numerusform>%1 и ещё %n других файлов были обновлены.</numerusform><numerusform>%1 и ещё %n других файлов были обновлены.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 был переименован в %2, и ещё %n другой файл был переименован.</numerusform><numerusform>%1 был переименован в %2, и ещё %n других файла были переименованы.</numerusform><numerusform>%1 был переименован в %2, и ещё %n других файлов были переименованы.</numerusform><numerusform>%1 был переименован в %2, и ещё %n других файлов были переименованы.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 был перемещён в %2, и ещё %n другой файл был перемещён.</numerusform><numerusform>%1 был перемещён в %2, и ещё %n других файла были перемещены.</numerusform><numerusform>%1 был перемещён в %2, и ещё %n других файла были перемещены.</numerusform><numerusform>%1 был перемещён в %2, и ещё %n других файла были перемещены.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>У %1 и ещё у %n другого файла есть конфликты синхронизации.</numerusform><numerusform>У %1 и ещё у %n других файлов есть конфликты синхронизации.</numerusform><numerusform>У %1 и ещё у %n других файлов есть конфликты синхронизации.</numerusform><numerusform>У %1 и ещё у %n других файлов есть конфликты синхронизации.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>У %1 есть конфликт синхронизации. Пожалуйста, проверьте конфликтный файл!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 и ещё %n другой файл не удалось синхронизировать из-за ошибок. Подробности смотрите в журнале.</numerusform><numerusform>%1 и ещё %n других файла не удалось синхронизировать из-за ошибок. Подробности смотрите в журнале.</numerusform><numerusform>%1 и ещё %n других файлов не удалось синхронизировать из-за ошибок. Подробности смотрите в журнале.</numerusform><numerusform>%1 и ещё %n других файлов не удалось синхронизировать из-за ошибок. Подробности смотрите в журнале.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 не может быть синхронизирован из-за ошибки. Смотрите детали в журнале.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Журнал синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Невозможно прочесть системный файл исключений</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Новый каталог размером более %1 МБ был добавлен: %2.
Пожалуйста, перейдите в настройки, если хотите скачать его.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Are you sure you want to perform this operation?</source>
Вы действительно хотите выполнить эту операцию?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Удалить все файлы?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Удалить все файлы</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Сохранить файлы</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Эта синхронизация вернет все файлы в папке &apos;%1&apos; в более ранее состояние.
-Это может быть причиной восстановления резервной копии на сервере.
-Продолжение синхронизации в обычном режиме приведет к тому, что все ваши файлы будут перезаписаны старыми файлами в новом состоянии. Вы желаете оставить ваши локальные файлы как конфликтующие?</translation>
+ <translation>Эта синхронизация собирается сбросить файлы в катлоге &apos;%1&apos; в более ранее состояние. Такое может случиться, если на сервере восстановлена резервная копия. Если продолжать синхронизацию как обычно, то ваши файлы будут перетёрты более старыми версиями. Хотите сохранить ваши локальные свежие файлы в качестве конфликтных?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Обнаружена резервная копия</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Обычная синхронизация</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Сохранить локальные файлы как конфликтующие</translation>
</message>
@@ -742,112 +755,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Невозможно сбросить состояние каталога</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Найден старый журнал синхронизации &apos;%1&apos;, и он не может быть удалён. Убедитесь что он не открыт в другом приложении.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(бэкап)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(бэкап %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Неопределенное состояние.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Ожидание запуска синхронизации.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Подготовка к синхронизации.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Идет синхронизация.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Последняя синхронизация прошла успешно.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Последняя синхронизация прошла успешно, но были предупреждения для некоторых файлов.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Ошибка установки.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Отмена пользователем.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Синхронизация приостановлена.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%! (синхронизация приостановлена)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Не выбран валидный каталог!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Выбранный путь не является папкой!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>У вас недостаточно прав для записи в выбранный каталог!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Локальная папка %1 уже используется для синхронизации. Пожалуйста выберите другую!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Локальная папка %1 уже содержит папку, которая используется для синхронизации. Пожалуйста выберите другую!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Локальная папка %1 является символьной ссылкой. Эта ссылка уже содержит папку для синхронизации. Пожалуйста выберите другую!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Локальная папка %1 уже содержит папку, которая используется для синхронизации. Пожалуйста выберите другую!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Локальная папка %1 является символьной ссылкой. Эта ссылка уже содержит папку, которая используется для синхронизации. Пожалуйста укажите другую!</translation>
</message>
@@ -873,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Необходимо подключиться, чтобы добавить каталог</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Нажмите на эту кнопку для добавления каталога к синхронизации.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Ошибка загрузки списка папок с сервера.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Вышли из аккаунта</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Добавление папки отключена, потому что вы уже синхронизированы все файлы. Если вы хотите синхронизировать несколько папок, пожалуйста, удалите текущую корневую папку.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Извлечение списка папок с сервера...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Проверка изменений в &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Синхронизация %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>скачать %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>выгрузка %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 из %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>Осталось %5, %1 из %2, файл %3 из %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 из %2, файл %3 из %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>файл %1 из %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Ожидание...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
- <translation><numerusform>Ожидание %n папки...</numerusform><numerusform>Ожидание %s папок...</numerusform><numerusform>Ожидание %s папок...</numerusform><numerusform>Ожидание %s папок...</numerusform></translation>
+ <translation><numerusform>Ожидание %n папки...</numerusform><numerusform>Ожидание %n папок...</numerusform><numerusform>Ожидание %n папок...</numerusform><numerusform>Ожидание %n папок...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Подготовка к синхронизации...</translation>
</message>
@@ -1106,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>E-Tag от сервера не получен, проверьте настройки прокси/шлюза.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Мы получили другой E-Tag для возобновления. Повторите попытку позже.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Сервер вернул неверный диапазон содержимого</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Время ожидания подключения истекло</translation>
</message>
@@ -1203,28 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Пожалуйста, введите %1 пароль:
-
-Пользователь: %2
-Учетная запись: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Пожалуйста введите пароль для %1:&lt;br&gt;&lt;br&gt;Пользователь: %2&lt;br&gt;Учётная запись: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Чтение из брелока завершилось с ошибкой: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Введите пароль</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Кликните здесь&lt;/a&gt; чтобы запросить пароль приложения через веб-интерфейс.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1285,7 @@ Account: %3
<translation>Удалить</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1277,27 +1293,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Элементы, где это разрешается, будут удалены, в случае если они помешают удалению папки. Используется для метаданных.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Невозможно открыть файл</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Невозможно записать изменения в &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Добавить шаблон игнорирования</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Добавить новый шаблон игнорирования:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Эта запись сделана системой в &apos;%1&apos; и не может быть изменена в этом представлении.</translation>
</message>
@@ -1371,7 +1387,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Время ожидания соединения превышено</translation>
</message>
@@ -1487,32 +1503,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Ограничивать автоматически</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Адрес прокси сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Пользователь прокси-сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Пароль прокси-сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S)-прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5-прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 требуется, чтобы использовать ограничение пропускной способности</translation>
</message>
@@ -1520,23 +1536,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Создано %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Закроется через несколько секунд…</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1: запрос выполнен неудачно в %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; выбрано в %2</translation>
@@ -1674,7 +1690,7 @@ for additional privileges during the process.</source>
<translation>Настроить TLS сертификат клиента</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Не удалось подключиться к безопасному серверу по адресу &lt;em&gt;%1&lt;/em&gt;. Как Вы хотите продолжить?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1682,17 +1698,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Почта</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Подключиться к %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Ввести учётные данные</translation>
</message>
@@ -1730,139 +1746,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Успешное подключение к %1: %2 версия %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Не удалось подключиться к %1 в %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Превышено время ожидания соединения к %1 на %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Попытка соединиться с %1 на %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Запрос авторизации с сервера перенаправлен на &apos;%1&apos;. Ссылка не верна, сервер не настроен.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Обнаружен не верный ответ на авторизованный запрос WebDAV</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Доступ запрещён сервером. Чтобы доказать, что у Вас есть права доступа, &lt;a href=&quot;%1&quot;&gt;нажмите здесь&lt;/a&gt; для входа через Ваш браузер.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Локальный каталог синхронизации %1 уже существует, используем его для синхронизации.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Создание локальной папки синхронизации %1... </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ок</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>не удалось.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Не удалось создать локальный каталог синхронизации %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Не указан удалённый каталог!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Ошибка: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>создание каталога на ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Удалённый каталог %1 успешно создан.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Удалённый каталог %1 уже существует. Подключение к нему для синхронизации.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Создание каталога завершилось с HTTP-ошибкой %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Не удалось создать удаленный каталог, так как представленные параметры доступа неверны!&lt;br/&gt;Пожалуйста, вернитесь назад и проверьте учетные данные.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Не удалось создать удаленный каталог, возможно, указанные учетные данные неверны.&lt;/font&gt;&lt;br/&gt;Вернитесь назад и проверьте учетные данные.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Удаленный каталог %1 не создан из-за ошибки &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Установлено соединение синхронизации %1 к удалённому каталогу %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Соединение с %1 установлено успешно!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Не удалось соединиться с %1. Попробуйте снова.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Ошибка переименования каталога</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Невозможно удалить каталог и создать его резервную копию, каталог или файл в ней открыт в другой программе. Закройте каталог или файл и нажмите &quot;Повторить попытку&quot;, либо прервите мастер настройки.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Локальный каталог синхронизации %1 успешно создан!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1870,12 +1886,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Мастер подключения %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Пропустить настройку каталогов</translation>
</message>
@@ -1901,7 +1917,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Время ожидания подключения истекло</translation>
</message>
@@ -1909,7 +1925,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Не правильный JSON ответ на сформированный URL</translation>
</message>
@@ -1917,55 +1933,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Ошибка записи метаданных в базу данных</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Файл %1 не может быть загружен из-за локального конфликта имен!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Эта загрузка уменьшит свободное дисковое пространство ниже %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Свободное место на диске меньше, чем %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Файл был удален с сервера</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Невозможно полностью загрузить файл.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Скачанный файл пуст, хотя сервер заявил, что он должен быть %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Файл %1 не может быть сохранён из-за локального конфликта имен!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>После обнаружения файл был изменен</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Ошибка записи метаданных в базу данных</translation>
</message>
@@ -1985,7 +2001,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/owncloudpropagator.cpp" line="241"/>
<source>A file or folder was removed from a read only share, but restoring failed: %1</source>
- <translation>Файл или папка была удалена из доступа только для чтения, восстановление завершилось с ошибкой: %s</translation>
+ <translation>Файл или папка была удалена из доступа только для чтения, восстановление завершилось с ошибкой: %1</translation>
</message>
</context>
<context>
@@ -2037,7 +2053,8 @@ It is not advisable to use it.</source>
<translation>Файл %1 не может быть переименован в %2 из-за локального конфликта имен</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Ошибка записи метаданных в базу данных</translation>
</message>
@@ -2045,12 +2062,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Файл удалён с удаленного общего ресурса только для чтения. Файл был восстановлен.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Сервер ответил не правильным HTTP кодом. Ожидался 204, но получен &quot;%1 %2&quot;.</translation>
</message>
@@ -2071,78 +2088,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Этот каталог не должен переименовываться. Ему будет присвоено изначальное имя. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Этот каталог не должен переименовываться. Присвойте ему изначальное имя: Shared. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Файл переименован на удаленном общем ресурсе только для чтения. Файл был восстановлен.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Сервер ответил не правильным HTTP кодом. Ожидался 201, но получен &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Ошибка записи метаданных в базу данных</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Файл Перемещён</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Локальный файл изменился в процессе синхронизации. Операция будет возобновлена.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локальный файл изменился в процессе синхронизации.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Ошибка записи метаданных в базу данных</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Принудительная остановка задачи при сбросе HTTP подключения для Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Локальный файл был удалён в процессе синхронизации.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Локальный файл изменился в процессе синхронизации.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Принудительная остановка задачи при сбросе HTTP подключения для Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Не хватает сформированного URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Локальный файл был удалён в процессе синхронизации.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Сервер не смог подтвердить последнюю часть данных.(Отсутствовали теги e-tag)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локальный файл изменился в процессе синхронизации.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Ошибка записи метаданных в базу данных</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Сервер не смог подтвердить последнюю часть данных.(Отсутствовали теги e-tag)</translation>
</message>
</context>
<context>
@@ -2158,42 +2216,42 @@ It is not advisable to use it.</source>
<translation>TextLabel</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Время</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Файл</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Каталог</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Действие</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Локальный протокол синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопировать журнал синхронизации в буфер обмена.</translation>
</message>
@@ -2291,22 +2349,22 @@ It is not advisable to use it.</source>
<translation>Настройки</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>События</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Основные</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Уч.запись</translation>
</message>
@@ -2314,27 +2372,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>События</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Основные</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Уч.запись</translation>
</message>
@@ -2362,32 +2420,32 @@ It is not advisable to use it.</source>
<translation>Путь к OwnCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Вы поделились %1 </translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Папка: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Сервер не разрешает обмен</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Запрос максимально возможных прав для предоставления доступа с сервера…</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Невозможно предоставить общий доступ к файлу: нет разрешения на предоставление общего доступа.</translation>
</message>
@@ -2426,43 +2484,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Отправить почтой</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Копировать &amp;ссылку</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Разрешить редактирование</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Защитить паролем</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Защищено Паролем</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Невозможно предоставить общий доступ к файлу: нет разрешения на предоставление общего доступа.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Публичные ссылки требуют пароля</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Пожалуйста, установите пароль</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Не удалось открыть почтового клиента</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>При запуске почтового клиента для создания нового сообщения произошла ошибка. Возможно, почтовый клиент по умолчанию не настроен?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Поделиться ссылкой</translation>
</message>
@@ -2480,7 +2553,7 @@ It is not advisable to use it.</source>
<translation>Поделиться с пользователями или группами ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Нет результатов для &apos;%1&apos;</translation>
</message>
@@ -2513,17 +2586,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>создать</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>изменить</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>удалить</translation>
</message>
@@ -2531,12 +2604,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Ошибка входа</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Вы должны войти как пользователь %1</translation>
</message>
@@ -2544,17 +2617,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Авторизация</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Отладочный просмотр шифра SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Требуется повторная аутентификация</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Срок действия вашей сессии истек. Нужно перезайти, чтобы продолжить пользоваться приложением.</translation>
</message>
@@ -2562,7 +2640,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Поделиться с %1</translation>
@@ -2571,119 +2649,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Данные сертификата:&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Общее имя (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Альтернативное имя субъекта:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Организация (О):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Организационное подразделение (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Область/район:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Страна:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Номер:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Выдан:&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Издатель:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Выдан:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Истекает:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Отпечаток&lt;/ h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Заметка:&lt;/b&gt; Этот сертификат был одобрен вручную&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (самоподписанный)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Это соединение зашифровано %1-битным %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Нет поддержки для тикетов/идентификаторов SSL сессии</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Информация о TLS-сертификатах:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Это соединение НЕ безопасно, используется протокол без шифрования.
@@ -2771,270 +2849,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Успешно.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync не удалось загрузить файл журнала. Файл журнала повреждён.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Не удается загрузить плагин 1% для csync.&lt;br/&gt;Проверьте установку!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync получил сообщение об ошибке при обработке внутренних деревьев.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync не удалось зарезервировать память.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Критическая ошибка параметра CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Процесс обновления CSync не удался.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Процесс согласования CSync не удался.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync не удалось авторизоваться на прокси сервере.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync не удалось найти прокси сервер.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync не удалось авторизоваться на сервере %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync не удалось подключиться к сети.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Вышло время ожидания подключения к сети.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Произошла ошибка передачи HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Смонтированная папка временно недоступна на сервере</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Произошла ошибка во время открытия папки</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Произошла ошибка во время чтения папки.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Файл/папка проигнорированы, так как являются скрытыми.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Только %1 доступно, нужно как минимум %2 чтобы начать</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Не разрешается, так как у вас нет полномочий на добавление родительской папки</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Не разрешается, так как у вас нет полномочий на добавление файлов в эту папку</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Нет свободного пространства на сервере %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Неизвестная ошибка CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Прервано пользователем</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Файл содержит недопустимые символы, которые невозможно синхронизировать между платформами.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync отказано в доступе</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync не удалось загрузить файл журнала. Убедитесь в наличии прав на чтение и запись в локальную папку.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync не выполнен из-за отказа в доступе для необработанного разрешения.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync попытался создать папку, которая уже существует.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Сервис временно недоступен</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Доступ запрещен</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Произошла внутренняя ошибка номер %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Элемент не синхронизируется из-за произошедших ошибок: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Синхронизация символических ссылок не поддерживается.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Файл присутствует в списке игнорируемых.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Имя файла содержит пробелы на конце.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Имя файла слишком длинное.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Не удалось загрузить статистику.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Кодировка имени файла не верна</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Недопустимые символы, пожалуйста, переименуйте &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Невозможно инициализировать журнал синхронизации.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Не удалось прочитать файл чёрного списка из локальной базы данных.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Не удалось прочитать из журнала синхронизации.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Не удаётся открыть журнал синхронизации</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Имя файла содержит по крайней мере один некорректный символ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Игнорируется из-за черного списка в &quot;что синхронизировать&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Не разрешается, так как у вас нет полномочий на добавление подпапок в папку.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Не допускается загрузка этого файла, так как на сервере он помечен только для чтения, восстанавливаем</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Не допускается удаление, восстанавливаем</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Локальные файлы и общий каталог удалены.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Перемещение не допускается, элемент восстановлен</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Перемещение не допускается, поскольку %1 помечен только для чтения</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>назначение</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>источник</translation>
</message>
@@ -3058,17 +3141,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Версия %1. Для получения дополнительной информации посетите &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Все права принадлежат ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Все права принадлежат ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Распространяется %1 и лицензировано под GNU General Public License (GPL) Версии 2.0.&lt;br/&gt;Логотипы %2 и %2 являются зарегистрированной торговой маркой %1 в США и/или других странах.&lt;/p&gt;</translation>
</message>
@@ -3094,202 +3177,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Пожалуйста войдите в систему</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Каталог %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Нет каталогов для синхронизации.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Нет настроенных каталогов для синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Открыть в браузере</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Вход...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Выйти</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Недавние изменения</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Проверка изменений в &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Управляемые каталоги:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Открыть каталог &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Открыть %1 в браузере</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Неизвестный статус</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Настройки...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Детали...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Помощь</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Закрыть %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Отключен от %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Версия сервера не поддерживается</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Сервер для учетной записи %1 использует старую не поддерживаемую версию %2. Использование этого клиента совместно с не поддерживаемым сервером не тестировалось и является потенциально небезопасным. Вы продолжаете на свой страх и риск.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Отключен от учетных записей:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Учетная запись %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Синхронизация учётной записи отключена</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Снять с паузы все папки</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Поставить на паузу все папки</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Возобновить все синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Возобновить синхронизацию</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Приостановить все синхронизации</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Приостановить синхронизацию</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Выйти из всех учетных записей</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Войти во все учетные записи...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Критическая ошибка!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Недавно ничего не синхронизировалось</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Синхронизация %1 из %2 (осталось %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Синхронизирую %1 из %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Синхронизация %1 (осталось %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Синхронизация %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Актуальная версия</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Версия %2. Для более подробной информации посетите &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz и другие.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Права принадлежат ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Под лицензией GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud и логотип ownCloud являются зарегистрированными товарными знаками ownCloud, Inc. в США и других странах.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3304,9 +3402,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>TextLabel</translation>
</message>
@@ -3326,7 +3424,7 @@ It is not advisable to use it.</source>
<translation>Начать новую синхронизацию (Стирает локальную папку!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Уточнить объекты</translation>
</message>
@@ -3351,7 +3449,7 @@ It is not advisable to use it.</source>
<translation>Синхронизировать всё с сервером</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Сообщение о состоянии</translation>
</message>
@@ -3364,26 +3462,15 @@ It is not advisable to use it.</source>
<translation>Форма</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Имя пользователя</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Пароль</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Ярлык Ошибки</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>TextLabel</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3500,7 +3587,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3508,37 +3595,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>в будущем</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n день назад</numerusform><numerusform>%n дня назад</numerusform><numerusform>%n дней назад</numerusform><numerusform>%n дней назад</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n час назад</numerusform><numerusform>%n часа назад</numerusform><numerusform>%n часов назад</numerusform><numerusform>%n часов назад</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>сейчас</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Меньше минуты назад</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n минута назад</numerusform><numerusform>%n минуты назад</numerusform><numerusform>%n минут назад</numerusform><numerusform>%n минут назад</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Некоторое время назад</translation>
</message>
@@ -3546,57 +3633,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 ГБ</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 МБ</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 КБ</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 Б</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n год</numerusform><numerusform>%n года</numerusform><numerusform>%n лет</numerusform><numerusform>%n лет</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n месяц</numerusform><numerusform>%n месяца</numerusform><numerusform>%3 месяцев</numerusform><numerusform>%n месяцев</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n день</numerusform><numerusform>%n дня</numerusform><numerusform>%n дней</numerusform><numerusform>%n дней</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n час</numerusform><numerusform>%n часа</numerusform><numerusform>%n часов</numerusform><numerusform>%n часов</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n минута</numerusform><numerusform>%n минуты</numerusform><numerusform>%n минут</numerusform><numerusform>%n минут</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n секунда</numerusform><numerusform>%n секунды</numerusform><numerusform>%n секунд</numerusform><numerusform>%n секунд</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3617,7 +3704,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Собрано исходников Git версии &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; на %3, %4 используя Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3625,82 +3712,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Скачано</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Загружено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Серверная версия скачана, изменённый локальный файл скопирован в файл конфликта.</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Удалено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Перемещено в %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Проигнорирован</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Ошибка доступа к файловой системе</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Ошибка</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Обновлены локальные метаданные</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Неизвестно</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>скачивание</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>загрузка</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>удаление</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>перемещение</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>игнорирование</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>ошибка</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>обновление локальных метаданных</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_sk.ts b/translations/client_sk.ts
index 1b12c97f5..f2af5187c 100644
--- a/translations/client_sk.ts
+++ b/translations/client_sk.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="sk_SK" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sk_SK" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Cieľový súbor má neočakávanú veľkosť alebo čas zmeny</translation>
</message>
@@ -68,12 +68,12 @@
<message>
<location filename="../src/gui/notificationwidget.ui" line="56"/>
<source>Lorem ipsum dolor sit amet</source>
- <translation type="unfinished"/>
+ <translation>Lorem ipsum dolor sit amet</translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="69"/>
<source>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </source>
- <translation type="unfinished"/>
+ <translation>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod temporm </translation>
</message>
<message>
<location filename="../src/gui/notificationwidget.ui" line="89"/>
@@ -104,14 +104,29 @@
<translation>Neoznačené priečinky budú &lt;b&gt;odstránené&lt;/b&gt; z lokálneho systému a nebudú už synchronizované na tento počítač</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Aplikovať</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Zrušiť</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Spojené z &lt;server&gt; ako &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Žiadny účet nie je nastavený.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Pridať nový účet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Odobrať</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Účet</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Vybrať čo synchronizovať</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Odstrániť prepojenie priečinka</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Vytvorenie priečinka zlyhalo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Nemožno vytvoriť lokálny priečinok &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Potvrdiť odstránenie prepojenia priečinka</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Odstrániť prepojenie priečinka</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Prebiehajúca synchronizácia</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Proces synchronizácie práve prebieha.&lt;br/&gt;Chcete ho ukončiť?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
- <translation type="unfinished"/>
+ <translation>%1 sa používa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 ako &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
- <translation type="unfinished"/>
+ <translation>Verzia servera %1 je stará a nepodporovaná. Pokračujte na vlastné nebezpečenstvo.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Pripojené k %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Server %1 je dočasne nedostupný.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Odhlásený z %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Žiadne pripojenie k %1 na %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Prihlásiť sa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Niektoré nové priečinky neboli synchronizované, pretože sú priveľké:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Potvrďte ostránenie účtu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Naozaj chcete odstrániť pripojenie k účtu &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Tým sa &lt;b&gt;nevymažú&lt;/b&gt; žiadne súbory.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Vymazať pripojenie</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Otvoriť priečinok</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Odhlásiť</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Obnoviť synchronizáciu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pozastaviť synchronizáciu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Naozaj si prajete zastaviť synchronizácu priečinka &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Toto &lt;b&gt;nevymaže&lt;/b&gt; žiadne súbory.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) z %2 je využitých. Niektoré priečinky, vrátane sieťových a zdieľaných, môžu mať iné limity.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 z %2 je využitých</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Teraz nie sú k dispozícii žiadne informácie o využití úložiska.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Žiadne nakonfigurované %1 spojenie</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Odhlásený</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Odpojený</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Pripojené</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Služba nedostupná</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Chyba siete</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Chyba nastavenia</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Neznámy stav účtu</translation>
</message>
@@ -330,70 +345,70 @@
<message>
<location filename="../src/gui/activityitemdelegate.cpp" line="145"/>
<source>%1 on %2</source>
- <translation type="unfinished"/>
+ <translation>%1 na %2</translation>
</message>
<message>
<location filename="../src/gui/activityitemdelegate.cpp" line="147"/>
<source>%1 on %2 (disconnected)</source>
- <translation type="unfinished"/>
+ <translation>%1 na %2 (odpojené)</translation>
</message>
</context>
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
- <translation type="unfinished"/>
+ <translation>Aktivita servera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Záznam synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
- <translation type="unfinished"/>
+ <translation>Zoznam ignorovaných alebo chybných súborov</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Skopírovať zoznam aktivít do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Nezosynchronizované</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
- <translation type="unfinished"/>
+ <translation>Nezosynchronizované (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Zoznam aktivít servera bol skopírovaný do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Zoznam aktivít synchronizácie bol skopírovaný do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Zoznam nesynchronizovaných položiek bol skopírovaný do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Skopírované do schránky</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Štítok</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
- <translation type="unfinished"/>
+ <translation>Aktivita servera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Skopírovať zoznam aktivít do schránky.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
- <translation type="unfinished"/>
+ <translation>Požaduje sa činnosť: oznámenia</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
- <translation type="unfinished"/>
+ <translation>&lt;br/&gt;Účet %1 nemá zapnuté aktivity.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Heslo certifikátu:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Vybrať certifikát</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Súbory certifikátu (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Vyžaduje sa overenie</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Zadajte používateľské meno a heslo pre &apos;%1&apos; na %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Používateľ:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Heslo:</translation>
</message>
@@ -522,40 +537,40 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Žiadny účet v ownCloude nie je nastavený</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Server nakonfigurovaný pre tohto klienta je príliš starý</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Prosím aktualizujte na najnovšiu verziu servera a reštartujte klienta.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Chyba overenia: Používateľské meno alebo heslo nie je správne.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>vypršal časový limit</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Poskytnuté poverenia nie sú správne</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Pripojenie expirovalo</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Zrušené používateľom</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Lokálny priečinok %1 neexistuje.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 by mal byť priečinok, avšak nie je.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 nie je čitateľný.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 bol zmazaný.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 bol stiahnutý.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 bol aktualizovaný.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 bol premenovaný na %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 bol presunutý do %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 nemôže byť synchronizovaný kvôli chybe. Pozrite sa do logu pre podrobnosti.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Aktivita synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Nemožno čítať systémový exclude file</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Bol pridaný nový priečinok, väčší ako %1 MB: %2.
Pokiaľ si ho prajete stiahnuť, vyberte ho v nastaveniach.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,152 +715,152 @@ Dôvodom môže byť, že sa daný priečinok potichu rekonfiguroval, alebo boli
Ste si istý, že chcete pokračovať?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Odstrániť všetky súbory?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Odstrániť všetky súbory</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Ponechať súbory</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Záloha je dostupná</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Bežná synchronizácia</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
- <translation type="unfinished"/>
+ <translation>Ponechať lokálne súbory ako konfliktné</translation>
</message>
</context>
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Nemožno resetovať stav priečinka</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Starý synchronizačný žurnál &apos;%1&apos; nájdený, avšak neodstrániteľný. Prosím uistite sa, že žiadna aplikácia ho práve nevyužíva.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (záloha)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (záloha %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Nedefinovaný stav.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
- <translation type="unfinished"/>
+ <translation>Čaká sa na začiatok synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Príprava na synchronizáciu.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synchronizácia prebieha.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Posledná synchronizácia sa úspešne skončila.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Posledná synchronizácia bola úspešná, ale s varovaniami pre individuálne súbory.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Chyba pri inštalácii.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Zrušené používateľom.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synchronizácia je pozastavená.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synchronizácia je pozastavená)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Nebol zvolený platný priečinok.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Zvolená cesta nie je priečinok.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Nemáte oprávnenia pre zápis do daného priečinka!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -860,7 +875,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="241"/>
<source>Synchronizing with local folder</source>
- <translation type="unfinished"/>
+ <translation>Synchronizujem lokálny priečinok</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="285"/>
@@ -871,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Na pridanie priečinku je nutné byť pripojený</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Odhlásený</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
- <translation type="unfinished"/>
+ <translation>Načítavam zoznam priečinkov zo servera...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Kontrolujú sa zmeny v „%1“</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synchronizuje sa %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>stiahnuť %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>nahrať %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 of %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 z %2, súbor %3 z %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>súbor %1 z %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Čakajte...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Príprava na synchronizáciu...</translation>
</message>
@@ -1104,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Zo servera nebol prijatý E-Tag, skontrolujte proxy/bránu</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Prijali sme iný E-Tag pre pokračovanie. Skúsim to neskôr znovu.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Server vrátil nesprávnu hodnotu Content-range</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Spojenie vypršalo</translation>
</message>
@@ -1201,24 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Vložte heslo</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1263,34 +1285,34 @@ Account: %3
<translation>Odobrať</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Nemožno otvoriť súbor</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Nemožno zapísať zmeny do &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Pridať vzor ignorovaného súboru</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Pridať nový vzor ignorovaného súboru:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Táto položka je poskytovaná systémom na &apos;%1&apos; a nesmie byť modifikovaná v tomto zobrazení.</translation>
</message>
@@ -1364,7 +1386,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Pripojenie expirovalo</translation>
</message>
@@ -1480,32 +1502,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Limitovať automaticky</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Hostname (hostiteľské meno) proxy servera</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Používateľské meno pre proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Heslo pre proxy server</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1513,23 +1535,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation type="unfinished"/>
+ <translation>Vytvorený o %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>Ukončenie o pár sekúnd...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%1 požiadavka zlyhala o %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1667,7 +1689,7 @@ môžu byť vyžadované dodatočné oprávnenia.</translation>
<translation>Nakonfigurovať klientský TLS certifikát</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nepodarilo sa pripojenie k zabezpečenému serveru &lt;em&gt;%1&lt;/em&gt;. Ako chcete pokračovať?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1675,17 +1697,17 @@ môžu byť vyžadované dodatočné oprávnenia.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Pripojiť sa k %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Vložte prihlasovacie údaje</translation>
</message>
@@ -1723,139 +1745,139 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Úspešne pripojené k %1: %2 verzie %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Zlyhalo spojenie s %1 o %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Časový limit vypršal pri pokuse o pripojenie k %1 na %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Pokúšam sa o pripojenie k %1 na %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Overená požiadavka na server bola presmerovaná na &apos;%1&apos;. URL je zlá, server nie je správne nakonfigurovaný.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Neplatná odpoveď na overenú webdav požiadavku</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Prístup zamietnutý serverom. Po overení správnych prístupových práv, &lt;a href=&quot;%1&quot;&gt;kliknite sem&lt;/a&gt; a otvorte službu v svojom prezerači.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokálny synchronizačný priečinok %1 už existuje, prebieha jeho nastavovanie pre synchronizáciu.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Vytváranie lokálneho synchronizačného priečinka %1 ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>v poriadku</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>neúspešné.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Nemožno vytvoriť lokálny priečinok %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Vzdialený priečinok nie je nastavený!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Chyba: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>vytváram priečinok v ownCloude: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Vzdialený priečinok %1 bol úspešne vytvorený.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Vzdialený priečinok %1 už existuje. Prebieha jeho pripájanie pre synchronizáciu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Vytváranie priečinka skončilo s HTTP chybovým kódom %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Proces vytvárania vzdialeného priečinka zlyhal, lebo použité prihlasovacie údaje nie sú správne!&lt;br/&gt;Prosím skontrolujte si vaše údaje a skúste to znovu.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Vytvorenie vzdialeného priečinka pravdepodobne zlyhalo kvôli nesprávnym prihlasovacím údajom.&lt;/font&gt;&lt;br/&gt;Prosím choďte späť a skontrolujte ich.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Vytvorenie vzdialeného priečinka %1 zlyhalo s chybou &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Synchronizačné spojenie z %1 do vzdialeného priečinka %2 bolo práve nastavené.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Úspešne pripojené s %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Pripojenie k %1 nemohlo byť iniciované. Prosím skontrolujte to znovu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Premenovanie priečinka zlyhalo</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Nemožno odstrániť a zazálohovať priečinok, pretože priečinok alebo súbor je otvorený v inom programe. Prosím zatvorte priečinok nebo súbor a skúste to znovu alebo zrušte akciu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Lokálny synchronizačný priečinok %1 bol úspešne vytvorený!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1863,12 +1885,12 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Asistent pripojenia</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Preskočiť konfiguráciu priečinkov</translation>
</message>
@@ -1894,7 +1916,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Spojenie vypršalo</translation>
</message>
@@ -1902,7 +1924,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Neplatná JSON odpoveď z URL adresy</translation>
</message>
@@ -1910,57 +1932,57 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Súbor %1 nie je možné stiahnuť, pretože súbor s rovnakým menom už existuje!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
- <translation type="unfinished"/>
+ <translation>Súbor bol vymazaný zo servera</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Súbor sa nedá stiahnuť úplne.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Súbor %1 nie je možné uložiť, pretože jeho názov koliduje s názvom lokálneho súboru!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Súbor sa medzitým zmenil</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
@@ -2001,7 +2023,7 @@ Nie je vhodné ju používať.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
@@ -2030,20 +2052,21 @@ Nie je vhodné ju používať.</translation>
<translation>Súbor %1 nemôže byť premenovaný na %2 z dôvodu, že tento názov je už použitý</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Súbor bol odobratý zo zdieľania len na čítanie. Súbor bol obnovený.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Server vrátil neplatný HTTP kód. Očakávaný bol 204, ale vrátený bol &quot;%1 %2&quot;.</translation>
</message>
@@ -2058,83 +2081,124 @@ Nie je vhodné ju používať.</translation>
<message>
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Tento priečinok nemôže byť premenovaný. Prosím, vráťte mu pôvodné meno.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Tento priečinok nemôže byť premenovaný. Prosím, vráťte mu meno Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Súbor bol premenovaný, ale je súčasťou zdieľania len na čítanie. Pôvodný súbor bol obnovený.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Server vrátil neplatný HTTP kód. Očakávaný bol 201, ale vrátený bol &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri zápise metadát do databázy</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Súbor zmazaný</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokálny súbor bol zmenený počas synchronizácie. Bude obnovený.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokálny súbor bol zmenený počas synchronizácie.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Chyba pri zápise metadát do databázy</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Vynútené ukončenie procesu pri resete HTTP pripojení s Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Lokálny súbor bol odstránený počas synchronizácie.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Lokálny súbor bol zmenený počas synchronizácie.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Vynútené ukončenie procesu pri resete HTTP pripojení s Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>Súbor bol zmenený, ale je súčasťou zdieľania len na čítanie. Pôvodný súbor bol obnovený a upravená verzia je uložená v konfliktnom súbore.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Chýba URL adresa</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Lokálny súbor bol odstránený počas synchronizácie.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokálny súbor bol zmenený počas synchronizácie.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2151,42 +2215,42 @@ Nie je vhodné ju používať.</translation>
<translation>Štítok</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Súbor</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Priečinok</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Akcia</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Veľkosť</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
- <translation type="unfinished"/>
+ <translation>Lokálny protokol synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Skopírovať zoznam aktivít do schránky.</translation>
</message>
@@ -2284,22 +2348,22 @@ Nie je vhodné ju používať.</translation>
<translation>Nastavenia</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Všeobecné</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Sieť</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2307,27 +2371,27 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivita</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Všeobecné</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Sieť</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Účet</translation>
</message>
@@ -2347,7 +2411,7 @@ Nie je vhodné ju používať.</translation>
<message>
<location filename="../src/gui/sharedialog.ui" line="14"/>
<source>Dialog</source>
- <translation type="unfinished"/>
+ <translation>Dialóg</translation>
</message>
<message>
<location filename="../src/gui/sharedialog.ui" line="47"/>
@@ -2355,32 +2419,32 @@ Nie je vhodné ju používať.</translation>
<translation>ownCloud cesta:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 zdieľanie</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Priečinok: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento súbor nemožno zdieľať, lebo bol vyzdieľaný bez možnosti ďalšieho zdieľania.</translation>
</message>
@@ -2419,43 +2483,58 @@ Nie je vhodné ju používať.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Skopírovať &amp;odkaz</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Povoliť úpravy</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>Ch&amp;rániť heslom</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Chránené heslom</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Tento súbor nemožno zdieľať, lebo bol vyzdieľaný bez možnosti ďalšieho zdieľania.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Verejné z&amp;dieľanie vyžaduje heslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Prosím nastavte si heslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Zdieľať odkaz</translation>
</message>
@@ -2473,7 +2552,7 @@ Nie je vhodné ju používať.</translation>
<translation>Zdieľať s používateľmi alebo skupinami ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2506,17 +2585,17 @@ Nie je vhodné ju používať.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>vytvoriť</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>zmeniť</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>vymazať</translation>
</message>
@@ -2524,12 +2603,12 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Chybné prihlásenie</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Musíte sa prihlásiť ako používateľ %1</translation>
</message>
@@ -2537,17 +2616,22 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - overenie</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Vyžaduje sa opätovné overenie</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Platnosť relácie uplynula. Musíte sa znovu prihlásiť, ak chcete pokračovať v používaní klienta.</translation>
</message>
@@ -2555,7 +2639,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Zdieľať s %1</translation>
@@ -2564,119 +2648,119 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Podrobnosti certifikátu&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Bežné meno (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Alternatívne meno subjektu:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organizácia (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organizačná jednotka (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Štát/Provincia:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Krajina:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Sériové číslo:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Vydavateľ&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Vydavateľ:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Vydané:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Platí do:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Odtlačky&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Tento certifikát bol ručne schválený&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (podpísaný sám sebou)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Toto spojenie je šifrované pomocou %1 bitovej šifry %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Informácie o certifikáte:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Toto spojenie NIE JE bezpečné, pretože nie je šifrované.
@@ -2764,270 +2848,275 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Úspech.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>Nepodarilo sa načítanie žurnálovacieho súboru CSync. Súbor je poškodený.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;%1 zásuvný modul pre &quot;CSync&quot; nebolo možné načítať.&lt;br/&gt;Prosím skontrolujte inštaláciu!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Spracovanie &quot;vnútorných stromov&quot; vrámci &quot;CSync&quot; zlyhalo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync sa nepodarilo zarezervovať pamäť.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync kritická chyba parametrov.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync sa nepodarilo spracovať krok aktualizácie.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync sa nepodarilo spracovať krok zladenia.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync sa nemohol prihlásiť k proxy.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync sa nepodarilo nájsť proxy alebo server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync sa nepodarilo prihlásiť na server %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync sa nepodarilo pripojiť k sieti.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Skončil časový limit sieťového spojenia.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Chyba HTTP prenosu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
- <translation type="unfinished"/>
+ <translation>Nastala chyba počas otvárania priečinka</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
- <translation type="unfinished"/>
+ <translation>Chyba pri čítaní adresára</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Na serveri %1 nie je žiadne voľné miesto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync nešpecifikovaná chyba.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Zrušené používateľom</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>Prístup pre CSync zlyhal</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Služba je dočasne nedostupná</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
- <translation type="unfinished"/>
+ <translation>Prístup odmietnutý</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Vyskytla sa interná chyba číslo %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Položka nebola synchronizovaná kvôli predchádzajúcej chybe: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symbolické odkazy nie sú podporované pri synchronizácii.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Súbor je zapísaný na zozname ignorovaných.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Meno súboru je veľmi dlhé.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Kódovanie znakov názvu súboru je neplatné</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Neplatné znaky, premenujte prosím &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Nemôžem inicializovať synchronizačný žurnál.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
- <translation type="unfinished"/>
+ <translation>Nemožno čítať zo synchronizačného žurnálu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Nemožno otvoriť sync žurnál</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Názov súboru obsahuje nevhodný znak</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorované podľa nastavenia &quot;vybrať čo synchronizovať&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
- <translation type="unfinished"/>
+ <translation>Nie je dovolené, lebo nemáte oprávnenie pridávať podpriečinky do tohto priečinka</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Nie je dovolené tento súbor nahrať, pretože je na serveri iba na čítanie. Obnovuje sa.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Nie je dovolené odstrániť. Obnovuje sa.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Lokálne súbory a zdieľaný priečinok boli odstránené.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Presunutie nie je dovolené. Položka obnovená.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Presunutie nie je dovolené, pretože %1 je na serveri iba na čítanie</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>cieľ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>zdroj</translation>
</message>
@@ -3037,7 +3126,7 @@ Nie je vhodné ju používať.</translation>
<message>
<location filename="../src/gui/synclogdialog.ui" line="14"/>
<source>Synchronisation Log</source>
- <translation type="unfinished"/>
+ <translation>Záznam synchronizácie</translation>
</message>
</context>
<context>
@@ -3051,17 +3140,17 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Verzia %1. Pre viac informácií choďte na &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Šíri %1 pod licenciou GNU General Public License (GPL) Verzia 2.0.&lt;br/&gt;%2 a %2 logo sú registrované známky %1 v USA, ostatných krajinách, alebo oboje.&lt;/p&gt;</translation>
</message>
@@ -3076,7 +3165,7 @@ Nie je vhodné ju používať.</translation>
<message>
<location filename="../src/libsync/checksums.cpp" line="204"/>
<source>The checksum header contained an unknown checksum type &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Hlavička kontrolného súčtu obsahovala neznámy typ kontrolného súčtu „%1“</translation>
</message>
<message>
<location filename="../src/libsync/checksums.cpp" line="209"/>
@@ -3087,202 +3176,217 @@ Nie je vhodné ju používať.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Prihláste sa prosím</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Priečinok %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Nie sú nastavené žiadne synchronizačné priečinky.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Nie sú nastavené žiadne priečinky na synchronizáciu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Otvoriť v prehliadači</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
- <translation type="unfinished"/>
+ <translation>Prihlásiť sa...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Odhlásiť</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Nedávne zmeny</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
- <translation type="unfinished"/>
+ <translation>Kontrolujú sa zmeny v „%1“</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Spravované priečinky:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Otvoriť priečinok &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Otvoriť %1 v prehliadači</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Neznámy stav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Nastavenia...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Podrobnosti...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Ukončiť %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
- <translation type="unfinished"/>
+ <translation>Odpojený od %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
- <translation type="unfinished"/>
+ <translation>Nepodporovaná verzia servera</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
- <translation type="unfinished"/>
+ <translation>Odpojené od účtov:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Účet %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
- <translation type="unfinished"/>
+ <translation>Synchronizácia účtu je vypnutá</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
- <translation type="unfinished"/>
+ <translation>Zrušiť pozastavenie všetkých priečinkov</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
- <translation type="unfinished"/>
+ <translation>Pozastaviť všetky priečinky</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>Zrušiť pozastavenie všetkej synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
- <translation type="unfinished"/>
+ <translation>Zrušiť pozastavenie synchronizácie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>Pozastaviť všetku synchronizáciu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
- <translation type="unfinished"/>
+ <translation>Pozastaviť synchronizáciu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
- <translation type="unfinished"/>
+ <translation>Odhlásiť sa zo všetkých účtov</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
+ <translation>Prihlásiť sa do všetkých účtov...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Zlyhanie</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Žiadne nedávno synchronizované položky</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synchronizuje sa %1 z %2 (zostáva %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synchronizuje sa %1 (zostáva %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synchronizuje sa %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Až do dnešného dňa</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Verzia %2. Ďalšie informácie získate na adrese &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Autori Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz a ďalší.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licencované za podmienok GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud a ownCloud Logo sú registrované obchodné známky ownCloud, Inc. v USA, ďalších krajinách, alebo oboje.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3297,9 +3401,9 @@ Nie je vhodné ju používať.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Štítok</translation>
</message>
@@ -3319,7 +3423,7 @@ Nie je vhodné ju používať.</translation>
<translation>Spustiť novú synchronizáciu (Vymaže obsah lokálneho priečinka!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Vybrať čo synchronizovať</translation>
</message>
@@ -3344,7 +3448,7 @@ Nie je vhodné ju používať.</translation>
<translation>S&amp;ynchronizovať zo servera všetko</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Správa o stave</translation>
</message>
@@ -3357,26 +3461,15 @@ Nie je vhodné ju používať.</translation>
<translation>Formulár</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Používateľské meno</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Heslo</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Chybová značka</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Štítok</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3493,7 +3586,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3501,95 +3594,95 @@ Nie je vhodné ju používať.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
- <translation type="unfinished"/>
+ <translation>v budúcnosti</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n dňom</numerusform><numerusform>pred %n dňami</numerusform><numerusform>pred %n dňami</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n hodinou</numerusform><numerusform>pred %n hodinami</numerusform><numerusform>pred %n hodinami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
- <translation type="unfinished"/>
+ <translation>teraz</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
- <translation type="unfinished"/>
+ <translation>Menej ako pred minútou</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n minútou</numerusform><numerusform>pred %n minútami</numerusform><numerusform>pred %n minútami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
- <translation type="unfinished"/>
+ <translation>Pred istým časom</translation>
</message>
</context>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n rok</numerusform><numerusform>%n roky</numerusform><numerusform>%n rokov</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n mesiac</numerusform><numerusform>%n mesiace</numerusform><numerusform>%n mesiacov</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n deň</numerusform><numerusform>%n dni</numerusform><numerusform>%n dní</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n hodina</numerusform><numerusform>%n hodiny</numerusform><numerusform>%n hodín</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n minúta</numerusform><numerusform>%n minúty</numerusform><numerusform>%n minút</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n sekunda</numerusform><numerusform>%n sekundy</numerusform><numerusform>%n sekúnd</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3610,7 +3703,7 @@ Nie je vhodné ju používať.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Zostavené z Git revízie &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; na %3, %4 s použitím Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3618,82 +3711,92 @@ Nie je vhodné ju používať.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Stiahnuté</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Odoslané</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
- <translation type="unfinished"/>
+ <translation>Verzia zo servera bola stiahnutá, kópia zmenila lokálny súbor na konfliktný súbor</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Zmazané</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Presunuté do %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorované</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Chyba prístupu k súborovému systému</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Chyba</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Neznámy</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>sťahujem</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>nahrávam</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>vymazávanie</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>presúvanie</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorujem</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>chyba</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_sl.ts b/translations/client_sl.ts
index 0d55e4319..f8ad83c44 100644
--- a/translations/client_sl.ts
+++ b/translations/client_sl.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="sl" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sl" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Ciljna datoteka ima nepričakovano velikost oziroma čas zadnje spremembe.</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Neizbrane mape bodo &lt;b&gt;odstranjene&lt;/b&gt; iz krajevnega datotečnega sistema in s tem računalnikom ne bodo več usklajevane!</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Uskladi vse</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Ne uskladi ničesar</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Uveljavi ročno narejene spremembe</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Uveljavi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Prekliči</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Vzpostavljena je povezava s strežnikom &lt;server&gt; kot &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Ni nastavljenega računa.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Dodaj novo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Odstrani</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Račun</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Izbor predmetov za usklajevanje</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Odstrani povezavo mape usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Ustvarjanje mape je spodletelo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Ni mogoče ustvariti krajevne mape &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Potrdi odstranjevanje povezave usklajevanja mape</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Odstrani povezavo usklajevanja mape</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Usklajevanje je v teku</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Izvaja se usklajevanje.&lt;br/&gt;Ali želite opravilo prekiniti?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 v uporabi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 kot &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Različica strežnika %1 je zastarela in ni več podprta! Nadaljujete na lastno odgovornost.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Povezano z %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Strežnik %1 trenutno ni dosegljiv.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Uspešno odjavljeno iz %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Ni povezave z %1 pri %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Prijava</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Zaznane so mape, ki zaradi velikosti niso bile usklajene: </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Potrdi odstranitev računa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Ali res želite odstraniti povezavo z računom &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Opomba:&lt;/b&gt; S tem &lt;b&gt;ne bo&lt;/b&gt; izbrisana nobena datoteka.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Odstrani povezavo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Odpri mapo</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Odjava</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Nadaljuj z usklajevanjem</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Premor usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Ali res želite zaustaviti usklajevanje mape &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Opomba:&lt;/b&gt; s tem datoteke iz odjemalca &lt;b&gt;ne bodo&lt;/b&gt; odstranjene.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) od %2 v uporabi. Nekatere mape, vključno s priklopljenimi mapami in mapami v souporabi, imajo morda različne omejitve.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 od %2 v uporabi</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Trenutno ni na voljo nobenih podatkov o porabi prostora.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Ni nastavljene povezave %1.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Odjavljeno</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Brez povezave</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Povezano</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Storitev ni na voljo</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Omrežna napaka</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Napaka nastavitve</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Neznano stanje računa</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Dejavnost strežnika</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Protokol usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Seznam prezrtih datotek ali datotek z napako</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopiraj</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiraj seznam opravil v odložišče.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Ni usklajeno</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Ni usklajeno (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Seznam opravil strežnika je kopiran v odložišče.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Seznam opravil usklajevanja je kopiran v odložišče.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Seznam neusklajenih predmetov je kopiran v odložišče.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Kopirano v odložišče</translation>
</message>
@@ -413,49 +428,49 @@
<translation>Besedilna oznaka</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Dejavnosti strežnika</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopiraj</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiraj seznam opravil v odložišče.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Zahtevano je dejanje: obvestila</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Za račun %1 možnosti opravil niso omogočene.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Prejeli ste %n novo obvestilo od %2.</numerusform><numerusform>Prejeli ste %n novi obvestili od %2.</numerusform><numerusform>Prejeli ste %n nova obvestila od %2.</numerusform><numerusform>Prejeli ste %n novih obvestil od %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Prejeli ste %n novo obvestilo od %1 in %2.</numerusform><numerusform>Prejeli ste %n novi obvestili od %1 in %2.</numerusform><numerusform>Prejeli ste %n nova obvestila od %1 in %2.</numerusform><numerusform>Prejeli ste %n novih obvestil od %1 in %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Prejeli ste nova obvestila prek %1, %2 in drugih računov.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
- <translation type="unfinished"/>
+ <translation>%1 obvestil ‒ zahtevajo odziv</translation>
</message>
</context>
<context>
@@ -486,12 +501,12 @@
<translation>Geslo potrdila:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Izberi potrdilo</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Vrste potrdil (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Zahtevana je overitev</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Vpišite uporabniško ime in geslo za &apos;%1&apos; pri %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Uporabnik:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Geslo:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Ni nastavljenega računa v oblaku ownCloud</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Nastavljen strežnik tega odjemalca je prestar.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Posodobite strežnik in ponovno zaženite odjemalca.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Napaka overitve: uporabniško ime ali geslo je napačno.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>časovni zamik</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Podana poverila niso pravilna.</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Povezava je časovno potekla</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Opravilo je bilo prekinjeno s strani uporabnika</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Krajevna mapa %1 ne obstaja.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 bi morala biti mapa, pa ni.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 ni mogoče brati.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>Datoteka %1 je odstranjena.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>Datoteka %1 je prejeta.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>Datoteka %1 je posodobljena.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>Datoteka %1 je preimenovana v %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>Datoteka %1 je premaknjena v %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteka %1 in še %n druga datoteka je bila izbrisana.</numerusform><numerusform>Datoteka %1 in še %n drugi datoteki sta bili izbrisani.</numerusform><numerusform>Datoteka %1 in še %n druge datoteke so bile izbrisane.</numerusform><numerusform>Datoteka %1 in še %n drugih datotek je bilo izbrisanih.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteka %1 in še %n druga datoteka je bila shranjena na disk.</numerusform><numerusform>Datoteka %1 in še %n drugi datoteki sta bili shranjeni na disk.</numerusform><numerusform>Datoteka %1 in še %n druge datoteke so bile shranjene na disk.</numerusform><numerusform>Datoteka %1 in še %n drugih datotek je bilo shranjenih na disk.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteka %1 in še %n druga datoteka je bila posodobljena.</numerusform><numerusform>Datoteka %1 in še %n drugi datoteki sta bili posodobljeni.</numerusform><numerusform>Datoteka %1 in še %n druge datoteke so bile posodobljene.</numerusform><numerusform>Datoteka %1 in še %n drugih datotek je bilo posodobljenih.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteka %1 je bila preimenovana v %2 in še %n druga datoteka je bila preimenovana.</numerusform><numerusform>Datoteka %1 je bila preimenovana v %2 in še %n drugi datoteki sta bili preimenovani.</numerusform><numerusform>Datoteka %1 je bila preimenovana v %2 in še %n druge datoteke so bile preimenovane.</numerusform><numerusform>Datoteka %1 je bila preimenovana v %2 in še %n drugih datotek je bilo preimenovanih.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteka %1 je bila premaknjena v %2 in še %n druga datoteka je bila premaknjena.</numerusform><numerusform>Datoteka %1 je bila premaknjena v %2 in še %n drugi datoteki sta bili premaknjeni.</numerusform><numerusform>Datoteka %1 je bila premaknjena v %2 in še %n druge datoteke so bile premaknjene.</numerusform><numerusform>Datoteka %1 je bila premaknjena v %2 in še %n drugih datotek je bilo premaknjenih.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Pri datoteki %1 in še %n drugi datoteki je zaznan spor usklajevanja.</numerusform><numerusform>Pri datoteki %1 in še %n drugih datotekah je zaznan spor usklajevanja.</numerusform><numerusform>Pri datoteki %1 in še %n drugih datotekah je zaznan spor usklajevanja.</numerusform><numerusform>Pri datoteki %1 in še %n drugih datotekah je zaznan spor usklajevanja.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
- <translation type="unfinished"/>
+ <translation>Pri datoteki %1 je zaznan spor usklajevanja. Preverite datoteko!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Datoteke %1 in še %n druge datoteke ni mogoče uskladiti zaradi napak. Podrobnosti so zapisane v dnevniški datoteki.</numerusform><numerusform>Datoteke %1 in še %n drugih datotek ni mogoče uskladiti zaradi napak. Podrobnosti so zapisane v dnevniški datoteki.</numerusform><numerusform>Datoteke %1 in še %n drugih datotek ni mogoče uskladiti zaradi napak. Podrobnosti so zapisane v dnevniški datoteki.</numerusform><numerusform>Datoteke %1 in še %n drugih datotek ni mogoče uskladiti zaradi napak. Podrobnosti so zapisane v dnevniški datoteki.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>Datoteke %1 zaradi napake ni mogoče uskladiti. Več podrobnosti je zabeleženih v dnevniški datoteki.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Dejavnost usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Ni mogoče prebrati sistemske izločitvene datoteke</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>Dodana je nova mapa, ki presega %1 MB: %2.
Med nastavitvami jo lahko izberete in označite za prejem.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,39 +715,41 @@ Mapa je bila morda odstranjena, ali pa so bile spremenjene nastavitve.
Ali ste prepričani, da želite izvesti to opravilo?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Ali naj bodo odstranjene vse datoteke?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Odstrani vse datoteke</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Ohrani datoteke</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation type="unfinished"/>
+ <translation>Z usklajevanjem bi se datoteke povrnile na predhodni čas usklajevanja mape &apos;%1&apos;.
+To se lahko zgodi, če je na strežniku na primer obnovljena varnostna kopija.
+Z nadaljevanjem usklajevanja bodo vse trenutne datoteke prepisane s starejšimi različicami. Ali želite ohraniti trenutne krajevne datoteke kot preimenovane datoteke v usklajevalnem sporu?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Varnostna kopija je zaznana</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Običajno usklajevanje</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Ohrani krajevne datoteke kot datoteke v sporu</translation>
</message>
@@ -740,112 +757,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Ni mogoče ponastaviti stanja mape</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Obstaja starejši dnevnik usklajevanja &apos;%1&apos;, vendar ga ni mogoče odstraniti. Preverite, ali je datoteka v uporabi.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(varnostna kopija)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(varnostna kopija %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Nedoločeno stanje.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Čakanje začetek usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Poteka priprava za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Usklajevanje je v teku.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Zadnje usklajevanje je bilo uspešno končano.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Zadnje usklajevanje je bilo sicer uspešno, vendar z opozorili za posamezne datoteke.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Napaka nastavitve.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Uporabniška prekinitev.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Usklajevanje je začasno v premoru.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (usklajevanje je v premoru)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Ni izbrane veljavne mape!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Izbrana pot ni mapa!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Ni ustreznih dovoljenj za pisanje v izbrano mapo!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Krajevna mapa %1 je že v določena za usklajevanje. Izbrati je treba drugo.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Krajevna mapa %1 že vključuje mapo, ki je določena za usklajevanje. Izbrati je treba drugo.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Krajevna mapa %1 je simbolna povezava. Cilj povezave že vsebuje mapo, ki je uporabljena pri povezavi usklajevanja mape. Izberite drugo.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Krajevna mapa %1 je že v določena za usklajevanje. Izbrati je treba drugo.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Krajevna mapa %1 je simbolna povezava. Cilj povezave že vsebuje mapo, ki je uporabljena pri povezavi usklajevanja mape. Izberite drugo.</translation>
</message>
@@ -871,127 +888,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Za dodajanje mape mora biti vzpostavljea povezava</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Kliknite za dodajanje mape za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Prišlo je do napake med nalaganjem datotek s strežnika.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Odjavljeno</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
- <translation type="unfinished"/>
+ <translation>Dodajanje mape je onemogočeno, ker se usklajojejo vse vaše datoteke. Če želite usklajevati več map, odstranite trenutno nastavljeno korensko mapo.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Poteka pridobivanje seznama map s strežnika ...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Preverjanje za spremembe v &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Usklajevanje %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>prejemanje %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>pošiljanje %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 od %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation type="unfinished"/>
+ <translation>Preostalo še %5, %1 od %2, datoteka %3 od %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 od %2, datoteka %3 od %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>datoteka %1 od %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Čakanje na povezavo ...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>V pripravi je %n druga map ...</numerusform><numerusform>V pripravi sta %n drugi mapi ...</numerusform><numerusform>V pripravi so %n druge mape ...</numerusform><numerusform>V pripravi je %n drugih map ...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Priprava na usklajevanje ...</translation>
</message>
@@ -1104,22 +1127,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ni prejete oznake s strežnika. Preveriti je treba podatke posredovalnega strežnika ali prehoda.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Prejeta je različna oznaka za nadaljevanje opravila. Ponovni poskus bo izveden kasneje.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Odziv strežnika kaže na neveljaven obseg vsebine</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Povezava je časovno potekla</translation>
</message>
@@ -1201,27 +1224,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Vpisati je treba geslo:
-
-Uporabnik: %2
-Račun: %3</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Vnesite geslo %1:&lt;br&gt;&lt;br&gt;Uporabnik: %2&lt;br&gt;Račun: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Branje iz ključa je spodletelo z napako: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Vnos gesla</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Kliknite tu&lt;/a&gt; za dodelitev gesla za program prek spletnega vmesnika.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1266,7 +1287,7 @@ Račun: %3</translation>
<translation>Odstrani</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1275,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi njih brisanje mape ni mogoče. Možnost je uporabna pri metapodatkih.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Datoteke ni mogoče odpreti</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Ni mogoče zapisati sprememb v &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Dodaj vzorec za izpuščanje</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Dodaj nov vzorec za izpuščanje:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Ta vnos je ponujen pri &apos;%1&apos; in ga v tem pogledu ni mogoče spreminjati.</translation>
</message>
@@ -1369,7 +1390,7 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Povezava je potekla</translation>
</message>
@@ -1485,32 +1506,32 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
<translation>Samodejno omeji</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Ime gostitelja posredniškega strežnika</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Uporabniško ime za posredniški strežnik</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Geslo za posredniški strežnik</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>Posredniški strežnik HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>Posredniški strežnik SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Za uporabo omejevanja pasovne širine je zahtevana različica Qt &gt;= 5.4</translation>
</message>
@@ -1518,26 +1539,26 @@ Predmeti na mestu, kjer je brisanje dovoljeno, bodo izbisani, v kolikor zaradi n
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Ustvarjeno ob %1$s</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>V nekaj sekundah bo izvedeno zapiranje ...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%1 zahteva spodletela na %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>&apos;%1&apos; izbrano na %2</translation>
</message>
</context>
<context>
@@ -1672,25 +1693,25 @@ zahteva skrbniška dovoljenja za dokončanje opravila.</translation>
<translation>Nastavitev odjemalčevega potrdila TLS</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Povezovanje z navedenim naslovom varnega strežnika &lt;em&gt;%1&lt;/em&gt; je spodletelo. Kako želite nadaljevati?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;Elektronski naslov</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Vzpostavi povezavo s strežnikom %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Vpiši uporabniška poverila</translation>
</message>
@@ -1728,139 +1749,139 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Uspešno vzpostavljena povezava z %1: %2 različica %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Povezava z %1 pri %2 je spodletela:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Prekinitev med poskusom povezave na %1 pri %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Poteka poskus povezave z %1 na %2 ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Zahteva za overitev s strežnikom je bila preusmerjena na &apos;%1&apos;. Naslov URL ni veljaven ali pa strežnik ni ustrezno nastavljen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Prejet je neveljaven odziv na zahtevo overitve webdav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Strežnik ne dovoli dostopa. Če želite preveriti, ali imate ustrezen dostop, &lt;a href=&quot;%1&quot;&gt;kliknite tu&lt;/a&gt; za dostop do te storitve z brskalnikom.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Krajevna mapa %1 že obstaja. Nastavljena bo za usklajevanje.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Ustvarjanje mape za krajevno usklajevanje %1 ... </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>je v redu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>je spodletelo.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Krajevne mape %1 ni mogoče ustvariti.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Ni navedenega oddaljenega strežnika!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Napaka: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>ustvarjanje mape v oblaku ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Oddaljena mapa %1 je uspešno ustvarjena.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Oddaljena mapa %1 že obstaja. Vzpostavljena bo povezava za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Ustvarjanje mape je povzročilo napako HTTP %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Ustvarjanje mape na oddaljenem naslovu je spodletelo zaradi napačnih poveril. &lt;br/&gt;Vrnite se in preverite zahtevana gesla.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Ustvarjanje oddaljene mape je spodletelo. Najverjetneje je vzrok v neustreznih poverilih.&lt;/font&gt;&lt;br/&gt;Vrnite se na predhodno stran in jih preverite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Ustvarjanje oddaljene mape %1 je spodletelo z napako &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Povezava za usklajevanje med %1 in oddaljeno mapo %2 je vzpostavljena.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Povezava z %1 je uspešno vzpostavljena!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Povezave z %1 ni mogoče vzpostaviti. Preveriti je treba nastavitve.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Preimenovanje mape je spodletelo</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Mape ni mogoče odstraniti niti ni mogoče ustvariti varnostne kopije, saj je mapa oziroma dokument v njej odprt z drugim programom. Zaprite mapo/dokument ali prekinite namestitev.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Krajevno usklajena mapa %1 je uspešno ustvarjena!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1868,12 +1889,12 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Čarovnik za povezavo %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Preskoči nastavitve map</translation>
</message>
@@ -1899,7 +1920,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Povezava časovno pretekla</translation>
</message>
@@ -1907,7 +1928,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Neveljaven odziv JSON prek naslova</translation>
</message>
@@ -1915,55 +1936,55 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Datoteke %1 ni mogoče prejeti zaradi neskladja z imenom krajevne datoteke!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Prejem bi zmanjšal prostor na disku pod %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
- <translation>Prostor na disku je manjši od %1</translation>
+ <translation>Na disku je prostora manj kot %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Datoteka je izbrisana s strežnika</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
- <translation>Datoteke ni mogoče v celoti prejeti.</translation>
+ <translation>Datoteke ni mogoče prejeti v celoti.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
- <translation type="unfinished"/>
+ <translation>Prejeta datoteka je prazna, čeprav je na strežniku velikosti %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Datoteke %1 ni mogoče shraniti zaradi neskladja z imenom obstoječe datoteke!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
- <translation>Datoteka je bila po spremenjena po usklajevanju seznama datotek.</translation>
+ <translation>Datoteka je bila spremenjena po usklajevanju seznama datotek</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
</message>
@@ -1978,7 +1999,7 @@ Uporaba ni priporočljiva.</translation>
<message>
<location filename="../src/libsync/owncloudpropagator.cpp" line="148"/>
<source>Continue blacklisting:</source>
- <translation type="unfinished"/>
+ <translation>Nadaljuj z blokiranjem prek črnega seznama:</translation>
</message>
<message>
<location filename="../src/libsync/owncloudpropagator.cpp" line="241"/>
@@ -2035,7 +2056,8 @@ Uporaba ni priporočljiva.</translation>
<translation>Datoteke %1 ni mogoče preimenovati v %2 zaradi že obstoječe datoteke s tem imenom.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
</message>
@@ -2043,12 +2065,12 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Datoteka je bila odstranjena iz mesta v souporabi, vendar je uspešno obnovljena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>S strežnika je vrnjen neveljaven odziv HTTP. Pričakovan je 204, prejet pa je bil &quot;%1 %2&quot;.</translation>
</message>
@@ -2069,78 +2091,119 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Te mape ni dovoljeno preimenovati, zato bo samodejno preimenovana v izvorno ime.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Te mape ni dovoljeno preimenovati. Preimenujte jo nazaj na privzeto vrednost.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Datoteka je preimenovana, vendar je označena za souporabo le za branje. Obnovljena je izvirna datoteka.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>S strežnika je vrnjen neveljaven odziv HTTP. Pričakovan je 201, prejet pa je bil &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Datoteka je odstranjena</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Krajevna datoteka je bila med usklajevanjem spremenjena. Usklajena bo, ko bo shranjena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Krajevna datoteka je bila med usklajevanjem spremenjena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Vsiljevanje prekinitve posla na prekinitvi povezave HTTP s Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Krajevna datoteka je bila med usklajevanjem odstranjena.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Krajevna datoteka je bila med usklajevanjem spremenjena.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
<translation type="unfinished"/>
</message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Vsiljevanje prekinitve posla na prekinitvi povezave HTTP s Qt &lt; 5.4.2.</translation>
+ </message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>Datoteka je bila krajevno spremenjena, vendar pa je označena za souporabo le za branje. Izvorna datoteka je obnovljena, vaše spremembe pa so zabeležene v datoteki spora.</translation>
+ <translation>Datoteka je bila krajevno spremenjena, čeprav je označena le za branje. Izvorna datoteka je obnovljena, narejene spremembe pa so zabeležene v datoteki spora.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
- <translation type="unfinished"/>
+ <translation>Manjka naslov URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Krajevna datoteka je bila med usklajevanjem odstranjena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Strežnik ne sprejme zadnjega paketa (ni navedene e-oznake)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Krajevna datoteka je bila med usklajevanjem spremenjena.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Napaka zapisovanja metapodatkov v podatkovno zbirko</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Strežnik ne sprejme zadnjega paketa (ni navedene e-oznake)</translation>
</message>
</context>
<context>
@@ -2156,42 +2219,42 @@ Uporaba ni priporočljiva.</translation>
<translation>Besedilna oznaka</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Datoteka</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Mapa</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Dejanje</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Velikost</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Krajevni protokol usklajevanja</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopiraj</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiraj seznam opravil v odložišče.</translation>
</message>
@@ -2244,7 +2307,7 @@ Uporaba ni priporočljiva.</translation>
<message>
<location filename="../src/gui/selectivesyncdialog.cpp" line="417"/>
<source>Choose What to Sync: Deselect remote subfolders you do not wish to synchronize.</source>
- <translation type="unfinished"/>
+ <translation>Izberite, kaj želite uskladiti: Odstranite izbor oddaljenih map, ki jih ne želite imeti na tem računalniku.</translation>
</message>
<message>
<location filename="../src/gui/selectivesyncdialog.cpp" line="423"/>
@@ -2289,22 +2352,22 @@ Uporaba ni priporočljiva.</translation>
<translation>Nastavitve</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Dejavnosti</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Splošno</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Omrežje</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Račun</translation>
</message>
@@ -2312,27 +2375,27 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Dejavnosti</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Splošno</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Omrežje</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Račun</translation>
</message>
@@ -2347,7 +2410,7 @@ Uporaba ni priporočljiva.</translation>
<message>
<location filename="../src/gui/sharedialog.ui" line="28"/>
<source>share label</source>
- <translation type="unfinished"/>
+ <translation>deli oznako</translation>
</message>
<message>
<location filename="../src/gui/sharedialog.ui" line="14"/>
@@ -2360,34 +2423,34 @@ Uporaba ni priporočljiva.</translation>
<translation>Pot do OwnCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 souporaba datotek</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Mapa: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Strežnik ne podpira souporabe</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Pridobivanje največjega mogočega števila dovoljenj za souporabo prek strežnika ...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
- <translation type="unfinished"/>
+ <translation>Datoteke ni mogoče dodeliti v souporabo, ker ni navedenih ustreznih dovoljenj.</translation>
</message>
</context>
<context>
@@ -2424,43 +2487,58 @@ Uporaba ni priporočljiva.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;Pošlji povezavo prek elektronske pošte</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>&amp;Kopiraj povezavo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Dovoli urejanje</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Zaščiti z geslom</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Zaščiteno z geslom</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
- <translation type="unfinished"/>
+ <translation>Datoteke ni mogoče dodeliti v souporabo, ker je ni navedenih ustreznih dovoljenj.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Javna omogočanje &amp;souporabe zahteva geslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Določite geslo</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Ni mogoče odpreti odjemalca elektronske pošte</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Prišlo je do napake med zaganjanjem odjemalca elektronske pošte za ustvarjanje novega sporočila. Najverjetneje ni nastavljen privzet programski paket.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>Povezava za &amp;souporabo</translation>
</message>
@@ -2478,7 +2556,7 @@ Uporaba ni priporočljiva.</translation>
<translation>Souporaba z uporabniki ali skupinami ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Ni zadetkov za &apos;%1&apos;</translation>
</message>
@@ -2511,17 +2589,17 @@ Uporaba ni priporočljiva.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>ustvari</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>spremeni</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>izbriši</translation>
</message>
@@ -2529,12 +2607,12 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Napaka prijave</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Prijaviti se je treba kot uporabnik %1</translation>
</message>
@@ -2542,17 +2620,22 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Overitev</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Pogled razhroščevalnika šifer SSL</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Zahtevano je vnovično overjanje istovetnosti</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Seja je potekla. Ponovno se je treba prijaviti in nadaljevati z uporabo odjemalca.</translation>
</message>
@@ -2560,7 +2643,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Omogoči souporabo z %1</translation>
@@ -2569,119 +2652,119 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Podrobnosti potrdila&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Splošno ime (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Druga imena:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Ustanova (U):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organizacijska enota (OE):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Okraj:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Država:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Zaporedna številka:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Izdaljatelj&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Izdaljatelj:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Izdano na:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Poteče na:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Prstni odtisi&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Opomba:&lt;/b&gt; to potrdilo je bilo ročno odobreno&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (samopodpisano)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Ta povezava je šifrirana z %1 bitnim %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Ni podpore za določila in karte ključe SSL</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Podrobnosti potrdila:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Ta povezava NI varna, saj ni šifrirana.
@@ -2769,270 +2852,275 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Uspešno končano.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
- <translation type="unfinished"/>
+ <translation>Nalaganje dnevniške datoteke s CSync je spodletelo. Dnevniška datoteka je okvarjena.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Vstavka %1 za CSync ni mogoče naložiti.&lt;br/&gt;Preverite namestitev!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>Pri obdelavi notranje drevesne strukture s CSync je prišlo do napake.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>Vpisovanje prostora v pomnilniku za CSync je spodletelo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>Usodna napaka parametra CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>Korak opravila posodobitve CSync je spodletel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>Korak opravila poravnave CSync je spodletel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>Overitev CSync na posredniškem strežniku je spodletela.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>Poizvedba posredniškega strežnika s CSync je spodletela.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>Overitev CSync pri strežniku %1 je spodletela.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>Povezava CSync v omrežje je spodletela.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Omrežna povezava je časovno potekla.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Prišlo je do napake med prenosom HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Priklopljena mapa trenutno ni na voljo na strežniku</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Med odpiranjem mape je prišlo do napake.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Napaka med branjem mape</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Datoteka/Mapa je prezrta, ker je skrita.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Le %1 je na voljo, zahtevanih pa je vaj %2 za zagon</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje starševske mape</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Dejanje ni dovoljeno, ker ni ustreznih dovoljenj za dodajanje datotek v to mapo</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>Odziv CSync: na strežniku %1 ni razpoložljivega prostora.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Nedoločena napaka CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Opravilo je bilo prekinjeno s strani uporabnika</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Ime datoteke vsebuje neveljavne znake, ki jih ni mogoče uskladiti na vseh okoljih.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>Dostop s CSync je spodletel</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
- <translation type="unfinished"/>
+ <translation>Nalaganje ali ustvarjanje dnevniške datoteke s CSync je spodletelo. Za to opravilo so zahtevana dovoljenja branja in zapisovanja krajevne mape za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
- <translation type="unfinished"/>
+ <translation>Delovanje CSync je zaradi nerazrešenih dovoljenj spodletelo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
- <translation type="unfinished"/>
+ <translation>Ustvarjanje mape s CSync je spodletelo. Mapa že obstaja.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Storitev trenutno ni na voljo</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Dostop je prepovedan.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Prišlo je do notranje napake %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Predmet ni usklajen zaradi predhodne napake: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Usklajevanje simbolnih povezav ni podprto.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Datoteka je na seznamu prezrtih datotek.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Datoteka vsebuje pripete presledne znake</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Ime datoteke je predolgo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
- <translation type="unfinished"/>
+ <translation>Določanje statističnih podatkov je spodletelo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Kodni zapis imena datoteke ni veljaven.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Uporabljen je neveljaven znak; preimenujte &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Dnevnika usklajevanja ni mogoče začeti.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Ni mogoče prebrati črnega seznama iz krajevne mape</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Ni mogoče brati iz dnevnika usklajevanja</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Ni mogoče odpreti dnevnika usklajevanja</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Ime datoteke vsebuje vsaj en neveljaven znak.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Prezrto, ker je predmet označen na črni listi za usklajevanje</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Dejanje ni dovoljeno! Ni ustreznih dovoljenj za dodajanje podmap v to mapo.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Ni dovoljeno pošiljati te datoteke, ker ima določena dovoljenja le za branje. Datoteka bo obnovljena na izvorno različico.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Odstranitev ni dovoljena, datoteka bo obnovljena.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Krajevne datoteke in mape v souporabi so odstranjene.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Premikanje ni dovoljeno, datoteka bo obnovljena.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Premikanje ni dovoljeno, ker je nastavljeno določilo %1 le za branje.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>cilj</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>vir</translation>
</message>
@@ -3056,17 +3144,17 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Različica %1. Za več podrobnosti si oglejte &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Avtorske pravice ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Avtorske pravice ownCloud, GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Programski paket objavlja %1 pod pogoji Splošnega javnega dovoljenja GNU (GNU General Public License - GPL), različice 2.0.&lt;br&gt;%2 in logotip %2 sta blagovni znamki %1 v Združenih državah, drugih državah ali oboje.&lt;/p&gt;</translation>
</message>
@@ -3092,202 +3180,217 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Pred nadaljevanjem je zahtevana prijava</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Mapa %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Ni nastavljenih map za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Ni nastavljenih map za usklajevanje.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Odpri v brskalniku</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Prijava ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Odjava</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Nedavne spremembe</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Preverjanje za spremembe v &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Upravljane mape:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Odpri mapo &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Odpri %1 v brskalniku</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Neznano stanje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Nastavitve ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Podrobnosti ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Pomoč</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Končaj %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Prekinjena povezava z %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Nepodprta različica strežnika</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
- <translation type="unfinished"/>
+ <translation>Na strežniku računua %1 teče starejša nepodprta različica %2. Z uporabo trenutno nameščenega odjemalca z nepodporo različico strežnika ni varno. Nadaljujete na lastno odgovornost.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Prekinjena je povezava z računi:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Račun %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Usklajevanje računa je onemogočeno</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Nadaljuj usklajevanje vseh map</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Ustavi usklajevanje vseh map</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Nadaljuj usklajevanje vsega</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Nadaljuj usklajevanje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Ustavi vse usklajevanje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Ustavi usklajevanje</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Odjavi vse račune</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Prijavi z vsemi računi ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Sesuj zdaj</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Ni nedavno usklajenih predmetov</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Poteka usklajevanje %1 od %2 (preostaja %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Poteka usklajevanje %1 od %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Usklajevanje %1 (%2 do konca)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Usklajevanje %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Ni posodobitev</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Različica %2. Več podrobnosti je zabeleženih na &lt;a href=&apos;%3&apos;&gt;%4&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;Avtorstvo: Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz in drugi.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Avtorske pravice ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Programski paket je objavljen z dovoljenjem GNU General Public License (GPL) Version 2.0.&lt;br/&gt;ownCloud in logotip ownCloud sta blagovni znamki ownCloud v Združenih državah, drugih državah ali oboje.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Različica %2. Več podrobnosti je mogoče najti na &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Znane težave in pomoč je na voljo na povezavi &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;Avtorstvo: Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt in drugi.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Avtorske pravice ownCloud GmbH&lt;/p&gt;&lt;p&gt;Programski paket je objavljen z dovoljenjem GNU General Public License (GPL), različice 2.0.&lt;br/&gt;Znamka in logotip ownCloud sta blagovni znamki družbe ownCloud GmbH v Združenih državah, drugih državah ali obojih.&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3302,9 +3405,9 @@ Uporaba ni priporočljiva.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Besedilna oznaka</translation>
</message>
@@ -3324,7 +3427,7 @@ Uporaba ni priporočljiva.</translation>
<translation>Začni s &amp;svežim usklajevanjem (izbriše krajevno mapo!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Izbor datotek za usklajevanje</translation>
</message>
@@ -3349,7 +3452,7 @@ Uporaba ni priporočljiva.</translation>
<translation>Uskladi &amp;vse datoteke s strežnika</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Sporočilo stanja</translation>
</message>
@@ -3362,26 +3465,15 @@ Uporaba ni priporočljiva.</translation>
<translation>Obrazec</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Uporabniško ime</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Geslo</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Oznaka napake</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Besedilna oznaka</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3498,7 +3590,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3506,37 +3598,37 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>v prihodnje</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n dnevom</numerusform><numerusform>pred %n dnevoma</numerusform><numerusform>pred %n dnevi</numerusform><numerusform>pred %n dnevi</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n uro</numerusform><numerusform>pred %n urama</numerusform><numerusform>pred %n urami</numerusform><numerusform>pred %n urami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>zdaj</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Pred manj kot minuto</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>pred %n minuto</numerusform><numerusform>pred %n minutama</numerusform><numerusform>pred %n minutami</numerusform><numerusform>pred %n minutami</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Pred nekaj časa</translation>
</message>
@@ -3544,57 +3636,57 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n leto</numerusform><numerusform>%n leti</numerusform><numerusform>%n leta</numerusform><numerusform>%n let</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n mesec</numerusform><numerusform>%n meseca</numerusform><numerusform>%n meseci</numerusform><numerusform>%n mesecev</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n dan</numerusform><numerusform>%n dneva</numerusform><numerusform>%n dnevi</numerusform><numerusform>%n dni</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n ura</numerusform><numerusform>%n uri</numerusform><numerusform>%n ure</numerusform><numerusform>%n ur</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n minuta</numerusform><numerusform>%n minuti</numerusform><numerusform>%n minute</numerusform><numerusform>%n minut</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n sekunda</numerusform><numerusform>%n sekundi</numerusform><numerusform>%n sekunde</numerusform><numerusform>%n sekund</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3615,7 +3707,7 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Izgrajeno na osnovi predelave Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; na %3, %4 z uporabo Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3623,82 +3715,92 @@ Uporaba ni priporočljiva.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Prejeto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Poslano</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Strežniška različica je prejeta, kopirana v datoteko sporov pa je bila tudi spremenjena krajevna datoteka</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Izbrisano</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Premaknjeno v %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Prezrto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Napaka dostopa do datotečnega sistema</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Napaka</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Posodobljeni krajevni metapodatki</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Neznano</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>prejemanje</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>pošiljanje</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>brisanje</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>premikanje</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>Prezrto</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>napaka</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>posodabljanje krajevnih metapodatkov</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_sr.ts b/translations/client_sr.ts
index e867e4ac4..8a463aabf 100644
--- a/translations/client_sr.ts
+++ b/translations/client_sr.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="sr" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sr" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Одредишни фајл има неочекивану величину или време измене</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Неозначене фасцикле биће &lt;b&gt;уклоњене&lt;/b&gt; из локалног фајл-система и више се неће синхронизовати на овом рачунару</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Примени</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Одустани</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Повезан са &lt;server&gt; као &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Није подешен налог.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Додај нови</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Уклони</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Налог</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Изаберите шта синхронизовати</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Прављење фасцикле није успело</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Не могу да направим локалну фасциклу &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Синхронизација у току</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Синхронизација је у току.&lt;br/&gt;Желите ли да је прекинете?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 искоришћено</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 као &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Повезан са %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Сервер %1 је привремено недоступан.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Одјављен са %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Пријава</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Нове фасцикле нису синхронизоване јер су превелике:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Потврда уклањања налога</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Уклони везу</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Отвори фасциклу</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Одјава</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Настави синхронизацију</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Паузирај синхронизацију</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Желите ли заиста да престанете са синхронизацијом фасцикле &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Напомена:&lt;/b&gt; Ово &lt;b&gt;неће&lt;/b&gt; обрисати ниједан фајл.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) од %2 искоришћено. Неке фасцикле, укључујући мрежно монтиране или дељене фасцикле, могу имати друга ограничења.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1% од %2 искоришћено</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Тренутно нема доступних података о заузећу складишта.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Нема подешене %1 везе.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Одјављен</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Неповезан</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Повезан</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Услуга није доступна</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Грешка мреже</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Грешка подешавања</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Непознато стање налога</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Активност сервера</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Протокол синхронизације</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Списак занемарених или фајлова са грешком</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Копирај</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Копирај активност у клипборд.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Несинхронизовано</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Копирано у клипборд</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Текст ознака</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Активности сервера</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Копирај</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Копирај активност у клипборд.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Налог %1 нема укључене активности.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>Лозинка сертификата:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Изаберите сертификат</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Фајлови сертификата (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Потребна аутентификација</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Унесите корисничко име и лозинку за „%1“ на %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Корисник:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Лозинка:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Нема подешеног оунКлауд налога</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Подешени сервер је сувише стар за ову верзију клијента</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Ажурирајте сервер и поново покрените клијента.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Грешка аутентификације: лозинка или корисничко име су погрешни.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>истек времена</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Дати акредитиви нису исправни</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Време повезивања истекло</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Прекинуо корисник</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Локална фасцикла %1 не постоји.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 би требало да је фасцикла али није.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 није читљив.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 је уклоњен.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 је преузет.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 је ажуриран.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 је преименован у %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 је премештен у %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 није синхронизован због грешке. Погледајте записник за детаље.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Активност синхронизације</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Не могу да прочитам системски списак за игнорисање</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Уклонити све фајлове?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Уклони све фајлове</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Остави фајлове</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Не могу да ресетујем стање фасцикле</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Пронађен је стари журнал синхронизације „%1“ али се не може уклонити. Проверите да га нека апликација тренутно не користи.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (резерва)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (резерва %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Неодређено стање.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Припремам синхронизацију.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Синхронизација у току.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Последња синхронизација је била успешна.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Последња синхронизација је била успешна али са упозорењима за поједине фајлове.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Грешка подешавања.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Корисник прекинуо.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Синхронизација је паузирана.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (синхронизација паузирана)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Немате дозволе за упис у изабрану фасциклу!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Одјављен</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Добављам списак фасцикли са сервера...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Проверавам измене у „%1“</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>„%1“</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Синхронизујем %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>преузми %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>отпреми %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 од %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>фајл %1 од %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Чекам...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Припремам синхронизацију...</translation>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Нема е-ознаке са сервера. Проверите прокси или мрежни излаз</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Добијена је различита е-ознака за наставак преноса. Покушаћу поново следећи пут.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Сервер је вратио погрешан опсег садржаја</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Време за повезивање је истекло</translation>
</message>
@@ -1198,28 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Унесите %1 лозинку:
-
-Корисник: %2
-Налог: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Унесите лозинку</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1264,34 +1282,34 @@ Account: %3
<translation>Уклони</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Не могу да отворим фајл</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Не могу да упишем измене у „%1“</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Додавање шаблона за игнорисање</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Додајте нови шаблон за игнорисање:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Овај унос је системски из „%1“ и не може се овде изменити.</translation>
</message>
@@ -1365,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Време повезивања истекло</translation>
</message>
@@ -1481,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>сам ограничи</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>назив прокси сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>корисничко име за прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>лозинка за прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>ХТТП(С) прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>СОКС-5 прокси</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1514,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1668,7 +1686,7 @@ for additional privileges during the process.</source>
<translation>Подеси клијентски ТЛС сертификат</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Не могу да се повежем на сигурну адресу сервера &lt;em&gt;%1&lt;/em&gt;. Како желите да наставите?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1676,17 +1694,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Повежи %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Унесите корисничке акредитиве</translation>
</message>
@@ -1724,139 +1742,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Успешно повезан са %1: %2 верзија %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Неуспешно повезивање са %1 на %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Време је истекло у покушају повезивања са %1 на %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Покушавам да се повежем са %1 на %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Аутентификован захтев серверу је преусмерен на %1. УРЛ је лош, сервер је лоше подешен.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Добијен је неисправан одговор на аутентификовани ВебДАВ захтев</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Сервер није дозволио приступ. Да проверите имате ли исправан приступ, &lt;a href=&quot;%1&quot;&gt;кликните овде&lt;/a&gt; да бисте приступили услузи из прегледача.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Локална фасцикла %1 већ постоји. Одређујем је за синхронизацију.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Правим локалну фасциклу синхронизације %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>у реду</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>неуспешно</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Не могу да направим локалну фасциклу %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Није наведена удаљена фасцикла!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Грешка: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>правим фасциклу у облаку: % 1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Удаљена фасцикла %1 је успешно направљена.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Удаљена фасцикла %1 већ постоји. Повезујем се ради синхронизовања.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Прављење фасцикле довело је до ХТТП грешке са кодом %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Прављење удаљене фасцикле није успело због погрешних акредитива!&lt;br/&gt;Идите назад и проверите ваше акредитиве.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Прављење удаљене фасцикле није успело због погрешних акредитива.&lt;/font&gt;&lt;br/&gt;Идите назад и проверите ваше акредитиве.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Прављење удаљене фасцикле %1 није успело због грешке &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>Веза за синхронизацију %1 до удаљеног директоријума %2 је подешена.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Успешно повезан са %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Не може се успоставити веза са %1. Проверите поново.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Преименовање није успело</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Не могу да уклоним и направим резервну копију фасцикле јер су фасцикла или фајл отворени у другом програму. Затворите фасциклу или фајл и покушајте поново или одустаните од подешавања.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Локална фасцикла за синхронизовање %1 је успешно направљена!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1864,12 +1882,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 чаробњак повезивања</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Прескочи подешавање фасцикли</translation>
</message>
@@ -1895,7 +1913,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Веза је истекла</translation>
</message>
@@ -1903,7 +1921,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Неисправан ЈСОН одговор са адресе упита</translation>
</message>
@@ -1911,55 +1929,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Фајл %1 се не може преузети јер се судара са називом локалног фајла!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Фајл је обрисан са сервера</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Фајл није могао бити преузет у потпуности.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Фајл %1 се не може сачувати јер се судара са називом локалног фајла!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Фајл је измењен у међувремену</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2031,7 +2049,8 @@ It is not advisable to use it.</source>
<translation>Фајл %1 се не може преименовати у %2 због сударања са називом локалног фајла</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2039,12 +2058,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Фајл је уклоњен из дељења које је само за читање. Зато је враћен.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Сервер је вратио лош ХТТП код. Очекивано је 204 али је примљено „%1 %2“.</translation>
</message>
@@ -2065,77 +2084,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Ова фасцикла се не сме преименовати. Зато је враћен првобитни назив.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Ова фасцикла се не сме преименовати. Молим вас вратите назив у „Shared“.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Фајл је био преименован али је део дељења које је само за читање. Оригинални фајл је враћен.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Сервер је вратио лош ХТТП код. Очекивано је 201 али је примљено „%1 %2“.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Фајл уклоњен</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Локални фајл је измењен током синхронизације. Биће настављена.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Локални фајл измењен током синхронизације.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Присили прекид посла код прекида ХТТП везе са КуТ &lt; 5.4.2</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Локални фајл је уклоњен током синхронизације.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локални фајл измењен током синхронизације.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Присили прекид посла код прекида ХТТП везе са КуТ &lt; 5.4.2</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Адреса упита недостаје</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Локални фајл је уклоњен током синхронизације.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локални фајл измењен током синхронизације.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2152,42 +2212,42 @@ It is not advisable to use it.</source>
<translation>Текст ознака</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>време</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>фајл</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>фасцикла</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>радња</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>величина</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Локални протокол синхронизације</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Копирај</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Копирај активност у клипборд.</translation>
</message>
@@ -2285,22 +2345,22 @@ It is not advisable to use it.</source>
<translation>Поставке</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Активност</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Опште</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Мрежа</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Налог</translation>
</message>
@@ -2308,27 +2368,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Активност</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Опште</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Мрежа</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Налог</translation>
</message>
@@ -2356,32 +2416,32 @@ It is not advisable to use it.</source>
<translation>оунКлауд путања:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 дељење</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Фасцикла: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Фајл се не може делити јер је подељен без дозволе за поновно дељење.</translation>
</message>
@@ -2420,43 +2480,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Копирај &amp;везу</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>уређивање</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Заштићено лозинком</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Заштићено лозинком</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Фајл се не може делити јер је подељен без дозволе за поновно дељење.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Јавно дељење з&amp;хтева лозинку</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Поставите лозинку</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Веза дељења</translation>
</message>
@@ -2474,7 +2549,7 @@ It is not advisable to use it.</source>
<translation>Дели са корисницима или групама...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2507,17 +2582,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>направи</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>измени</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>обриши</translation>
</message>
@@ -2525,12 +2600,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Грешка пријављивања</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Морате се пријавити као %1</translation>
</message>
@@ -2538,17 +2613,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - аутентификација</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Неопходна поновна аутентификација</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Ваша сесија је истекла. Поново се пријавите да бисте наставили да користите клијента.</translation>
</message>
@@ -2556,7 +2636,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Подели са %1</translation>
@@ -2565,119 +2645,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Детаљи сертификата&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Уобичајено име:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Алтернативно име:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Организација:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Организациона јединица:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Покрајина/провинција:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Земља:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Серијски број:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Издавач&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Издавач:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Издат:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Истиче:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Отисци&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>МД 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>СХА-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>СХА-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Напомена:&lt;/b&gt; Овај сертификат је ручно одобрен&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (самопотписан)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Ова веза је шифрована %1-битним %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Подаци о сертификату:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Ова веза НИЈЕ безбедна јер није шифрована.
@@ -2765,270 +2845,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Успешно.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync не може да учита фајл дневника. Фајл дневника је оштећен.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Прикључак %1 за csync се не може учитати.&lt;br/&gt;Проверите инсталацију!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync има грешку при обради интерног стабла.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync не може да резервише меморију.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync фатална грешка параметара.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync није успео да ажурира корак процесирања.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync није успео да усклади корак процесирања.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync не може да се аутентификује на проксију.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync не налази прокси или сервер.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync не може да се аутентификује на %1 серверу.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync не може да приступи мрежи.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Истекло је време за повезивање.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Дошло је до грешке ХТТП преноса.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: нема простора на %1 серверу.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync недефинисана грешка.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Прекинуо корисник</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync није приступио</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Услуга је привремено недоступна</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Приступ је забрањен</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Десила се интерна грешка број %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Ставка није синхронизована због ранијих грешака: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Симболичке везе нису подржане у синхронизацији.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Фајл се налази на листи за игнорисање.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Назив фајла је предугачак.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Кодирање назива фајла није исправно</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Није могуће покренути у синхронизацију дневника.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Не могу да отворим дневник синхронизације</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Назив садржи бар један недозвољен карактер</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Игнорисано јер се не налази на листи за синхронизацију</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Није могуће отпремити овај фајл јер је на серверу само за читање. Враћам</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Није могуће уклањање. Враћам</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Локални фајлови и дељена фасцикла су уклоњени.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Премештање није дозвољено. Ставка је враћена</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Премештање није дозвољено јер %1 је само за читање</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>одредиште</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>извор</translation>
</message>
@@ -3052,17 +3137,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Верзија %1. За више информација посетите &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Ауторска права оунКлауд (ownCloud), корпорација&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Дистрибуира %1 под ГНУ општом јавном лиценцом (ОЈЛ) верзија 2.0.&lt;br/&gt;%2 и %2 лого су регистроване марке %1 у САД, другим земљама или обоје&lt;/p&gt;</translation>
</message>
@@ -3088,202 +3173,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Пријавите се</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Фасцикла %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Нема подешених фасцикли за синхронизацију.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Нема подешених фасцикли за синхронизацију.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Отвори у прегледачу</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Пријави се...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Одјава</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Недавне измене</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Проверавам измене у „%1“</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Управљане фасцикле:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Отвори фасциклу „%1“</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Отвори %1 у прегледачу</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Непознато стање</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Поставке...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Детаљи...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Помоћ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Напусти %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Одјављен са %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Одјављен са налога:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Налог %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Одјави се са свих налога</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Пријави се на све налоге...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Падни сада</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Ништа није недавно синхронизовано</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Синхронизујем %1 од %2 (преостало %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Синхронизујем %1 (преостало %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Синхронизујем %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Ажурно</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Верзија %2. За више информација посетите &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Клас Фрајтаг (Klaas Freitag), Данијел Мелкентин (Daniel Molkentin), Жан-Кристоф Боршар (Jan-Christoph Borchardt), Оливије Гофар (Olivier Goffart), Маркус Гец (Markus Götz) и остали.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Ауторска права ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Лиценцирано под ГНУ Општом јавном лиценцом ОЈЛ (GPL) верзије 2.0&lt;br/&gt;оунКлауд и оунКлауд логотип су регистроване робне марке ownCloud, Inc. у САД, другим земљама, или обоје.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3298,9 +3398,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Текст ознака</translation>
</message>
@@ -3320,7 +3420,7 @@ It is not advisable to use it.</source>
<translation>&amp;Почни чисту синхронизацију (брише локалну фасциклу!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Изаберите шта синхронизовати</translation>
</message>
@@ -3345,7 +3445,7 @@ It is not advisable to use it.</source>
<translation>Син&amp;хронизуј све са сервера</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Порука стања</translation>
</message>
@@ -3358,26 +3458,15 @@ It is not advisable to use it.</source>
<translation>Образац</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Корисничко име</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Лозинка</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Ознака грешке</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Текст ознака</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3494,7 +3583,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3502,37 +3591,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>пре мање од минут</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>пре неког времена</translation>
</message>
@@ -3540,57 +3629,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3611,7 +3700,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Направљено од ГИТ ревизије &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3, %4 користећи КуТ %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3619,82 +3708,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Преузето</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Отпремљено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Обрисано</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Премештено у %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Игнорисано</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Грешка приступа фајл-систему</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Грешка</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Непознато</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>преузимам</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>отпремам</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>бришем</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>премештам</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>игноришем</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>грешка</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_sv.ts b/translations/client_sv.ts
index 605ec3233..5f593a22a 100644
--- a/translations/client_sv.ts
+++ b/translations/client_sv.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="sv" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="sv" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Destinationsfilen har en oväntad storlek eller modifieringstidpunkt</translation>
</message>
@@ -104,14 +104,29 @@
<translation>De mappar som inte väljs kommer att &lt;b&gt;raderas&lt;/b&gt; från det lokala filsystemet och kommer inte att synkroniseras till den här datorn längre.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>Synkronisera alla</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>Synkronisera inga</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>Spara manuella ändringar</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Tillämpa</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Ansluten till &lt;server&gt; som &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Inget konto är konfigurerat.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Lägg till ny</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Radera</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Konto</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Välj vad som ska synkas</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Ta bort anslutning till mappsynkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Kunde inte skapa mappen</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;Kunde inte skapa lokal mapp &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Bekräfta radering av anslutning till mappsynkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Ta bort anslutning till mappsynkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Synkronisering pågår</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>En synkronisering pågår.&lt;br/&gt;Vill du avbryta den?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 används</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 som &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Serverversion %1 är gammal och stöds inte längre! Fortsätt på egen risk.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Ansluten till %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Servern %1 är för tillfället inte tillgänglig.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>Utloggad från %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>Ingen anslutning till %1 vid %2.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Logga in</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Det finns nya mappar som inte synkroniserades på grund av att det är för stora:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Bekräfta radering an kontot</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vill du verkligen avsluta anslutningen till kontot &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Observera:&lt;/b&gt; Detta kommer &lt;b&gt;inte&lt;/b&gt; radera några filer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Radera anslutning</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Öppna mapp</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Logga ut</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Återuppta synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Pausa synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;Vill du verkligen avbryta synkronisering av mappen &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Observera:&lt;/b&gt; Detta kommer &lt;b&gt;inte&lt;/b&gt; radera några filer.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) av %2 används. Vissa mappar, inklusive nätverks- eller delade mappar, kan ha andra begränsningar.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 av %2 används</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Just nu finns ingen utrymmes information tillgänglig</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Ingen %1 anslutning konfigurerad.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Utloggad</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Bortkopplad</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Ansluten</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Tjänsten är inte tillgänglig</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Nätverksfel</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Konfigurationsfel</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Okänd kontostatus</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Serveraktivitet</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Synkprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Lista av ignorerade eller felaktiga filer</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopiera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiera aktivitetslistan till urklipp.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Inte synkroniserad</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Inte synkad (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Listan på serveraktivitet har kopierats till urklipp.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Listan på synkaktivitet har kopierats till urklipp.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Listan över osynkroniserade objekt har kopierats till urklipp.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Kopierat till urklipp</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Textetikett</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Serveraktivitet</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopiera</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiera aktivitetslistan till urklipp.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Åtgärd krävs: Notifieringar</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;Kontot %1 har inte aktiviteter aktiverade</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Du har mottagit %n ny notifiering från %2.</numerusform><numerusform>Du har mottagit %n nya notifieringar från %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Du tog emot %1 ny notis från %1 och %2.</numerusform><numerusform>Du tog emot %n nya notiser från %1 och %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Du tog emot nya notiser från %1, %2 och andra konton.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Notiser - Åtgärd krävs</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Certifikatlösenord :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Välj ett certifikat</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Certifikatfiler (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Autentisering krävs</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Ange användarnamn och lösenord för &apos;%1&apos; i %2</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Användare:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Lösenord:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>Fel vid skrivning av metadata till databasen</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Inget ownCloud konto konfigurerat</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Den konfigurerade servern är för den här klienten är för gammal</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Uppgradera servern och starta sedan om klienten.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Autentiseringsfel: Användarnamn eller lösenord är felaktigt</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>timeout</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>De angivna uppgifterna stämmer ej</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Tidsgräns för anslutningen överskreds</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Avbruten av användare</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Den lokala mappen %1 finns inte.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 borde vara en mapp, men är inte det.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 är inte läsbar.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 har tagits bort.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 har laddats ner.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 har uppdaterats.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 har döpts om till %2.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 har flyttats till %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 och %n andra filer har tagits bort.</numerusform><numerusform>%1 och %n andra filer har tagits bort.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 och %n andra filer har laddats ner.</numerusform><numerusform>%1 och %n andra filer har laddats ner.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 och %n andra filer har uppdaterats.</numerusform><numerusform>%1 och %n andra filer har uppdaterats.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 har döpts om till %2 och %n andra filer har döpts om.</numerusform><numerusform>%1 har döpts om till %2 och %n andra filer har döpts om.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 har flyttats till %2 och %n andra filer har flyttats.</numerusform><numerusform>%1 har flyttats till %2 och %n andra filer har flyttats.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 och %n andra filer har synk-konflikter.</numerusform><numerusform>%1 och %n andra filer har synk-konflikter.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 har en synk-konflikt. Vänligen kontrollera konfliktfilen!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 och %n andra filer kunde inte synkas på grund av fel. Se loggen för detaljer.</numerusform><numerusform>%1 och %n andra filer kunde inte synkas på grund av fel. Se loggen för detaljer.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 kunde inte synkroniseras på grund av ett fel. Kolla loggen för ytterligare detaljer.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Synk aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Kunde inte läsa systemets exkluderings-fil</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>En ny mapp större än %1 MB har lagts till: %2.
Var god gå in i inställningarna för att markera mappen om du vill ladda ner den.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,41 @@ Detta kan bero på att mappen omkonfigurerats i bakgrunden, eller för att alla
Är du säker på att du vill fortsätta?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Ta bort alla filer?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Ta bort alla filer</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Behåll filer</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Denna synkning skulle återställa filerna till en tidigare tidpunkt i synkmappen &apos;%1&apos;.
-Det kan vara på grund av att en backup återställts på servern..
-Om du fortsätter synkningen leder till att dina filer skrivs över av äldre filer i ett tidigare stadium. Vill du spara dina senaste lokala filer som konfliktfiler?</translation>
+ <translation>Den här synkningen skulle återställa filerna till en tidigare tidpunkt i synkmappen &apos;%1&apos;.
+Detta kan vara för att en säkerhetskopia har återställts på servern.
+Om du fortsätter synkningen kommer alla dina filer återställas med en äldre version av filen. Vill du behålla dina nyare lokala filer som konfliktfiler?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Backup upptäckt</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normal synkronisation</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Behåll lokala filer som konflikt</translation>
</message>
@@ -742,112 +757,112 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Kunde inte återställa mappens skick</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>En gammal synkroniseringsjournal &apos;%1&apos; hittades, men kunde inte raderas. Vänligen se till att inga program för tillfället använder den.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(säkerhetskopia)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(säkerhetkopia %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Okänt tillstånd.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Väntar på att starta synkronisering.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Förbereder synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Synkronisering pågår.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Senaste synkronisering lyckades.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Senaste synkning lyckades, men det finns varningar för vissa filer!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Inställningsfel.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Användare Avbryt</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Synkronisering är pausad.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Synk är stoppad)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Ingen giltig mapp markerad!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Den markerade sökvägen är inte en mapp!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Du har inga skrivrättigheter till den valda mappen!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>Den lokala mappen %1 synkas redan. Var god välj en annan!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokala mappen %1 innehåller redan en mapp som synkas. Var god välj en annan!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokala mappen %1 är en symbolisk länk. Länkmålet innehåller redan en mapp som synkas. Var god välj en annan!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokala mappen %1 finns redan inuti en mapp som synkas. Var god välj en annan!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>Den lokala mappen %1 är en symbolisk länk. Länkmålet finns redan inuti en mapp som synkas. Var god välj en annan!</translation>
</message>
@@ -873,127 +888,133 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Du måste vara ansluten för att lägga till en mapp</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Klicka här för att lägga till en mapp att synka.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Ett fel uppstod när mapplistan försökte laddas från servern.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Utloggad</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Tillägg av mappar är avstängt eftersom du redan synkar alla dina filer. Om du vill synka fler mappar, var god ta bort den nuvarande rotmappen.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Hämtar mapplistan från servern...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kollar efter ändringar i &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>Synkroniserar %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>ladda ner %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>ladda upp %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 av %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation>%5 kvar, %1 av %2, fil %3 av %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 av %2, fil %3 av %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>fil %1 av %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Väntar...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Väntat på %n annan mapp...</numerusform><numerusform>Väntat på %n andra mappar...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Förbereder för att synkronisera...</translation>
</message>
@@ -1106,22 +1127,22 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Ingen E-Tag mottogs från servern, kontrollera proxy/gateway</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Vi mottog en helt annan e-tag för att återuppta. Försök igen nästa gång.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Servern returnerade felaktig content-range</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Anslutningen avbröts på grund av timeout</translation>
</message>
@@ -1203,28 +1224,25 @@ Om du fortsätter synkningen leder till att dina filer skrivs över av äldre fi
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Var god ange %1 lösenord:
-
-Användare: %2
-Konto: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>Vänligen ange %1 lösenord:&lt;br&gt;&lt;br&gt;Användare: %2&lt;br&gt;Konto: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Avläsning från kedjan misslyckades med felkod: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Ange lösenord</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;Klicka här&lt;/a&gt; för att begära ett app-lösenord från webbgränssnittet.</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1269,7 +1287,7 @@ Konto: %3
<translation>Radera</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1278,27 +1296,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas bort. Det är användbart för meta-data.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Kunde inte öppna fil</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Kan inte skriva förändringar till &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Lägg till synk-filter</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Lägg till ett nytt synk-filter:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Denna post hanteras av systemet på &apos;%1&apos; och kan inte ändras här.</translation>
</message>
@@ -1372,7 +1390,7 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Tidsgräns för anslutningen överskreds</translation>
</message>
@@ -1488,32 +1506,32 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas
<translation>Begränsa automatiskt</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Hostnamn för proxyserver</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Användarnamn för proxyserver</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Lösenord för proxyanvändare</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 proxy</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 krävs för att använda begränsning av bandbredd</translation>
</message>
@@ -1521,23 +1539,23 @@ Objekt som tillåter radering kommer tas bort om de förhindrar en mapp att tas
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>Skapad %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Stänger om ett par sekunder...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 begäran misslyckades %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; vald %2</translation>
@@ -1675,7 +1693,7 @@ ytterligare rättigheter under processen.</translation>
<translation>Konfigurera TLS klient-certifikat</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Misslyckades med att ansluta till den säkra serveradressen &lt;em&gt;%1&lt;/em&gt;. Hur vill du gå vidare?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1683,17 +1701,17 @@ ytterligare rättigheter under processen.</translation>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation>&amp;E-post</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>Anslut till %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Ange inloggningsuppgifter</translation>
</message>
@@ -1731,139 +1749,139 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Lyckades ansluta till %1: %2 version %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Misslyckades att ansluta till %1 vid %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Försök att ansluta till %1 på %2 tog för lång tid.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Försöker ansluta till %1 på %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Den autentiserade begäran till servern omdirigerades till &apos;%1&apos;. Den URLen är ogiltig, server är felkonfigurerad.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Det kom ett ogiltigt svar på en autentiserad webdav-begäran</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Åtkomst förbjuden av servern. För att bekräfta att du har korrekta rättigheter, &lt;a href=&quot;%1&quot;&gt;klicka här&lt;/a&gt; för att ansluta till tjänsten med din webb-läsare.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Lokal synkmapp %1 finns redan, aktiverar den för synk.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Skapar lokal synk-mapp %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>misslyckades.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Kunde inte skapa lokal mapp %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Ingen fjärrmapp specificerad! </translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Fel: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>skapar mapp på ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Fjärrmapp %1 har skapats.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Fjärrmappen %1 finns redan. Ansluter den för synkronisering.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Skapande av mapp resulterade i HTTP felkod %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Det gick inte att skapa mappen efter som du inte har tillräckliga rättigheter!&lt;br/&gt;Vänligen återvänd och kontrollera dina rättigheter.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Misslyckades skapa fjärrmappen, troligen p.g.a felaktiga inloggningsuppgifter.&lt;/font&gt;&lt;br/&gt;Kontrollera dina inloggningsuppgifter.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Misslyckades skapa fjärrmapp %1 med fel &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>En synkroniseringsanslutning från %1 till fjärrmappen %2 har skapats.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Ansluten till %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Anslutningen till %1 kunde inte etableras. Var god kontrollera och försök igen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Omdöpning av mapp misslyckades</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Kan inte ta bort och göra en säkerhetskopia av mappen på grund av att mappen eller en fil i den används av ett annat program. Vänligen stäng mappen eller filen och försök igen eller avbryt installationen.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Lokal synkmapp %1 skapad!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1871,12 +1889,12 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Anslutningsguiden</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Hoppa över konfiguration utav mappar</translation>
</message>
@@ -1902,7 +1920,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Anslutningen avbröts på grund av timeout</translation>
</message>
@@ -1910,7 +1928,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Ogiltigt JSON-svar från hämtnings-URLen</translation>
</message>
@@ -1918,55 +1936,55 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>Fel vid skrivning av metadata till databasen</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Fil %1 kan inte laddas ner på grund av namnkonflikt med en lokal fil!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Nedladdningen skulle innebära ledigt utrymme understiger %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Ledigt utrymme är under %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Filen har tagits bort från servern</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Filen kunde inte laddas ner fullständigt.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>Den nedladdade filen är tom men servern sa att den skulle vara %1.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Fil %1 kan inte sparas eftersom namnet krockar med en lokal fil!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Filen har ändrats sedan upptäckten</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>Fel vid skrivning av metadata till databasen</translation>
</message>
@@ -2038,7 +2056,8 @@ Det är inte lämpligt använda den.</translation>
<translation>Filen %1 kan inte döpas om till %2 på grund av ett lokalt filnamn</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>Fel vid skrivning av metadata till databasen</translation>
</message>
@@ -2046,12 +2065,12 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Den här filen har tagits bort från en endast-läsbar delning. Den återställdes.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Felaktig HTTP-kod i svaret från servern. &apos;204&apos; förväntades, men &quot;%1 %2&quot; mottogs.</translation>
</message>
@@ -2072,78 +2091,119 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Denna mapp får inte byta namn. Den kommer att döpas om till sitt ursprungliga namn.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Denna mapp får ej döpas om. Vänligen döp den till Delad igen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>En fil döptes om men är en del av en endast-läsbar delning. Original filen återställdes.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Felaktig HTTP-kod i svaret från servern. &apos;201&apos; förväntades, men &quot;%1 %2&quot; mottogs.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>Fel vid skrivning av metadata till databasen</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Filen Raderad</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Lokal fil ändrades under synkningen. Den kommer återupptas.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokal fil ändrades under synk.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Fel vid skrivning av metadata till databasen</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Tvinga jobbavbryt vid återställning av HTTP-anslutning med Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Den lokala filen togs bort under synkronisering.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>Lokal fil ändrades under synk.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Tvinga jobbavbryt vid återställning av HTTP-anslutning med Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>Filen ändrades lokalt men är en del av en endast-läsbar delning. Den återställdes och din editering är i konflikt filen.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Hämtnings-URL saknas</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Den lokala filen togs bort under synkronisering.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Servern bekräftade inte senaste leveransen. (Ingen e-tagg fanns)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Lokal fil ändrades under synk.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Fel vid skrivning av metadata till databasen</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Servern bekräftade inte senaste leveransen. (Ingen e-tagg fanns)</translation>
</message>
</context>
<context>
@@ -2159,42 +2219,42 @@ Det är inte lämpligt använda den.</translation>
<translation>Textetikett</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Tid</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Fil</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Mapp</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Ågärd</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Storlek</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Lokalt synkprotokoll</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopiera</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Kopiera aktivitetslistan till urklipp.</translation>
</message>
@@ -2292,22 +2352,22 @@ Det är inte lämpligt använda den.</translation>
<translation>Inställningar</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Allmänt</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Nätverk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2315,27 +2375,27 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Aktivitet</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Allmänt</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Nätverk</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Konto</translation>
</message>
@@ -2363,32 +2423,32 @@ Det är inte lämpligt använda den.</translation>
<translation>Sökväg till ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Delning</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Mapp: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Servern tillåter inte delning</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>Tar emot maximal delningsbehörighet från servern...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Filen kan inte delas eftersom den delades utan delningsrättigheter.</translation>
</message>
@@ -2427,43 +2487,58 @@ Det är inte lämpligt använda den.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>&amp;E-postlänk</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Kopiera &amp;länk</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Tillåt redigering</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>L&amp;ösenordsskydda</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Lösenordsskyddad</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Filen kan inte delas eftersom den delades utan delningsrättigheter.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Publik d&amp;elning kräver lösenord</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Var vänlig sätt lösenord</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>Kunde inte öppna e-postklient</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>Det uppstod ett fel när e-postklienten skulle startas för att skapa ett nytt meddelande. Kanske är ingen standard-e-postklient konfigurerad?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Dela länk</translation>
</message>
@@ -2481,7 +2556,7 @@ Det är inte lämpligt använda den.</translation>
<translation>Dela med användare eller grupper ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>Inga resultat för &apos;%1&apos;</translation>
</message>
@@ -2514,17 +2589,17 @@ Det är inte lämpligt använda den.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>skapa</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>ändra</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>radera</translation>
</message>
@@ -2532,12 +2607,12 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Login fel</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Du måste logga in som en användare %1</translation>
</message>
@@ -2545,17 +2620,22 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Autentisera</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>Debugvy SSL-kryptering</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Autentisering krävs</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Din session har gått ut. Du måste logga in på nytt för att kunna fortsätta använda klienten.</translation>
</message>
@@ -2563,7 +2643,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Dela med %1</translation>
@@ -2572,119 +2652,119 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Certifikatdetaljer&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Common Name (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Alternativnamn:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Organisation (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Organisationsenhet (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Stat/Provins:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Land:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serienummer:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Utfärdare&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Utfärdare:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Utfärdat den:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Upphör den:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Fingeravtryck&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Notera:&lt;/b&gt; Detta certifikat var manuellt godkänt.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (självsignerat certifikat)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Denna anslutningen är krypterad med %1 bit %2
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>Inget stöd för biljetter/identifikationer för SSL sessioner</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Certifikatinformation:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Denna anslutningen är INTE säker eftersom den inte är krypterad.
@@ -2772,270 +2852,275 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Lyckades.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync misslyckades med att ladda journalfilen. Journalfilen är korrupt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Plugin %1 för csync kunde inte laddas.&lt;br/&gt;Var god verifiera installationen!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSYNC fel vid intern bearbetning.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync misslyckades att reservera minne.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync fatal parameter fel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync processteg update misslyckades.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync processteg reconcile misslyckades.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync kunde inte autentisera mot proxy. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync misslyckades att hitta proxy eller server.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync misslyckades att autentisera mot %1 servern.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync misslyckades att ansluta mot nätverket.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>En timeout på nätverksanslutningen har inträffat.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Ett HTTP överföringsfel inträffade.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Den monterade mappen är tillfälligt otillgänglig på servern</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>En fel inträffande under öppnandet av en mapp</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Fel vid mappinläsning.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Filen/Mappen är ignorerad för att den är dold.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Endast %1 tillgängligt, behöver minst %2 för att starta</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Otillåtet eftersom du inte har rättigheter att lägga till övermappar</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Otillåtet eftersom du inte har rättigheter att lägga till filer i den mappen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: Ingen plats på %1 server tillgänglig.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync ospecificerat fel.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Avbruten av användare</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Filnamnet innehåller otillåtna tecken som inte kan synkroniseras till andra plattformar.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync misslyckades med att läsa</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync misslyckades med att ladda eller skapa journalfilen. Säkerställ att du har rättigheter att läsa och skriva i den lokala synkmappen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync misslyckades på grund av ohanterad avslagning av rättighet.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync försökte skapa en mapp som redan finns.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Tjänsten är tillfälligt otillgänglig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Tillgång förbjuden</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Ett internt fel nummer %1 inträffade.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Objektet kunde inte synkas på grund av tidigare fel: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Symboliska länkar stöds ej i synkningen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Filen är listad i ignorerings listan.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>Filnamn innehåller mellanslag i slutet.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Filnamnet är för långt.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Stat misslyckades.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Filnamnskodning är inte giltig</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Otillåtna tecken, var vänlig byt namn på &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Kan inte initialisera en synk journal. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>Kunde inte läsa svartlistan från den lokala databasen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Kunde inte läsa från synk-journalen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Kunde inte öppna synk journalen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Filnamnet innehåller minst ett ogiltigt tecken</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ignorerad eftersom den är svartlistad i &quot;välj vad som ska synkas&quot; </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Otillåtet eftersom du inte har rättigheter att lägga till undermappar i den mappen.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Inte behörig att ladda upp denna fil då den är skrivskyddad på servern, återställer </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Inte behörig att radera, återställer</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Lokala filer och mappar som är delade är borttagna.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Det gick inte att genomföra flytten, objektet återställs</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Det gick inte att genomföra flytten då %1 är skrivskyddad</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>destinationen</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>källan</translation>
</message>
@@ -3059,17 +3144,17 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Version %1. För mer information vänligen besök &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Distribueras av %1 och licenserad under GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 och %2 logotyp är registrerade varumärken av %1 i Förenta Staterna, andra länder, eller både och.&lt;/p&gt;</translation>
</message>
@@ -3095,202 +3180,217 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Vänliga logga in</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Mapp %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Ingen synkroniseringsmapp är konfigurerad.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Det finns inga synkmappar konfigurerade.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Öppna i webbläsare</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Logga in...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Logga ut</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Senaste ändringar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>Kollar efter ändringar i &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Hanterade mappar:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Öppna mapp &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Öppna %1 i webbläsaren</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Okänd status</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Inställningar...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Detaljer...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Hjälp</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Avsluta %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>Koppla från %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Serverversion stöds inte</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>Servern på konto %1 kör en gammal version %2 som inte längre stöds. Att använda den här klienten med den serverversionen är otestat och potentiellt farligt. Fortsätt på egen risk.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Bortkopplad från dessa konton:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Konto %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Synkronisering för konto är avstängd</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Sluta pausa alla mappar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Pausa alla mappar</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Sluta pausa all synkroinisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Sluta pausa synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Pausa all synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Pausa synkronisering</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Logga ut från alla konton</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Logga in på alla konton...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Krascha nu</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Inga filer har synkroniseras nyligen</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Synkroniserar %1 av %2 (%3 kvar)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>Synkroniserar %1 av %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Synkroniserar %1 (%2 kvar)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>Synkroniserar %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Aktuell version</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Version %2. För mer information, gå till &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;Av Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz med flera.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud, Inc.&lt;/p&gt;&lt;p&gt;Licensierad under GNU General Public License (GPL) Version 2.0&lt;br/&gt;ownCloud och ownClouds logo är registrerade varumärken av ownCloud, Inc. i USA, andra länder eller både och.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3305,9 +3405,9 @@ Det är inte lämpligt använda den.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Textetikett</translation>
</message>
@@ -3327,7 +3427,7 @@ Det är inte lämpligt använda den.</translation>
<translation>Starta en %ren synkning (tar bort den lokala mappen!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Välj vad som ska synkas</translation>
</message>
@@ -3352,7 +3452,7 @@ Det är inte lämpligt använda den.</translation>
<translation>S&amp;ynka allt från servern</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Statusmeddelande</translation>
</message>
@@ -3365,26 +3465,15 @@ Det är inte lämpligt använda den.</translation>
<translation>Form</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Användarnamn</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Lösenord</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Felmeddelande</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Textetikett</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3501,7 +3590,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3509,37 +3598,37 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>i framtiden</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n dag sedan</numerusform><numerusform>%n dag(ar) sedan</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n timme sedan</numerusform><numerusform>%n timmar sedan</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>nu</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Mindre än en minut sedan</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n minut sedan</numerusform><numerusform>%n minut(er) sedan</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>En stund sedan</translation>
</message>
@@ -3547,57 +3636,57 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n år</numerusform><numerusform>%n år</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n månad(er)</numerusform><numerusform>%n månad(er)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n dag(ar)</numerusform><numerusform>%n dag(ar)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation><numerusform>%n timme/timmar</numerusform><numerusform>%n timme/timmar</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation><numerusform>%n minut(er)</numerusform><numerusform>%n minut(er)</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation><numerusform>%n sekund(er)</numerusform><numerusform>%n sekund(er)</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3618,7 +3707,7 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Byggd från Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; den %3, %4 med Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3626,82 +3715,92 @@ Det är inte lämpligt använda den.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Nedladdats</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Uppladdad</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>Serverversionen nedladdad, kopierade den ändrade lokala filen till konfliktfil</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Raderad</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Flyttad till %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Ignorerad</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Åtkomstfel till filsystemet</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Fel</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>Uppdaterade lokal metadata</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Okänt</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>laddar ner</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>laddar upp</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>raderar</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>flyttar</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ignorerar</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>fel</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>uppdaterar lokal metadata</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_th.ts b/translations/client_th.ts
index 16a5f59d1..9ca21b0b5 100644
--- a/translations/client_th.ts
+++ b/translations/client_th.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="th_TH" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="th_TH" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>แฟ้มปลายทางมีขนาดที่ระบุไม่ได้หรือการปรับเปลี่ยนเวลา</translation>
</message>
@@ -104,14 +104,29 @@
<translation>โฟลเดอร์ที่ไม่ถูกตรวจสอบจะถูก &lt;b&gt;ลบ&lt;/b&gt; จากระบบแฟ้มต้นทางของคุณและจะไม่ประสานข้อมูลกับคอมพิวเตอร์เครื่องนี้อีกต่อไป</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation>ประสานข้อมูลทั้งหมด</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation>ไม่ต้องประสานข้อมูล</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation>ใช้การเปลี่ยนแปลงด้วยตนเอง</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>นำไปใช้</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>ยกเลิก</translation>
</message>
@@ -121,168 +136,168 @@
<translation>เชื่อมต่อกับ &lt;server&gt; ด้วยผู้ใช้ &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>ไม่มีการกำหนดค่าบัญชี</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>เพิ่มใหม่</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>ลบออก</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>บัญชี</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>เลือกข้อมูลที่ต้องการประสาน</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>ลบโฟลเดอร์ที่ประสานข้อมูลออก</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>สร้างโฟลเดอร์ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;ไม่สามารถสร้างโฟลเดอร์ต้นทาง &lt;i&gt;%1&lt;/i&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>ยืนยันการลบโฟลเดอร์ที่ประสานข้อมูลออก</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>ลบโฟลเดอร์ที่ประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>กำลังประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
- <translation>การดำเนินการเพื่อประสานข้อมูลกำลังทำงานอยู่ &lt;br/&gt;คุณต้องการสิ้นสุดการทำงานหรือไม่?</translation>
+ <translation>กำลังดำเนินการประสานข้อมูลอยู่ &lt;br/&gt;คุณต้องการสิ้นสุดการทำงาน?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 กำลังถูกใช้งาน</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 เช่น &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>เซิร์ฟเวอร์เวอร์ชัน %1 เป็นรุ่นเก่าและไม่ได้รับการสนับสนุน! ดำเนินการความเสี่ยงด้วยคุณเอง</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>เชื่อมต่อกับ %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>เซิร์ฟเวอร์ %1 ไม่สามารถใช้ได้ชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>ลงชื่อออกจาก %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>ไม่มีการเชื่อมต่อไปยัง %1 ที่ %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>เข้าสู่ระบบ</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>มีโฟลเดอร์ใหม่ที่จะไม่ถูกประสานข้อมูลเพราะมันมีขนาดใหญ่เกินไป</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>ยืนยันการลบบัญชี</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;คุณต้องการลบการเชื่อมต่อกับบัญชี&lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;หมายเหตุ:&lt;/b&gt; นี้จะ &lt;b&gt;ไม่&lt;/b&gt; ลบไฟล์ใดๆ&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>ลบการเชื่อมต่อ</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>เปิดโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>ออกจากระบบ</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>ประสานข้อมูลอีกครั้ง</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>หยุดประสานข้อมูลชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;คุณต้องการที่จะหยุดการประสานข้อมูลโฟลเดอร์&lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;หมายเหตุ:&lt;/b&gt; นี้จะ &lt;b&gt;ไม่&lt;/b&gt; ลบไฟล์ใดๆ&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>มีการใช้งาน %1 (%3%) จาก %2 บางโฟลเดอร์รวมทั้งเครือข่ายที่ติดตั้งหรือโฟลเดอร์ที่แชร์อาจมีข้อจำกัดที่แตกต่างกัน</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>มีการใช้งาน %1 จาก %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>ขณะนี้ไม่มีพื้นที่จัดเก็บข้อมูลที่ใช้งานได้</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>ไม่มีการเชื่อมต่อ %1 ที่ถูกกำหนดค่า</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>ออกจากระบบ</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>ยกเลิกการเชื่อมต่อ</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>เชื่อมต่อ</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>ไม่สามารถให้บริการได้</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>ข้อผิดพลาดของเครือข่าย</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>กำหนดค่าผิดพลาด</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>ไม่ระบุสถานะบัญชี</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>กิจกรรมของเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>โปรโตคอลที่ใช้ในการผสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>รายชื่อของไฟล์ที่ถูกเพิกเฉยหรือมีผิดพลาด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>คัดลอก</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>คัดลอกรายชื่อกิจกรรมไปยังคลิปบอร์ด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>ไม่ถูกประสานข้อมูลให้ตรงกัน</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>ไม่ถูกประสานข้อมูล (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>รายการกิจกรรมเซิร์ฟเวอร์ได้ถูกคัดลอกไปยังคลิปบอร์ด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>รายการกิจกรรมการประสานข้อมูลได้ถูกคัดลอกไปยังคลิปบอร์ด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>รายชื่อที่ไม่ถูกประสานข้อมูลได้รับการคัดลอกไปยังคลิปบอร์ด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>คัดลอกไปยังคลิปบอร์ด</translation>
</message>
@@ -413,47 +428,47 @@
<translation>ป้ายข้อความ</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>กิจกรรมของเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>คัดลอก</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>คัดลอกรายชื่อกิจกรรมไปยังคลิปบอร์ด</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>จำเป็นต้องทำ: การแจ้งเตือน</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br /&gt;บัญชี %1 ไม่มีกิจกรรมที่เปิดใช้งาน</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>คุณได้รับ %n การแจ้งเตือนใหม่จาก %2</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>คุณได้รับ %n การแจ้งเตือนใหม่จาก %1 และ %2</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>คุณได้รับการแจ้งเตือนใหม่จาก %1, %2 และผู้ใช้อื่นๆ</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 การแจ้งเตือน - จำเป็นต้องดำเนินการ</translation>
</message>
@@ -486,12 +501,12 @@
<translation>รหัสผ่านรับรอง :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>เลือกใบรับรอง</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>ไฟล์ใบรับรอง (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>ต้องใช้การตรวจสอบสิทธิ์</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>ป้อนชื่อผู้ใช้และรหัสผ่านสำหรับ &apos;%1&apos; ที่ %2</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>และผู้ใช้งาน:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>และรหัสผ่าน:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>ไม่มีการกำหนดค่าบัญชี ownCloud </translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>การกำหนดค่าเซิร์ฟเวอร์สำหรับไคลเอ็นต์นี้เก่าเกินไป</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>กรุณาอัพเดทเซิร์ฟเวอร์ใหม่ใหม่ที่สุดและรีสตาร์ทไคลเอนต์</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>ข้อผิดพลาดในการตรวจสอบ: ทั้งชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>หมดเวลา</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>ระบุข้อมูลประจำตัวไม่ถูกต้อง</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>หมดเวลาการเชื่อมต่อ</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>ยกเลิกโดยผู้ใช้</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>โฟลเดอร์ต้นทาง %1 ไม่มีอยู่</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 ควรจะเป็นโฟลเดอร์ แต่ทำไม่ได้</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>ไม่สามารถอ่านข้อมูล %1 ได้</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 ได้ถูกลบออก</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 ได้ถูกดาวน์โหลด</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 ได้ถูกอัพเดทเรียบร้อยแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 ได้ถูกเปลี่ยนชื่อเป็น %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 ได้ถูกย้ายไปยัง %2</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 และ %n ไฟล์อื่นๆได้ถูกลบออก</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 และ %n ไฟล์อื่นๆ ได้ถูกดาวน์โหลดเรียบร้อยแล้ว</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 และ %n ไฟล์อื่นๆ ได้รับการอัพเดท</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%1 และไฟล์อื่นๆอีก %n ไฟล์ได้ถูกเปลี่ยนชื่อเป็น %2</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%1 และไฟล์อื่นๆอีก %n ไฟล์ได้ถูกย้ายไปยัง %2</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%1 และ %n ไฟล์อื่นๆ เกิดปัญหาขณะประสานข้อมูล</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
- <translation type="unfinished"/>
+ <translation>%1 มีปัญหาขณะประสานข้อมูล กรุณาตรวจสอบไฟล์ที่มีปัญหานั้น</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%1 และไฟล์อื่นๆอีก %n ไฟล์ไม่สามารถประสานข้อมูลเนื่องจากเกิดข้อผิดพลาด กรุณาดูไฟล์ log สำหรับรายละเอียดเพิ่มเติม</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
- <translation>%1 ไม่สามารถประสานข้อมูลเนื่องจากมีข้อผิดพลาด ดูบันทึกสำหรับรายละเอียด</translation>
+ <translation>%1 ไม่สามารถประสานข้อมูลเนื่องจากมีข้อผิดพลาด สามารถดูไฟล์ log สำหรับรายละเอียดเพิ่มเติม</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>ความเคลื่อนไหวของการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>ไม่สามารถอ่าน ยกเว้นไฟล์ระบบ</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>โฟลเดอร์ใหม่มีขนาดใหญ่กว่า %1 เมกะไบต์ ได้ถูกเพิ่ม: %2
กรุณาไปตั้งค่าถ้าคุณต้องการให้มันดาวน์โหลดได้</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,152 +715,154 @@ Are you sure you want to perform this operation?</source>
คุณแน่ใจว่าคุณต้องการที่จะดำเนินการนี้?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>ลบไฟล์ทั้งหมด?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>ลบไฟล์ทั้งหมด</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>เก็บไฟล์เอาไว้</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation type="unfinished"/>
+ <translation>การประสานข้อมูลนี้จะย้อนกลับไปใช้ไฟล์เก่าที่อยู่ในโฟลเดอร์ประสานข้อมูล &apos;%1&apos;
+หรือนี่อาจจะเป็นเพราะการสำรองข้อมูลในเซิฟเวอร์ได้ถูกเรียกคืน
+ไฟล์ปัจจุบันของคุณทั้งหมดจะถูกเขียนทับด้วยไฟล์เก่า คุณต้องการเก็บไฟล์ไว้หรือไม่?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
- <translation type="unfinished"/>
+ <translation>ตรวจพบการสำรองข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
- <translation type="unfinished"/>
+ <translation>ประสานข้อมูลปกติ</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
- <translation type="unfinished"/>
+ <translation>เก็บไฟล์ต้นทางเป็นไฟล์ที่มีปัญหา</translation>
</message>
</context>
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>ไม่สามารถรีเซ็ตสถานะโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>บนบันทึกการประสานข้อมูลเก่า &apos;%1&apos; แต่ไม่สามารถลบออกได้ กรุณาตรวจสอบให้แน่ใจว่าไม่มีแอพฯ หรือการทำงานใดๆที่ใช้มันอยู่</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(สำรองข้อมูล)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(สำรองข้อมูล %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>สถานะที่ยังไม่ได้ถูกกำหนด</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>กำลังรอเริ่มต้นการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>กำลังเตรียมการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>การประสานข้อมูลกำลังทำงาน</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>ประสานข้อมูลครั้งล่าสุดเสร็จเรียบร้อยแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>การประสานข้อมูลสำเร็จ แต่มีคำเตือนในแต่ละไฟล์</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>เกิดข้อผิดพลาดในการติดตั้ง</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>ยกเลิกผู้ใช้</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>การประสานข้อมูลถูกหยุดไว้ชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (การประสานข้อมูลถูกหยุดชั่วคราว)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>เลือกโฟลเดอร์ไม่ถูกต้อง!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>เส้นทางที่เลือกไม่ใช่โฟลเดอร์!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>คุณมีสิทธิ์ที่จะเขียนโฟลเดอร์ที่เลือกนี้!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>โฟลเดอร์ต้นทาง %1 ถูกใช้ไปแล้วในโฟลเดอร์ที่ประสานข้อมูล กรุณาเลือกอีกอันหนึ่ง!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>เนื้อหาโฟลเดอร์ต้นทาง %1 ได้ถูกใช้ไปแล้วในโฟลเดอร์ที่ประสานข้อมูล กรุณาเลือกอีกอันหนึ่ง!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>โฟลเดอร์ต้นทาง %1 เป็นการเชื่อมโยงสัญลักษณ์ ลิงค์เป้าหมายมีเนื้อหาโฟลเดอร์ที่ถูกใช้ไปแล้วในโฟลเดอร์ที่ประสานข้อมูล กรุณาเลือกอีกอันหนึ่ง!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>เนื้อหาของโฟลเดอร์ต้นทาง %1 ไดถูกใช้ไปแล้วในโฟลเดอร์ที่ประสานข้อมูล กรุณาเลือกอีกอันหนึ่ง!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>โฟลเดอร์ต้นทาง %1 เป็นการเชื่อมโยงสัญลักษณ์
เป้าหมายของลิงค์มีเนื้อหาที่ถูกใช้ไปแล้วในโฟลเดอร์ที่ประสานข้อมูล กรุณาเลือกอีกอันหนึ่ง!</translation>
@@ -861,7 +878,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="241"/>
<source>Synchronizing with local folder</source>
- <translation type="unfinished"/>
+ <translation>กำลังประสานข้อมูลกับโฟลเดอร์ต้นทาง</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="285"/>
@@ -872,127 +889,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>คุณจะต้องเชื่อมต่อก่อนที่จะเพิ่มโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>คลิกที่ปุ่มนี้เพื่อเพิ่มโฟลเดอร์ที่ต้องการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>ข้อผิดพลาดในขณะที่โหลดรายชื่อโฟลเดอร์จากเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>ออกจากระบบ</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>การเพิ่มโฟลเดอร์ถูกยกเลิกเพราะคุณได้ประสานไฟล์ทั้งหมดของคุณอยู่แล้ว หากคุณต้องการประสานข้อมูลหลายโฟลเดอร์โปรดลบโฟลเดอร์รากกำหนดค่าในปัจจุบัน</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>กำลังดึงรายการโฟลเดอร์จากเซิร์ฟเวอร์ ...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>กำลังตรวจสอบการเปลี่ยนแปลงใน &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>กำลังประสานข้อมูล %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>หรือ</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>ดาวน์โหลด %1/วินาที</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/วินาที</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>อัปโหลด</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/วินาที</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 ของ %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation type="unfinished"/>
+ <translation>เหลืออีก %5 ไฟล์, %1 ไฟล์จาก %2, %3 ไฟล์จาก %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 จาก %2, %3 จาก %4 ไฟล์</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>ไฟล์ %1 จาก %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>กรุณารอซักครู่...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>กำลังรออีก (%n) โฟลเดอร์...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>กำลังเตรียมพร้อมในการประสานข้อมูล</translation>
</message>
@@ -1105,22 +1128,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>ไม่มี E-Tag ที่ได้รับจากเซิร์ฟเวอร์ กรุณาตรวจสอบ พร็อกซี่หรือเกตเวย์</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>เราได้รับ E-Tag ที่แตกต่างกันสำหรับการทำงาน กรุณาลองอีกครั้งในเวลาถัดไป</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>เซิร์ฟเวอร์ส่งคืนช่วงของเนื้อหาที่ผิด</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>หมดเวลาการเชื่อมต่อ</translation>
</message>
@@ -1202,28 +1225,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>กรุณากรอก %1 รหัสผ่าน:
-
-ผู้ใช้: %2
-บัญชี: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation>กรุณากรอกรหัสผ่าน %1:&lt;br&gt;&lt;br&gt;ผู้ใช้: %2&lt;br&gt;บัญชี: %3&lt;br&gt;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>อ่านจาก Keychain ล้มเหลวด้วยข้อผิดพลาด: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>ป้อนรหัสผ่าน</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation>&lt;a href=&quot;%1&quot;&gt;คลิกที่นี่&lt;/a&gt; เพื่อขอรหัสผ่านแอพฯ จากเว็บอินเตอร์เฟส</translation>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1268,7 +1288,7 @@ Account: %3
<translation>ลบออก</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1277,27 +1297,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
รายการที่ลบจะถูกอนุญาตให้ลบถ้าพวกเขาป้องกันไม่ให้ไดเรกทอรีถูกลบออก นี้จะเป็นประโยชน์สำหรับข้อมูล meta</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>ไม่สามารถเปิดไฟล์</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>ไม่สามารถเขียนเปลี่ยนเป็น &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>เพิ่มการละเว้นรูปแบบ</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>เพิ่มการละเว้นรูปแบบใหม่:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>รายการนี้ถูกระบุโดยระบบที่ &apos;%1&apos; และไม่สามารถแก้ไขได้ในมุมมองนี้</translation>
</message>
@@ -1307,7 +1327,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/logbrowser.cpp" line="59"/>
<source>Log Output</source>
- <translation>บันทึกข้อมูลผลลัพธ์</translation>
+ <translation>ผลลัพธ์ของไฟล์ log</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="71"/>
@@ -1322,12 +1342,12 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/logbrowser.cpp" line="97"/>
<source>Clear</source>
- <translation>ล้างข้อมูล</translation>
+ <translation>ล้าง</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="98"/>
<source>Clear the log display.</source>
- <translation>ล้างข้อมูลบันทึกการเปลี่ยนแปลงที่แสดงอยู่</translation>
+ <translation>ล้างข้อมูลไฟล์ log ที่แสดงอยู่</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="104"/>
@@ -1337,7 +1357,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/logbrowser.cpp" line="105"/>
<source>Save the log file to a file on disk for debugging.</source>
- <translation>บันทึกไฟล์บันทึกการเปลี่ยนแปลงไปที่ไฟล์ที่อยู่ดิสก์เพื่อตรวจสอบข้อผิดพลาด</translation>
+ <translation>บันทึกไฟล์ log บนดิสก์เพื่อตรวจสอบข้อผิดพลาด</translation>
</message>
<message>
<location filename="../src/gui/logbrowser.cpp" line="184"/>
@@ -1352,7 +1372,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/gui/logbrowser.cpp" line="194"/>
<source>Could not write to log file %1</source>
- <translation>ไม่สามารถเขียนไฟล์บันทึก %1</translation>
+ <translation>ไม่สามารถเขียนไฟล์ log %1</translation>
</message>
</context>
<context>
@@ -1365,13 +1385,13 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<message>
<location filename="../src/libsync/logger.cpp" line="191"/>
<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;ไฟล์ &apos;%1&apos;&lt;br/&gt;ไม่สามารถเปิดขึ้นมาเพื่อเขียนข้อมูลได้.&lt;br/&gt;&lt;br/&gt;บันทึกผลลัพธ์ &lt;b&gt;ไม่สามารถ&lt;/b&gt; บันทึกข้อมูลได้!&lt;/nobr&gt;</translation>
+ <translation>&lt;nobr&gt;ไฟล์ &apos;%1&apos;&lt;br/&gt;ไม่สามารถเปิดขึ้นมาเพื่อเขียนข้อมูลได้&lt;br/&gt;&lt;br/&gt;ผลลัพธ์ของไฟล์ log &lt;b&gt;ไม่สามารถ&lt;/b&gt; บันทึกข้อมูลได้!&lt;/nobr&gt;</translation>
</message>
</context>
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>หมดเวลาการเชื่อมต่อ</translation>
</message>
@@ -1487,32 +1507,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>จำกัดโดยอัตโนมัติ</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>ชื่อโฮสต์ของเซิร์ฟเวอร์พร็อกซี่</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>ชื่อผู้ใช้ของเซิร์ฟเวอร์พร็อกซี่</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>รหัสผ่านของเซิร์ฟเวอร์พร็อกซี่</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>พร็อกซี HTTP(S)</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>พร็อกซี SOCKS5</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Qt &gt;= 5.4 เป็นสิ่งจำเป็นเพื่อช่วยจำกัดแบนด์วิดธ์</translation>
</message>
@@ -1520,26 +1540,26 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation type="unfinished"/>
+ <translation>ถูกสร้างแล้วที่ %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
- <translation type="unfinished"/>
+ <translation>กำลังจะปิดในไม่กี่วินาที ...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%1 ร้องขอล้มเหลวที่ %2</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>&apos;%1&apos; ได้เลือกแล้วที่ %2</translation>
</message>
</context>
<context>
@@ -1598,7 +1618,7 @@ for additional privileges during the process.</source>
<message>
<location filename="../src/gui/updater/ocupdater.cpp" line="177"/>
<source>Update Check</source>
- <translation>ตรวจสอบการปรับปรุง</translation>
+ <translation>ตรวจสอบการอัพเดท</translation>
</message>
</context>
<context>
@@ -1673,7 +1693,7 @@ for additional privileges during the process.</source>
<translation>กำหนดค่าใบรับรอง TLS ฝั่งไคลเอ็นต์</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ไม่สามารถเชื่อมต่อไปยังที่อยู่เซิร์ฟเวอร์ที่ปลอดภัย&lt;em&gt;%1&lt;/em&gt; คุณต้องการที่จะดำเนินการต่อไป?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1701,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
- <translation type="unfinished"/>
+ <translation>และอีเมล</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>เชื่อมต่อไปยัง %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>ป้อนข้อมูลประจำตัวของผู้ใช้</translation>
</message>
@@ -1729,139 +1749,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;เชื่อมต่อกับ %1: %2 รุ่น %3 (%4) เสร็จเรียบร้อยแล้ว&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>ล้มเหลวในการเชื่อมต่อไปยัง %1 ที่ %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>หมดเวลาขณะที่พยายามเชื่อมต่อไปยัง %1 ที่ %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>กำลังพยายามเชื่อมต่อไปที่ %1 ที่ %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>คำขอการรับรองความถูกต้องไปยังเซิร์ฟเวอร์ที่ถูกเปลี่ยนเส้นทางไปยัง</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>มีการตอบสนองที่ไม่ถูกต้องที่จะร้องขอการรับรองความถูกต้องของ WebDAV</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>การเข้าถึงถูกระงับโดยเซิร์ฟเวอร์ เพื่อตรวจสอบว่าคุณมีการเข้าถึงที่เหมาะสม &lt;a href=&quot;%1&quot;&gt;คลิกที่นี่&lt;/a&gt; เพื่อรเข้าถึงบริการกับเบราว์เซอร์ของคุณ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>ประสานข้อมูลโฟลเดอร์ต้นทาง %1 มีอยู่แล้ว กรุณาตั้งค่าเพื่อถ่ายข้อมูล &lt;br/&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>สร้างประสานข้อมูลโฟลเดอร์ต้นทาง %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ตกลง</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>ไม่สามารถสร้างผสานข้อมูลโฟลเดอร์ต้นทาง %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>ไม่มีโฟลเดอร์รีโมทที่ระบุ!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>ข้อผิดพลาด: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>กำลังสร้างโฟลเดอร์ใหม่บน ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>โฟลเดอร์รีโมท %1 ถูกสร้างเรียบร้อยแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>โฟลเดอร์รีโมทมี %1 อยู่แล้ว กำลังเชื่อมต่อเพื่อถ่ายโอนข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>การสร้างโฟลเดอร์ดังกล่าวส่งผลให้เกิดรหัสข้อผิดพลาด HTTP error code %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>สร้างโฟลเดอร์ระยะไกลล้มเหลวเนื่องจากมีข้อมูลผิดพลาด!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;การสร้างโฟลเดอร์รีโมทล้มเหลว ซึ่งอาจมีสาเหตุมาจากการกรอกข้อมูลส่วนตัวเพื่อเข้าใช้งานไม่ถูกต้อง.&lt;/font&gt;&lt;br/&gt;กรุณาย้อนกลับไปแล้วตรวจสอบข้อมูลส่วนตัวของคุณอีกครั้ง.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>การสร้างโฟลเดอร์ระยะไกล %1 ล้มเหลวเนื่องข้อผิดพลาด &lt;tt&gt;%2&lt;/tt&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>การเชื่อมต่อเผื่อประสานข้อมูลจาก %1 ไปที่ไดเร็กทอรี่ระยะไกล %2 ได้ถูกติดตั้งแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>เชื่อมต่อไปที่ %1! สำเร็จ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>การเชื่อมต่อกับ %1 ไม่สามารถดำเนินการได้ กรุณาตรวจสอบอีกครั้ง</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>เปลี่ยนชื่อโฟลเดอร์ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>ไม่สามารถลบและสำรองข้อมูลโฟลเดอร์เพราะโฟลเดอร์หรือไฟล์ในนั้นจะเปิดในโปรแกรมอื่นอยู่ กรุณาปิดโฟลเดอร์หรือไฟล์และกดลองใหม่อีกครั้งหรือยกเลิกการติดตั้ง</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;ประสานข้อมูลโฟลเดอร์ต้นทาง %1 ได้ถูกสร้างขึ้นเรียบร้อยแล้ว!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1889,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 ตัวช่วยสร้างการเชื่อมต่อ</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>ข้ามการกำหนดค่าโฟลเดอร์</translation>
</message>
@@ -1900,7 +1920,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>หมดเวลาการเชื่อมต่อ</translation>
</message>
@@ -1908,7 +1928,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>ตอบกลับ JSON ไม่ถูกต้องจาก URL แบบสำรวจความคิดเห็น</translation>
</message>
@@ -1916,55 +1936,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>ไฟล์ %1 ไม่สามารถดาวน์โหลดได้เพราะชื่อไฟล์ต้นทางเหมือนกัน!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>การดาวน์โหลดจะลดพื้นที่ว่างในดิสก์ด้านล่าง %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>พื้นที่ว่างในดิสก์น้อยกว่า %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>ไฟล์ถูกลบออกจากเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>ดาวน์โหลดไฟล์ไม่สำเร็จ</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
- <translation type="unfinished"/>
+ <translation>ไฟล์ที่ดาวน์โหลดว่างเปล่าแม้ว่าเซิร์ฟเวอร์ประกาศว่าควรจะเป็น %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>ไฟล์ %1 ไม่สามารถบันทึกได้เพราะชื่อไฟล์ต้นทางเหมือนกัน!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>ไฟล์มีการเปลี่ยนแปลงตั้งแต่ถูกพบ</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
</message>
@@ -2036,7 +2056,8 @@ It is not advisable to use it.</source>
<translation>ไฟล์ %1 ไม่สามารถเปลี่ยนชื่อเป็น %2 เพราะชื่อไฟล์ต้นทางตรงกัน!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
</message>
@@ -2044,12 +2065,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
- <translation>ไฟล์ถูกลบออกจากการแชร์เพื่ออ่านเพียงอย่างเดียว ได้รับการเรียกคืน</translation>
+ <translation>ไฟล์ถูกลบออกจากการแชร์เพื่ออ่านเพียงอย่างเดียว ได้รับการกู้คืน</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>รหัส HTTP ผิดพลาด โดยเซิร์ฟเวอร์คาดว่าจะได้รับรหัส 204 แต่กลับได้รับ &quot;%1 %2&quot;</translation>
</message>
@@ -2070,78 +2091,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>โฟลเดอร์นี้จะต้องไม่ถูกเปลี่ยนชื่อ มันจะถูกเปลี่ยนกลับไปใช้ชื่อเดิม</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>โฟลเดอร์นี้จะต้องไม่ถูกเปลี่ยนชื่อ กรุณาตั้งชื่อมันให้เหมือนตอนที่แชร์</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
- <translation>ไฟล์ที่ถูกเปลี่ยนชื่อ แต่เป็นส่วนหนึ่งของการแชร์เพื่ออ่านเพียงอย่างเดียว ไฟล์ต้นฉบับจะถูกเรียกคืน</translation>
+ <translation>ไฟล์ที่ถูกเปลี่ยนชื่อ แต่เป็นส่วนหนึ่งของการแชร์เพื่ออ่านเพียงอย่างเดียว ไฟล์ต้นฉบับจะถูกกู้คืน</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>รหัส HTTP ผิดพลาด โดยเซิร์ฟเวอร์คาดว่าจะได้รับรหัส 201 แต่กลับได้รับ &quot;%1 %2&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>ไฟล์ถูกลบไปแล้ว</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>ไฟล์ต้นทางถูกเปลี่ยนแปลงในระหว่างการซิงค์ มันจะกลับมา</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
+ <source>Local file changed during sync.</source>
+ <translation>ไฟล์ต้นทางถูกเปลี่ยนแปลงขณะกำลังประสานข้อมูล</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>บังคับให้ยกเลิกงานในการตั้งค่าการเชื่อมต่อ HTTP กับ Qt &lt; 5.4.2</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>ไฟล์ต้นทางถูกลบออกในระหว่างการประสานข้อมูล</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
<source>Local file changed during sync.</source>
<translation>ไฟล์ต้นทางถูกเปลี่ยนแปลงขณะกำลังประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation>มีรหัสข้อผิดพลาดตอบกลับมาจากเซิร์ฟเวอร์ (%1)</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation>ไฟล์ไอดีได้หายไปจากเซิร์ฟเวอร์</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation>ETag ได้หายไปจากเซิร์ฟเวอร์</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>บังคับให้ยกเลิกงานในการตั้งค่าการเชื่อมต่อ HTTP กับ Qt &lt; 5.4.2</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>
+ <translation>ไฟล์ต้นทางได้ถูกแก้ไขแต่เป็นส่วนหนึ่งของการแชร์ให้สามารถอ่านได้อย่างเดียว มันถูกกู้คืนและการแก้ไขของคุณอยู่ในไฟล์ที่มีปัญหา</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>URL แบบสำรวจความคิดเห็นหายไป</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>ไฟล์ต้นทางถูกลบออกในระหว่างการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>เซิร์ฟเวอร์ไม่ยอมรับส่วนสุดท้าย (ไม่มี e-tag ในปัจจุบัน)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>ไฟล์ต้นทางถูกเปลี่ยนแปลงขณะกำลังประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>ข้อผิดพลาดในการเขียนข้อมูลเมตาไปยังฐานข้อมูล</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>เซิร์ฟเวอร์ไม่ยอมรับส่วนสุดท้าย (ไม่มี e-tag ในปัจจุบัน)</translation>
</message>
</context>
<context>
@@ -2157,42 +2219,42 @@ It is not advisable to use it.</source>
<translation>ป้ายข้อความ</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>เวลา</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>ไฟล์</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>แฟ้มเอกสาร</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>การกระทำ</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>ขนาด</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>โปรโตคอลการประสานข้อมูลต้นทาง</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>คัดลอก</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>คัดลอกรายชื่อกิจกรรมไปยังคลิปบอร์ด</translation>
</message>
@@ -2279,7 +2341,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/selectivesyncdialog.cpp" line="247"/>
<source>An error occurred while loading the list of sub folders.</source>
- <translation type="unfinished"/>
+ <translation>เกิดข้อผิดพลาดขณะโหลดรายชื่อของโฟลเดอร์ย่อย</translation>
</message>
</context>
<context>
@@ -2290,22 +2352,22 @@ It is not advisable to use it.</source>
<translation>ตั้งค่า</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>กิจกรรม</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>ทั่วไป</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>เครือข่าย</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>บัญชี</translation>
</message>
@@ -2313,27 +2375,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>กิจกรรม</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>ทั่วไป</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>เครือข่าย</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>บัญชี</translation>
</message>
@@ -2361,32 +2423,32 @@ It is not advisable to use it.</source>
<translation>พาธ ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>กำลังแชร์ %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>โฟลเดอร์: %2 </translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>เซิร์ฟเวอร์ไม่อนุญาตให้แชร์</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
- <translation type="unfinished"/>
+ <translation>คุณใช้สิทธิ์การเรียกข้อมูลจากเซิฟเวอร์สูงสุดแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>ไม่สามารถแชร์ไฟล์เพราะไม่ได้รับอนุญาต</translation>
</message>
@@ -2425,43 +2487,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation>และลิงค์อีเมล</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>คัดลอก &amp;ลิงค์</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>อนุญาตให้แก้ไข</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>ป้องกันด้วยรหัสผ่าน</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>รหัสผ่านถูกป้องกันแล้ว</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>ไม่สามารถแชร์ไฟล์เพราะไม่ได้รับอนุญาต</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>การแชร์สาธารณะจำเป็นต้องมีรหัสผ่าน</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>กรุณาตั้งรหัสผ่าน</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation>ไม่สามารถเปิดไคลเอนต์อีเมล</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation>เกิดข้อผิดพลาดเมื่อเปิดไคลเอ็นต์อีเมลเพื่อสร้างข้อความใหม่ บางทีไคลเอ็นต์อีเมลอาจยังไม่ได้ตั้งค่า?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;แชร์ลิงค์</translation>
</message>
@@ -2479,7 +2556,7 @@ It is not advisable to use it.</source>
<translation>แชร์กับผู้ใช้หรือกลุ่ม ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>ไม่มีผลลัพธ์สำหรับ &apos;%1&apos;</translation>
</message>
@@ -2512,17 +2589,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>สร้าง</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>เปลี่ยนแปลง</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>ลบ</translation>
</message>
@@ -2530,12 +2607,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>เข้าสู่ระบบผิดพลาด</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>คุณต้องเข้าสู่ระบบเป็นผู้ใช้ %1</translation>
</message>
@@ -2543,17 +2620,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - รับรองความถูกต้อง</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>ดู SSL Chipher Debug</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>จำเป้นต้องรับรองความถูกต้องอีกครั้ง</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>เซสชั่นของคุณหมดอายุแล้ว คุณจำเป็นต้องเข้าสู่ระบบใหม่</translation>
</message>
@@ -2561,7 +2643,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>แชร์กับ %1</translation>
@@ -2570,118 +2652,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;รายละเอียดใบรับรองความถูกต้อง&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>ชื่อทั่วไป (Common Name):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>เรื่องชื่อทางเลือก:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>องค์กร (Organization):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>หน่วยองค์กร (Organizational Unit):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>รัฐ/จังหวัด:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>ประเทศ:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Serial:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;แจ้งปัญหา&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>ผู้แจ้งปัญหา:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>ออกเมื่อวันที่:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>หมดอายุในวันที่:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;ลายนิ้วมือ&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;หมายเหตุ:&lt;/b&gt; ใบรับรองนี้ได้รับการอนุมัติด้วยตนเอง&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (ลงนามด้วยตนเอง)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>การเชื่อมต่อนี้ถูกเข้ารหัสโดยใช้ %1 บิต %2</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>ไม่มีการสนับสนุนสำหรับเซสชั่นตั๋ว SSL/ตัวบ่งชี้</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>ข้อมูลการรับรอง:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>การเชื่อมต่อนี้ไม่มีความปลอดภัยเพราะมันไม่ได้เข้ารหัส</translation>
@@ -2768,270 +2850,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>เสร็จสิ้น</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync ไม่สามารถโหลดไฟล์เจอร์นัล ไฟล์เจอร์นัลได้รับความเสียหาย</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;ปลั๊กอิน %1 สำหรับ csync ไม่สามารถโหลดได้.&lt;br/&gt;กรุณาตรวจสอบความถูกต้องในการติดตั้ง!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync เกิดข้อผิดพลาดบางประการในระหว่างประมวลผล internal trees</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>การจัดสรรหน่วยความจำ CSync ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>พบข้อผิดพลาดเกี่ยวกับ CSync fatal parameter</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>การอัพเดทขั้นตอนการประมวลผล CSync ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
- <translation>การปรับปรุงขั้นตอนการประมวลผล CSync ล้มเหลว</translation>
+ <translation>การอัพเดทขั้นตอนการประมวลผล CSync ล้มเหลว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync ไม่สามารถรับรองความถูกต้องที่พร็อกซี่</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync ไม่สามารถค้นหาพร็อกซี่บนเซิร์ฟเวอร์ได้</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync ล้มเหลวในการยืนยันสิทธิ์การเข้าใช้งานที่เซิร์ฟเวอร์ %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync ล้มเหลวในการเชื่อมต่อกับเครือข่าย</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>หมดเวลาการเชื่อมต่อเครือข่าย</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>เกิดข้อผิดพลาดเกี่ยวกับ HTTP transmission</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>โฟลเดอร์ที่ติดตั้งชั่วคราว ไม่สามารถใช้งานบนเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>เกิดข้อผิดพลาดบางอย่างขณะกำลังเปิดโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>เกิดข้อผิดพลาดขณะกำลังอ่านโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
- <translation type="unfinished"/>
+ <translation>ไฟล์/โฟลเดอร์ ที่ซ่อนอยู่จะถูกละเว้น</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>มีเพียง %1 ที่พร้อมใช้งาน คุณจำเป็นต้องมีไม่น้อยกว่า %2 เพื่อเริ่มใช้งาน</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์หลัก</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>ไม่ได้รับอนุญาต เพราะคุณไม่มีสิทธิ์ที่จะเพิ่มไฟล์ในโฟลเดอร์นั้น</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: ไม่มีพื้นที่เหลือเพียงพอบนเซิร์ฟเวอร์ %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync ไม่สามารถระบุข้อผิดพลาดได้</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>ยกเลิกโดยผู้ใช้</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>ชื่อไฟล์มีอักขระที่ไม่ถูกต้องจึงไม่สามารถประสานข้อมูลข้ามแพลตฟอร์ม</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>ล้มเหลวในการเข้าถึง CSync</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync ผิดพลาด ไม่สามารถโหลดหรือสร้างไฟล์เจอร์นัล ให้แน่ใจว่าคุณได้อ่านและเขียนสิทธิ์ในการประสานโฟลเดอร์ต้นทาง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync ล้มเหลวเนื่องจากการอนุญาตให้จัดการได้ถูกปฏิเสธ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync พยายามสร้างโฟลเดอร์ที่มีอยู่แล้ว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>ไม่สามารถใช้บริการได้ชั่วคราว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>ถูกปฏิเสธการเข้าถึง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>จำนวนข้อผิดพลาดภายในที่เกิดขึ้น %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>รายการจะไม่ถูกประสานข้อมูลเนื่องจากเกิดข้อผิดพลาดก่อนหน้านี้: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>ลิงค์สัญลักษณ์จะไม่ได้รับการสนับสนุนในการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>ไฟล์อยู่ในรายการที่ละเว้น</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation>ชื่อไฟล์มีช่องว่างต่อท้าย</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>ชื่อไฟล์ยาวเกินไป</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>สถิติความล้มเหลว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>การเข้ารหัสชื่อไฟล์ไม่ถูกต้อง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>ตัวอักษรไม่ถูกต้อง โปรดเปลี่ยนชื่อ &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>ไม่สามารถเตรียมการประสานข้อมูลเจอร์นัล</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
- <translation type="unfinished"/>
+ <translation>ไม่สามารถอ่านบัญชีดำจากฐานข้อมูลต้นทาง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
- <translation type="unfinished"/>
+ <translation>ไม่สามารถอ่านจากบันทึกการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>ไม่สามารถเปิดการผสานข้อมูลเจอร์นัล</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>มีชื่อแฟ้มอย่างน้อยหนึ่งตัวอักษรที่ไม่ถูกต้อง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>ถูกละเว้นเพราะ &quot;ข้อมูลที่เลือกประสาน&quot; ติดบัญชีดำ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>ไม่อนุญาติเพราะคุณไม่มีสิทธิ์ที่จะเพิ่มโฟลเดอร์ย่อยของโฟลเดอร์นั้น</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>ไม่อนุญาตให้อัพโหลดไฟล์นี้เพราะมันจะอ่านได้เพียงอย่างเดียวบนเซิร์ฟเวอร์ กำลังฟื้นฟู</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>ไม่อนุญาตให้ลบเพราะกำลังฟื้นฟู</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>ไฟล์ต้นทางและโฟลเดอร์ที่แชร์ถูกลบออก</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
- <translation>ไม่ได้รับอนุญาตให้ย้าย เพราะกำลังฟื้นฟูรายการ</translation>
+ <translation>ไม่ได้รับอนุญาตให้ย้าย เพราะกำลังกู้คืนรายการ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>ไม่อนุญาตให้ย้ายเพราะ %1 จะอ่านได้เพียงอย่างเดียว</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>ปลายทาง</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>แหล่งที่มา</translation>
</message>
@@ -3041,7 +3128,7 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/gui/synclogdialog.ui" line="14"/>
<source>Synchronisation Log</source>
- <translation>บันทึกการประสานข้อมูล</translation>
+ <translation>การประสานข้อมูลไฟล์ Log</translation>
</message>
</context>
<context>
@@ -3055,17 +3142,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;รุ่น %1 สำหรับข้อมูลเพิ่มเติมกรุณาเยี่ยมชม &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;จดทะเบียนภายใต้ลิขสิทธิ์ของ ownCloud&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation>&lt;p&gt;ลิขสิทธิ์ ownCloud GmbH&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;เผยแพร่โดย %1 และมีใบอนุญาตภายใต้ GNU General Public License (GPL) รุ่น 2.0 &lt;br/&gt;%2 และการลงทะเบียนโลโก้ %2 เครื่องหมายการค้าของ %1 ในประเทศสหรัฐอเมริกา ประเทศอื่นๆ หรือทั้งสองอย่าง&lt;/p&gt;</translation>
</message>
@@ -3091,202 +3178,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>กรุณาเข้าสู่ระบบ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>โฟลเดอร์ %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>ยังไม่มีการกำหนดค่าโฟลเดอร์ที่ต้องการประสานข้อมูล</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>ไม่มีการกำหนดค่าการประสานข้อมูลโฟลเดอร์</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>เปิดในเบราว์เซอร์</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>เข้าสู่ระบบ...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>ออกจากระบบ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>การเปลี่ยนแปลงล่าสุด</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>กำลังตรวจสอบการเปลี่ยนแปลงใน &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>โฟลเดอร์ที่มีการจัดการแล้ว:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>เปิดโฟลเดอร์ &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>เปิด %1 ในเบราว์เซอร์</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>สถานะที่ไม่รู้จัก</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>ตั้งค่า...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>รายละเอียด...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>ช่วยเหลือ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>ออก %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>ถูกตัดการเชื่อมต่อจาก %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>ไม่สนับสนุนรุ่นของ Server</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>เซิฟเวอร์บนบัญชี %1 ได้ใช้งานในรุ่นเก่าและเป็นรุ่นที่ไม่ได้รับการสนับสนุนแล้ว %2 หากใช้งานต่อไปอาจเป็นอันตราย ดำเนินการที่มีความเสี่ยงด้วยตัวคุณเอง</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>ยกเลิกการเชื่อมต่อจากบัญชี:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>บัญชี %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
- <translation type="unfinished"/>
+ <translation>บัญชีประสานข้อมูลถูกปิดใช้งาน</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
- <translation type="unfinished"/>
+ <translation>ทำโฟลเดอร์ทั้งหมดต่อ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
- <translation type="unfinished"/>
+ <translation>หยุดโฟลเดอร์ทั้งหมดชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>ประสานข้อมูลทั้งหมดต่อ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
- <translation type="unfinished"/>
+ <translation>ประสานข้อมูลต่อ</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
- <translation type="unfinished"/>
+ <translation>หยุดการประสานข้อมูลทั้งหมดชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
- <translation type="unfinished"/>
+ <translation>หยุดการประสานข้อมูลชั่วคราว</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>ออกจากระบบของบัญชีทั้งหมด</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>เข้าสู่ระบบของบัญชีทั้งหมด...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation>สร้างบัญชีใหม่...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>ความผิดพลาดในขณะนี้</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>ไม่มีรายการที่ถูกประสานข้อมูลเมื่อเร็วๆ นี้</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>กำลังประสานข้อมูล %1 จาก %2 (เหลือ %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation>กำลังประสานข้อมูล %1 จากทั้งหมด %2</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>กำลังประสานข้อมูล %1 (เหลือ %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>กำลังประสานข้อมูล %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>ถึงวันที่</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;รุ่น %2 สำหรับข้อมูลเพิ่มเติมดูได้ที่&lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt; โดย Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz และอีกหลายคนที่ไม่ได้เอ่ยนาม &lt;/small&gt;&lt;/p&gt;&lt;p&gt; สงวนลิขสิทธิ์ ownCloud, Inc.&lt;/p&gt;&lt;p&gt;ได้รับใบอนุญาตภายใต้ GNU General Public License (GPL) รุ่น 2.0&lt;br/&gt; ownCloud และโลโก้ ownCloud เป็นเครื่องหมายจดทะเบียนการค้าของ ownCloud ในประเทศสหรัฐอเมริกา ประเทศอื่นๆ หรือทั้งสองอย่าง&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;เวอร์ชัน %2 สำหรับข้อมูลเพิ่มเติมสามารถอ่านได้ที่ &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;สำหรับปัญหาที่พบ, และอ่านข้อมูลเพิ่มเติมที่: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;โดย Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt และคนอื่นๆ&lt;/small&gt;&lt;/p&gt;&lt;p&gt;ลิขสิทธิ์ ownCloud GmbH&lt;/p&gt;&lt;p&gt;ภายใต้สัญญาอนุญาต GNU General Public (GPL) เวอร์ชั่น 2.0 &lt;br/&gt; ownCloud และโลโก้ ownCloud เป็นเครื่องหมายการค้าจดทะเบียนของ ownCloud GmbH ในสหรัฐอเมริกาและประเทศอื่นๆ&lt;/p&gt;</translation>
</message>
</context>
<context>
@@ -3301,9 +3403,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>ป้ายข้อความ</translation>
</message>
@@ -3323,7 +3425,7 @@ It is not advisable to use it.</source>
<translation>เริ่มต้นทำความสะอาดการประสานข้อมูล (ลบโฟลเดอร์ต้นทาง)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>เลือกข้อมูลที่ต้องการประสาน</translation>
</message>
@@ -3348,7 +3450,7 @@ It is not advisable to use it.</source>
<translation>ผสานข้อมูลทุกอย่างจากเซิร์ฟเวอร์</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>ข้อความสถานะ</translation>
</message>
@@ -3361,26 +3463,15 @@ It is not advisable to use it.</source>
<translation>แบบฟอร์ม</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>และชื่อผู้ใช้</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>และหรัสผ่าน</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>ป้ายกำกับผิดพลาด</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>ป้ายข้อความ</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3497,7 +3588,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3505,37 +3596,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
- <translation type="unfinished"/>
+ <translation>ในอนาคต</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n วันที่ผ่านมา</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n ชั่วโมงที่ผ่านมา</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
- <translation type="unfinished"/>
+ <translation>ตอนนี้</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>ไม่กี่นาทีที่ผ่านมา</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n นาทีที่ผ่านมา</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>บางเวลาที่ผ่านมา</translation>
</message>
@@ -3543,57 +3634,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 กิกะไบต์</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 เมกะไบต์</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 กิโลไบต์</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n ปี</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n เดือน</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n วัน</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n ชั่วโมง</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n นาที</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n วินาที</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3614,7 +3705,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;ที่สร้างขึ้นจากการแก้ไข Git &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; บน %3, %4 กำลังใช้ Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3622,82 +3713,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>ถูกดาวน์โหลด</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>ถูกอัพโหลด</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
- <translation>เซิฟเวอร์ดาวน์โหลดรุ่นใหม่แล้ว ได้ถูกคัดลอก เปลี่ยนแปลงไฟล์ต้นฉบับลงในไฟล์ความขัดแย้ง</translation>
+ <translation>ดาวน์โหลดรุ่นของเซิฟเวอร์แล้ว ได้ถูกคัดลอกและเปลี่ยนแปลงไฟล์ต้นฉบับลงในไฟล์ที่มีปัญหา</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>ลบแล้ว</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>ถูกย้ายไปยัง %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>ถูกละเว้น</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>ข้อผิดพลาดในการเข้าถึงระบบไฟล์</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>ข้อผิดพลาด</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation>อัพเดทเมตาดาต้าต้นทางแล้ว</translation>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>ไม่ทราบ</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>กำลังดาวน์โหลด</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>กำลังอัพโหลด</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>กำลังลบ</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>กำลังย้าย</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>กำลังละเว้น</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>ข้อผิดพลาด</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation>กำลังอัพเดทเมตาดาต้าต้นทาง</translation>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_tr.ts b/translations/client_tr.ts
index 9bd217c5b..19396258a 100644
--- a/translations/client_tr.ts
+++ b/translations/client_tr.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="tr" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="tr" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Hedef dosya beklenilmeyen boyuta veya düzenlenme tarihine sahip</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Seçilmemiş klasörler yerel dosya sisteminizden &lt;b&gt;kaldırılacak&lt;/b&gt; ve bir daha bu bilgisayarla eşitlenmeyecektir</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Uygula</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>İptal</translation>
</message>
@@ -121,168 +136,168 @@
<translation>&lt;server&gt; ile &lt;user&gt; olarak bağlantı kuruldu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Hiçbir hesap yapılandırılmamış.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Yeni ekle</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Kaldır</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Hesap</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Ne eşitleneceğini seçin</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>Klasör eşitleme bağlantısını sil</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Klasör oluşturma başarısız oldu</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;&lt;i&gt;%1&lt;/i&gt; yerel klasörü oluşturulamadı.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>Klasör Eşitleme Bağlantısının Silinmesini Onaylayın</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>Klasör Eşitleme Bağlantısını Sil</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Eşitleme Çalışıyor</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Eşitleme işlemi devam ediyor.&lt;br/&gt;Durdurmak istiyor musunuz?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 kullanımda</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>Sunucu sürümü %1 eski ve desteklenmiyor! Kendi riskinizle devam edin.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>%1 ile bağlı.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>%1 sunucusu geçici olarak ulaşılamaz durumda.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>%1 oturumu sonlandırıldı.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>%1 ile %2 bağlantısı yok.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Giriş yap</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>Çok büyük olduklarından eşitlenmemiş yeni klasörler mevcut:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Hesap Silinmesini Onaylayın</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;i&gt;%1&lt;/i&gt; hesabının bağlantısını kaldırmayı gerçekten istiyor musunuz?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Not:&lt;/b&gt; Bu işlem herhangi bir dosyayı &lt;b&gt;silmeyecektir&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>Bağlantıyı kaldır</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Klasörü aç</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Çıkış yap</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>Eşitlemeye devam et</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>Eşitlemeyi duraklat</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;i&gt;%1&lt;/i&gt; klasörünün eşitlemesini durdurmayı gerçekten istiyor musunuz?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Not:&lt;/b&gt; Bu işlem herhangi bir dosyayı &lt;b&gt;silmeyecektir&lt;/b&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) / %2 kullanımda. Ağdan bağlanmış veya paylaşılan dizinlerin farklı sınırları olabilir.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>%1 / %2 kullanımda</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>Şu anda depolama kullanım bilgisi mevcut değil.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Hiç %1 bağlantısı yapılandırılmamış.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Oturum sonlandırıldı</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Bağlantı kesildi</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>Bağlandı</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Hizmet kullanılamıyor</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Ağ hatası</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Yapılandırma hatası</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Bilinmeyen hesap durumu</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Sunucu Etkinliği</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Eşitleme Protokolü</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>Gözardı edilen veya hatalı dosyaların listesi</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Kopyala</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Etkinlik listesini panoya kopyala.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Eşitlenmedi</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
- <translation>Senkron edilmedi (%1)</translation>
+ <translation>Eşitlenmedi (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Sunucu etkinlik listesi panoya kopyalandı.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>Eşitleme etkinlik listesi panoya kopyalandı.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>Eşitlenmemiş ögelerin listesi panoya kopyalandı.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Panoya kopyalandı</translation>
</message>
@@ -413,49 +428,49 @@
<translation>MetinEtiketi</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Sunucu Etkinlikleri</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Kopyala</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Etkinlik listesini panoya kopyala.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
- <translation>Eylem gerekiyor: Bildirimler</translation>
+ <translation>Eylem Gerekiyor: Bildirimler</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;%1 hesabının geçerli kılınmış etkinlikleri bulunmamakta.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
- <translation><numerusform>%2 den %n yeni bildiriminiz var.</numerusform><numerusform>%2 den %n yeni bildiriminiz var.</numerusform></translation>
+ <translation><numerusform>%2 için %n yeni bildiriminiz var.</numerusform><numerusform>%2 için %n yeni bildiriminiz var.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
- <translation><numerusform>%2 ve %1 den %n yeni bildiriminiz var.</numerusform><numerusform>%2 ve %1 den %n yeni bildiriminiz var.</numerusform></translation>
+ <translation><numerusform>%2 ve %1 için %n yeni bildiriminiz var.</numerusform><numerusform>%2 ve %1 için %n yeni bildiriminiz var.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
- <translation>%2 ve %1 ve diğer hesaplardan %n yeni bildiriminiz var.</translation>
+ <translation>%2, %1 ve diğer hesaplardan %n yeni bildiriminiz var.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
- <translation>%1 yeni bildirim - Eylem Gerekiyor</translation>
+ <translation>%1 Bildirim - Eylem Gerekiyor</translation>
</message>
</context>
<context>
@@ -486,12 +501,12 @@
<translation>Sertifika parolası :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Bir sertifika seçin</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Sertifika dosyaları (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Yetkilendirme Gerekli</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Lütfen %2 üzerindeki, &apos;%1&apos; için kullanıcı adı ve parolayı girin.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Kullanıcı:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Parola:</translation>
</message>
@@ -522,40 +537,40 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Hiçbir ownCloud hesabı yapılandırılmamış</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Yapılandırılmış sunucu, bu istemci için çok eski</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Lütfen en son sunucuya güncelleyin veya istemciyi yeniden başlatın</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Giriş hatası: Kullanıcı adı veya parola hatalı.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>zaman aşımı</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Sağlanan kimlik bilgileri doğru değil</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Bağlantı zaman aşımına uğradı</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Kullanıcı tarafından iptal edildi</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>%1 yerel klasörü mevcut değil.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 bir dizin olmalı, ancak değil.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 okunabilir değil.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 kaldırıldı.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 indirildi.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 güncellendi.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1, %2 olarak adlandırıldı.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1, %2 konumuna taşındı.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
- <translation><numerusform>&apos;%1&apos; ve diğer %n dosya kaldırıldı.</numerusform><numerusform>&apos;%1&apos; ve diğer %n dosya kaldırıldı.</numerusform></translation>
+ <translation><numerusform>%1 ve diğer %n dosya kaldırıldı.</numerusform><numerusform>%1 ve diğer %n dosya kaldırıldı.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
- <translation><numerusform>&apos;%1&apos; ve diğer %n dosya indirildi.</numerusform><numerusform>&apos;%1&apos; ve diğer %n dosya indirildi.</numerusform></translation>
+ <translation><numerusform>%1 ve diğer %n dosya indirildi.</numerusform><numerusform>%1 ve diğer %n dosya indirildi.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
- <translation><numerusform>&apos;%1&apos; ve diğer %n dosya güncellendi.</numerusform><numerusform>&apos;%1&apos; ve diğer %n dosya güncellendi.</numerusform></translation>
+ <translation><numerusform>&apos;%1&apos; ve diğer %n dosya güncellendi.</numerusform><numerusform>%1 ve diğer %n dosya güncellendi.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1, %2 olarak yeniden adlandırıldı ve %n diğer dosyanın adı değiştirildi.</numerusform><numerusform>%1, %2 olarak yeniden adlandırıldı ve %n diğer dosyanın adı değiştirildi.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1, %2 konumuna taşındı ve %n diğer dosya taşındı.</numerusform><numerusform>%1, %2 konumuna taşındı ve %n diğer dosya taşındı.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 ve %n diğer dosya eşitleme çakışması bulunduruyor.</numerusform><numerusform>%1 ve %n diğer dosya eşitleme çakışması bulunduruyor.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
- <translation type="unfinished"/>
+ <translation>%1 bir eşitleme çakışması bulunduruyor. Lütfen çakışan dosyayı kontrol edin!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%1 ve diğer %n dosya hatalar nedeniyle eşlenemedi. Ayrıntılar için ayıt dosyasına bakın.</numerusform><numerusform>%1 ve diğer %n dosya hatalar nedeniyle eşlenemedi. Ayrıntılar için günlük dosyasına bakın.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 bir hata nedeniyle eşitlenemedi. Ayrıntılar için günlüğe bakın.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Eşitleme Etkinliği</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Sistem hariç tutulma dosyası okunamadı</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>%1 MB boyutundan daha büyük bir yeni klasör eklendi: %2\n
İndirmek istiyorsanız lütfen ayarlar bölümünden seçin.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,40 +715,39 @@ Bu, klasörün sessizce yeniden yapılandırılması veya tüm dosyaların el il
Bu işlemi gerçekleştirmek istediğinize emin misiniz?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Tüm Dosyalar Kaldırılsın mı?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Tüm dosyaları kaldır</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Dosyaları koru</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>Bu eşitleme, &apos;%1&apos; eşitleme klasörünündeki dosyaları daha önceki bir zamana sıfırlayacak.
-Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitlemeye normal şekilde devam etmek dosyalarınızın daha önceki durumu ile üzerine yazılmasına sebep olacak. Çakışma durumunda en son yerel dosyalarınızı tutmak ister misiniz?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Yedek bulundu</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>Normal Eşitleme</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>Çakışma Durumunda Yerel Dosyaları Tut</translation>
</message>
@@ -741,112 +755,112 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Klasör durumu sıfırılanamadı</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Eski eşitleme günlüğü &apos;%1&apos; bulundu ancak kaldırılamadı. Başka bir uygulama tarafından kullanılmadığından emin olun.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (yedek)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (yedek %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Tanımlanmamış Durum.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>Eşitlemenin başlanması bekleniyor.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Eşitleme için hazırlanıyor.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Eşitleme çalışıyor.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Son Eşitleme başarılı oldu.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Son eşitleme başarılıydı, ancak tekil dosyalarda uyarılar vardı.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Kurulum Hatası.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Kullanıcı İptal Etti.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Eşitleme duraklatıldı.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Eşitleme duraklatıldı)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>Geçerli klasör seçilmedi!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>Seçilen yol bir klasör değil!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>Seçilen klasöre yazma izniniz yok!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>%1 yerel klasörü zaten bir eşitleme bağlantısında kullanılan klasördür. Lütfen farklı bir seçim yapın!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>%1 yerel klasörü zaten bir eşitleme klasörü içermektedir. Lütfen farklı bir seçim yapın!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>%1 yerel klasörü sembolik bağlantıdır. Bu bağlantının işaretlediği klasörde zaten yapılandırılmış bir klasör mevcut. Lütfen farklı bir seçim yapın!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>%1 yerel klasörü zaten bir eşitleme klasörü içindedir. Lütfen farklı bir seçim yapın!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>%1 yerel klasörü sembolik bağlantıdır. Bu bağlantının işaretlediği klasör zaten yapılandırılmış bir klasör içindedir. Lütfen farklı bir seçim yapın!</translation>
</message>
@@ -861,7 +875,7 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="241"/>
<source>Synchronizing with local folder</source>
- <translation>Yerel klasörü ile senkronize etme</translation>
+ <translation>Yerel klasör ile eşitleniyor</translation>
</message>
<message>
<location filename="../src/gui/folderstatusdelegate.cpp" line="285"/>
@@ -872,127 +886,133 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>Bir klasör eklemek için bağlı olmanız gerekir</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>Bir klasörü eşitlemeye dahil etmek için bu düğmeye tıklayın.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>Sunucudan klasörlerin listesi yüklenirken hata oluştu.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Oturum sonlandırıldı</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>Klasör ekleme devre dışı, çünkü şu anda bütün dosyalarınızı eşitliyorsunuz. Çoklu klasör eşitlemesi yapmak istiyorsanız, lütfen geçerli yapılandırılmış kök klasörünü silin.</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>Sunucudan klasör listesi alınıyor...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>%1 üzerindeki değişiklikler denetleniyor</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>%1 eşitleniyor</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>indirme %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>gönderme %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3/%4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation type="unfinished"/>
+ <translation>Kalan %5, %1/%2, dosya %3/%4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1/%2, %3/%4 dosya</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>dosya %1/%2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Bekleniyor...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>Diğer %n klasör bekleniyor...</numerusform><numerusform>Diğer %n klasör bekleniyor...</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>Eşitleme için hazırlanıyor...</translation>
</message>
@@ -1105,22 +1125,22 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Sunucudan E-Tag alınamadı, Vekil Sunucu/Ağ Geçidi&apos;ni denetleyin.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Devam etmek üzere farklı bir E-Etiket aldık. Sonraki işlemde yeniden denenecek.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Sunucu yanlış içerik aralığı döndürdü</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Bağlantı Zaman Aşımı</translation>
</message>
@@ -1202,28 +1222,25 @@ Bunun nedeni sunucuda bir yedeğin geri yüklenmesinden dolayı olabilir. Eşitl
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>Lütfen %1 parolasını girin:
-
-Kullanıcı: %2
-Hesap: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>Anahtar zinciri okuması hatayla sonuçlandı: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Parolayı Girin</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1268,7 +1285,7 @@ Hesap: %3
<translation>Kaldır</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1277,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
Bir dizinin silinmesine engel oluyorsa silmeye izin verilen yerlerdeki ögeler silinecektir. Bu ham veriler için kullanışlıdır.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Dosya açılamadı</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Değişiklikler &apos;%1&apos; üzerine yazılamıyor.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Yoksayma Deseni Ekle</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Yeni bir yoksayma deseni ekle:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Bu girdi &apos;%1&apos; üzerinde sistem tarafından sağlanmaktadır ve bu görünümde değiştirilemez.</translation>
</message>
@@ -1371,7 +1388,7 @@ Bir dizinin silinmesine engel oluyorsa silmeye izin verilen yerlerdeki ögeler s
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Bağlantı zaman aşımına uğradı</translation>
</message>
@@ -1487,32 +1504,32 @@ Bir dizinin silinmesine engel oluyorsa silmeye izin verilen yerlerdeki ögeler s
<translation>Otomatik sınırla</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Vekil sunucu makine adı</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Vekil sunucu kullanıcı adı</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Vekil sunucu parolası</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) vekil sunucusu</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 vekil sunucusu</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>Bant genişliği sınırlaması için Qt &gt;= 5.4 gerekmektedir</translation>
</message>
@@ -1520,26 +1537,26 @@ Bir dizinin silinmesine engel oluyorsa silmeye izin verilen yerlerdeki ögeler s
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
- <translation>%1 de yaratıldı</translation>
+ <translation>Oluşturulma %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>Saniyeler içinde kapatılıyor...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%1 isteği %2 üzerinde başarısız oldu</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
- <translation type="unfinished"/>
+ <translation>%2 üzerinde &apos;%1&apos; seçildi</translation>
</message>
</context>
<context>
@@ -1673,7 +1690,7 @@ for additional privileges during the process.</source>
<translation>İstemci taraflı TLS sertifikasını yapılandır</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;em&gt;%1&lt;/em&gt; güvenli sunucu adresine bağlantı başarısız. Nasıl devam etmek istersiniz?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1698,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
- <translation>&amp;Eposta</translation>
+ <translation>&amp;E-posta</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>%1 bağlantısını yap</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Kullanıcı kimlik bilgilerini gir</translation>
</message>
@@ -1729,139 +1746,139 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;%1 bağlantısı başarılı: %2 sürüm %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>%2 üzerinde %1 adresine bağlanılamadı:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>%2 üzerinde %1 bağlantısı yapılırken zaman aşımı.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>%2 üzerinde %1 bağlantısı deneniyor...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Sunucuda giriş sırasında istek &apos;%1&apos; adresine yönlendirilmiş. Adres hatalı veya sunucu yanlış ayarlanmış.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Yetkilendirilmiş webdav isteği geçersiz bir cevap alındı</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Erişim sunucu tarafından yasaklandı. Geçerli erişime sahip olup olmadığınızı doğrulamak için hizmete web tarayıcınızla erişmek üzere &lt;a href=&quot;%1&quot;&gt;buraya tıklayın&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Yerel eşitleme klasörü %1 zaten mevcut, eşitlemek için ayarlanıyor.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Yerel eşitleme klasörü %1 oluşturuluyor...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>tamam</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>başarısız.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>%1 yerel klasörü oluşturulamadı</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Uzak klasör belirtilmemiş!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Hata: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>ownCloud üzerinde klasör oluşturuluyor: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>%1 uzak klasörü başarıyla oluşturuldu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Uzak klasör %1 zaten mevcut. Eşitlemek için bağlanılıyor.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Klasör oluşturma %1 HTTP hata kodu ile sonuçlandı</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Uzak klasör oluşturması, geçersiz kimlik bilgileri nedeniyle başarısız!&lt;br/&gt;Lütfen geri gidin ve bilgileri denetleyin.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Uzak klasör oluşturma muhtemelen hatalı kimlik bilgilerinden dolayı başarısız oldu.&lt;/font&gt;&lt;br/&gt;Lütfen geri gidip kimlik bilgilerini doğrulayın.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Uzak klasör %1 oluşturma işlemi &lt;tt&gt;%2&lt;/tt&gt; hatası ile başarısız oldu.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>%1 kaynaklı %2 uzak dizinine bir eşitleme bağlantısı ayarlandı.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>%1 bağlantısı başarılı!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>%1 bağlantısı kurulamadı. Lütfen tekrar denetleyin.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Klasör adlandırma başarısız</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Klasör veya içerisindeki bir dosya farklı bir program içerisinde açık olduğundan, kaldırma ve yedekleme işlemi yapılamıyor. Lütfen klasör veya dosyayı kapatıp yeniden deneyin veya kurulumu iptal edin.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Yerel eşitleme klasörü %1 başarıyla oluşturuldu!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1886,12 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 Bağlantı Sihirbazı</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Klasör yapılandırmasını atla</translation>
</message>
@@ -1900,7 +1917,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Bağlantı Zaman Aşımı</translation>
</message>
@@ -1908,7 +1925,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Getirme URL&apos;sinden geçersiz JSON yanıtı</translation>
</message>
@@ -1916,57 +1933,57 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>%1 dosyası, yerel dosya adı çakışması nedeniyle indirilemiyor!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>Dosya indirimi boş disk alanını %1 altına düşürecektir</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>Boş disk alanı %1 altında</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>Dosya sunucudan silindi</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Dosya tamamıyla indirilemedi.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
- <translation type="unfinished"/>
+ <translation>Sunucu boyutunu %1 olarak duyurmasına rağmen indirilen dosya boş.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Yerel bir dosya ismi ile çakıştığından, %1 dosyası kaydedilemedi!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Dosya, bulunduğundan itibaren değişmiş</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
@@ -2007,7 +2024,7 @@ Kullanmanız önerilmez.</translation>
<message>
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
@@ -2036,20 +2053,21 @@ Kullanmanız önerilmez.</translation>
<translation>Yerel bir dosya adı çakışması nedeniyle %1 dosyası %2 olarak adlandırılamadı</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Dosya salt okunur bir paylaşımdan kaldırılmıştı. Geri yüklendi.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Sunucudan yanlış HTTP kodu döndü. 204 bekleniyordu, ancak &quot;%1 %2&quot; geldi.</translation>
</message>
@@ -2064,84 +2082,125 @@ Kullanmanız önerilmez.</translation>
<message>
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Bu klasörün adı değiştirilmemelidir. Özgün adına geri dönüştürüldü.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Bu klasörün adı değiştirilmemelidir. Lütfen Shared olarak geri adlandırın.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Dosya adlandırıldı ancak salt okunur paylaşımın bir parçası. Özgün dosya geri yüklendi.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Sunucudan yanlış HTTP kodu döndü. 201 bekleniyordu, ancak &quot;%1 %2&quot; geldi.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <translation>Veritabanına üstveri yazma hatası</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Dosya Kaldırıldı</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Eşitleme sırasında yerel dosya değişti. Devam edilecek.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Eşitleme sırasında yerel dosya değişti.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>Veritabanına üstveri yazma hatası</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Qt &lt; 5.4.2 ile HTTP bağlantı sıfırlamasında görev iptali zorlanıyor.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Eşitleme sırasında yerel dosya kaldırıldı.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Eşitleme sırasında yerel dosya değişti.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Qt &lt; 5.4.2 ile HTTP bağlantı sıfırlamasında görev iptali zorlanıyor.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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>Dosya yerel olarak düzenlendi ancak salt okunur paylaşımın bir parçası. Geri yüklendi ve düzenlemeniz çakışan dosyada.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Getirme URL&apos;si eksik</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Eşitleme sırasında yerel dosya kaldırıldı.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>Sunucu son yığını onaylamadı. (Mevcut e-etiket bulunamadı)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Eşitleme sırasında yerel dosya değişti.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>Veritabanına metaveri yazma hatası</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>Sunucu son yığını onaylamadı. (Mevcut e-etiket bulunamadı)</translation>
</message>
</context>
<context>
@@ -2157,42 +2216,42 @@ Kullanmanız önerilmez.</translation>
<translation>MetinEtiketi</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Zaman</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Dosya</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Klasör</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Eylem</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Boyut</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>Yerel eşitleme protokolü</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Kopyala</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Etkinlik listesini panoya kopyala.</translation>
</message>
@@ -2290,22 +2349,22 @@ Kullanmanız önerilmez.</translation>
<translation>Ayarlar</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Etkinlik</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Genel</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Ağ</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Hesap</translation>
</message>
@@ -2313,27 +2372,27 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Etkinlik</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Genel</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Ağ</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Hesap</translation>
</message>
@@ -2361,32 +2420,32 @@ Kullanmanız önerilmez.</translation>
<translation>ownCloud Yolu:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 Paylaşma</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Klasör: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>Sunucu, paylaşımı desteklemiyor</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
- <translation type="unfinished"/>
+ <translation>Sunucudan mümkün olan en fazla paylaşım hakları alınıyor...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Dosya paylaşılamaz, çünkü sizinle paylaşım izni olmaksızın paylaşılmış.</translation>
</message>
@@ -2425,43 +2484,58 @@ Kullanmanız önerilmez.</translation>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Bağ&amp;lantıyı kopyala</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Düzenlemeye izin ver</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Parola koruması</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Parola Korumalı</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Dosya paylaşılamaz, çünkü sizinle paylaşım izni olmaksızın paylaşılmış.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Herkese &amp;açık paylaşım için parola gerekir</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>Lütfen Parola Atayın</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;Paylaşma bağlantısı</translation>
</message>
@@ -2479,7 +2553,7 @@ Kullanmanız önerilmez.</translation>
<translation>Kullanıcı ve gruplarla paylaş...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>&apos;%1&apos; için sonuç yok</translation>
</message>
@@ -2512,17 +2586,17 @@ Kullanmanız önerilmez.</translation>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>oluştur</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>değiştir</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>sil</translation>
</message>
@@ -2530,12 +2604,12 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Oturum Açma Hatası</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>%1 kullanıcısı olarak oturum açmalısınız</translation>
</message>
@@ -2543,17 +2617,22 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Kimlik Doğrulaması</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>SSL Şifreleme Hata Ayıklama Görünümü</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Yeniden kimlik doğrulama gerekli</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Oturumunuzun süresi doldu. İstemciyi kullanmaya devam etmek için yeniden oturum açmanız gerekiyor.</translation>
</message>
@@ -2561,7 +2640,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>%1 ile paylaş</translation>
@@ -2570,119 +2649,119 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Sertifika Ayrıntıları&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Ortak Ad (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Konu Alternatif İsimleri:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Kurum (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Kuruluş Birimi (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Bölge/İlçe:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Ülke:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Seri No:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Veren&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Veren:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Verilme:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Bitiş:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Parmak İzleri&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Not:&lt;/b&gt; Bu sertifika el ile onaylandı&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (kendinden imzalı)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>Bu bağlantı %1 bit %2 kullanılarak şifrelenmiştir.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>SSL oturum biletleri/tanımlayıcıları desteklenmiyor</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Sertifika bilgisi:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>Bu bağlantı şifrelenmediğinden güvenli DEĞİL.
@@ -2770,270 +2849,275 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Başarılı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync günlük dosyasını yükleyemedi. Günlük dosyası bozuk.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Csync için %1 eklentisi yüklenemedi.&lt;br/&gt;Lütfen kurulumu doğrulayın!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync dahili ağaçları işlerken bir hata ile karşılaştı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync bellek ayıramadı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync ciddi parametre hatası.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync güncelleme süreç adımı başarısız.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync uzlaştırma süreç adımı başarısız.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync vekil sunucuda kimlik doğrulayamadı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync bir vekil veya sunucu ararken başarısız oldu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync %1 sunucusunda kimlik doğrularken başarısız oldu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync ağa bağlanamadı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Bir ağ zaman aşımı meydana geldi.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Bir HTTP aktarım hatası oluştu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>Bağlanan dizin geçici olarak sunucuda mevcut değil</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>Klasör açılırken bir hata oluştu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>Klasör okunurken hata oluştu.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>Dosya/Klasör gizli olduğu için yoksayıldı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Sadece %1 mevcut, Çalıştırmak için en az %2 gerekmektedir</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>Üst dizin ekleme yetkiniz olmadığından izin verilmedi</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>Bu klasöre dosya ekleme yetkiniz olmadığından izin verilmedi</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: %1 sunucusunda kullanılabilir alan yok.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync belirtilmemiş hata.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Kullanıcı tarafından iptal edildi</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>Dosya adı platformlar arası eşitleme yapılamayacak geçersiz karakterler içeriyor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync erişimde başarısız oldu</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync, günlük dosyası yüklenemedi veya oluşturalamadı. Lütfen yerel eşitleme dizininde okuma ve yazma izinleriniz olduğundan emin olun.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync ele alınmayan izin reddinden dolayı başarısız.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync, zaten mevcut olan bir klasör oluşturmaya çalıştı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Hizmet geçiçi olarak kullanılamıyor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Erişim yasak</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>%1 numaralı dahili bir hata oluştu </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Bu öge, önceki hatalardan dolayı eşitlenemiyor: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Sembolik bağlantılar eşitlemede desteklenmiyor.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Dosya yoksayma listesinde.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Dosya adı çok uzun.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>Durum alma başarısız.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Dosya adı kodlaması geçerli değil</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>Geçersiz karakterler, lütfen &quot;%1&quot; yerine yeni bir isim girin</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Bir eşitleme günlüğü başlatılamadı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
- <translation type="unfinished"/>
+ <translation>Yerel veritabanından kara liste okunamadı</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>Eşitleme günlüğünden okunamadı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Eşitleme günlüğü açılamıyor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Dosya adı en az bir geçersiz karakter içeriyor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>&quot;Eşitlenecekleri seçin&quot; kara listesinde olduğundan yoksayıldı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Bu dizine alt dizin ekleme yetkiniz olmadığından izin verilmedi</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Sunucuda salt okunur olduğundan, bu dosya yüklenemedi, geri alınıyor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Kaldırmaya izin verilmedi, geri alınıyor</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Yerel dosyalar ve paylaşım klasörü kaldırıldı.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Taşımaya izin verilmedi, öge geri alındı</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>%1 salt okunur olduğundan taşımaya izin verilmedi</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>hedef</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>kaynak</translation>
</message>
@@ -3057,17 +3141,17 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Sürüm %1. Daha fazla bilgi için lütfen &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt; adresini ziyaret edin.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;Telif Hakkı ownCloud Anonim Şirketi&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;%1 tarafından dağıtılmış ve GNU Genel Kamu Lisansı (GPL) Sürüm 2.0 ile lisanslanmıştır.&lt;br/&gt;%2 ve %2 logoları ABD ve/veya diğer ülkelerde %1 tescili markalarıdır.&lt;/p&gt;</translation>
</message>
@@ -3093,202 +3177,217 @@ Kullanmanız önerilmez.</translation>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Lütfen oturum açın</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Klasör %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Yapılandırılmış eşitleme klasörü yok.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Yapılandırılmış eşitleme klasörü yok.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Tarayıcıda aç</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Giriş yap...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Çıkış yap</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Son Değişiklikler</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>%1 deki değişiklikler denetleniyor</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Yönetilen Klasörler:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>&apos;%1&apos; klasörünü aç</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>%1&apos;ı tarayıcıda aç</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Bilinmeyen durum</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Ayarlar...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Ayrıntılar...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Yardım</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>%1&apos;tan çık</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>%1 ile bağlantı kesildi</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>Desteklenmeyen Sunucu Sürümü</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>%1 hesabındaki sunucu eski ve desteklenmeyen %2 sürümünde. Bu istemciyi desteklenmeyen sunucu sürümlerinde kullanmak test edilmemiş olmasının yanında muhtemelen tehlikeli. Kendi riskinizle devam edin.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>Bu hesapların bağlantıları kesildi:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Hesap %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>Hesap eşitlemesi devre dışı bırakıldı.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>Tüm klasörleri devam ettir</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>Tüm klasörleri durdur</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>Tüm eşitlemeleri devam ettir</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>Eşitlemeyi devam ettir</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>Tüm eşitlemeleri durdur</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>Eşitlemeyi durdur</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Tüm hesaplardan çıkış yap</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Tüm hesaplara giriş yap...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Şimdi çök</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Yakın zamanda eşitlenen öge yok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Eşitlenen %1/%2 (%3 kaldı)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Eşitlenen %1 (%2 kaldı)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>%1 eşitleniyor</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Güncel</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Sürüm %2. Daha fazla bilgi için lütfen &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt; adresini ziyaret edin.&lt;/p&gt;&lt;p&gt;&lt;small&gt;Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz ve diğerleri tarafından yazıldı.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Telif hakkı ownCloud, Anonim Şirketi.&lt;/p&gt;&lt;p&gt;GNU Genel Kamu Lisansı (GPL) Sürüm 2.0 ile lisanslanmıştır.&lt;br&gt;ownCloud ve ownCloud logoları &lt;br&gt;ABD ve/veya diğer ülkelerde ownCloud, Anonim Şirketi&apos;nin tescili markalarıdır.&lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3303,9 +3402,9 @@ Kullanmanız önerilmez.</translation>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>MetinEtiketi</translation>
</message>
@@ -3325,7 +3424,7 @@ Kullanmanız önerilmez.</translation>
<translation>Temiz bir &amp;eşitleme başlat (Yerel klasörü siler!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Ne eşitleneceğini seçin</translation>
</message>
@@ -3350,7 +3449,7 @@ Kullanmanız önerilmez.</translation>
<translation>Sunucudaki her şeyi &amp;eşitle</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Durum iletisi</translation>
</message>
@@ -3363,26 +3462,15 @@ Kullanmanız önerilmez.</translation>
<translation>Form</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Kullanıcı Adı</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Parola</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Hata Etiketi</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>MetinEtiketi</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3587,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3507,37 +3595,37 @@ Kullanmanız önerilmez.</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>gelecekte</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n gün önce</numerusform><numerusform>%n gün önce</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n saat önce</numerusform><numerusform>%n saat önce</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>şimdi</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>1 dakika önce</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n dakika önce</numerusform><numerusform>%n dakika önce</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Bir süre önce</translation>
</message>
@@ -3545,57 +3633,57 @@ Kullanmanız önerilmez.</translation>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation><numerusform>%n yıl</numerusform><numerusform>%n yıl</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation><numerusform>%n ay</numerusform><numerusform>%n ay</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation><numerusform>%n gün</numerusform><numerusform>%n gün</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n saat</numerusform><numerusform>%n saat</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n dakika</numerusform><numerusform>%n dakika</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n saniye</numerusform><numerusform>%n saniye</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3704,7 @@ Kullanmanız önerilmez.</translation>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; Git gözden geçirmesi ile %3, %4 tarihinde, Qt %5, %6 kullanılarak derlendi.&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3712,92 @@ Kullanmanız önerilmez.</translation>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>İndirildi</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Yüklendi</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
- <translation type="unfinished"/>
+ <translation>Sunucu sürümü indirildi, çakışan dosya içine değiştirilmiş yerel dosya kopyalandı</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Silindi</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>%1 konumuna taşındı</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Yoksayıldı</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Dosya sistemi erişim hatası</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Hata</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Bilinmeyen</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>indirilen:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>yüklenen:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>silinen:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>taşınan:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>yoksayılan:</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>hata</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_uk.ts b/translations/client_uk.ts
index 8b279a237..95926b09b 100644
--- a/translations/client_uk.ts
+++ b/translations/client_uk.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="uk" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="uk" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>Файл призначення має неочікуваний розмір або час редагування</translation>
</message>
@@ -104,14 +104,29 @@
<translation>Не позначені теки будуть &lt;b&gt;видалені&lt;/b&gt; з вашої системи та більше не будуть синхронізуватися</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>Застосувати</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>Скасувати</translation>
</message>
@@ -121,168 +136,168 @@
<translation>Підключено до &lt;server&gt; як &lt;user&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>Обліковий запис не налаштовано.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>Додати</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>Видалити</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>Обліковий запис</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>Оберіть, що хочете синхронізувати</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>Не вдалося створити теку</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>Виконується синхронізація</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>Виконується процедура синхронізації.&lt;br/&gt;Бажаєте зупинити?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 використовується</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 як &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>Підключено до %1.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>Сервер %1 тимчасово недоступний.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>Увійти</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>Підтвердіть видалення облікового запису</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>Відкрити каталог</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>Вихід</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>Використовується %1 (%3%) з %2. Деякі теки, включаючи мережеві змонтовані чи спільні, можуть мати інші обмеження.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>Використовується %1 з %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>На даний час немає відомостей про наповнення сховища.</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>Жодного %1 підключення не налаштовано.</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>Вийшов</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>Від&apos;єднаний</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>З&apos;єднаний</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>Сервіс недоступний</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>Помилка мережі</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>Помилка конфігурації</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>Невідомий стан облікового запису</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>Серверна активність</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>Протокол Синхронізації</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>Копіювати</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопіювати протокол синхронізації до буферу обміну.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>Не синхронізовано</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>Not Synced (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>Список серверних операцій скопійовано до буферу обміну.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>Скопійовано в буфер обміну</translation>
</message>
@@ -413,47 +428,47 @@
<translation>Мітка</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>Серверні операції</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>Копіювати</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопіювати протокол синхронізації до буферу обміну.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>Необхідна Дія: Сповіщення</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>Ви отримали %n нове сповіщення від %2.</numerusform><numerusform>Ви отримали %n нових сповіщень від %2.</numerusform><numerusform>Ви отримали %n нових сповіщень від %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>Ви отримали %n нове сповіщення від %1 та %2.</numerusform><numerusform>Ви отримали %n нових сповіщень від %1 та %2.</numerusform><numerusform>Ви отримали %n нових сповіщень від %1 та %2.</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>Ви отримали нові сповіщення від %1, %2 та інших облікових записів.</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 Сповіщень - Необхідна Дія</translation>
</message>
@@ -486,12 +501,12 @@
<translation>Пароль сертіфікату :</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>Оберіть сертифікат</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>Файли сертіфікатів (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>Потрібна аутентифікація</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>Введіть ім&apos;я та пароль для &apos;%1&apos; в %2.</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>&amp;Користувач:</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>&amp;Пароль:</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>Обліковий запис ownCloud не налаштовано</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>Налаштований сервер застарий для цього клієнта</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>Будь ласка, оновіть сервер до останньої версії та перезавантажте клієнт.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>Помилка автентифікації: ім&apos;я користувача або пароль невірні.</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>час вичерпано</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>Введені дані не вірні</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>Час очікування з&apos;єднання перевищено</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>Скасовано користувачем</translation>
</message>
@@ -579,157 +594,157 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>Локальна тека %1 не існує.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 не читається.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 видалено.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 завантажено.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 оновлено.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 перейменовано на %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 переміщено в %2.</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 не може синхронізуватися через помилки. Дивіться деталі в журналі.</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>Журнал синхронізації</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>Неможливо прочитати виключений системний файл</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>Видалити усі файли?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>Видалити усі файли</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>Зберегти файли</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>Резервну копію знайдено</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -737,112 +752,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>Не вдалося скинути стан теки</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>Знайдено старий журнал синхронізації &apos;%1&apos;, його неможливо видалити. Будь ласка, впевніться що він не відкритий в іншій програмі.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
- <translation type="unfinished"/>
+ <translation>(Резервна копія)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
- <translation type="unfinished"/>
+ <translation>(Резервна копія %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>Невизначений стан.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>Підготовка до синхронізації</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>Синхронізація запущена.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>Остання синхронізація була успішною.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>Остання синхронізація пройшла вдало, але були зауваження про деякі файли.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>Помилка встановлення.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>Скасовано користувачем.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>Синхронізація призупинена.</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (Синхронізація призупинена)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>У вас немає прав на запис в цю теку!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation type="unfinished"/>
</message>
@@ -868,127 +883,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>Вийшов</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 of %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>файл %1 з %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>Очікування...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation type="unfinished"/>
</message>
@@ -1101,22 +1122,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>Не отримано E-Tag від серверу, перевірте мережеві налаштування (проксі, шлюз)</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>Ми отримали інший E-Tag для відновлення. Спробуйте ще раз пізніше.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>Сервер повернув невірний content-range</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>Час з&apos;єднання вичерпано</translation>
</message>
@@ -1198,24 +1219,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>Введіть Пароль</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1260,34 +1282,34 @@ Account: %3
<translation>Видалити</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>Не вдалося відкрити файл</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>Неможливо запиасати зміни до &apos;%1&apos;.</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>Додати шаблон ігнорування</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>Додати новий шаблон ігнорування:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>Цей запис створено системою в &apos;%1&apos;, тут змінити його не можна.</translation>
</message>
@@ -1361,7 +1383,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>Час очікування з&apos;єднання вичерпано</translation>
</message>
@@ -1477,32 +1499,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>Автоматичне обмеження</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>Ім&apos;я хоста проксі-сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>Ім&apos;я користувача проксі-сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>Пароль для проксі-сервера</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) проксі</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 проксі</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation type="unfinished"/>
</message>
@@ -1510,23 +1532,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1663,7 +1685,7 @@ for additional privileges during the process.</source>
<translation>Налаштувати TLS сертифікат клієнта</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Не вдалося підключитися до безпечного серверу за адресою &lt;em&gt;%1&lt;/em&gt;. Як Ви хочете продовжити?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1671,17 +1693,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>З&apos;єднати з %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>Вказати облікові дані</translation>
</message>
@@ -1719,139 +1741,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;Успішно підключено до %1: %2 версія %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>Не вдалося з&apos;єднатися з %1 в %2:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>Перевищено час очікування з&apos;єднання до %1 на %2.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>Спроба підключення до %1 на %2...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>Запит аутентифікації до серверу було переадресовано до &apos;%1&apos;. Поганий URL, сервер сконфігуровано неправильно.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>Неправильна відповідь на автентифікований запит webdav</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>Доступ заборонений сервером. Щоб довести, що у Вас є права доступу, &lt;a href=&quot;%1&quot;&gt;клікніть тут&lt;/a&gt; для входу через Ваш браузер.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>Локальна тека синхронізації %1 вже існує, налаштування її для синхронізації.&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>Створення локальної теки для синхронізації %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>не вдалося.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>Не вдалося створити локальну теку $1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>Не вказано віддалену теку!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>Помилка: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>створення теки на ownCloud: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>Віддалена тека %1 успішно створена.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>Віддалена тека %1 вже існує. Під&apos;єднання для синхронізації.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>Створення теки завершилось HTTP помилкою %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>Створити віддалену теку не вдалося через невірно вказані облікові дані.&lt;br/&gt;Поверніться назад та перевірте облікові дані.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Створити віддалену теку не вдалося, можливо, через невірно вказані облікові дані.&lt;/font&gt;&lt;br/&gt;Будь ласка, поверніться назад та перевірте облікові дані.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>Не вдалося створити віддалену теку %1 через помилку &lt;tt&gt;%2&lt;/tt&gt;.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>З&apos;єднання для синхронізації %1 з віддаленою текою %2 було встановлено.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>Успішно під&apos;єднано до %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>Підключення до %1 встановити не вдалося. Будь ласка, перевірте ще раз.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>Не вдалося перейменувати теку</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>Неможливо видалити теку та створити її резервну копію, оскільки тека або файли, що в ній розташовані, використовуються. Будь ласка, закрийте всі програми, що можуть використовувати цю теку та спробуйте ще раз, або скасуйте встановлення.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Локальна тека синхронізації %1 успішно створена!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1859,12 +1881,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>Майстер з&apos;єднання %1 </translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>Пропустити налаштування теки</translation>
</message>
@@ -1890,7 +1912,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>Час з&apos;єднання вичерпано</translation>
</message>
@@ -1898,7 +1920,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>Неправильна JSON відповідь на сформований URL</translation>
</message>
@@ -1906,55 +1928,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>Файл %1 не може бути завантажено через локальний конфлікт назви файлу! </translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>Файл не може бути завантажений повністю.</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>Файл %1 не збережено через локальний конфлікт назви файлу! </translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>Файл змінився з моменту знаходження</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2026,7 +2048,8 @@ It is not advisable to use it.</source>
<translation>%1 не можна перейменувати на %2 через локальний конфлікт назви файлу</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2034,12 +2057,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>Файл видалено з опублікованої теки з правами тільки на перегляд. Файл відновлено.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>Сервер відповів неправильним HTTP кодом. Очікувався 204, але отримано &quot;%1 %2&quot;.</translation>
</message>
@@ -2060,77 +2083,118 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>Цю теку не можна перейменувати. Буде використано старе ім&apos;я.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>Цю теку не можна перейменувати. Будь ласка, поверніть їй ім&apos;я Shared.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>Файл було перейменовано, але він розташований в теці з правами лише на перегляд. Відновлено оригінальний файл. </translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>Сервер відповів неправильним HTTP кодом. Очікувався 201, але отримано &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>Файл видалено</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>Локальний файл змінився під час синхронізації. Його буде відновлено.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>Локальний файл змінився під час синхронізації.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Примусове припинення завдання при скиданні HTTP з’єднання з Qt &lt; 5.4.2.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>Локальний файл було видалено під час синхронізації.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локальний файл змінився під час синхронізації.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Примусове припинення завдання при скиданні HTTP з’єднання з Qt &lt; 5.4.2.</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>Не вистачає сформованого URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>Локальний файл було видалено під час синхронізації.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>Локальний файл змінився під час синхронізації.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
<translation type="unfinished"/>
</message>
</context>
@@ -2147,42 +2211,42 @@ It is not advisable to use it.</source>
<translation>Мітка</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>Час</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>Файл</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>Тека</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>Дія</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>Розмір</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>Копіювати</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>Скопіювати протокол синхронізації до буферу обміну.</translation>
</message>
@@ -2280,22 +2344,22 @@ It is not advisable to use it.</source>
<translation>Налаштування</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>Активність</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>Загалом</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>Мережа</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>Обліковий запис</translation>
</message>
@@ -2303,27 +2367,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>Активність</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>Загалом</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>Мережа</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>Обліковий запис</translation>
</message>
@@ -2351,32 +2415,32 @@ It is not advisable to use it.</source>
<translation>Шлях до ownCloud:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>Ви поділилися %1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>Тека: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Цей файл неможливо поширити, бо ним поділилися без права на поширення.</translation>
</message>
@@ -2415,43 +2479,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>Копіювати п&amp;осилання</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>Дозволити редагування</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;Захистити паролем</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>Захищено паролем</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>Цей файл неможливо поширити, бо ним поділилися без права на поширення.</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>Публічне по&amp;ширення вимагає пароль</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>По&amp;ділитись посиланням</translation>
</message>
@@ -2469,7 +2548,7 @@ It is not advisable to use it.</source>
<translation>Поширити серед користувачів або груп ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
@@ -2502,17 +2581,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>створити</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>змінити</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>видалити</translation>
</message>
@@ -2520,12 +2599,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>Помилка входу</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>Ви маєте увійти як %1</translation>
</message>
@@ -2533,17 +2612,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - Аутентифікація</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>Потрібна повторна аутентифікація</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>Ваша сесія скінчилася. Вам потрібно ввійти знову, щоб продовжити користуватися програмою.</translation>
</message>
@@ -2551,7 +2635,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>Поділитися з %1</translation>
@@ -2560,119 +2644,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Деталі сертифікату&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>Загальне Ім&apos;я (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>Альтернативне Ім&apos;я:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>Організація (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>Підрозділ (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>Область:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>Країна:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>Серія:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Видавець&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>Видавець:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>Видано для:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>Закінчується:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Відбитки пальців&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;Примітка:&lt;/b&gt; Цей сертифікат був схвалений вручну&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (самопідписаний)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>З&apos;єднання зашифроване %1-бітним %2.
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>Інформація про сертифікат:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>З&apos;єднання НЕ зашифровано.
@@ -2760,270 +2844,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>Успішно.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync не вдалося завантажити файл журналу. Файл журналу пошкоджений.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;Не вдалося завантажити плагін для синхронізації %1.&lt;br/&gt;Будь ласка, перевірте його встановлення!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>У CSync виникла помилка під час сканування внутрішньої структури каталогів.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync не вдалося зарезервувати пам&apos;ять.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>У CSync сталася фатальна помилка параметра.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync не вдалася зробити оновлення .</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync не вдалася зробити врегулювання.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync не вдалося аутентифікуватися на проксі-сервері.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync не вдалося знайти Проксі або Сервер.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync не вдалося аутентифікуватися на %1 сервері.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync не вдалося приєднатися до мережі.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>Час під&apos;єднання до мережі вичерпався.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>Сталася помилка передачі даних по HTTP.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>Доступно лише %1, для початку необхідно хоча б %2</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync: на сервері %1 скінчилося місце.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>Невизначена помилка CSync.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>Скасовано користувачем</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync не вдалося отримати доступ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>Служба тимчасово недоступна</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>Доступ заборонений</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>Виникла внутрішня помилка за номером %1.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>Шлях не синхронізується через помилки: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>Синхронізація символічних посилань не підтримується. </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>Файл присутній у списку ігнорованих.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>Шлях до файлу занадто довгий.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>Кодування файлу не припустиме</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>Не вдалося ініціалізувати протокол синхронізації.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>Не вдається відкрити протокол синхронізації</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>Ім’я файлу містить принаймні один некоректний символ</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>Ігнорується через чорний список в &quot;обрати що синхронізувати&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>Заборонено через відсутність прав додавання підкаталогів в цю теку.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>Не дозволено завантажувати цей файл, оскільки він має дозвіл лише на перегляд, відновлюємо</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>Не дозволено видаляти, відновлюємо</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>Локальні файли та теки в загальному доступі було видалено.</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>Переміщення не дозволено, елемент відновлено </translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>Переміщення не дозволено, оскільки %1 помічений тільки для перегляду</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>призначення</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>джерело</translation>
</message>
@@ -3047,17 +3136,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Версія %1. Для отримання більш детальної інформації, будь ласка, відвідайте &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt; Права належать ownCloud, Incorporated &lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;Поширюється через %1 і під ліцензією GNU General Public License (GPL) версії 2.0&lt;br/&gt;%2 логотип %2 є зареєстрованими торговими марками %1 у Сполучених Штатах та інших країнах, або обох.&lt;/p&gt;</translation>
</message>
@@ -3083,202 +3172,217 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>Увійдіть будь ласка</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>Тека %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>Жодна тека не налаштована для синхронізації.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>Немає налаштованих тек для синхронізації.</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>Відкрити у переглядачі</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>Увійти...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>Вихід</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>Недавні зміни</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>Керовані теки:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>Відкрити теку &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>Відкрити %1 в браузері</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>Невідомий статус</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>Налаштування...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>Деталі...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>Допомога</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>Закрити %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>Обліковий запис %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>Вийти зі всіх облікових записів</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>Увійти до всіх облікових записів...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>Критична помилка</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>Нещодавно нічого не синхронізувалося</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>Синхронізовано %1 з %2 (залишилося %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>Синхронізовано %1 (залишилося %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>Оновлено</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;Версія %2. Для більш детальної інформації відвідайте &lt;a href=&quot;%3&quot;&gt;%4&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;small&gt; Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz та інші.&lt;/ small&gt;&lt;/p&gt; &lt;p&gt; Права належать ownCloud, Inc. &lt;/p&gt; &lt;p&gt; Під ліцензією GNU General Public License (GPL) Version 2.0 &lt;br/&gt; ownCloud і логотип ownCloud є зареєстрованими товарними знаками ownCloud, Inc. в США та інших країнах. &lt;/p&gt;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3293,9 +3397,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>Мітка</translation>
</message>
@@ -3315,7 +3419,7 @@ It is not advisable to use it.</source>
<translation>Почати синхронізацію &amp;заново (Видалить локальну теку!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>Оберіть, що хочете синхронізувати</translation>
</message>
@@ -3340,7 +3444,7 @@ It is not advisable to use it.</source>
<translation>Синхронізувати все з сервером</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>Повідомлення про статус</translation>
</message>
@@ -3353,26 +3457,15 @@ It is not advisable to use it.</source>
<translation>Форма</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>&amp;Ім&apos;я користувача</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>&amp;Пароль</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>Помилка</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>Мітка</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3489,7 +3582,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3497,37 +3590,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
- <translation type="unfinished"/>
+ <translation>зараз</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>Менше хвилини тому</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>Деякий час тому</translation>
</message>
@@ -3535,57 +3628,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 ГБ</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 МБ</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 КБ </translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 Б</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3606,7 +3699,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;Зібрано з Git ревізії &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3, %4, використовуючи Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3614,82 +3707,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>Завантажено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>Вивантажено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>Видалено</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>Переміщено до %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>Проігноровано</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>Помилка доступу до файлової системи</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>Помилка</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>Невідомо</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>зкачування</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>завантаження</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>видалення</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>переміщення</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>ігнорування</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>помилка</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_zh_CN.ts b/translations/client_zh_CN.ts
index 81a6d1eb1..c58a084d0 100644
--- a/translations/client_zh_CN.ts
+++ b/translations/client_zh_CN.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>目标文件的大小和修改时间无法预料</translation>
</message>
@@ -104,14 +104,29 @@
<translation>取消选中的文件夹将会从本地&lt;b&gt;删除&lt;/b&gt;,并不再同步到这台电脑上。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>应用</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
@@ -121,168 +136,168 @@
<translation>&lt;user&gt; 已经连接到 &lt;server&gt; </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>没有配置的帐号。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>添加</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>账户</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>选择同步内容</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>断开文件夹同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>文件夹创建失败</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;无法创建文件夹 &lt;i&gt;%1&lt;/i&gt;。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>确定断开文件夹同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>断开文件夹同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
- <translation>同步正在运行</translation>
+ <translation>正在同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>正在执行同步。&lt;br /&gt;您确定要关闭它吗?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 使用中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1, &lt;i&gt;%2&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>服务器版本 %1 很旧且不支持,继续操作将自行承担风险。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>连接到 %1。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>远程服务器%1暂时不可用。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
- <translation>从 %1 登出</translation>
+ <translation>从 %1 退出</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>没有到位于%2中的%1的连接</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>登录</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>部分新文件夹没有被同步,因为文件过大:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>确认删除账号</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;你确定要删除账号的连接? &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; 这 &lt;b&gt;不会&lt;/b&gt; 删除任何文件&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>删除连接</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>打开文件夹</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>注销</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>恢复同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>暂停同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;你确定要停止文件夹同步? &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; 这 &lt;b&gt;不会&lt;/b&gt; 删除任何文件&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) of %2 使用中。一些文件夹,例如网络挂载的和共享的文件夹,可能有不同的限制。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
- <translation>已使用 %2,总计 %1%</translation>
+ <translation>使用量 %1 / %2</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>目前没有储存使用量信息可用。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>没有 %1 连接配置。</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
- <translation>已登出</translation>
+ <translation>已退出</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>连接已断开</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>已连接</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>服务不可用</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>网络错误</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>配置错误</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>未知的账户状态</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>服务器动态</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>同步协议</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>忽视或错误的文件列表</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>复制动态列表到剪贴板。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>未同步</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>未同步 (%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>服务器动态已被复制到剪贴板。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>同步动态已被复制到剪贴板。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>未同步项已被复制到剪贴板。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>复制到剪贴板</translation>
</message>
@@ -413,47 +428,47 @@
<translation>文本标签</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>服务器动态</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>复制动态列表到剪贴板。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation>需采取的操作:通知</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt;帐户%1没有同步活动。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation><numerusform>你收到 %n 新的通知来自于 %2.</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation><numerusform>你收到 %n 新的通知来自 %1 和 %2。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation>你收到新的通知 %1, %2 和其它账户。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation>%1 通知 - 需要采取行动</translation>
</message>
@@ -486,12 +501,12 @@
<translation>证书密码:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>选择证书</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>证书文件 (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>需要认证</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>输入 %1 (%2)的用户名和密码</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>用户名 (&amp;U):</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>密码 (&amp;P):</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation>向数据库写入元数据错误</translation>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>没有已经配置的 ownCloud 帐号</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>此客户端连接到的服务器版本过旧</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>请更新到最新的服务器版本然后重启客户端。</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>认证失败:用户名或密码错误</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>超时</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>提供的证书不正确</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>连接超时</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>用户撤销</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>本地文件夹 %1 不存在。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>%1 应该是一个文件夹,但是它现在不是文件夹</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 不可读。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 已移除。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 已下载。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 已更新。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 已更名为 %2。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 已移动至 %2。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation><numerusform>%1 和 %n 其它文件已被移除。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation><numerusform>%1 和 %n 其它文件已下载。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation><numerusform>%1 和 %n 其它文件已更新。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation><numerusform>%1 已经更名为 %2,其它 %3 文件也已更名。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation><numerusform>%1 已移动到 %2,其它 %3 文件也已移动。</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation><numerusform>%1 和 %n 其他文件有同步冲突。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation>%1 有同步冲突。请检查冲突文件!</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation><numerusform>%1 和 %n 其他文件由于错误不能同步。详细信息请查看日志。</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 同步出错。详情请查看日志。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>同步活动</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>无法读取系统排除的文件</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>新文件夹 %2 添加成功,大于 %1 MB。
请前往设置选择是否下载。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,41 +715,39 @@ Are you sure you want to perform this operation?</source>
你确定执行该操作吗?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>删除所有文件?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>删除所有文件</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>保持所有文件</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
- <translation>本次同步将会重置同步文件夹 %1 下的所有文件。
-这可能是因为在服务器上的备份被恢复。
-继续同步将会导致所有你的文件被之前的状态覆盖,你是否保留本地的文件?</translation>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation>备份已删除</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation>正常同步</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation>保留本地文件为冲突文件</translation>
</message>
@@ -742,112 +755,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>不能重置文件夹状态</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>一个旧的同步日志 &apos;%1&apos; 被找到,但是不能被移除。请确定没有应用程序正在使用它。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation> (备份)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation> (备份 %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>未知状态。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>等待启动同步。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>准备同步。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>同步正在运行。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>最后一次同步成功。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>上次同步已成功,不过一些文件出现了警告。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>安装失败</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>用户撤销。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>同步已暂停。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (同步已暂停)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>没有选择有效的文件夹!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>选择的路径不是一个文件夹!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>你没有写入所选文件夹的权限!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>本地文件夹 %1 是正在使用的同步文件夹,请选择另一个!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地文件夹 %1 包含有正在使用的同步文件夹,请选择另一个!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>选择的文件夹 %1 是一个符号连接,连接指向的是正在使用的同步文件夹,请选择另一个!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地文件夹 %1 是正在使用的同步文件夹,请选择另一个!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>选择的文件夹 %1 是一个符号连接,连接指向的是正在使用的同步文件夹,请选择另一个!</translation>
</message>
@@ -873,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>请先登录后再添加文件夹</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>点击选择进行同步的本地文件夹。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>载入文件夹列表时发生错误。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>已登出</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>你已经设置同步了你的所有文件,无法同步另一文件夹。要同步多个文件夹,请取消当前设置的根文件夹同步。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>获取文件夹列表...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>在 %1 检查更改</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>正在同步 %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>,</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>下载 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/秒</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>上传 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/秒</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 / %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
- <translation type="unfinished"/>
+ <translation>剩余: %5,%1 / %2, 文件数量 %3 / %4</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 of %2, file %3 of %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>第 %1 个文件,共 %2 个</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>请稍等...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>等待 %n 个其他文件(文件夹)</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>准备同步...</translation>
</message>
@@ -1044,7 +1063,7 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<message>
<location filename="../src/gui/folderwizard.cpp" line="206"/>
<source>Folder was successfully created on %1.</source>
- <translation>文件夹在您的 %1 上不可用。&lt;br/&gt;请点此创建它。</translation>
+ <translation>文件夹在 %1 上创建成功。</translation>
</message>
<message>
<location filename="../src/gui/folderwizard.cpp" line="217"/>
@@ -1106,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>未能收到来自服务器的 E-Tag,请检查代理/网关</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>我们收到了不同的恢复 E-Tag,将在下次尝试。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>服务器返回了错误的内容长度</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>连接超时</translation>
</message>
@@ -1203,27 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>请输入账户 %2 的密码:
-
-用户: %2
-账户: %3</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>获取密钥链失败,错误: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>输入密码</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1268,7 +1285,7 @@ Account: %3
<translation>移除</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1277,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
如果选中的项目正在阻止文件夹的删除,它们也会被删除。这对于元数据很有用。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>不能打开文件</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>无法向 %1 中写入修改。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>增加忽略模式</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>增加新的忽略模式:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>此项目由系统在 %1 处提供,不能在这里被修改。</translation>
</message>
@@ -1371,7 +1388,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>连接超时</translation>
</message>
@@ -1487,32 +1504,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>自动限制</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>代理服务器主机名</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>代理服务器用户名</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>代理服务器密码</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) 代理</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 代理</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>速度限制需要 QT&gt;=5.4</translation>
</message>
@@ -1520,24 +1537,24 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation>创建于 %1</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation>关闭几秒钟...</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation>%1 请求失败于 %2
</translation>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation>&apos;%1&apos; 选定于 %2</translation>
@@ -1674,7 +1691,7 @@ for additional privileges during the process.</source>
<translation>设置客户端 TLS 证书</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;无法连接到指定地址的安全服务器 &lt;em&gt;%1&lt;/em&gt;。请问是否继续?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1682,17 +1699,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
- <translation type="unfinished"/>
+ <translation>&amp;电子邮件</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>连接到 %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>输入用户密码</translation>
</message>
@@ -1729,139 +1746,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;成功连接到 %1:%2 版本 %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>连接到 %1 (%2)失败:&lt;br /&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>连接到 %1 (%2) 时超时。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>尝试连接位于 %2 的 %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>被发送到服务器的认证请求被重定向到&apos;%1&apos;。此URL无效,服务器配置错误。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>对于一个验证的 webdav 请求,有一个无效的响应</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>服务器拒绝了访问。&lt;a href=&quot;%1&quot;&gt;点击这里打开浏览器&lt;/a&gt; 来确认您是否有权访问。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>本地同步文件夹 %1 已存在,将使用它来同步。&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>创建本地同步目录%1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>成功</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>失败</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>不能创建本地文件夹 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>未指定远程文件夹!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>错误:%1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>在 ownCloud 创建文件夹:%1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>远程目录%1成功创建。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>远程文件夹 %1 已存在。连接它以供同步。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>创建文件夹出现 HTTP 错误代码 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>远程文件夹创建失败,因为提供的凭证有误!&lt;br/&gt;请返回并检查您的凭证。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;远程文件夹创建失败,可能是由于提供的用户名密码不正确。&lt;/font&gt;&lt;br/&gt;请返回并检查它们。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>创建远程文件夹 %1 失败,错误为 &lt;tt&gt;%2&lt;/tt&gt;。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>已经设置了一个 %1 到远程文件夹 %2 的同步连接</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>成功连接到了 %1!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>无法建立到 %1的链接,请稍后重试(这里“稍后”用对了,赞!)。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>文件夹更名失败</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>无法移除和备份文件夹,由于文件夹或文件正在被另一程序占用。请关闭程序后重试,或取消安装。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;本地同步目录 %1 已成功创建&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1886,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1 链接向导</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>跳过文件夹设置</translation>
</message>
@@ -1900,7 +1917,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>连接超时</translation>
</message>
@@ -1908,7 +1925,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>推送 URL 传来的 JSON 无效</translation>
</message>
@@ -1916,55 +1933,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation>向数据库写入元数据错误</translation>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>由于本地文件名冲突,文件 %1 无法下载。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>下载将会使用 %1 的磁盘空间</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>空闲磁盘空间少于 %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>已从服务器删除文件</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>文件无法完整下载。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation>虽然服务器宣称已完成 %1,但实际下载文件为空。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>由于本地文件名冲突,文件 %1 无法保存。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>自从发现文件以来,它已经被改变了</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation>向数据库写入元数据错误</translation>
</message>
@@ -2036,7 +2053,8 @@ It is not advisable to use it.</source>
<translation>由于本地文件名冲突,文件 %1 无法更名为 %2</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation>向数据库写入元数据错误</translation>
</message>
@@ -2044,12 +2062,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>文件已经移除只读共享,并已经恢复。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>服务器返回的 HTTP 状态错误,应返回 204,但返回的是“%1 %2”。</translation>
</message>
@@ -2070,78 +2088,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>文件无法更名,已经恢复为原文件名。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>文件无法更名,请改回“Shared”。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>文件已经更名,但这是某个只读分享的一部分,原文件已经恢复。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>服务器返回的 HTTP 状态错误,应返回 201,但返回的是“%1 %2”。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation>向数据库写入元数据错误</translation>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>已移除文件</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>本地文件在同步时已修改,完成后会再次同步</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>本地文件在同步时已修改。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation>向数据库写入元数据错误</translation>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>Qt &lt; 5.4.2 时强制中止连接重置。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>本地文件在同步时已删除。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>本地文件在同步时已修改。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>Qt &lt; 5.4.2 时强制中止连接重置。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>缺少轮询 URL</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>本地文件在同步时已删除。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>服务器找不到上一分块。(找不到 E-tag)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>本地文件在同步时已修改。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation>向数据库写入元数据错误</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>服务器未确认上一分块。(找不到 E-tag)</translation>
</message>
</context>
<context>
@@ -2157,42 +2216,42 @@ It is not advisable to use it.</source>
<translation>文本标签</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>时间</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>文件</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>文件夹</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>动作</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>大小</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>本地同步协议</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>复制动态列表到剪贴板。</translation>
</message>
@@ -2290,22 +2349,22 @@ It is not advisable to use it.</source>
<translation>设置</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>动态</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>常规</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>网络</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>账户</translation>
</message>
@@ -2313,27 +2372,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>动态</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>常规</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>网络</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>账户</translation>
</message>
@@ -2361,32 +2420,32 @@ It is not advisable to use it.</source>
<translation>ownCloud 路径:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 分享</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>文件夹:%2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>服务器不支持共享</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation>从服务器获取最大可能的共享权限...</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>未分配共享权限,无法共享文件。</translation>
</message>
@@ -2425,43 +2484,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>复制链接(&amp;l)</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>允许编辑</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>密码保护(&amp;a)</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>密码保护</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>未分配共享权限,无法共享文件。</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>公开分享需要密码</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>请设置密码</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>分享链接(&amp;s)</translation>
</message>
@@ -2479,7 +2553,7 @@ It is not advisable to use it.</source>
<translation>分享给其他用户或组 ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>没有 &apos;%1&apos; 相关结果</translation>
</message>
@@ -2512,17 +2586,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>创建</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>更改</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>删除</translation>
</message>
@@ -2530,12 +2604,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>登录错误</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>你必须以用户&apos;%1&apos;身份登录</translation>
</message>
@@ -2543,17 +2617,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - 认证</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation>查看SSL加密调试信息</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>需要重新认证</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>您的会话已经过期。请重新登录。</translation>
</message>
@@ -2561,128 +2640,128 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
- <translation>共享给 %1</translation>
+ <translation>使用 %1 共享</translation>
</message>
</context>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;证书信息&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>常用名 (CN):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>主体备用名称:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>组织 (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>单位 (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>州/省:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>国家:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>序列号:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;颁发者&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>颁发者:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>颁发于:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>过期于:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;证书指纹&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt;此证书经手动批准&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (自签署)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>此连接通过 %1 位的 %2 加密。
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation>没有支持的 SSL 标识</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>证书信息:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>此连接未经过加密。
@@ -2770,270 +2849,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>成功。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync同步无法载入日志文件。日志文件已损坏。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;csync 的 %1 插件不能加载。&lt;br/&gt;请校验安装!&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync 在处理内部文件树时出错。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync 失败,内存不足。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync 致命参数错误。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync 处理步骤更新失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync 处理步骤调和失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync 代理认证失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync 无法查询代理或服务器。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync 于 %1 服务器认证失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync 联网失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>网络连接超时。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTP 传输错误。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>该文件夹在服务器上不可用</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>打开目录失败</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>读取目录时出错</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation>已忽略隐藏的文件和文件夹。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>仅有 %1 有效,至少需要 %2 才能开始</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>你没有权限增加父目录</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>你没有权限增加文件</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync:%1 服务器空间已满。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync 未定义错误。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>用户撤销</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>文件包含无效字符无法跨平台同步。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>访问 CSync 失败</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>Csync同步失败,请确定是否有本地同步目录的读写权</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>出于未处理的权限拒绝,CSync 失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync 尝试创建了已有的文件夹。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>服务暂时不可用</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>访问被拒绝</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>发生内部错误 %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>文件没有被同步因为之前的错误: %1</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>符号链接不被同步支持。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>文件在忽略列表中。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>文件名过长。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>状态失败。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>文件名编码无效</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>无效的字符,请更改为 “%1”</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>无法初始化同步日志</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation>无法从本地数据库读取黑名单</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation>无法读取同步日志。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>无法打开同步日志</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>文件名中存在至少一个非法字符</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>已忽略(“选择同步内容”黑名单)</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>你没有权限增加子目录</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>无法上传文件,因为服务器端此文件为只读,正在回退</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>无法删除,正在回退</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>本地文件和共享文件夹已被删除。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>无法移动,正在回退</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>无法移动,%1为是只读的</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>目标</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>源</translation>
</message>
@@ -3057,17 +3141,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;版本 %1。详情请见 &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;版权所有 ownCloud, Incorporated&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation>&lt;p&gt;%1 使用GNU通用公共许可证 (GPL) 2.0。&lt;br/&gt;%2 以及 %2 标识已由 %1 注册使用。&lt;/p&gt;</translation>
</message>
@@ -3087,208 +3171,223 @@ It is not advisable to use it.</source>
<message>
<location filename="../src/libsync/checksums.cpp" line="209"/>
<source>The downloaded file does not match the checksum, it will be resumed.</source>
- <translation>下载文件娇艳失败,将会回退。</translation>
+ <translation>下载的文件校验失败,将会回退。</translation>
</message>
</context>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>请登录</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>文件夹 %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>没有已配置的同步文件夹。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>没有已配置的同步文件夹。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>在浏览器中打开</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>登录</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>注销</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>最近修改</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>检查 %1 的更改</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>管理的文件夹:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>打开文件夹“%1”</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>在浏览器中打开%1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>未知状态</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>设置...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>细节...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>帮助</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>退出 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>已从服务器断开 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation>不支持的服务器版本</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation>账户 %1 的服务器运行着一个古老而不受支持的版本 %2。使用该客户端未支持的服务器版本未经测试并且可能存在潜在危险。继续操作需要自行承担风险。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>已断开账户: </translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>账户 %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation>帐户同步被禁用</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation>解除暂停所有文件夹</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation>暂停所有文件夹</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation>解除暂停所有同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation>解除暂停同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation>暂停所有同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation>暂停同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>注销所有账户</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>登录所有账户</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>发生了崩溃</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>近期没有项目被同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>同步 %2 中的 %1 (剩余 %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>同步 %1 (剩余 %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>正在同步 %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>更新</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>&lt;p&gt;版本 %2,更多信息请访问&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;/small&gt;&lt;/p&gt;&lt;p&gt;版权所有 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;</translation>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
</context>
<context>
@@ -3303,9 +3402,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>文本标签</translation>
</message>
@@ -3325,7 +3424,7 @@ It is not advisable to use it.</source>
<translation>开始全新同步 (将清空本地文件夹!)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>选择同步内容</translation>
</message>
@@ -3350,7 +3449,7 @@ It is not advisable to use it.</source>
<translation>同步服务器的所有内容 (&amp;S)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>状态信息</translation>
</message>
@@ -3363,26 +3462,15 @@ It is not advisable to use it.</source>
<translation>窗体</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>用户名 (&amp;U)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>密码 (&amp;P)</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>错误标签</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>文本标签</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3587,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation>QT_LAYOUT_DIRECTION</translation>
</message>
@@ -3507,37 +3595,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation>将来</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation><numerusform>%n 天前</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation><numerusform>%n 小时前</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation>现在</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>刚刚</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation><numerusform>%n 分钟前</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>之前</translation>
</message>
@@ -3545,57 +3633,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 年</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 月</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 天</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 小时</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 分</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>%n 秒</numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3704,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;从 Git 版本 &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; 在 %3 上构建, %4 使用了 Qt %5, %6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3712,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>已下载</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>已上传</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation>服务器版本已下载,复制并更改本地冲突文件</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>已删除</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>已移动到 %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>已忽略</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>文件系统访问错误</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>错误</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>未知</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>正在下载</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>正在上传</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>删除</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>移动</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>忽略</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>错误</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>
diff --git a/translations/client_zh_TW.ts b/translations/client_zh_TW.ts
index aceab3e77..2dd396f24 100644
--- a/translations/client_zh_TW.ts
+++ b/translations/client_zh_TW.ts
@@ -1,8 +1,8 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_TW" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_TW" version="2.1">
<context>
<name>FileSystem</name>
<message>
- <location filename="../src/libsync/filesystem.cpp" line="273"/>
+ <location filename="../src/libsync/filesystem.cpp" line="275"/>
<source>The destination file has an unexpected size or modification time</source>
<translation>目的地的檔案大小或修改時間產生異常</translation>
</message>
@@ -104,14 +104,29 @@
<translation>未標示的資料夾將會從這台電腦被 &lt;b&gt;刪除&lt;/b&gt; 而且不會再被同步到這台電腦 </translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="193"/>
+ <location filename="../src/gui/accountsettings.ui" line="189"/>
+ <source>Synchronize all</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="196"/>
+ <source>Synchronize none</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="203"/>
+ <source>Apply manual changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/accountsettings.ui" line="251"/>
<source>Apply</source>
<translation>套用</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.ui" line="180"/>
- <location filename="../src/gui/accountsettings.cpp" line="352"/>
- <location filename="../src/gui/accountsettings.cpp" line="690"/>
+ <location filename="../src/gui/accountsettings.ui" line="238"/>
+ <location filename="../src/gui/accountsettings.cpp" line="357"/>
+ <location filename="../src/gui/accountsettings.cpp" line="696"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
@@ -121,168 +136,168 @@
<translation>以 &lt;user&gt; 的身分連接 &lt;server&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="127"/>
+ <location filename="../src/gui/accountsettings.cpp" line="132"/>
<source>No account configured.</source>
<translation>沒有設置帳號。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="141"/>
+ <location filename="../src/gui/accountsettings.cpp" line="146"/>
<source>Add new</source>
<translation>新增</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="149"/>
+ <location filename="../src/gui/accountsettings.cpp" line="154"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="153"/>
+ <location filename="../src/gui/accountsettings.cpp" line="158"/>
<source>Account</source>
<translation>帳號</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="221"/>
+ <location filename="../src/gui/accountsettings.cpp" line="226"/>
<source>Choose what to sync</source>
<translation>選擇要同步的項目</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="229"/>
+ <location filename="../src/gui/accountsettings.cpp" line="234"/>
<source>Remove folder sync connection</source>
<translation>移除資料夾同步連線</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="294"/>
+ <location filename="../src/gui/accountsettings.cpp" line="299"/>
<source>Folder creation failed</source>
<translation>資料夾建立失敗</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="295"/>
+ <location filename="../src/gui/accountsettings.cpp" line="300"/>
<source>&lt;p&gt;Could not create local folder &lt;i&gt;%1&lt;/i&gt;.</source>
<translation>&lt;p&gt;無法建立本地資料夾 &lt;i&gt;%1&lt;/i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="345"/>
+ <location filename="../src/gui/accountsettings.cpp" line="350"/>
<source>Confirm Folder Sync Connection Removal</source>
<translation>確認移除資料夾同步連線</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="351"/>
+ <location filename="../src/gui/accountsettings.cpp" line="356"/>
<source>Remove Folder Sync Connection</source>
<translation>移除資料夾同步連線</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="433"/>
+ <location filename="../src/gui/accountsettings.cpp" line="438"/>
<source>Sync Running</source>
<translation>正在同步中</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="434"/>
+ <location filename="../src/gui/accountsettings.cpp" line="439"/>
<source>The syncing operation is running.&lt;br/&gt;Do you want to terminate it?</source>
<translation>正在同步中&lt;br/&gt;你真的想要中斷?</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="501"/>
+ <location filename="../src/gui/accountsettings.cpp" line="506"/>
<source>%1 in use</source>
<translation>%1 正在使用</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="521"/>
+ <location filename="../src/gui/accountsettings.cpp" line="526"/>
<source>%1 as &lt;i&gt;%2&lt;/i&gt;</source>
<translation>%1 如 &lt;i&gt;%2&lt;i&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="527"/>
+ <location filename="../src/gui/accountsettings.cpp" line="532"/>
<source>The server version %1 is old and unsupported! Proceed at your own risk.</source>
<translation>伺服器版本%1過舊,已不支援。繼續的風險請自負。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="529"/>
+ <location filename="../src/gui/accountsettings.cpp" line="534"/>
<source>Connected to %1.</source>
<translation>已連線到 %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="531"/>
+ <location filename="../src/gui/accountsettings.cpp" line="536"/>
<source>Server %1 is temporarily unavailable.</source>
<translation>伺服器 %1 暫時無法使用。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="533"/>
+ <location filename="../src/gui/accountsettings.cpp" line="538"/>
<source>Signed out from %1.</source>
<translation>從 %1 登出</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="535"/>
+ <location filename="../src/gui/accountsettings.cpp" line="540"/>
<source>No connection to %1 at %2.</source>
<translation>沒有從 %2 連線到 %1</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="558"/>
+ <location filename="../src/gui/accountsettings.cpp" line="563"/>
<source>Log in</source>
<translation>登入</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="642"/>
+ <location filename="../src/gui/accountsettings.cpp" line="646"/>
<source>There are new folders that were not synchronized because they are too big: </source>
<translation>有部份的資料夾因為容量太大沒有辦法同步:</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="682"/>
+ <location filename="../src/gui/accountsettings.cpp" line="688"/>
<source>Confirm Account Removal</source>
<translation>確認移除帳號</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="683"/>
+ <location filename="../src/gui/accountsettings.cpp" line="689"/>
<source>&lt;p&gt;Do you really want to remove the connection to the account &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;您確定要中斷此帳號 &lt;i&gt;%1&lt;/i&gt; 的連線?&lt;/p&gt;&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt;此操作 &lt;b&gt;不會&lt;/b&gt; 刪除任何的檔案。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="689"/>
+ <location filename="../src/gui/accountsettings.cpp" line="695"/>
<source>Remove connection</source>
<translation>移除連線</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="217"/>
+ <location filename="../src/gui/accountsettings.cpp" line="222"/>
<source>Open folder</source>
<translation>開啟資料夾</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="145"/>
- <location filename="../src/gui/accountsettings.cpp" line="560"/>
+ <location filename="../src/gui/accountsettings.cpp" line="150"/>
+ <location filename="../src/gui/accountsettings.cpp" line="565"/>
<source>Log out</source>
<translation>登出</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Resume sync</source>
<translation>繼續同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="226"/>
+ <location filename="../src/gui/accountsettings.cpp" line="231"/>
<source>Pause sync</source>
<translation>暫停同步</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="346"/>
+ <location filename="../src/gui/accountsettings.cpp" line="351"/>
<source>&lt;p&gt;Do you really want to stop syncing the folder &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This will &lt;b&gt;not&lt;/b&gt; delete any files.&lt;/p&gt;</source>
<translation>&lt;p&gt;您確定要停止同步資料夾 &lt;i&gt;%1&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt; 此操作 &lt;b&gt;不會&lt;/b&gt; 刪除任何檔案&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="488"/>
+ <location filename="../src/gui/accountsettings.cpp" line="493"/>
<source>%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.</source>
<translation>%1 (%3%) 中的 %2 正在使用, 有些資料夾,包括網路掛載或分享資料夾,可能有不同的限制。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="489"/>
+ <location filename="../src/gui/accountsettings.cpp" line="494"/>
<source>%1 of %2 in use</source>
<translation>已使用 %2 中的 %1%</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="498"/>
+ <location filename="../src/gui/accountsettings.cpp" line="503"/>
<source>Currently there is no storage usage information available.</source>
<translation>目前無法查詢儲存空間使用資訊。</translation>
</message>
<message>
- <location filename="../src/gui/accountsettings.cpp" line="541"/>
+ <location filename="../src/gui/accountsettings.cpp" line="546"/>
<source>No %1 connection configured.</source>
<translation>沒有 %1 連線設置。</translation>
</message>
@@ -290,37 +305,37 @@
<context>
<name>OCC::AccountState</name>
<message>
- <location filename="../src/gui/accountstate.cpp" line="112"/>
+ <location filename="../src/gui/accountstate.cpp" line="113"/>
<source>Signed out</source>
<translation>已登出</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="114"/>
+ <location filename="../src/gui/accountstate.cpp" line="115"/>
<source>Disconnected</source>
<translation>已經離線</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="116"/>
+ <location filename="../src/gui/accountstate.cpp" line="117"/>
<source>Connected</source>
<translation>已連線</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="118"/>
+ <location filename="../src/gui/accountstate.cpp" line="119"/>
<source>Service unavailable</source>
<translation>服務無法使用</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="120"/>
+ <location filename="../src/gui/accountstate.cpp" line="121"/>
<source>Network error</source>
<translation>網路異常</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="122"/>
+ <location filename="../src/gui/accountstate.cpp" line="123"/>
<source>Configuration error</source>
<translation>設定錯誤</translation>
</message>
<message>
- <location filename="../src/gui/accountstate.cpp" line="124"/>
+ <location filename="../src/gui/accountstate.cpp" line="125"/>
<source>Unknown account state</source>
<translation>未知的帳號狀態</translation>
</message>
@@ -341,59 +356,59 @@
<context>
<name>OCC::ActivitySettings</name>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="516"/>
- <location filename="../src/gui/activitywidget.cpp" line="571"/>
+ <location filename="../src/gui/activitywidget.cpp" line="525"/>
+ <location filename="../src/gui/activitywidget.cpp" line="581"/>
<source>Server Activity</source>
<translation>伺服器活動</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="522"/>
+ <location filename="../src/gui/activitywidget.cpp" line="532"/>
<source>Sync Protocol</source>
<translation>同步協定</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="530"/>
+ <location filename="../src/gui/activitywidget.cpp" line="540"/>
<source>List of ignored or erroneous files</source>
<translation>被忽略或者錯誤的檔案列表</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="534"/>
+ <location filename="../src/gui/activitywidget.cpp" line="544"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="535"/>
+ <location filename="../src/gui/activitywidget.cpp" line="545"/>
<source>Copy the activity list to the clipboard.</source>
<translation>複製活動列表到剪貼簿。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="577"/>
+ <location filename="../src/gui/activitywidget.cpp" line="587"/>
<source>Not Synced</source>
<translation>尚未同步</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="580"/>
+ <location filename="../src/gui/activitywidget.cpp" line="590"/>
<source>Not Synced (%1)</source>
<extracomment>%1 is the number of not synced files.</extracomment>
<translation>未同步(%1)</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="596"/>
+ <location filename="../src/gui/activitywidget.cpp" line="613"/>
<source>The server activity list has been copied to the clipboard.</source>
<translation>伺服器活動列表已經被複製到剪貼簿。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="600"/>
+ <location filename="../src/gui/activitywidget.cpp" line="617"/>
<source>The sync activity list has been copied to the clipboard.</source>
<translation>同步活動列表已經被複製到剪貼簿。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="603"/>
+ <location filename="../src/gui/activitywidget.cpp" line="620"/>
<source>The list of unsynched items has been copied to the clipboard.</source>
<translation>未同步的清單已經被複製到剪貼簿。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="608"/>
+ <location filename="../src/gui/activitywidget.cpp" line="625"/>
<source>Copied to clipboard</source>
<translation>複製至剪貼簿中</translation>
</message>
@@ -413,47 +428,47 @@
<translation>文字標籤</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="135"/>
+ <location filename="../src/gui/activitywidget.cpp" line="136"/>
<source>Server Activities</source>
<translation>伺服器活動</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="90"/>
+ <location filename="../src/gui/activitywidget.cpp" line="91"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="91"/>
+ <location filename="../src/gui/activitywidget.cpp" line="92"/>
<source>Copy the activity list to the clipboard.</source>
<translation>複製活動列表到剪貼簿。</translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="139"/>
+ <location filename="../src/gui/activitywidget.cpp" line="140"/>
<source>Action Required: Notifications</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="144"/>
+ <location filename="../src/gui/activitywidget.cpp" line="145"/>
<source>&lt;br/&gt;Account %1 does not have activities enabled.</source>
<translation>&lt;br/&gt; 帳號 %1 尚未啟用紀錄行為功能</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="351"/>
+ <location filename="../src/gui/activitywidget.cpp" line="356"/>
<source>You received %n new notification(s) from %2.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/activitywidget.cpp" line="359"/>
+ <location filename="../src/gui/activitywidget.cpp" line="364"/>
<source>You received %n new notification(s) from %1 and %2.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="361"/>
+ <location filename="../src/gui/activitywidget.cpp" line="366"/>
<source>You received new notifications from %1, %2 and other accounts.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/activitywidget.cpp" line="365"/>
+ <location filename="../src/gui/activitywidget.cpp" line="370"/>
<source>%1 Notifications - Action Required</source>
<translation type="unfinished"/>
</message>
@@ -486,12 +501,12 @@
<translation>憑證密碼:</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Select a certificate</source>
<translation>選擇一個憑證</translation>
</message>
<message>
- <location filename="../src/gui/addcertificatedialog.cpp" line="37"/>
+ <location filename="../src/gui/addcertificatedialog.cpp" line="38"/>
<source>Certificate files (*.p12 *.pfx)</source>
<translation>憑證檔案 (*.p12 *.pfx)</translation>
</message>
@@ -499,22 +514,22 @@
<context>
<name>OCC::AuthenticationDialog</name>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="29"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="30"/>
<source>Authentication Required</source>
<translation>必須驗證</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="31"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="32"/>
<source>Enter username and password for &apos;%1&apos; at %2.</source>
<translation>輸入 &apos;%1&apos; 在 %2 使用者名稱 和 密碼</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="35"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
<source>&amp;User:</source>
<translation>使用者 (&amp;U):</translation>
</message>
<message>
- <location filename="../src/gui/authenticationdialog.cpp" line="36"/>
+ <location filename="../src/gui/authenticationdialog.cpp" line="37"/>
<source>&amp;Password:</source>
<translation>密碼 (&amp;P):</translation>
</message>
@@ -522,7 +537,7 @@
<context>
<name>OCC::CleanupPollsJob</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="765"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -530,32 +545,32 @@
<context>
<name>OCC::ConnectionValidator</name>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="65"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="66"/>
<source>No ownCloud account configured</source>
<translation>沒有設置 ownCloud 帳號</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="127"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
<source>The configured server for this client is too old</source>
<translation>設置的伺服器對這個客戶端來說太舊了</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="128"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="129"/>
<source>Please update to the latest server and restart the client.</source>
<translation>請將伺服器端更新到最新版並重新啟動客戶端</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="148"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="149"/>
<source>Authentication error: Either username or password are wrong.</source>
<translation>驗證錯誤︰使用者名稱或是密碼錯誤</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="160"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="161"/>
<source>timeout</source>
<translation>逾時</translation>
</message>
<message>
- <location filename="../src/libsync/connectionvalidator.cpp" line="192"/>
+ <location filename="../src/libsync/connectionvalidator.cpp" line="193"/>
<source>The provided credentials are not correct</source>
<translation>提供的憑證不正確</translation>
</message>
@@ -563,7 +578,7 @@
<context>
<name>OCC::DeleteJob</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="42"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="45"/>
<source>Connection timed out</source>
<translation>連線逾時</translation>
</message>
@@ -571,7 +586,7 @@
<context>
<name>OCC::DiscoveryMainThread</name>
<message>
- <location filename="../src/libsync/discoveryphase.cpp" line="540"/>
+ <location filename="../src/libsync/discoveryphase.cpp" line="571"/>
<source>Aborted by the user</source>
<translation>使用者中斷</translation>
</message>
@@ -579,119 +594,119 @@
<context>
<name>OCC::Folder</name>
<message>
- <location filename="../src/gui/folder.cpp" line="129"/>
+ <location filename="../src/gui/folder.cpp" line="143"/>
<source>Local folder %1 does not exist.</source>
<translation>本地資料夾 %1 不存在</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="132"/>
+ <location filename="../src/gui/folder.cpp" line="146"/>
<source>%1 should be a folder but is not.</source>
<translation>資料夾不存在, %1 必須是資料夾</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="135"/>
+ <location filename="../src/gui/folder.cpp" line="149"/>
<source>%1 is not readable.</source>
<translation>%1 是不可讀的</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="381"/>
+ <location filename="../src/gui/folder.cpp" line="352"/>
<source>%1: %2</source>
<extracomment>this displays an error string (%2) for a file %1</extracomment>
<translation>%1: %2</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="491"/>
+ <location filename="../src/gui/folder.cpp" line="459"/>
<source>%1 has been removed.</source>
<comment>%1 names a file.</comment>
<translation>%1 已被移除。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="498"/>
+ <location filename="../src/gui/folder.cpp" line="466"/>
<source>%1 has been downloaded.</source>
<comment>%1 names a file.</comment>
<translation>%1 已被下載。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="505"/>
+ <location filename="../src/gui/folder.cpp" line="473"/>
<source>%1 has been updated.</source>
<comment>%1 names a file.</comment>
<translation>%1 已被更新。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="512"/>
+ <location filename="../src/gui/folder.cpp" line="480"/>
<source>%1 has been renamed to %2.</source>
<comment>%1 and %2 name files.</comment>
<translation>%1 已被重新命名為 %2。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="519"/>
+ <location filename="../src/gui/folder.cpp" line="487"/>
<source>%1 has been moved to %2.</source>
<translation>%1 已被搬移至 %2。</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="489"/>
+ <location filename="../src/gui/folder.cpp" line="457"/>
<source>%1 and %n other file(s) have been removed.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="496"/>
+ <location filename="../src/gui/folder.cpp" line="464"/>
<source>%1 and %n other file(s) have been downloaded.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="503"/>
+ <location filename="../src/gui/folder.cpp" line="471"/>
<source>%1 and %n other file(s) have been updated.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="510"/>
+ <location filename="../src/gui/folder.cpp" line="478"/>
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="517"/>
+ <location filename="../src/gui/folder.cpp" line="485"/>
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="524"/>
+ <location filename="../src/gui/folder.cpp" line="492"/>
<source>%1 has and %n other file(s) have sync conflicts.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="526"/>
+ <location filename="../src/gui/folder.cpp" line="494"/>
<source>%1 has a sync conflict. Please check the conflict file!</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/gui/folder.cpp" line="531"/>
+ <location filename="../src/gui/folder.cpp" line="499"/>
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="533"/>
+ <location filename="../src/gui/folder.cpp" line="501"/>
<source>%1 could not be synced due to an error. See the log for details.</source>
<translation>%1 因為錯誤無法被同步。請從紀錄檔觀看細節。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="539"/>
+ <location filename="../src/gui/folder.cpp" line="507"/>
<source>Sync Activity</source>
<translation>同步活動</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="747"/>
+ <location filename="../src/gui/folder.cpp" line="718"/>
<source>Could not read system exclude file</source>
<translation>無法讀取系統的排除檔案</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="958"/>
+ <location filename="../src/gui/folder.cpp" line="927"/>
<source>A new folder larger than %1 MB has been added: %2.
Please go in the settings to select it if you wish to download it.</source>
<translation>一個大於 %1 MB 的資料夾已經新增至: %2.
如果您想要下載它的話,請至設定中選取。</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="976"/>
+ <location filename="../src/gui/folder.cpp" line="960"/>
<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 files were manually removed.
Are you sure you want to perform this operation?</source>
@@ -700,39 +715,39 @@ Are you sure you want to perform this operation?</source>
您確定要執行這項動作?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="980"/>
+ <location filename="../src/gui/folder.cpp" line="964"/>
<source>Remove All Files?</source>
<translation>移除所有檔案?</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="982"/>
+ <location filename="../src/gui/folder.cpp" line="966"/>
<source>Remove all files</source>
<translation>移除所有檔案</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="983"/>
+ <location filename="../src/gui/folder.cpp" line="967"/>
<source>Keep files</source>
<translation>保留檔案</translation>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1001"/>
- <source>This sync would reset the files to an erlier time in the sync folder '%1'.
+ <location filename="../src/gui/folder.cpp" line="983"/>
+ <source>This sync would reset the files to an earlier time in the sync folder '%1'.
This might be because a backup was restored on the server.
Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1006"/>
+ <location filename="../src/gui/folder.cpp" line="988"/>
<source>Backup detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1008"/>
+ <location filename="../src/gui/folder.cpp" line="990"/>
<source>Normal Synchronisation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folder.cpp" line="1009"/>
+ <location filename="../src/gui/folder.cpp" line="991"/>
<source>Keep Local Files as Conflict</source>
<translation type="unfinished"/>
</message>
@@ -740,112 +755,112 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderMan</name>
<message>
- <location filename="../src/gui/folderman.cpp" line="265"/>
+ <location filename="../src/gui/folderman.cpp" line="269"/>
<source>Could not reset folder state</source>
<translation>無法重置資料夾狀態</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="266"/>
+ <location filename="../src/gui/folderman.cpp" line="270"/>
<source>An old sync journal &apos;%1&apos; was found, but could not be removed. Please make sure that no application is currently using it.</source>
<translation>發現較舊的同步處理日誌&apos;%1&apos;,但無法移除。請確認沒有應用程式正在使用它。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="926"/>
+ <location filename="../src/gui/folderman.cpp" line="964"/>
<source> (backup)</source>
<translation>(備份)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="931"/>
+ <location filename="../src/gui/folderman.cpp" line="969"/>
<source> (backup %1)</source>
<translation>(備份 %1)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1138"/>
+ <location filename="../src/gui/folderman.cpp" line="1176"/>
<source>Undefined State.</source>
<translation>未知狀態</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1141"/>
+ <location filename="../src/gui/folderman.cpp" line="1179"/>
<source>Waiting to start syncing.</source>
<translation>正在等待同步開始</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1144"/>
+ <location filename="../src/gui/folderman.cpp" line="1182"/>
<source>Preparing for sync.</source>
<translation>正在準備同步。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1147"/>
+ <location filename="../src/gui/folderman.cpp" line="1185"/>
<source>Sync is running.</source>
<translation>同步執行中</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1150"/>
+ <location filename="../src/gui/folderman.cpp" line="1188"/>
<source>Last Sync was successful.</source>
<translation>最後一次同步成功</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1155"/>
+ <location filename="../src/gui/folderman.cpp" line="1193"/>
<source>Last Sync was successful, but with warnings on individual files.</source>
<translation>最新一次的同步已經成功,但是有部份檔案有問題</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1158"/>
+ <location filename="../src/gui/folderman.cpp" line="1196"/>
<source>Setup Error.</source>
<translation>安裝失敗</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1161"/>
+ <location filename="../src/gui/folderman.cpp" line="1199"/>
<source>User Abort.</source>
<translation>使用者中斷。</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1164"/>
+ <location filename="../src/gui/folderman.cpp" line="1202"/>
<source>Sync is paused.</source>
<translation>同步已暫停</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1170"/>
+ <location filename="../src/gui/folderman.cpp" line="1208"/>
<source>%1 (Sync is paused)</source>
<translation>%1 (同步暫停)</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1178"/>
+ <location filename="../src/gui/folderman.cpp" line="1216"/>
<source>No valid folder selected!</source>
<translation>沒有選擇有效的資料夾</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1189"/>
+ <location filename="../src/gui/folderman.cpp" line="1227"/>
<source>The selected path is not a folder!</source>
<translation>所選的路徑並非資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1193"/>
+ <location filename="../src/gui/folderman.cpp" line="1231"/>
<source>You have no permission to write to the selected folder!</source>
<translation>您沒有權限來寫入被選取的資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1208"/>
+ <location filename="../src/gui/folderman.cpp" line="1246"/>
<source>The local folder %1 is already used in a folder sync connection. Please pick another one!</source>
<translation>本地資料夾 %1 已經被資料夾同步功能使用,請選擇其他資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1213"/>
+ <location filename="../src/gui/folderman.cpp" line="1251"/>
<source>The local folder %1 already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地資料夾 %1 裡已經有被資料夾同步功能使用的資料夾,請選擇其他資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1220"/>
+ <location filename="../src/gui/folderman.cpp" line="1258"/>
<source>The local folder %1 is a symbolic link. The link target already contains a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地資料夾 %1 是一個捷徑,此資料夾裡已經有被資料夾同步功能使用的資料夾,請選擇其他資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1227"/>
+ <location filename="../src/gui/folderman.cpp" line="1265"/>
<source>The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地資料夾 %1 是被包含在一個已經被資料夾同步功能使用的資料夾,請選擇其他資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/folderman.cpp" line="1233"/>
+ <location filename="../src/gui/folderman.cpp" line="1271"/>
<source>The local folder %1 is a symbolic link. The link target is already contained in a folder used in a folder sync connection. Please pick another one!</source>
<translation>本地資料夾 %1 是一個捷徑,此捷徑的目標是被包含在一個已經被資料夾同步功能使用的資料夾,請選擇其他資料夾!</translation>
</message>
@@ -871,127 +886,133 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::FolderStatusModel</name>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="127"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="140"/>
<source>You need to be connected to add a folder</source>
<translation>您必須連上伺服器才能新增資料夾</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="137"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="150"/>
<source>Click this button to add a folder to synchronize.</source>
<translation>點擊此按鈕來新增同步資料夾</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="148"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="161"/>
<source>%1 (%2)</source>
<extracomment>Example text: &quot;File.txt (23KB)&quot;</extracomment>
<translation>%1 (%2)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="167"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="180"/>
<source>Error while loading the list of folders from the server.</source>
<translation>從伺服器端同步資料夾清單時發生錯誤。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="204"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="218"/>
<source>Signed out</source>
<translation>已登出</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="132"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="145"/>
<source>Adding folder is disabled because you are already syncing all your files. If you want to sync multiple folders, please remove the currently configured root folder.</source>
<translation>新增資料夾失敗,您已經同步您擁有的所有檔案,如果您想要同步多個資料夾,請移除當前設定的根目錄資料夾。</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="169"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="183"/>
<source>Fetching folder list from server...</source>
<translation>從伺服器抓取資料夾清單中...</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="832"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="836"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>檢查 &apos;%1&apos; 的變動</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="867"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="871"/>
<source>, &apos;%1&apos;</source>
<extracomment>Build a list of file names</extracomment>
<translation>, &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="870"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="874"/>
<source>&apos;%1&apos;</source>
<extracomment>Argument is a file name</extracomment>
<translation>&apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="895"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="899"/>
<source>Syncing %1</source>
<extracomment>Example text: &quot;Syncing 'foo.txt', 'bar.txt'&quot;</extracomment>
<translation>同步 %1</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="897"/>
- <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="911"/>
<source>, </source>
<translation>, </translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="901"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="905"/>
<source>download %1/s</source>
<extracomment>Example text: &quot;download 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>下載 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="903"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="907"/>
<source>u2193 %1/s</source>
<translation>u2193 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="910"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="914"/>
<source>upload %1/s</source>
<extracomment>Example text: &quot;upload 24Kb/s&quot; (%1 is replaced by 24Kb (translated))</extracomment>
<translation>上傳 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="912"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="916"/>
<source>u2191 %1/s</source>
<translation>u2191 %1/s</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="917"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
<source>%1 %2 (%3 of %4)</source>
<extracomment>Example text: &quot;uploading foobar.png (2MB of 2MB)&quot;</extracomment>
<translation>%1 %2 (%3 的 %4)</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="921"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="925"/>
<source>%1 %2</source>
<extracomment>Example text: &quot;uploading foobar.png&quot;</extracomment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="938"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
<source>%5 left, %1 of %2, file %3 of %4</source>
<extracomment>Example text: &quot;5 minutes left, 12 MB of 345 MB, file 6 of 7&quot;</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="944"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="951"/>
+ <source>%1 of %2, file %3 of %4</source>
+ <extracomment>Example text: &quot;12 MB of 345 MB, file 6 of 7&quot;</extracomment>
+ <translation>%1 的 %2, 檔案 %3 的 %4</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="957"/>
<source>file %1 of %2</source>
<translation>檔案 %1 的 %2</translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="984"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="999"/>
<source>Waiting...</source>
<translation>等待中...</translation>
</message>
<message numerus="yes">
- <location filename="../src/gui/folderstatusmodel.cpp" line="986"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1001"/>
<source>Waiting for %n other folder(s)...</source>
<translation><numerusform>正在等候 %n 的資料夾(可能不只一個)</numerusform></translation>
</message>
<message>
- <location filename="../src/gui/folderstatusmodel.cpp" line="992"/>
+ <location filename="../src/gui/folderstatusmodel.cpp" line="1007"/>
<source>Preparing to sync...</source>
<translation>正在準備同步...</translation>
</message>
@@ -1104,22 +1125,22 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::GETFileJob</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="150"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="153"/>
<source>No E-Tag received from server, check Proxy/Gateway</source>
<translation>沒有收到來自伺服器的 E-Tag,請檢查代理伺服器或網路閘道</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="157"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="160"/>
<source>We received a different E-Tag for resuming. Retrying next time.</source>
<translation>在復原時收到了不同的 E-Tag,將在下一次重新嘗試取得</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="184"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="187"/>
<source>Server returned wrong content-range</source>
<translation>伺服器回應錯誤的內容長度</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="292"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="295"/>
<source>Connection Timeout</source>
<translation>連線逾時</translation>
</message>
@@ -1201,28 +1222,25 @@ Continuing the sync as normal will cause all your files to be overwritten by an
<context>
<name>OCC::HttpCredentialsGui</name>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="34"/>
- <source>Please enter %1 password:
-
-User: %2
-Account: %3
-</source>
- <translation>請輸入 %1 密碼:
-
-使用者: %2
-帳號: %3
-</translation>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="35"/>
+ <source>Please enter %1 password:&lt;br&gt;&lt;br&gt;User: %2&lt;br&gt;Account: %3&lt;br&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="40"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="48"/>
<source>Reading from keychain failed with error: &apos;%1&apos;</source>
<translation>從授權碼讀取資料時失敗,錯誤: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="45"/>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="53"/>
<source>Enter Password</source>
<translation>輸入密碼</translation>
</message>
+ <message>
+ <location filename="../src/gui/creds/httpcredentialsgui.cpp" line="78"/>
+ <source>&lt;a href=&quot;%1&quot;&gt;Click here&lt;/a&gt; to request an app password from the web interface.</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>OCC::IgnoreListEditor</name>
@@ -1267,7 +1285,7 @@ Account: %3
<translation>移除</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="40"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="41"/>
<source>Files or folders matching a pattern will not be synchronized.
Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data.</source>
@@ -1276,27 +1294,27 @@ Items where deletion is allowed will be deleted if they prevent a directory from
當資料夾被移除時,會根據清單裡的允許刪除選項來避免那些檔案會被移除。而這對元資料是有用的。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="110"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
<source>Could not open file</source>
<translation>無法開啟檔案</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="111"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="112"/>
<source>Cannot write changes to &apos;%1&apos;.</source>
<translation>%1 無法寫入變更。</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="138"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
<source>Add Ignore Pattern</source>
<translation>增加忽略格式</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="139"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="140"/>
<source>Add a new ignore pattern:</source>
<translation>增加一個新的忽略格式:</translation>
</message>
<message>
- <location filename="../src/gui/ignorelisteditor.cpp" line="46"/>
+ <location filename="../src/gui/ignorelisteditor.cpp" line="47"/>
<source>This entry is provided by the system at &apos;%1&apos; and cannot be modified in this view.</source>
<translation>這個項目是由系統提供在 &apos;%1&apos; 且不能在這個頁面被修改</translation>
</message>
@@ -1370,7 +1388,7 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::MoveJob</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="48"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="58"/>
<source>Connection timed out</source>
<translation>連線逾時</translation>
</message>
@@ -1486,32 +1504,32 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<translation>自動限制</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="34"/>
+ <location filename="../src/gui/networksettings.cpp" line="35"/>
<source>Hostname of proxy server</source>
<translation>代理伺服器主機名稱</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="35"/>
+ <location filename="../src/gui/networksettings.cpp" line="36"/>
<source>Username for proxy server</source>
<translation>代理伺服器使用者名稱</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="36"/>
+ <location filename="../src/gui/networksettings.cpp" line="37"/>
<source>Password for proxy server</source>
<translation>代理伺服器密碼</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="38"/>
+ <location filename="../src/gui/networksettings.cpp" line="39"/>
<source>HTTP(S) proxy</source>
<translation>HTTP(S) 代理伺服器</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="39"/>
+ <location filename="../src/gui/networksettings.cpp" line="40"/>
<source>SOCKS5 proxy</source>
<translation>SOCKS5 代理伺服器</translation>
</message>
<message>
- <location filename="../src/gui/networksettings.cpp" line="133"/>
+ <location filename="../src/gui/networksettings.cpp" line="134"/>
<source>Qt &gt;= 5.4 is required in order to use the bandwidth limit</source>
<translation>要使用頻寬限制,Qt版本要求 &gt;= 5.4</translation>
</message>
@@ -1519,23 +1537,23 @@ Items where deletion is allowed will be deleted if they prevent a directory from
<context>
<name>OCC::NotificationWidget</name>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="50"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="51"/>
<source>Created at %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="99"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="100"/>
<source>Closing in a few seconds...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="133"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="134"/>
<source>%1 request failed at %2</source>
<extracomment>The second parameter is a time, such as 'failed at 09:58pm'</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/notificationwidget.cpp" line="139"/>
+ <location filename="../src/gui/notificationwidget.cpp" line="140"/>
<source>&apos;%1&apos; selected at %2</source>
<extracomment>The second parameter is a time, such as 'selected at 09:58pm'</extracomment>
<translation type="unfinished"/>
@@ -1673,7 +1691,7 @@ for additional privileges during the process.</source>
<translation>設定客戶端 TLS 憑證</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="37"/>
+ <location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="38"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Failed to connect to the secure server address &lt;em&gt;%1&lt;/em&gt;. How do you wish to proceed?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;無法連線到安全伺服器 &lt;em&gt;%1&lt;/em&gt;,您想要如何處理?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@@ -1681,17 +1699,17 @@ for additional privileges during the process.</source>
<context>
<name>OCC::OwncloudHttpCredsPage</name>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="50"/>
<source>&amp;Email</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="60"/>
<source>Connect to %1</source>
<translation>連線到 %1</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="62"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
<source>Enter user credentials</source>
<translation>請輸入使用者憑證</translation>
</message>
@@ -1729,139 +1747,139 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudSetupWizard</name>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="145"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="179"/>
<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;成功連線到 %1: %2 版本 %3 (%4)&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="169"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="205"/>
<source>Failed to connect to %1 at %2:&lt;br/&gt;%3</source>
<translation>從 %2 連線到 %1 失敗:&lt;br/&gt;%3</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="181"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="217"/>
<source>Timeout while trying to connect to %1 at %2.</source>
<translation>從 %2 嘗試連線到 %1 逾時。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="192"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="228"/>
<source>Trying to connect to %1 at %2...</source>
<translation>嘗試連線到%1從%2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="239"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
<source>The authenticated request to the server was redirected to &apos;%1&apos;. The URL is bad, the server is misconfigured.</source>
<translation>伺服器要求的認證請求被導向 &apos;%1&apos;,這個URL可能不安全,此伺服器可能設定有錯。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="261"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="297"/>
<source>There was an invalid response to an authenticated webdav request</source>
<translation>從webdav的認證要求中有無效的回傳值</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="252"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="288"/>
<source>Access forbidden by server. To verify that you have proper access, &lt;a href=&quot;%1&quot;&gt;click here&lt;/a&gt; to access the service with your browser.</source>
<translation>從伺服器存取被拒絕。為了正確驗證您的存取資訊 &lt;a href=&quot;%1&quot;&gt;請點選這裡&lt;/a&gt; 透過瀏覽器來存取服務</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="303"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="339"/>
<source>Local sync folder %1 already exists, setting it up for sync.&lt;br/&gt;&lt;br/&gt;</source>
<translation>本地同步資料夾%1已存在, 將其設置為同步&lt;br/&gt;&lt;br/&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="305"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="341"/>
<source>Creating local sync folder %1...</source>
<translation>建立本地同步資料夾 %1...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="309"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="345"/>
<source>ok</source>
<translation>ok</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="311"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="347"/>
<source>failed.</source>
<translation>失敗</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="313"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="349"/>
<source>Could not create local folder %1</source>
<translation>無法建立本地資料夾 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="338"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="374"/>
<source>No remote folder specified!</source>
<translation>沒有指定遠端資料夾!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="344"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="380"/>
<source>Error: %1</source>
<translation>錯誤: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="357"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="393"/>
<source>creating folder on ownCloud: %1</source>
<translation>在 ownCloud 建立資料夾: %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="373"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="409"/>
<source>Remote folder %1 created successfully.</source>
<translation>遠端資料夾%1建立成功!</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="375"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
<source>The remote folder %1 already exists. Connecting it for syncing.</source>
<translation>遠端資料夾%1已存在,連線同步中</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="377"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="379"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="413"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="415"/>
<source>The folder creation resulted in HTTP error code %1</source>
<translation>在HTTP建立資料夾失敗, error code %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="381"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="417"/>
<source>The remote folder creation failed because the provided credentials are wrong!&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>由於帳號或密碼錯誤,遠端資料夾建立失敗&lt;br/&gt;請檢查您的帳號密碼。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="384"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="420"/>
<source>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;Remote folder creation failed probably because the provided credentials are wrong.&lt;/font&gt;&lt;br/&gt;Please go back and check your credentials.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;font color=&quot;red&quot;&gt;遠端資料夾建立失敗,也許是因為所提供的帳號密碼錯誤&lt;/font&gt;&lt;br/&gt;請重新檢查您的帳號密碼&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="389"/>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="390"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="425"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="426"/>
<source>Remote folder %1 creation failed with error &lt;tt&gt;%2&lt;/tt&gt;.</source>
<translation>建立遠端資料夾%1發生錯誤&lt;tt&gt;%2&lt;/tt&gt;失敗</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="406"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="442"/>
<source>A sync connection from %1 to remote directory %2 was set up.</source>
<translation>從%1到遠端資料夾%2的連線已建立</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="411"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="447"/>
<source>Successfully connected to %1!</source>
<translation>成功連接到 %1 !</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="418"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="454"/>
<source>Connection to %1 could not be established. Please check again.</source>
<translation>無法建立連線%1, 請重新檢查</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="431"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="467"/>
<source>Folder rename failed</source>
<translation>重新命名資料夾失敗</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="432"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="468"/>
<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>無法移除與備份此資料夾,因為有其他的程式正在使用其中的資料夾或者檔案。請關閉使用中的資料夾或檔案並重試或者取消設定。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudsetupwizard.cpp" line="474"/>
+ <location filename="../src/gui/owncloudsetupwizard.cpp" line="510"/>
<source>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;Local sync folder %1 successfully created!&lt;/b&gt;&lt;/font&gt;</source>
<translation>&lt;font color=&quot;green&quot;&gt;&lt;b&gt;本地同步資料夾 %1 建立成功!&lt;/b&gt;&lt;/font&gt;</translation>
</message>
@@ -1869,12 +1887,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::OwncloudWizard</name>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="71"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="79"/>
<source>%1 Connection Wizard</source>
<translation>%1連線精靈</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudwizard.cpp" line="80"/>
+ <location filename="../src/gui/wizard/owncloudwizard.cpp" line="88"/>
<source>Skip folders configuration</source>
<translation>忽略資料夾設定資訊</translation>
</message>
@@ -1900,7 +1918,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PUTFileJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="103"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="104"/>
<source>Connection Timeout</source>
<translation>連線逾時</translation>
</message>
@@ -1908,7 +1926,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PollJob</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="160"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="161"/>
<source>Invalid JSON reply from the poll URL</source>
<translation>不合法的JSON資訊從URL中回傳</translation>
</message>
@@ -1916,55 +1934,55 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateDirectory</name>
<message>
- <location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
+ <location filename="../src/libsync/owncloudpropagator.cpp" line="711"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateDownloadFileQNAM</name>
+ <name>OCC::PropagateDownloadFile</name>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="327"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="330"/>
<source>File %1 can not be downloaded because of a local file name clash!</source>
<translation>檔案 %1 無法被下載,因為本地端的檔案名稱已毀損!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="376"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="379"/>
<source>The download would reduce free disk space below %1</source>
<translation>這次下載將會減少硬碟空間: %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="381"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="384"/>
<source>Free space on disk is less than %1</source>
<translation>可用的硬碟空間已經少於 %1</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="496"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="499"/>
<source>File was deleted from server</source>
<translation>檔案已從伺服器被刪除</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="545"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="548"/>
<source>The file could not be downloaded completely.</source>
<translation>檔案下載無法完成。</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="552"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="555"/>
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="693"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="714"/>
<source>File %1 cannot be saved because of a local file name clash!</source>
<translation>檔案 %1 無法存檔,因為本地端的檔案名稱已毀損!</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="741"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="763"/>
<source>File has changed since discovery</source>
<translation>尋找的過程中檔案已經被更改</translation>
</message>
<message>
- <location filename="../src/libsync/propagatedownload.cpp" line="791"/>
+ <location filename="../src/libsync/propagatedownload.cpp" line="813"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2036,7 +2054,8 @@ It is not advisable to use it.</source>
<translation>檔案 %1 無法更名成 %2,因為本地端的檔案名稱已毀損</translation>
</message>
<message>
- <location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="246"/>
+ <location filename="../src/libsync/propagatorjobs.cpp" line="251"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
@@ -2044,12 +2063,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteDelete</name>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="97"/>
<source>The file has been removed from a read only share. It was restored.</source>
<translation>已復原從只供讀取的分享中被移除檔案</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotedelete.cpp" line="115"/>
+ <location filename="../src/libsync/propagateremotedelete.cpp" line="118"/>
<source>Wrong HTTP code returned by server. Expected 204, but received &quot;%1 %2&quot;.</source>
<translation>從伺服器端回傳錯誤的 HTTP 代碼, 預期是 204, 但是接收到的是 &quot;%1 %2&quot;.</translation>
</message>
@@ -2070,78 +2089,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::PropagateRemoteMove</name>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="87"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="97"/>
<source>This folder must not be renamed. It is renamed back to its original name.</source>
<translation>這個資料夾不應該被更名,他已經被改回原本的名稱了。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="89"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="99"/>
<source>This folder must not be renamed. Please name it back to Shared.</source>
<translation>這個資料夾已經被分享,不應該被更名,請改回原本的名稱。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="138"/>
<source>The file was renamed but is part of a read only share. The original file was restored.</source>
<translation>檔案更名完成,但這檔案是只供讀取的分享,原始檔案已被還原</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="144"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="155"/>
<source>Wrong HTTP code returned by server. Expected 201, but received &quot;%1 %2&quot;.</source>
<translation>從伺服器端回傳錯誤的 HTTP 代碼, 預期是 201, 但是接收到的是 &quot;%1 %2&quot;.</translation>
</message>
<message>
- <location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="186"/>
+ <location filename="../src/libsync/propagateremotemove.cpp" line="192"/>
<source>Error writing metadata to the database</source>
<translation type="unfinished"/>
</message>
</context>
<context>
- <name>OCC::PropagateUploadFileQNAM</name>
+ <name>OCC::PropagateUploadFileCommon</name>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="297"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="299"/>
<source>File Removed</source>
<translation>檔案已移除</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="309"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="311"/>
<source>Local file changed during syncing. It will be resumed.</source>
<translation>本地端的檔案在同步的過程中被更改,此檔案將會被還原。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="321"/>
- <location filename="../src/libsync/propagateupload.cpp" line="710"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="323"/>
<source>Local file changed during sync.</source>
<translation>本地端的檔案在同步過程中被更改。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="637"/>
+ <location filename="../src/libsync/propagateupload.cpp" line="555"/>
+ <source>Error writing metadata to the database</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileNG</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="363"/>
<source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
<translation>HTTP連線工作被強制中斷,Qt版本&lt; 5.4.2</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="645"/>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="399"/>
+ <source>The local file was removed during sync.</source>
+ <translation>本地端的檔案在同步過程中被刪除。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="410"/>
+ <source>Local file changed during sync.</source>
+ <translation>本地端的檔案在同步過程中被更改。</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="441"/>
+ <source>Unexpected return code from server (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="448"/>
+ <source>Missing File ID from server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadng.cpp" line="461"/>
+ <source>Missing ETag from server</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OCC::PropagateUploadFileV1</name>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="190"/>
+ <source>Forcing job abort on HTTP connection reset with Qt &lt; 5.4.2.</source>
+ <translation>HTTP連線工作被強制中斷,Qt版本&lt; 5.4.2</translation>
+ </message>
+ <message>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="198"/>
<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/libsync/propagateupload.cpp" line="676"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="229"/>
<source>Poll URL missing</source>
<translation>缺少輪詢的超連結</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="699"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="252"/>
<source>The local file was removed during sync.</source>
<translation>本地端的檔案在同步過程中被刪除。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="725"/>
- <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
- <translation>伺服器不承認檔案的最後一個分割檔。(e-tag不存在)</translation>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="263"/>
+ <source>Local file changed during sync.</source>
+ <translation>本地端的檔案在同步過程中被更改。</translation>
</message>
<message>
- <location filename="../src/libsync/propagateupload.cpp" line="800"/>
- <source>Error writing metadata to the database</source>
- <translation type="unfinished"/>
+ <location filename="../src/libsync/propagateuploadv1.cpp" line="278"/>
+ <source>The server did not acknowledge the last chunk. (No e-tag was present)</source>
+ <translation>伺服器不承認檔案的最後一個分割檔。(e-tag不存在)</translation>
</message>
</context>
<context>
@@ -2157,42 +2217,42 @@ It is not advisable to use it.</source>
<translation>文字標籤</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="54"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="55"/>
<source>Time</source>
<translation>時間</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="55"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="56"/>
<source>File</source>
<translation>檔案</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="56"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="57"/>
<source>Folder</source>
<translation>資料夾</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="57"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="58"/>
<source>Action</source>
<translation>動作</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="58"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="59"/>
<source>Size</source>
<translation>大小</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="78"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="79"/>
<source>Local sync protocol</source>
<translation>本機同步協定</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="80"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="81"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
- <location filename="../src/gui/protocolwidget.cpp" line="81"/>
+ <location filename="../src/gui/protocolwidget.cpp" line="82"/>
<source>Copy the activity list to the clipboard.</source>
<translation>複製活動列表到剪貼簿。</translation>
</message>
@@ -2290,22 +2350,22 @@ It is not advisable to use it.</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="88"/>
<source>Activity</source>
<translation>活動</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="96"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="97"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="102"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="103"/>
<source>Network</source>
<translation>網路</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialog.cpp" line="199"/>
+ <location filename="../src/gui/settingsdialog.cpp" line="200"/>
<source>Account</source>
<translation>帳號</translation>
</message>
@@ -2313,27 +2373,27 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SettingsDialogMac</name>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="69"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="70"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="73"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="74"/>
<source>Activity</source>
<translation>活動</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="87"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="88"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="91"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="92"/>
<source>Network</source>
<translation>網路</translation>
</message>
<message>
- <location filename="../src/gui/settingsdialogmac.cpp" line="120"/>
+ <location filename="../src/gui/settingsdialogmac.cpp" line="121"/>
<source>Account</source>
<translation>帳號</translation>
</message>
@@ -2361,32 +2421,32 @@ It is not advisable to use it.</source>
<translation>ownCloud 路徑:</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="98"/>
+ <location filename="../src/gui/sharedialog.cpp" line="100"/>
<source>%1 Sharing</source>
<translation>%1 分享</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="73"/>
+ <location filename="../src/gui/sharedialog.cpp" line="75"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="95"/>
+ <location filename="../src/gui/sharedialog.cpp" line="97"/>
<source>Folder: %2</source>
<translation>資料夾: %2</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="101"/>
+ <location filename="../src/gui/sharedialog.cpp" line="103"/>
<source>The server does not allow sharing</source>
<translation>伺服器不允許共享</translation>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="113"/>
+ <location filename="../src/gui/sharedialog.cpp" line="115"/>
<source>Retrieving maximum possible sharing permissions from server...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sharedialog.cpp" line="169"/>
+ <location filename="../src/gui/sharedialog.cpp" line="171"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>這個檔案無法被分享,並沒有分享此檔案的權限。</translation>
</message>
@@ -2425,43 +2485,58 @@ It is not advisable to use it.</source>
</message>
<message>
<location filename="../src/gui/sharelinkwidget.ui" line="201"/>
+ <source>&amp;Mail link</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.ui" line="208"/>
<source>Copy &amp;link</source>
<translation>複製連結</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.ui" line="225"/>
+ <location filename="../src/gui/sharelinkwidget.ui" line="232"/>
<source>Allow editing</source>
<translation>允許編輯</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="88"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="95"/>
<source>P&amp;assword protect</source>
<translation>&amp;密碼保護</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="196"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="203"/>
<source>Password Protected</source>
<translation>密碼保護</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="289"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="298"/>
<source>The file can not be shared because it was shared without sharing permission.</source>
<translation>這個檔案無法被分享,並沒有分享此檔案的權限。</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="366"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="412"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="377"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="425"/>
<source>Public sh&amp;aring requires a password</source>
<translation>公開&amp;共享需要密碼</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="434"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="448"/>
<source>Please Set Password</source>
<translation>請設定密碼</translation>
</message>
<message>
- <location filename="../src/gui/sharelinkwidget.cpp" line="498"/>
- <location filename="../src/gui/sharelinkwidget.cpp" line="499"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="504"/>
+ <source>Could not open email client</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="505"/>
+ <source>There was an error when launching the email client to create a new message. Maybe no default email client is configured?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="533"/>
+ <location filename="../src/gui/sharelinkwidget.cpp" line="534"/>
<source>&amp;Share link</source>
<translation>&amp;分享連結</translation>
</message>
@@ -2479,7 +2554,7 @@ It is not advisable to use it.</source>
<translation>與用戶或群組分享 ...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="224"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="225"/>
<source>No results for &apos;%1&apos;</source>
<translation>&apos;%1&apos; 沒有結果</translation>
</message>
@@ -2512,17 +2587,17 @@ It is not advisable to use it.</source>
<translation>...</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="300"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
<source>create</source>
<translation>建立</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="303"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
<source>change</source>
<translation>更動</translation>
</message>
<message>
- <location filename="../src/gui/shareusergroupwidget.cpp" line="306"/>
+ <location filename="../src/gui/shareusergroupwidget.cpp" line="309"/>
<source>delete</source>
<translation>刪除</translation>
</message>
@@ -2530,12 +2605,12 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethCredentials</name>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>Login Error</source>
<translation>登入錯誤</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="235"/>
+ <location filename="../src/gui/creds/shibbolethcredentials.cpp" line="221"/>
<source>You must sign in as user %1</source>
<translation>您必須以 %1 使用者登入</translation>
</message>
@@ -2543,17 +2618,22 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ShibbolethWebView</name>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="79"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="82"/>
<source>%1 - Authenticate</source>
<translation>%1 - 驗證</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="92"/>
+ <source>SSL Chipher Debug View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Reauthentication required</source>
<translation>要求重新驗證</translation>
</message>
<message>
- <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="85"/>
+ <location filename="../src/gui/creds/shibboleth/shibbolethwebview.cpp" line="100"/>
<source>Your session has expired. You need to re-login to continue to use the client.</source>
<translation>您的認証已經過期了,您必須重新登入才能繼續使用。</translation>
</message>
@@ -2561,7 +2641,7 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SocketApi</name>
<message>
- <location filename="../src/gui/socketapi.cpp" line="453"/>
+ <location filename="../src/gui/socketapi.cpp" line="455"/>
<source>Share with %1</source>
<comment>parameter is ownCloud</comment>
<translation>與 %1 分享</translation>
@@ -2570,119 +2650,119 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SslButton</name>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="102"/>
+ <location filename="../src/gui/sslbutton.cpp" line="103"/>
<source>&lt;h3&gt;Certificate Details&lt;/h3&gt;</source>
<translation>&lt;h3&gt;憑證細節&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="105"/>
+ <location filename="../src/gui/sslbutton.cpp" line="106"/>
<source>Common Name (CN):</source>
<translation>(通用名):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="106"/>
+ <location filename="../src/gui/sslbutton.cpp" line="107"/>
<source>Subject Alternative Names:</source>
<translation>主題備用名稱:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="108"/>
+ <location filename="../src/gui/sslbutton.cpp" line="109"/>
<source>Organization (O):</source>
<translation>組織 (O):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="109"/>
+ <location filename="../src/gui/sslbutton.cpp" line="110"/>
<source>Organizational Unit (OU):</source>
<translation>組織部門 (OU):</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="110"/>
+ <location filename="../src/gui/sslbutton.cpp" line="111"/>
<source>State/Province:</source>
<translation>州或省:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="111"/>
+ <location filename="../src/gui/sslbutton.cpp" line="112"/>
<source>Country:</source>
<translation>國家:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="112"/>
+ <location filename="../src/gui/sslbutton.cpp" line="113"/>
<source>Serial:</source>
<translation>序號:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="115"/>
+ <location filename="../src/gui/sslbutton.cpp" line="116"/>
<source>&lt;h3&gt;Issuer&lt;/h3&gt;</source>
<translation>&lt;h3&gt;簽發者&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="118"/>
+ <location filename="../src/gui/sslbutton.cpp" line="119"/>
<source>Issuer:</source>
<translation>簽發者:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="119"/>
+ <location filename="../src/gui/sslbutton.cpp" line="120"/>
<source>Issued on:</source>
<translation>簽發於:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="120"/>
+ <location filename="../src/gui/sslbutton.cpp" line="121"/>
<source>Expires on:</source>
<translation>過期於:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="123"/>
+ <location filename="../src/gui/sslbutton.cpp" line="124"/>
<source>&lt;h3&gt;Fingerprints&lt;/h3&gt;</source>
<translation>&lt;h3&gt;指紋&lt;/h3&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="127"/>
+ <location filename="../src/gui/sslbutton.cpp" line="128"/>
<source>MD 5:</source>
<translation>MD 5:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="129"/>
+ <location filename="../src/gui/sslbutton.cpp" line="130"/>
<source>SHA-256:</source>
<translation>SHA-256:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="131"/>
+ <location filename="../src/gui/sslbutton.cpp" line="132"/>
<source>SHA-1:</source>
<translation>SHA-1:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="135"/>
+ <location filename="../src/gui/sslbutton.cpp" line="136"/>
<source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This certificate was manually approved&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;b&gt;注意:&lt;/b&gt; 此憑證已被手動核准&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="155"/>
+ <location filename="../src/gui/sslbutton.cpp" line="156"/>
<source>%1 (self-signed)</source>
<translation>%1 (自我簽章)</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="157"/>
+ <location filename="../src/gui/sslbutton.cpp" line="158"/>
<source>%1</source>
<translation>%1</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="191"/>
+ <location filename="../src/gui/sslbutton.cpp" line="192"/>
<source>This connection is encrypted using %1 bit %2.
</source>
<translation>這個連線已經使用 %1 bit %2 加密。
</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="218"/>
+ <location filename="../src/gui/sslbutton.cpp" line="219"/>
<source>No support for SSL session tickets/identifiers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="229"/>
+ <location filename="../src/gui/sslbutton.cpp" line="230"/>
<source>Certificate information:</source>
<translation>憑證資訊:</translation>
</message>
<message>
- <location filename="../src/gui/sslbutton.cpp" line="195"/>
+ <location filename="../src/gui/sslbutton.cpp" line="196"/>
<source>This connection is NOT secure as it is not encrypted.
</source>
<translation>這個連線沒有經過加密,是不安全的。
@@ -2770,270 +2850,275 @@ It is not advisable to use it.</source>
<context>
<name>OCC::SyncEngine</name>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="118"/>
+ <location filename="../src/libsync/syncengine.cpp" line="114"/>
<source>Success.</source>
<translation>成功。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="125"/>
+ <location filename="../src/libsync/syncengine.cpp" line="121"/>
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
<translation>CSync 讀取歷程檔案失敗,歷程檔案已經損毀。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="128"/>
+ <location filename="../src/libsync/syncengine.cpp" line="124"/>
<source>&lt;p&gt;The %1 plugin for csync could not be loaded.&lt;br/&gt;Please verify the installation!&lt;/p&gt;</source>
<translation>&lt;p&gt;用於csync的套件%1&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="131"/>
+ <location filename="../src/libsync/syncengine.cpp" line="127"/>
<source>CSync got an error while processing internal trees.</source>
<translation>CSync 處理內部資料樹時發生錯誤</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="134"/>
+ <location filename="../src/libsync/syncengine.cpp" line="130"/>
<source>CSync failed to reserve memory.</source>
<translation>CSync 無法取得記憶體空間。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="137"/>
+ <location filename="../src/libsync/syncengine.cpp" line="133"/>
<source>CSync fatal parameter error.</source>
<translation>CSync 參數錯誤。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="140"/>
+ <location filename="../src/libsync/syncengine.cpp" line="136"/>
<source>CSync processing step update failed.</source>
<translation>CSync 處理步驟 &quot;update&quot; 失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="143"/>
+ <location filename="../src/libsync/syncengine.cpp" line="139"/>
<source>CSync processing step reconcile failed.</source>
<translation>CSync 處理步驟 &quot;reconcile&quot; 失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="146"/>
+ <location filename="../src/libsync/syncengine.cpp" line="142"/>
<source>CSync could not authenticate at the proxy.</source>
<translation>CSync 無法在代理伺服器認證。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="149"/>
+ <location filename="../src/libsync/syncengine.cpp" line="145"/>
<source>CSync failed to lookup proxy or server.</source>
<translation>CSync 查詢代理伺服器或伺服器失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="152"/>
+ <location filename="../src/libsync/syncengine.cpp" line="148"/>
<source>CSync failed to authenticate at the %1 server.</source>
<translation>CSync 於伺服器 %1 認證失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="155"/>
+ <location filename="../src/libsync/syncengine.cpp" line="151"/>
<source>CSync failed to connect to the network.</source>
<translation>CSync 無法連接到網路。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="158"/>
+ <location filename="../src/libsync/syncengine.cpp" line="154"/>
<source>A network connection timeout happened.</source>
<translation>網路連線逾時。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="161"/>
+ <location filename="../src/libsync/syncengine.cpp" line="157"/>
<source>A HTTP transmission error happened.</source>
<translation>HTTP 傳輸錯誤。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="185"/>
+ <location filename="../src/libsync/syncengine.cpp" line="181"/>
<source>The mounted folder is temporarily not available on the server</source>
<translation>掛載的資料夾暫時無法在伺服器上使用</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="191"/>
+ <location filename="../src/libsync/syncengine.cpp" line="187"/>
<source>An error occurred while opening a folder</source>
<translation>開啟資料夾時發生錯誤。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="194"/>
+ <location filename="../src/libsync/syncengine.cpp" line="190"/>
<source>Error while reading folder.</source>
<translation>讀取資料夾時發生錯誤。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="440"/>
+ <location filename="../src/libsync/syncengine.cpp" line="447"/>
<source>File/Folder is ignored because it&apos;s hidden.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="701"/>
+ <location filename="../src/libsync/syncengine.cpp" line="712"/>
<source>Only %1 are available, need at least %2 to start</source>
<comment>Placeholders are postfixed with file sizes using Utility::octetsToString()</comment>
<translation>目前僅有 %1 可以使用,至少需要 %2 才能開始</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1132"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1176"/>
<source>Not allowed because you don&apos;t have permission to add parent folder</source>
<translation>拒絕此操作,您沒有新增母資料夾的權限。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1139"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1183"/>
<source>Not allowed because you don&apos;t have permission to add files in that folder</source>
<translation>拒絕此操作,您沒有新增檔案在此資料夾的權限。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="173"/>
+ <location filename="../src/libsync/syncengine.cpp" line="169"/>
<source>CSync: No space on %1 server available.</source>
<translation>CSync:伺服器 %1 沒有可用空間。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="176"/>
+ <location filename="../src/libsync/syncengine.cpp" line="172"/>
<source>CSync unspecified error.</source>
<translation>CSync 未知的錯誤。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="179"/>
+ <location filename="../src/libsync/syncengine.cpp" line="175"/>
<source>Aborted by the user</source>
<translation>使用者中斷</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="434"/>
+ <location filename="../src/libsync/syncengine.cpp" line="438"/>
<source>Filename contains invalid characters that can not be synced cross platform.</source>
<translation>檔案名稱含有非法的字元符號導致無法跨平台同步。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="167"/>
+ <location filename="../src/libsync/syncengine.cpp" line="163"/>
<source>CSync failed to access</source>
<translation>CSync 存取失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="121"/>
+ <location filename="../src/libsync/syncengine.cpp" line="117"/>
<source>CSync failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder.</source>
<translation>CSync 讀取或創建歷程檔案時失敗,請確定您在此本地資料夾有讀寫的權限。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="164"/>
+ <location filename="../src/libsync/syncengine.cpp" line="160"/>
<source>CSync failed due to unhandled permission denied.</source>
<translation>CSync 失敗,由於權限未處理被拒。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="170"/>
+ <location filename="../src/libsync/syncengine.cpp" line="166"/>
<source>CSync tried to create a folder that already exists.</source>
<translation>CSync 試圖建立一個已經存在的資料夾。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="182"/>
+ <location filename="../src/libsync/syncengine.cpp" line="178"/>
<source>The service is temporarily unavailable</source>
<translation>這個服務暫時無法使用。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="188"/>
+ <location filename="../src/libsync/syncengine.cpp" line="184"/>
<source>Access is forbidden</source>
<translation>存取被拒</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="199"/>
+ <location filename="../src/libsync/syncengine.cpp" line="195"/>
<source>An internal error number %1 occurred.</source>
<translation>發生內部錯誤,錯誤代碼 %1。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="263"/>
+ <location filename="../src/libsync/syncengine.cpp" line="259"/>
<source>The item is not synced because of previous errors: %1</source>
<translation>因為先前的錯誤: %1 物件沒有同步成功</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="428"/>
+ <location filename="../src/libsync/syncengine.cpp" line="432"/>
<source>Symbolic links are not supported in syncing.</source>
<translation>同步不支援捷徑連結</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="431"/>
+ <location filename="../src/libsync/syncengine.cpp" line="435"/>
<source>File is listed on the ignore list.</source>
<translation>檔案被列在忽略清單。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="437"/>
+ <location filename="../src/libsync/syncengine.cpp" line="441"/>
+ <source>Filename contains trailing spaces.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/libsync/syncengine.cpp" line="444"/>
<source>Filename is too long.</source>
<translation>檔案名稱太長了。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="446"/>
+ <location filename="../src/libsync/syncengine.cpp" line="453"/>
<source>Stat failed.</source>
<translation>狀態失敗。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="473"/>
+ <location filename="../src/libsync/syncengine.cpp" line="480"/>
<source>Filename encoding is not valid</source>
<translation>檔案名稱編碼是無效的</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="644"/>
+ <location filename="../src/libsync/syncengine.cpp" line="654"/>
<source>Invalid characters, please rename &quot;%1&quot;</source>
<translation>無效的字元,請您重新命名 &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="735"/>
+ <location filename="../src/libsync/syncengine.cpp" line="749"/>
<source>Unable to initialize a sync journal.</source>
<translation>同步處理日誌無法初始化</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="754"/>
+ <location filename="../src/libsync/syncengine.cpp" line="768"/>
<source>Unable to read the blacklist from the local database</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="787"/>
+ <location filename="../src/libsync/syncengine.cpp" line="805"/>
<source>Unable to read from the sync journal.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="833"/>
+ <location filename="../src/libsync/syncengine.cpp" line="850"/>
<source>Cannot open the sync journal</source>
<translation>同步處理日誌無法開啟</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="887"/>
+ <location filename="../src/libsync/syncengine.cpp" line="907"/>
<source>File name contains at least one invalid character</source>
<translation>檔案名稱含有不合法的字元</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1091"/>
- <location filename="../src/libsync/syncengine.cpp" line="1098"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1135"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1142"/>
<source>Ignored because of the &quot;choose what to sync&quot; blacklist</source>
<translation>已忽略。根據 &quot;選擇要同步的項目&quot;的黑名單</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1117"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1161"/>
<source>Not allowed because you don&apos;t have permission to add subfolders to that folder</source>
<translation>拒絕此操作,您沒有在此新增子資料夾的權限。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1159"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1202"/>
<source>Not allowed to upload this file because it is read-only on the server, restoring</source>
<translation>拒絕上傳此檔案,此檔案在伺服器是唯讀檔,復原中</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1176"/>
- <location filename="../src/libsync/syncengine.cpp" line="1196"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1218"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1237"/>
<source>Not allowed to remove, restoring</source>
<translation>不允許刪除,復原中</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1209"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1250"/>
<source>Local files and share folder removed.</source>
<translation>本地端檔案和共享資料夾已被刪除。</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1265"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1306"/>
<source>Move not allowed, item restored</source>
<translation>不允許移動,物件復原中</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1276"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1317"/>
<source>Move not allowed because %1 is read-only</source>
<translation>不允許移動,因為 %1 是唯讀的</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the destination</source>
<translation>目標</translation>
</message>
<message>
- <location filename="../src/libsync/syncengine.cpp" line="1277"/>
+ <location filename="../src/libsync/syncengine.cpp" line="1318"/>
<source>the source</source>
<translation>來源</translation>
</message>
@@ -3057,17 +3142,17 @@ It is not advisable to use it.</source>
<context>
<name>OCC::Theme</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="285"/>
+ <location filename="../src/libsync/theme.cpp" line="300"/>
<source>&lt;p&gt;Version %1. For more information please visit &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;版本 %1. 如欲得知更多資訊,請到此拜訪 &lt;a href=&apos;%2&apos;&gt;%3&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="289"/>
- <source>&lt;p&gt;Copyright ownCloud, Incorporated&lt;/p&gt;</source>
- <translation>&lt;p&gt;著作權 ownCloud, 組織&lt;/p&gt;</translation>
+ <location filename="../src/libsync/theme.cpp" line="304"/>
+ <source>&lt;p&gt;Copyright ownCloud GmbH&lt;/p&gt;</source>
+ <translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/theme.cpp" line="290"/>
+ <location filename="../src/libsync/theme.cpp" line="305"/>
<source>&lt;p&gt;Distributed by %1 and licensed under the GNU General Public License (GPL) Version 2.0.&lt;br/&gt;%2 and the %2 logo are registered trademarks of %1 in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
@@ -3093,201 +3178,216 @@ It is not advisable to use it.</source>
<context>
<name>OCC::ownCloudGui</name>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="292"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="294"/>
<source>Please sign in</source>
<translation>請登入</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="317"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="319"/>
<source>Folder %1: %2</source>
<translation>資料夾 %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="322"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="324"/>
<source>No sync folders configured.</source>
<translation>尚未設置同步資料夾。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="332"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="334"/>
<source>There are no sync folders configured.</source>
<translation>尚未設置同步資料夾。</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="340"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="342"/>
<source>Open in browser</source>
<translation>用瀏覽器開啟</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="390"/>
- <location filename="../src/gui/owncloudgui.cpp" line="526"/>
- <location filename="../src/gui/owncloudgui.cpp" line="593"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="392"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="742"/>
<source>Log in...</source>
<translation>登入...</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="394"/>
- <location filename="../src/gui/owncloudgui.cpp" line="518"/>
- <location filename="../src/gui/owncloudgui.cpp" line="595"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="396"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="640"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="744"/>
<source>Log out</source>
<translation>登出</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="438"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="468"/>
<source>Recent Changes</source>
<translation>最近的更動</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="638"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="787"/>
<source>Checking for changes in &apos;%1&apos;</source>
<translation>檢查 &apos;%1&apos; 的變動</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="367"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="369"/>
<source>Managed Folders:</source>
<translation>管理的資料夾:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="370"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="372"/>
<source>Open folder &apos;%1&apos;</source>
<translation>開啟 %1 資料夾</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="342"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="344"/>
<source>Open %1 in browser</source>
<translation>瀏覽器中開啟 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="580"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="727"/>
<source>Unknown status</source>
<translation>未知狀態</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="582"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="729"/>
<source>Settings...</source>
<translation>設定…</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="583"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="731"/>
<source>Details...</source>
<translation>細節…</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="588"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="737"/>
<source>Help</source>
<translation>說明</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="590"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="739"/>
<source>Quit %1</source>
<translation>離開 %1</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="271"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="273"/>
<source>Disconnected from %1</source>
<translation>從 %1 斷線</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="236"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="238"/>
<source>Unsupported Server Version</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="237"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="239"/>
<source>The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="275"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="277"/>
<source>Disconnected from accounts:</source>
<translation>已從帳號離線:</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="277"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="279"/>
<source>Account %1: %2</source>
<translation>帳號 %1: %2</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="296"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="298"/>
<source>Account synchronization is disabled</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="379"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="381"/>
<source>Unpause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="384"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="386"/>
<source>Pause all folders</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="497"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="619"/>
<source>Unpause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="499"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="621"/>
<source>Unpause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="507"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="629"/>
<source>Pause all synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="509"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="631"/>
<source>Pause synchronization</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="516"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="638"/>
<source>Log out of all accounts</source>
<translation>登出所有的帳戶</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="524"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="646"/>
<source>Log in to all accounts...</source>
<translation>登入所有的帳戶</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="599"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="730"/>
+ <source>New account...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="748"/>
<source>Crash now</source>
<comment>Only shows in debug mode to allow testing the crash handler</comment>
<translation>發生非預期結果</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="616"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="765"/>
<source>No items synced recently</source>
<translation>最近沒有項目被同步</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="643"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="794"/>
<source>Syncing %1 of %2 (%3 left)</source>
<translation>同步中 %1 的 %2 (剩餘 %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="648"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="798"/>
+ <source>Syncing %1 of %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="806"/>
<source>Syncing %1 (%2 left)</source>
<translation>同步中 %1 (剩餘 %2)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="668"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="809"/>
+ <source>Syncing %1</source>
+ <translation>同步 %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/owncloudgui.cpp" line="828"/>
<source>%1 (%2, %3)</source>
<translation>%1 (%2, %3)</translation>
</message>
<message>
- <location filename="../src/gui/owncloudgui.cpp" line="697"/>
+ <location filename="../src/gui/owncloudgui.cpp" line="861"/>
<source>Up to date</source>
<translation>最新的</translation>
</message>
</context>
<context>
<name>OCC::ownCloudTheme</name>
- <message utf8="true">
+ <message>
<location filename="../src/libsync/owncloudtheme.cpp" line="47"/>
- <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;/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>
+ <source>&lt;p&gt;Version %2. For more information visit &lt;a href=&quot;%3&quot;&gt;https://%4&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For known issues and help, please visit: &lt;a href=&quot;https://central.owncloud.org/c/help/desktop-file-sync&quot;&gt;https://central.owncloud.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;By Klaas Freitag, Daniel Molkentin, Olivier Goffart, Markus Götz, Jan-Christoph Borchardt, and others.&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Copyright ownCloud GmbH&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 GmbH in the United States, other countries, or both.&lt;/p&gt;</source>
<translation type="unfinished"/>
</message>
</context>
@@ -3303,9 +3403,9 @@ It is not advisable to use it.</source>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="78"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="131"/>
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="247"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="285"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="312"/>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="335"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="291"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="318"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="341"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
@@ -3325,7 +3425,7 @@ It is not advisable to use it.</source>
<translation>開始清除同步(將資料從本地端刪除)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="278"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="284"/>
<source>Choose what to sync</source>
<translation>選擇要同步的項目</translation>
</message>
@@ -3350,7 +3450,7 @@ It is not advisable to use it.</source>
<translation>從伺服器同步任何東西 (&amp;Y)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="319"/>
+ <location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="325"/>
<source>Status message</source>
<translation>狀態訊息</translation>
</message>
@@ -3363,26 +3463,15 @@ It is not advisable to use it.</source>
<translation>表單</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="38"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="70"/>
<source>&amp;Username</source>
<translation>使用者名稱 (&amp;U)</translation>
</message>
<message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="48"/>
+ <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="80"/>
<source>&amp;Password</source>
<translation>密碼 (&amp;P)</translation>
</message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="58"/>
- <source>Error Label</source>
- <translation>錯誤標籤</translation>
- </message>
- <message>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="112"/>
- <location filename="../src/gui/wizard/owncloudhttpcredspage.ui" line="125"/>
- <source>TextLabel</source>
- <translation>文字標籤</translation>
- </message>
</context>
<context>
<name>OwncloudSetupPage</name>
@@ -3499,7 +3588,7 @@ It is not advisable to use it.</source>
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/application.cpp" line="593"/>
+ <location filename="../src/gui/application.cpp" line="605"/>
<source>QT_LAYOUT_DIRECTION</source>
<translation type="unfinished"/>
</message>
@@ -3507,37 +3596,37 @@ It is not advisable to use it.</source>
<context>
<name>QObject</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="473"/>
+ <location filename="../src/libsync/utility.cpp" line="488"/>
<source>in the future</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="469"/>
+ <location filename="../src/libsync/utility.cpp" line="484"/>
<source>%n day(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="477"/>
+ <location filename="../src/libsync/utility.cpp" line="492"/>
<source>%n hour(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="482"/>
+ <location filename="../src/libsync/utility.cpp" line="497"/>
<source>now</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="484"/>
+ <location filename="../src/libsync/utility.cpp" line="499"/>
<source>Less than a minute ago</source>
<translation>不到一分鐘前</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="487"/>
+ <location filename="../src/libsync/utility.cpp" line="502"/>
<source>%n minute(s) ago</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="490"/>
+ <location filename="../src/libsync/utility.cpp" line="505"/>
<source>Some time ago</source>
<translation>前一段時間</translation>
</message>
@@ -3545,57 +3634,57 @@ It is not advisable to use it.</source>
<context>
<name>Utility</name>
<message>
- <location filename="../src/libsync/utility.cpp" line="125"/>
+ <location filename="../src/libsync/utility.cpp" line="134"/>
<source>%L1 GB</source>
<translation>%L1 GB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="129"/>
+ <location filename="../src/libsync/utility.cpp" line="138"/>
<source>%L1 MB</source>
<translation>%L1 MB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="132"/>
+ <location filename="../src/libsync/utility.cpp" line="141"/>
<source>%L1 KB</source>
<translation>%L1 KB</translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="135"/>
+ <location filename="../src/libsync/utility.cpp" line="144"/>
<source>%L1 B</source>
<translation>%L1 B</translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="319"/>
+ <location filename="../src/libsync/utility.cpp" line="315"/>
<source>%n year(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="320"/>
+ <location filename="../src/libsync/utility.cpp" line="316"/>
<source>%n month(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="321"/>
+ <location filename="../src/libsync/utility.cpp" line="317"/>
<source>%n day(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="322"/>
+ <location filename="../src/libsync/utility.cpp" line="318"/>
<source>%n hour(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="323"/>
+ <location filename="../src/libsync/utility.cpp" line="319"/>
<source>%n minute(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../src/libsync/utility.cpp" line="324"/>
+ <location filename="../src/libsync/utility.cpp" line="320"/>
<source>%n second(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../src/libsync/utility.cpp" line="348"/>
+ <location filename="../src/libsync/utility.cpp" line="344"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
@@ -3616,7 +3705,7 @@ It is not advisable to use it.</source>
<context>
<name>ownCloudTheme::about()</name>
<message>
- <location filename="../src/libsync/theme.cpp" line="271"/>
+ <location filename="../src/libsync/theme.cpp" line="286"/>
<source>&lt;p&gt;&lt;small&gt;Built from Git revision &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; on %3, %4 using Qt %5, %6&lt;/small&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;small&gt;根據Git版本號&lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;在 %3建置, %4 使用了Qt %5,%6&lt;/small&gt;&lt;/p&gt;</translation>
</message>
@@ -3624,82 +3713,92 @@ It is not advisable to use it.</source>
<context>
<name>progress</name>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="32"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
<source>Downloaded</source>
<translation>已下載</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="35"/>
<source>Uploaded</source>
<translation>已上傳</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
<source>Server version downloaded, copied changed local file into conflict file</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
<source>Deleted</source>
<translation>已刪除</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
<source>Moved to %1</source>
<translation>搬移到 %1</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
<source>Ignored</source>
<translation>已忽略</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
<source>Filesystem access error</source>
<translation>存取檔案系統錯誤</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="48"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
<source>Error</source>
<translation>錯誤</translation>
</message>
<message>
<location filename="../src/libsync/progressdispatcher.cpp" line="51"/>
+ <source>Updated local metadata</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
<location filename="../src/libsync/progressdispatcher.cpp" line="54"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="57"/>
<source>Unknown</source>
<translation>未知</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="68"/>
<source>downloading</source>
<translation>下載中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
<source>uploading</source>
<translation>上傳中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
<source>deleting</source>
<translation>刪除中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
<source>moving</source>
<translation>搬移中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="77"/>
<source>ignoring</source>
<translation>忽略中</translation>
</message>
<message>
- <location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
- <location filename="../src/libsync/progressdispatcher.cpp" line="78"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="79"/>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="81"/>
<source>error</source>
<translation>錯誤</translation>
</message>
+ <message>
+ <location filename="../src/libsync/progressdispatcher.cpp" line="83"/>
+ <source>updating local metadata</source>
+ <translation type="unfinished"/>
+ </message>
</context>
<context>
<name>theme</name>