Comparar commits
46 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 1617c9d482 | |||
| 750cdc1910 | |||
| dafc2d2b73 | |||
| 0bd2edd33a | |||
| 807267cfdb | |||
| 48c9222578 | |||
| b5ea56df73 | |||
| 2fdf6dd8f2 | |||
| 5b8c9eb16f | |||
| 9c05150c12 | |||
| c7eb85ef78 | |||
| 4df455f2e0 | |||
| 653a00d63d | |||
| 3c9acdf724 | |||
| e81d1ab9b8 | |||
| ad5620efb5 | |||
| f455c71338 | |||
| 033f2cd231 | |||
| c9eccd729d | |||
| b1100cd9e5 | |||
| 8f728ddfb2 | |||
| 4ef0ce112c | |||
| 57c14a0eba | |||
| 89f831e7d4 | |||
| 917b8409ae | |||
| 86fd39e3a9 | |||
| 04db332051 | |||
| 06a2f58c51 | |||
| b87d55758b | |||
| 38ef525d5e | |||
| 367b1fcc33 | |||
| f5c930968e | |||
| 5264a8c7f6 | |||
| 6c4b7f1479 | |||
| c42c9f0002 | |||
| 95f299f865 | |||
| 09749e2c7f | |||
| dc33784a76 | |||
| 961df1fc44 | |||
| e93c1ccb73 | |||
| 286ad0c478 | |||
| e30970ff90 | |||
| 14e0e4a072 | |||
| 60da0a15e6 | |||
| 0f84510e6f | |||
| 1dd3488973 |
+3
-4
@@ -1,6 +1,6 @@
|
||||
ChangeLog
|
||||
=========
|
||||
version 1.8.0 (release 2015-02-xx)
|
||||
version 1.8.0 (release 2015-03-xx)
|
||||
* Mac OS: HIDPI support
|
||||
* Support Sharing from desktop: Added a share dialog that can be
|
||||
opened by context menu in the file managers (Win, Mac, Nautilus)
|
||||
@@ -12,7 +12,7 @@ version 1.8.0 (release 2015-02-xx)
|
||||
* Added ability to build on Windows utilizing MingGW
|
||||
* SQLite database fixes if running on FAT filesystems
|
||||
* Improved detection of changing files to upload from local
|
||||
* Preparations for the muli-account feature
|
||||
* Preparations for the multi-account feature
|
||||
* Fixed experience for Window manager without system tray
|
||||
* Build with Qt 5.4
|
||||
* Dropped libneon dependency if Qt 5.4 is available
|
||||
@@ -24,8 +24,7 @@ version 1.8.0 (release 2015-02-xx)
|
||||
* Prepared direct download
|
||||
* Added Crashreporter feature to be switched on on demand
|
||||
* A huge amount of bug fixes in all areas of the client.
|
||||
|
||||
* more than 7000 commits since 1.7.0
|
||||
* almost 700 commits since 1.7.1
|
||||
|
||||
version 1.7.1 (release 2014-12-18)
|
||||
* Documentation fixes and updates
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ set( MIRALL_VERSION_PATCH 0 )
|
||||
set( MIRALL_SOVERSION 0 )
|
||||
|
||||
if ( NOT DEFINED MIRALL_VERSION_SUFFIX )
|
||||
set( MIRALL_VERSION_SUFFIX "rc1") #e.g. beta1, beta2, rc1
|
||||
set( MIRALL_VERSION_SUFFIX "") #e.g. beta1, beta2, rc1
|
||||
endif( NOT DEFINED MIRALL_VERSION_SUFFIX )
|
||||
|
||||
if( NOT DEFINED MIRALL_VERSION_BUILD )
|
||||
|
||||
@@ -6,3 +6,4 @@ killall @APPLICATION_EXECUTABLE@
|
||||
# Unload the Finder plugin. see issue #2105
|
||||
killall Finder
|
||||
|
||||
exit 0
|
||||
|
||||
Arquivo executável
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
useradd user
|
||||
su - user << EOF
|
||||
cd /home/user/$1
|
||||
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
|
||||
|
||||
EOF
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#VS2013
|
||||
base_url=http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3
|
||||
tmp_path=/tmp/.vcredist
|
||||
tmp_path=${1:-/tmp/.vcredist}
|
||||
|
||||
mkdir -p $tmp_path
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@ StrCpy $PageReinstall_SAME_Field_3 "Desinstal.lar ${APPLICATION_NAME}"
|
||||
StrCpy $UNINSTALLER_APPDATA_TITLE "Desinstal.lar ${APPLICATION_NAME}"
|
||||
StrCpy $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE "Escolliu l'opció de manteniment per executar-ho."
|
||||
StrCpy $SEC_APPLICATION_DETAILS "Instal·lant ${APPLICATION_NAME} essencial."
|
||||
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integració per Windows Explorer"
|
||||
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Instal·lant integració per Windows Explorer"
|
||||
StrCpy $OPTION_SECTION_SC_START_MENU_SECTION "Accés directe del programa al menú d'inici"
|
||||
StrCpy $OPTION_SECTION_SC_START_MENU_DetailPrint "Afegint la drecera per ${APPLICATION_NAME} al menú d'inici."
|
||||
StrCpy $OPTION_SECTION_SC_DESKTOP_SECTION "Drecera a l'escriptori"
|
||||
@@ -42,5 +44,3 @@ 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 $INIT_UNINSTALLER_RUNNING "El desinstal·lador ja s'està executant."
|
||||
StrCpy $SectionGroup_Shortcuts "Dreceres"
|
||||
StrCpy $OPTION_SECTION_SC_SHELL_EXT_SECTION "Integration for Windows Explorer"
|
||||
StrCpy $OPTION_SECTION_SC_SHELL_EXT_DetailPrint "Installing Integration for Windows Explorer"
|
||||
|
||||
+1
-1
Submodule binary updated: 01d73965dc...1fb9ddfa9a
@@ -151,11 +151,12 @@ CSYNC_EXCLUDE_TYPE csync_excluded(CSYNC *ctx, const char *path, int filetype) {
|
||||
return match;
|
||||
}
|
||||
|
||||
// See http://support.microsoft.com/kb/74496
|
||||
static const char *win_reserved_words[] = {"CON","PRN","AUX", "NUL",
|
||||
"COM1", "COM2", "COM3", "COM4",
|
||||
"LPT1", "LPT2", "LPT3", "CLOCK$" };
|
||||
|
||||
// See http://support.microsoft.com/kb/74496 and
|
||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
|
||||
// Additionally, we ignore '$Recycle.Bin', see https://github.com/owncloud/client/issues/2955
|
||||
static const char* win_reserved_words[] = {"CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5",
|
||||
"COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4",
|
||||
"LPT5", "LPT6", "LPT7", "LPT8", "LPT9", "CLOCK$", "$Recycle.Bin" };
|
||||
|
||||
bool csync_is_windows_reserved_word(const char* filename) {
|
||||
|
||||
|
||||
+41
-42
@@ -151,9 +151,9 @@ ownCloud Client provides the ability to add custom patterns.
|
||||
|
||||
By default, the ownCloud Client ignores the following files:
|
||||
|
||||
- Files matched by one of the patterns defined in :ref:`ignoredFilesEditor-label`.
|
||||
- Files containing characters that do not work on certain file systems (`\, /, :, ?, *, ", >, <, |`).
|
||||
* Files starting in ``.csync_journal.db*``, as these files are reserved for journalling.
|
||||
* Files matched by one of the patterns defined in the Ignored Files Editor
|
||||
* Files containing characters that do not work on certain file systems ``(`\, /, :, ?, *, ", >, <, |`)``.
|
||||
* Files starting in ``.csync_journal.db``, as these files are reserved for journalling.
|
||||
|
||||
If a pattern selected using a checkbox in the `ignoredFilesEditor-label` (or if
|
||||
a line in the exclude file starts with the character `]` directly followed by
|
||||
@@ -212,62 +212,61 @@ In the communication between client and server a couple of custom WebDAV propert
|
||||
were introduced. They are either needed for sync functionality or help have a positive
|
||||
effect on synchronization performance.
|
||||
|
||||
This chapter describes additional xml elemeents which the server returns in response
|
||||
to a successful PROPFIND request on a file or directory. The elemnts are returned in
|
||||
This chapter describes additional xml elements which the server returns in response
|
||||
to a successful PROPFIND request on a file or directory. The elements are returned in
|
||||
the namespace oc.
|
||||
|
||||
###Server Side Permissions
|
||||
Server Side Permissions
|
||||
------------------------
|
||||
|
||||
The XML element <oc:permissions> represents the permission- and sharing state of the
|
||||
The XML element ``<oc:permissions>`` represents the permission- and sharing state of the
|
||||
item. It is a list of characters, and each of the chars has a meaning as outlined
|
||||
in the table below:
|
||||
|
||||
+------+-------------+-------------------------------------------+
|
||||
| Code | Resource | Description |
|
||||
|======+=============+===========================================|
|
||||
| S | File or Folder | is shared |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| R | File or Folder | can share (includes reshare) |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| M | File or Folder | is mounted (like on DropBox, Samba, etc.) |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| W | File | can write file |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| C | Folder |can create file in folder |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| K | Folder | can create folder (mkdir) |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| D | File or Folder |can delete file or folder |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| N | File or Folder | can rename file or folder |
|
||||
+---+----------------+-------------------------------------------|
|
||||
| V | File or Folder | can move file or folder |
|
||||
+---+----------------+-------------------------------------------|
|
||||
+----+----------------+-------------------------------------------+
|
||||
|Code| Resource | Description |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| S | File or Folder | is shared |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| R | File or Folder | can share (includes reshare) |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| M | File or Folder | is mounted (like on DropBox, Samba, etc.) |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| W | File | can write file |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| C | Folder |can create file in folder |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| K | Folder | can create folder (mkdir) |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| D | File or Folder |can delete file or folder |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| N | File or Folder | can rename file or folder |
|
||||
+----+----------------+-------------------------------------------+
|
||||
| V | File or Folder | can move file or folder |
|
||||
+----+----------------+-------------------------------------------+
|
||||
|
||||
|
||||
Example:
|
||||
```
|
||||
<oc:permissions>RDNVCK</oc:permissions>
|
||||
```
|
||||
|
||||
###File- or Directory Size
|
||||
<oc:permissions>RDNVCK</oc:permissions>
|
||||
|
||||
The XML element <oc:size> represents the file- or directory size in bytes. For
|
||||
File- or Directory Size
|
||||
-----------------------
|
||||
|
||||
The XML element ``<oc:size>`` represents the file- or directory size in bytes. For
|
||||
directories, the size of the whole file tree underneath the directory is accumulated.
|
||||
|
||||
Example:
|
||||
```
|
||||
<oc:size>2429176697</oc:size>
|
||||
```
|
||||
|
||||
###FileID
|
||||
<oc:size>2429176697</oc:size>
|
||||
|
||||
FileID
|
||||
------
|
||||
|
||||
The XML element <oc:id> represents the so called file ID. It is a non volatile string id
|
||||
The XML element ``<oc:id>`` represents the so called file ID. It is a non volatile string id
|
||||
that stays constant as long as the file exists. It is not changed if the file changes or
|
||||
is renamed or moved.
|
||||
|
||||
|
||||
Example:
|
||||
```
|
||||
<oc:id>00000020oc5cfy6qqizm</oc:id>
|
||||
```
|
||||
|
||||
<oc:id>00000020oc5cfy6qqizm</oc:id>
|
||||
|
||||
@@ -18,6 +18,9 @@ and then use their package managers to install the desktop sync client. Linux
|
||||
users will also update their sync clients via package manager, and the client
|
||||
will display a notification when an update is available.
|
||||
|
||||
Linux users must also have a password manager enabled, such as GNOME Keyring or
|
||||
KWallet, so that the sync client can login automatically.
|
||||
|
||||
Improvements and New Features
|
||||
-----------------------------
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ class SocketConnect(GObject.GObject):
|
||||
print("Sending failed.")
|
||||
self.reconnect()
|
||||
else:
|
||||
print "Cannot send, not connected!"
|
||||
print("Cannot send, not connected!")
|
||||
|
||||
def addListener(self, listener):
|
||||
self._listeners.append(listener)
|
||||
@@ -85,7 +85,7 @@ class SocketConnect(GObject.GObject):
|
||||
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)
|
||||
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))
|
||||
@@ -175,7 +175,7 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
|
||||
|
||||
def menu_share(self, menu, file):
|
||||
filename = get_local_path(file.get_uri())
|
||||
print "Share file "+filename
|
||||
print("Share file "+filename)
|
||||
socketConnect.sendCommand("SHARE:"+filename+"\n")
|
||||
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ IFACEMETHODIMP OCContextMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT
|
||||
|
||||
assert(!info.shareMenuTitle.empty());
|
||||
MENUITEMINFO mii = { sizeof(mii) };
|
||||
mii.fMask = MIIM_BITMAP | MIIM_STRING | MIIM_FTYPE | MIIM_ID | MIIM_STATE;
|
||||
mii.fMask = MIIM_STRING | MIIM_FTYPE | MIIM_ID | MIIM_STATE;
|
||||
mii.wID = idCmdFirst + IDM_SHARE;
|
||||
mii.fType = MFT_STRING;
|
||||
mii.dwTypeData = &info.shareMenuTitle[0];
|
||||
|
||||
@@ -83,7 +83,6 @@
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;OCCONTEXTMENU_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>..\OCUtil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
@@ -101,8 +100,8 @@
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;OCCONTEXTMENU_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\OCUtil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -132,6 +131,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\OCUtil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>..\$(Configuration)\$(Platform);</AdditionalLibraryDirectories>
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\OCUtil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -145,6 +146,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\OCUtil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -136,6 +137,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NDEBUG;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
#include "account.h"
|
||||
#include "simplesslerrorhandler.h"
|
||||
|
||||
bool SimpleSslErrorHandler::handleErrors(QList<QSslError> errors, QList<QSslCertificate> *certs, OCC::AccountPtr account)
|
||||
bool SimpleSslErrorHandler::handleErrors(QList<QSslError> errors, const QSslConfiguration &conf, QList<QSslCertificate> *certs, OCC::AccountPtr account)
|
||||
{
|
||||
(void) account;
|
||||
(void) conf;
|
||||
|
||||
if (!certs) {
|
||||
qDebug() << "Certs parameter required but is NULL!";
|
||||
|
||||
@@ -20,7 +20,7 @@ class QSslCertificate;
|
||||
|
||||
class SimpleSslErrorHandler : public OCC::AbstractSslErrorHandler {
|
||||
public:
|
||||
bool handleErrors(QList<QSslError> errors, QList<QSslCertificate> *certs, OCC::AccountPtr) Q_DECL_OVERRIDE;
|
||||
bool handleErrors(QList<QSslError> errors, const QSslConfiguration &conf, QList<QSslCertificate> *certs, OCC::AccountPtr) Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
#endif // SIMPLESSLERRORHANDLER_H
|
||||
|
||||
@@ -179,6 +179,15 @@ void AccountState::checkConnectivity()
|
||||
conValidator->checkAuthentication();
|
||||
} else {
|
||||
// Check the server and then the auth.
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
// There seems to be a bug in Qt on Windows where QNAM sometimes stops
|
||||
// working correctly after the computer woke up from sleep. See #2895 #2899
|
||||
// and #2973.
|
||||
// As an attempted workaround, reset the QNAM regularly if the account is
|
||||
// disconnected.
|
||||
account()->resetNetworkAccessManager();
|
||||
#endif
|
||||
conValidator->checkServerAndAuth();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,10 @@
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#if defined(WITH_CRASHREPORTER)
|
||||
#include <libcrashreporter-handler/Handler.h>
|
||||
#endif
|
||||
|
||||
#include <QTranslator>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
@@ -106,6 +110,11 @@ Application::Application(int &argc, char **argv) :
|
||||
if (isRunning())
|
||||
return;
|
||||
|
||||
#if defined(WITH_CRASHREPORTER)
|
||||
if (ConfigFile().crashReporter())
|
||||
_crashHandler.reset(new CrashReporter::Handler( QDir::tempPath(), true, CRASHREPORTER_EXECUTABLE ));
|
||||
#endif
|
||||
|
||||
setupLogging();
|
||||
setupTranslations();
|
||||
|
||||
@@ -394,7 +403,10 @@ void Application::parseOptions(const QStringList &options)
|
||||
} else if (option == QLatin1String("--confdir")) {
|
||||
if (it.hasNext() && !it.peekNext().startsWith(QLatin1String("--"))) {
|
||||
QString confDir = it.next();
|
||||
ConfigFile::setConfDir( confDir );
|
||||
if (!ConfigFile::setConfDir( confDir )) {
|
||||
std::cerr << "Invalid path passed to --confdir" << std::endl;
|
||||
std::exit(1);
|
||||
}
|
||||
} else {
|
||||
showHelp();
|
||||
}
|
||||
|
||||
@@ -34,6 +34,10 @@ class QMessageBox;
|
||||
class QSystemTrayIcon;
|
||||
class QSocket;
|
||||
|
||||
namespace CrashReporter {
|
||||
class Handler;
|
||||
}
|
||||
|
||||
namespace OCC {
|
||||
class Theme;
|
||||
class Folder;
|
||||
@@ -109,6 +113,9 @@ private:
|
||||
|
||||
QTimer _checkConnectionTimer;
|
||||
|
||||
#if defined(WITH_CRASHREPORTER)
|
||||
QScopedPointer<CrashReporter::Handler> _crashHandler;
|
||||
#endif
|
||||
QScopedPointer<FolderMan> _folderManager;
|
||||
|
||||
friend class ownCloudGui; // for _startupNetworkError
|
||||
|
||||
+107
-21
@@ -239,10 +239,19 @@ FolderWizardRemotePath::FolderWizardRemotePath(AccountPtr account)
|
||||
|
||||
connect(_ui.addFolderButton, SIGNAL(clicked()), SLOT(slotAddRemoteFolder()));
|
||||
connect(_ui.refreshButton, SIGNAL(clicked()), SLOT(slotRefreshFolders()));
|
||||
connect(_ui.folderTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SIGNAL(completeChanged()));
|
||||
connect(_ui.folderTreeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), SIGNAL(completeChanged()));
|
||||
connect(_ui.folderTreeWidget, SIGNAL(itemExpanded(QTreeWidgetItem*)), SLOT(slotItemExpanded(QTreeWidgetItem*)));
|
||||
connect(_ui.folderTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(slotCurrentItemChanged(QTreeWidgetItem*)));
|
||||
connect(_ui.folderEntry, SIGNAL(textEdited(QString)), SLOT(slotFolderEntryEdited(QString)));
|
||||
|
||||
_lscolTimer.setInterval(500);
|
||||
_lscolTimer.setSingleShot(true);
|
||||
connect(&_lscolTimer, SIGNAL(timeout()), SLOT(slotLsColFolderEntry()));
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
_ui.folderTreeWidget->header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
|
||||
// Make sure that there will be a scrollbar when the contents is too wide
|
||||
_ui.folderTreeWidget->header()->setStretchLastSection(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotAddRemoteFolder()
|
||||
@@ -288,6 +297,8 @@ void FolderWizardRemotePath::slotCreateRemoteFolderFinished(QNetworkReply::Netwo
|
||||
qDebug() << "** webdav mkdir request finished";
|
||||
showWarn(tr("Folder was successfully created on %1.").arg(Theme::instance()->appNameGUI()));
|
||||
slotRefreshFolders();
|
||||
_ui.folderEntry->setText(static_cast<MkColJob *>(sender())->path());
|
||||
slotLsColFolderEntry();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,27 +326,58 @@ static QTreeWidgetItem* findFirstChild(QTreeWidgetItem *parent, const QString& t
|
||||
|
||||
void FolderWizardRemotePath::recursiveInsert(QTreeWidgetItem *parent, QStringList pathTrail, QString path)
|
||||
{
|
||||
QFileIconProvider prov;
|
||||
QIcon folderIcon = prov.icon(QFileIconProvider::Folder);
|
||||
if (pathTrail.size() == 0) {
|
||||
if (path.endsWith('/')) {
|
||||
path.chop(1);
|
||||
}
|
||||
parent->setToolTip(0, path);
|
||||
parent->setData(0, Qt::UserRole, path);
|
||||
} else {
|
||||
QTreeWidgetItem *item = findFirstChild(parent, pathTrail.first());
|
||||
if (!item) {
|
||||
item = new QTreeWidgetItem(parent);
|
||||
item->setIcon(0, folderIcon);
|
||||
item->setText(0, pathTrail.first());
|
||||
item->setData(0, Qt::UserRole, pathTrail.first());
|
||||
item->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
|
||||
}
|
||||
if (pathTrail.isEmpty())
|
||||
return;
|
||||
|
||||
pathTrail.removeFirst();
|
||||
recursiveInsert(item, pathTrail, path);
|
||||
const QString parentPath = parent->data(0, Qt::UserRole).toString();
|
||||
const QString folderName = pathTrail.first();
|
||||
QString folderPath;
|
||||
if (parentPath == QLatin1String("/")) {
|
||||
folderPath = folderName;
|
||||
} else {
|
||||
folderPath = parentPath + "/" + folderName;
|
||||
}
|
||||
QTreeWidgetItem *item = findFirstChild(parent, folderName);
|
||||
if (!item) {
|
||||
item = new QTreeWidgetItem(parent);
|
||||
QFileIconProvider prov;
|
||||
QIcon folderIcon = prov.icon(QFileIconProvider::Folder);
|
||||
item->setIcon(0, folderIcon);
|
||||
item->setText(0, folderName);
|
||||
item->setData(0, Qt::UserRole, folderPath);
|
||||
item->setToolTip(0, folderPath);
|
||||
item->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
|
||||
}
|
||||
|
||||
pathTrail.removeFirst();
|
||||
recursiveInsert(item, pathTrail, path);
|
||||
}
|
||||
|
||||
bool FolderWizardRemotePath::selectByPath(QString path)
|
||||
{
|
||||
if (path.startsWith(QLatin1Char('/'))) {
|
||||
path = path.mid(1);
|
||||
}
|
||||
if (path.endsWith(QLatin1Char('/'))) {
|
||||
path.chop(1);
|
||||
}
|
||||
|
||||
QTreeWidgetItem *it = _ui.folderTreeWidget->topLevelItem(0);
|
||||
if (!path.isEmpty()) {
|
||||
const QStringList pathTrail = path.split(QLatin1Char('/'));
|
||||
foreach (const QString& path, pathTrail) {
|
||||
if (!it) {
|
||||
return false;
|
||||
}
|
||||
it = findFirstChild(it, path);
|
||||
}
|
||||
}
|
||||
if (!it) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_ui.folderTreeWidget->setCurrentItem(it);
|
||||
return true;
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotUpdateDirectories(const QStringList &list)
|
||||
@@ -367,6 +409,7 @@ void FolderWizardRemotePath::slotRefreshFolders()
|
||||
SLOT(slotUpdateDirectories(QStringList)));
|
||||
job->start();
|
||||
_ui.folderTreeWidget->clear();
|
||||
_ui.folderEntry->clear();
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotItemExpanded(QTreeWidgetItem *item)
|
||||
@@ -379,6 +422,49 @@ void FolderWizardRemotePath::slotItemExpanded(QTreeWidgetItem *item)
|
||||
job->start();
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotCurrentItemChanged(QTreeWidgetItem *item)
|
||||
{
|
||||
if (item) {
|
||||
QString dir = item->data(0, Qt::UserRole).toString();
|
||||
if (!dir.startsWith(QLatin1Char('/'))) {
|
||||
dir.prepend(QLatin1Char('/'));
|
||||
}
|
||||
_ui.folderEntry->setText(dir);
|
||||
}
|
||||
|
||||
emit completeChanged();
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotFolderEntryEdited(const QString& text)
|
||||
{
|
||||
if (selectByPath(text)) {
|
||||
_lscolTimer.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
_ui.folderTreeWidget->setCurrentItem(0);
|
||||
_lscolTimer.start(); // avoid sending a request on each keystroke
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotLsColFolderEntry()
|
||||
{
|
||||
QString path = _ui.folderEntry->text();
|
||||
if (path.startsWith(QLatin1Char('/')))
|
||||
path = path.mid(1);
|
||||
|
||||
LsColJob *job = new LsColJob(_account, path, this);
|
||||
job->setProperties(QList<QByteArray>() << "resourcetype");
|
||||
connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
|
||||
SLOT(slotTypedPathFound(QStringList)));
|
||||
job->start();
|
||||
}
|
||||
|
||||
void FolderWizardRemotePath::slotTypedPathFound(const QStringList& subpaths)
|
||||
{
|
||||
slotUpdateDirectories(subpaths);
|
||||
selectByPath(_ui.folderEntry->text());
|
||||
}
|
||||
|
||||
FolderWizardRemotePath::~FolderWizardRemotePath()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -86,11 +86,17 @@ protected slots:
|
||||
void slotUpdateDirectories(const QStringList&);
|
||||
void slotRefreshFolders();
|
||||
void slotItemExpanded(QTreeWidgetItem*);
|
||||
void slotCurrentItemChanged(QTreeWidgetItem*);
|
||||
void slotFolderEntryEdited(const QString& text);
|
||||
void slotLsColFolderEntry();
|
||||
void slotTypedPathFound(const QStringList& subpaths);
|
||||
private:
|
||||
void recursiveInsert(QTreeWidgetItem *parent, QStringList pathTrail, QString path);
|
||||
bool selectByPath(QString path);
|
||||
Ui_FolderWizardTargetPage _ui;
|
||||
bool _warnWasVisible;
|
||||
AccountPtr _account;
|
||||
QTimer _lscolTimer;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,10 @@
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="3" column="0">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="folderEntry"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QFrame" name="warnFrame">
|
||||
<property name="palette">
|
||||
<palette>
|
||||
@@ -179,7 +182,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="3" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
||||
@@ -28,13 +28,6 @@
|
||||
|
||||
#include "updater/updater.h"
|
||||
|
||||
|
||||
#include "config.h"
|
||||
#ifdef WITH_CRASHREPORTER
|
||||
#include "configfile.h"
|
||||
#include <libcrashreporter-handler/Handler.h>
|
||||
#endif
|
||||
|
||||
#include <QTimer>
|
||||
#include <QMessageBox>
|
||||
|
||||
@@ -59,12 +52,6 @@ int main(int argc, char **argv)
|
||||
#endif
|
||||
OCC::Application app(argc, argv);
|
||||
|
||||
|
||||
#ifdef WITH_CRASHREPORTER
|
||||
if (ConfigFile().crashReporter())
|
||||
new CrashReporter::Handler( QDir::tempPath(), true, CRASHREPORTER_EXECUTABLE );
|
||||
#endif
|
||||
|
||||
#ifndef Q_OS_WIN
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
|
||||
@@ -73,16 +73,10 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) :
|
||||
_copyBtn->setToolTip( tr("Copy the activity list to the clipboard."));
|
||||
_copyBtn->setEnabled(false);
|
||||
connect(_copyBtn, SIGNAL(clicked()), SLOT(copyToClipboard()));
|
||||
|
||||
ConfigFile cfg;
|
||||
cfg.restoreGeometryHeader(_ui->_treeWidget->header());
|
||||
}
|
||||
|
||||
ProtocolWidget::~ProtocolWidget()
|
||||
{
|
||||
ConfigFile cfg;
|
||||
cfg.saveGeometryHeader(_ui->_treeWidget->header() );
|
||||
|
||||
delete _ui;
|
||||
}
|
||||
|
||||
@@ -137,6 +131,20 @@ void ProtocolWidget::slotRetrySync()
|
||||
folderMan->slotScheduleAllFolders();
|
||||
}
|
||||
|
||||
void ProtocolWidget::showEvent(QShowEvent *ev)
|
||||
{
|
||||
ConfigFile cfg;
|
||||
cfg.restoreGeometryHeader(_ui->_treeWidget->header());
|
||||
QWidget::showEvent(ev);
|
||||
}
|
||||
|
||||
void ProtocolWidget::hideEvent(QHideEvent *ev)
|
||||
{
|
||||
ConfigFile cfg;
|
||||
cfg.saveGeometryHeader(_ui->_treeWidget->header() );
|
||||
QWidget::hideEvent(ev);
|
||||
}
|
||||
|
||||
void ProtocolWidget::cleanIgnoreItems(const QString& folder)
|
||||
{
|
||||
int itemCnt = _ui->_treeWidget->topLevelItemCount();
|
||||
|
||||
@@ -39,8 +39,6 @@ public:
|
||||
explicit ProtocolWidget(QWidget *parent = 0);
|
||||
~ProtocolWidget();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void slotProgressInfo( const QString& folder, const Progress::Info& progress );
|
||||
void slotOpenFile( QTreeWidgetItem* item, int );
|
||||
@@ -49,6 +47,10 @@ protected slots:
|
||||
void copyToClipboard();
|
||||
void slotRetrySync();
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent *);
|
||||
void hideEvent(QHideEvent *);
|
||||
|
||||
signals:
|
||||
void guiLog(const QString&, const QString&);
|
||||
|
||||
|
||||
+15
-3
@@ -185,8 +185,9 @@ void SocketApi::slotNewConnection()
|
||||
broadcastMessage(QLatin1String("ICON_PATH"), iconPath );
|
||||
#endif
|
||||
|
||||
foreach( QString alias, FolderMan::instance()->map().keys() ) {
|
||||
slotRegisterPath(alias);
|
||||
foreach( Folder *f, FolderMan::instance()->map() ) {
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,7 +227,10 @@ void SocketApi::slotRegisterPath( const QString& alias )
|
||||
{
|
||||
Folder *f = FolderMan::instance()->folder(alias);
|
||||
if (f) {
|
||||
broadcastMessage(QLatin1String("REGISTER_PATH"), f->path() );
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
foreach(SocketType *socket, _listeners) {
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,6 +453,14 @@ void SocketApi::command_SHARE_MENU_TITLE(const QString &, SocketType* socket)
|
||||
sendMessage(socket, QLatin1String("SHARE_MENU_TITLE:") + tr("Share with %1", "parameter is ownCloud").arg(Theme::instance()->appNameGUI()));
|
||||
}
|
||||
|
||||
QString SocketApi::buildRegisterPathMessage(const QString& path)
|
||||
{
|
||||
QFileInfo fi(path);
|
||||
QString message = QLatin1String("REGISTER_PATH:");
|
||||
message.append(QDir::toNativeSeparators(fi.absoluteFilePath()));
|
||||
return message;
|
||||
}
|
||||
|
||||
SqlQuery* SocketApi::getSqlQuery( Folder *folder )
|
||||
{
|
||||
if( !folder ) {
|
||||
|
||||
@@ -82,6 +82,7 @@ private:
|
||||
Q_INVOKABLE void command_VERSION(const QString& argument, SocketType* socket);
|
||||
|
||||
Q_INVOKABLE void command_SHARE_MENU_TITLE(const QString& argument, SocketType* socket);
|
||||
QString buildRegisterPathMessage(const QString& path);
|
||||
|
||||
#ifdef SOCKETAPI_TCP
|
||||
QTcpServer _localServer;
|
||||
|
||||
@@ -190,6 +190,12 @@ void SslButton::updateAccountState(AccountState *accountState)
|
||||
setToolTip(tr("This connection is encrypted using %1 bit %2.\n").arg(cipher.usedBits()).arg(cipher.name()));
|
||||
QMenu *menu = new QMenu(this);
|
||||
QList<QSslCertificate> chain = account->sslConfiguration().peerCertificateChain();
|
||||
|
||||
if (chain.isEmpty()) {
|
||||
qWarning() << "empty certificate chain";
|
||||
return;
|
||||
}
|
||||
|
||||
menu->addAction(tr("Certificate information:"))->setEnabled(false);
|
||||
|
||||
QList<QSslCertificate> tmpChain;
|
||||
|
||||
@@ -34,8 +34,9 @@ namespace Utility {
|
||||
}
|
||||
#endif
|
||||
|
||||
bool SslDialogErrorHandler::handleErrors(QList<QSslError> errors, QList<QSslCertificate> *certs, AccountPtr account)
|
||||
bool SslDialogErrorHandler::handleErrors(QList<QSslError> errors, const QSslConfiguration &conf, QList<QSslCertificate> *certs, AccountPtr account)
|
||||
{
|
||||
(void) conf;
|
||||
if (!certs) {
|
||||
qDebug() << "Certs parameter required but is NULL!";
|
||||
return false;
|
||||
|
||||
@@ -33,7 +33,7 @@ class SslErrorDialog;
|
||||
|
||||
class SslDialogErrorHandler : public AbstractSslErrorHandler {
|
||||
public:
|
||||
bool handleErrors(QList<QSslError> errors, QList<QSslCertificate> *certs, AccountPtr) Q_DECL_OVERRIDE;
|
||||
bool handleErrors(QList<QSslError> errors, const QSslConfiguration &conf, QList<QSslCertificate> *certs, AccountPtr) Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
class SslErrorDialog : public QDialog
|
||||
|
||||
@@ -271,6 +271,21 @@ void Account::clearCookieJar()
|
||||
_am->setCookieJar(new CookieJar);
|
||||
}
|
||||
|
||||
void Account::resetNetworkAccessManager()
|
||||
{
|
||||
if (!_credentials || !_am) {
|
||||
return;
|
||||
}
|
||||
|
||||
qDebug() << "Resetting QNAM";
|
||||
QNetworkCookieJar* jar = _am->cookieJar();
|
||||
_am->deleteLater();
|
||||
_am = _credentials->getQNAM();
|
||||
_am->setCookieJar(jar); // takes ownership of the old cookie jar
|
||||
connect(_am, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
|
||||
SLOT(slotHandleErrors(QNetworkReply*,QList<QSslError>)));
|
||||
}
|
||||
|
||||
QNetworkAccessManager *Account::networkAccessManager()
|
||||
{
|
||||
return _am;
|
||||
@@ -460,7 +475,7 @@ void Account::slotHandleErrors(QNetworkReply *reply , QList<QSslError> errors)
|
||||
return;
|
||||
}
|
||||
|
||||
if (_sslErrorHandler->handleErrors(errors, &approvedCerts, sharedFromThis())) {
|
||||
if (_sslErrorHandler->handleErrors(errors, reply->sslConfiguration(), &approvedCerts, sharedFromThis())) {
|
||||
QSslSocket::addDefaultCaCertificates(approvedCerts);
|
||||
addApprovedCerts(approvedCerts);
|
||||
// all ssl certs are known and accepted. We can ignore the problems right away.
|
||||
|
||||
@@ -62,7 +62,7 @@ private:
|
||||
class AbstractSslErrorHandler {
|
||||
public:
|
||||
virtual ~AbstractSslErrorHandler() {}
|
||||
virtual bool handleErrors(QList<QSslError>, QList<QSslCertificate>*, AccountPtr) = 0;
|
||||
virtual bool handleErrors(QList<QSslError>, const QSslConfiguration &conf, QList<QSslCertificate>*, AccountPtr) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -156,6 +156,7 @@ public:
|
||||
|
||||
void clearCookieJar();
|
||||
|
||||
void resetNetworkAccessManager();
|
||||
QNetworkAccessManager* networkAccessManager();
|
||||
|
||||
/// Called by network jobs on credential errors.
|
||||
|
||||
@@ -85,10 +85,10 @@ ConfigFile::ConfigFile()
|
||||
// qDebug() << Q_FUNC_INFO << "Loading config: " << config << " (URL is " << settings.value("url").toString() << ")";
|
||||
}
|
||||
|
||||
void ConfigFile::setConfDir(const QString &value)
|
||||
bool ConfigFile::setConfDir(const QString &value)
|
||||
{
|
||||
QString dirPath = value;
|
||||
if( dirPath.isEmpty() ) return;
|
||||
if( dirPath.isEmpty() ) return false;
|
||||
|
||||
QFileInfo fi(dirPath);
|
||||
if ( !fi.exists() && !fi.isAbsolute() ) {
|
||||
@@ -101,7 +101,9 @@ void ConfigFile::setConfDir(const QString &value)
|
||||
dirPath = fi.absoluteFilePath();
|
||||
qDebug() << "** Using custom config dir " << dirPath;
|
||||
_confDir=dirPath;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ConfigFile::optionalDesktopNotifications() const
|
||||
@@ -145,7 +147,7 @@ void ConfigFile::saveGeometryHeader(QHeaderView *header)
|
||||
{
|
||||
#ifndef TOKEN_AUTH_ONLY
|
||||
if(!header) return;
|
||||
Q_ASSERT(!header->objectName().isNull());
|
||||
Q_ASSERT(!header->objectName().isEmpty());
|
||||
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
settings.beginGroup(header->objectName());
|
||||
@@ -162,7 +164,7 @@ void ConfigFile::restoreGeometryHeader(QHeaderView *header)
|
||||
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
settings.beginGroup(header->objectName());
|
||||
header->restoreState(getValue(geometryC, header->objectName()).toByteArray());
|
||||
header->restoreState(settings.value(geometryC).toByteArray());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
void setUploadLimit(int kbytes);
|
||||
void setDownloadLimit(int kbytes);
|
||||
|
||||
static void setConfDir(const QString &value);
|
||||
static bool setConfDir(const QString &value);
|
||||
|
||||
bool optionalDesktopNotifications() const;
|
||||
void setOptionalDesktopNotifications(bool show);
|
||||
|
||||
@@ -103,7 +103,7 @@ void CookieJar::save()
|
||||
qDebug() << storagePath();
|
||||
file.open(QIODevice::WriteOnly);
|
||||
QDataStream stream(&file);
|
||||
stream << allCookies();
|
||||
stream << removeExpired(allCookies());
|
||||
file.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -204,12 +204,12 @@ bool FileSystem::renameReplace(const QString& originFileName, const QString& des
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FileSystem::openFileSharedRead(QFile* file, QString* error)
|
||||
bool FileSystem::openAndSeekFileSharedRead(QFile* file, QString* errorOrNull, qint64 seek)
|
||||
{
|
||||
bool ok = false;
|
||||
if (error) {
|
||||
error->clear();
|
||||
}
|
||||
QString errorDummy;
|
||||
// avoid many if (errorOrNull) later.
|
||||
QString& error = errorOrNull ? *errorOrNull : errorDummy;
|
||||
error.clear();
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
//
|
||||
@@ -236,9 +236,7 @@ bool FileSystem::openFileSharedRead(QFile* file, QString* error)
|
||||
|
||||
// Bail out on error.
|
||||
if (fileHandle == INVALID_HANDLE_VALUE) {
|
||||
if (error) {
|
||||
*error = qt_error_string();
|
||||
}
|
||||
error = qt_error_string();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -247,19 +245,34 @@ bool FileSystem::openFileSharedRead(QFile* file, QString* error)
|
||||
// the fd the handle will be closed too.
|
||||
int fd = _open_osfhandle((intptr_t)fileHandle, _O_RDONLY);
|
||||
if (fd == -1) {
|
||||
if (error) {
|
||||
*error = "could not make fd from handle";
|
||||
}
|
||||
error = "could not make fd from handle";
|
||||
return false;
|
||||
}
|
||||
ok = file->open(fd, QIODevice::ReadOnly, QFile::AutoCloseHandle);
|
||||
#else
|
||||
ok = file->open(QFile::ReadOnly);
|
||||
#endif
|
||||
if (! ok && error) {
|
||||
*error = file->errorString();
|
||||
if (!file->open(fd, QIODevice::ReadOnly, QFile::AutoCloseHandle)) {
|
||||
error = file->errorString();
|
||||
return false;
|
||||
}
|
||||
return ok;
|
||||
|
||||
// Seek to the right spot
|
||||
LARGE_INTEGER *li = reinterpret_cast<LARGE_INTEGER*>(&seek);
|
||||
DWORD newFilePointer = SetFilePointer(fileHandle, li->LowPart, &li->HighPart, FILE_BEGIN);
|
||||
if (newFilePointer == 0xFFFFFFFF && GetLastError() != NO_ERROR) {
|
||||
error = qt_error_string();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
#else
|
||||
if (!file->open(QFile::ReadOnly)) {
|
||||
error = file->errorString();
|
||||
return false;
|
||||
}
|
||||
if (!file->seek(seek)) {
|
||||
error = file->errorString();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
|
||||
@@ -75,13 +75,13 @@ bool renameReplace(const QString &originFileName, const QString &destinationFile
|
||||
QString *errorString);
|
||||
|
||||
/**
|
||||
* Replacement for QFile::open(ReadOnly) that sets a more permissive sharing mode
|
||||
* on Windows.
|
||||
* Replacement for QFile::open(ReadOnly) followed by a seek().
|
||||
* This version sets a more permissive sharing mode on Windows.
|
||||
*
|
||||
* Warning: The resuting file may have an empty fileName and be unsuitable for use
|
||||
* with QFileInfo!
|
||||
* with QFileInfo! Calling seek() on the QFile with >32bit signed values will fail!
|
||||
*/
|
||||
bool openFileSharedRead(QFile* file, QString* error);
|
||||
bool openAndSeekFileSharedRead(QFile* file, QString* error, qint64 seek);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
/**
|
||||
|
||||
@@ -68,11 +68,12 @@ AbstractNetworkJob::AbstractNetworkJob(AccountPtr account, const QString &path,
|
||||
|
||||
void AbstractNetworkJob::setReply(QNetworkReply *reply)
|
||||
{
|
||||
if (_reply) {
|
||||
_reply->deleteLater();
|
||||
}
|
||||
reply->setProperty("doNotHandleAuth", true);
|
||||
if (reply)
|
||||
reply->setProperty("doNotHandleAuth", true);
|
||||
|
||||
QNetworkReply *old = _reply;
|
||||
_reply = reply;
|
||||
delete old;
|
||||
}
|
||||
|
||||
void AbstractNetworkJob::setTimeout(qint64 msec)
|
||||
@@ -213,9 +214,7 @@ QByteArray AbstractNetworkJob::responseTimestamp()
|
||||
|
||||
AbstractNetworkJob::~AbstractNetworkJob()
|
||||
{
|
||||
if (_reply) {
|
||||
_reply->deleteLater();
|
||||
}
|
||||
setReply(0);
|
||||
}
|
||||
|
||||
void AbstractNetworkJob::start()
|
||||
@@ -648,8 +647,9 @@ bool PropfindJob::finished()
|
||||
if (type == QXmlStreamReader::StartElement) {
|
||||
if (!curElement.isEmpty() && curElement.top() == QLatin1String("prop")) {
|
||||
items.insert(reader.name().toString(), reader.readElementText());
|
||||
} else {
|
||||
curElement.push(reader.name().toString());
|
||||
}
|
||||
curElement.push(reader.name().toString());
|
||||
}
|
||||
if (type == QXmlStreamReader::EndElement) {
|
||||
if(curElement.top() == reader.name()) {
|
||||
|
||||
@@ -368,6 +368,7 @@ void PropagateDownloadFileQNAM::start()
|
||||
_job->start();
|
||||
}
|
||||
|
||||
const char owncloudCustomSoftErrorStringC[] = "owncloud-custom-soft-error-string";
|
||||
void PropagateDownloadFileQNAM::slotGetFinished()
|
||||
{
|
||||
_propagator->_activeJobs--;
|
||||
@@ -407,7 +408,18 @@ void PropagateDownloadFileQNAM::slotGetFinished()
|
||||
return;
|
||||
}
|
||||
|
||||
// This gives a custom QNAM (by the user of libowncloudsync) to abort() a QNetworkReply in its metaDataChanged() slot and
|
||||
// set a custom error string to make this a soft error. In contrast to the default hard error this won't bring down
|
||||
// the whole sync and allows for a custom error message.
|
||||
QNetworkReply *reply = job->reply();
|
||||
if (err == QNetworkReply::OperationCanceledError && reply->property(owncloudCustomSoftErrorStringC).isValid()) {
|
||||
job->setErrorString(reply->property(owncloudCustomSoftErrorStringC).toString());
|
||||
job->setErrorStatus(SyncFileItem::SoftError);
|
||||
}
|
||||
|
||||
SyncFileItem::Status status = job->errorStatus();
|
||||
|
||||
|
||||
if (status == SyncFileItem::NoStatus) {
|
||||
status = classifyError(err, _item._httpErrorCode);
|
||||
}
|
||||
|
||||
@@ -78,8 +78,10 @@ public:
|
||||
qint64 currentDownloadPosition();
|
||||
|
||||
QString errorString() const;
|
||||
void setErrorString(const QString& s) { _errorString = s; }
|
||||
|
||||
SyncFileItem::Status errorStatus() { return _errorStatus; }
|
||||
void setErrorStatus(const SyncFileItem::Status & s) { _errorStatus = s; }
|
||||
|
||||
virtual void slotTimeout() Q_DECL_OVERRIDE;
|
||||
|
||||
|
||||
@@ -85,9 +85,10 @@ void PropagateRemoteDelete::slotDeleteJobFinished()
|
||||
<< (_job->reply()->error() == QNetworkReply::NoError ? QLatin1String("") : _job->reply()->errorString());
|
||||
|
||||
QNetworkReply::NetworkError err = _job->reply()->error();
|
||||
_item._httpErrorCode = _job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
const int httpStatus = _job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
_item._httpErrorCode = httpStatus;
|
||||
|
||||
if (err != QNetworkReply::NoError) {
|
||||
if (err != QNetworkReply::NoError && err != QNetworkReply::ContentNotFoundError) {
|
||||
|
||||
if( checkForProblemsWithShared(_item._httpErrorCode,
|
||||
tr("The file has been removed from a read only share. It was restored.")) ) {
|
||||
@@ -102,7 +103,11 @@ void PropagateRemoteDelete::slotDeleteJobFinished()
|
||||
_item._requestDuration = _job->duration();
|
||||
_item._responseTimeStamp = _job->responseTimestamp();
|
||||
|
||||
if (_item._httpErrorCode != 204 ) {
|
||||
// A 404 reply is also considered a success here: We want to make sure
|
||||
// a file is gone from the server. It not being there in the first place
|
||||
// is ok. This will happen for files that are in the DB but not on
|
||||
// the server or the local file system.
|
||||
if (httpStatus != 204 && httpStatus != 404) {
|
||||
// Normaly we expect "204 No Content"
|
||||
// If it is not the case, it might be because of a proxy or gateway intercepting the request, so we must
|
||||
// throw an error.
|
||||
|
||||
@@ -64,6 +64,12 @@ static qint64 chunkSize() {
|
||||
return chunkSize;
|
||||
}
|
||||
|
||||
PUTFileJob::~PUTFileJob()
|
||||
{
|
||||
// Make sure that we destroy the QNetworkReply before our _device of which it keeps an internal pointer.
|
||||
setReply(0);
|
||||
}
|
||||
|
||||
void PUTFileJob::start() {
|
||||
QNetworkRequest req;
|
||||
for(QMap<QByteArray, QByteArray>::const_iterator it = _headers.begin(); it != _headers.end(); ++it) {
|
||||
@@ -232,17 +238,13 @@ bool UploadDevice::prepareAndOpen(const QString& fileName, qint64 start, qint64
|
||||
|
||||
QFile file(fileName);
|
||||
QString openError;
|
||||
if (!FileSystem::openFileSharedRead(&file, &openError)) {
|
||||
if (!FileSystem::openAndSeekFileSharedRead(&file, &openError, start)) {
|
||||
setErrorString(openError);
|
||||
return false;
|
||||
}
|
||||
|
||||
size = qMin(FileSystem::getSize(fileName), size);
|
||||
size = qBound(0ll, size, FileSystem::getSize(fileName) - start);
|
||||
_data.resize(size);
|
||||
if (!file.seek(start)) {
|
||||
setErrorString(file.errorString());
|
||||
return false;
|
||||
}
|
||||
auto read = file.read(_data.data(), size);
|
||||
if (read != size) {
|
||||
setErrorString(file.errorString());
|
||||
@@ -406,6 +408,7 @@ void PropagateUploadFileQNAM::startNextChunk()
|
||||
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()));
|
||||
|
||||
@@ -74,6 +74,7 @@ public:
|
||||
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) {}
|
||||
~PUTFileJob();
|
||||
|
||||
int _chunk;
|
||||
|
||||
|
||||
@@ -484,9 +484,11 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
|
||||
}
|
||||
|
||||
item._direction = dir;
|
||||
// check for blacklisting of this item.
|
||||
// if the item is on blacklist, the instruction was set to IGNORE
|
||||
checkErrorBlacklisting( &item );
|
||||
if (instruction != CSYNC_INSTRUCTION_NONE) {
|
||||
// check for blacklisting of this item.
|
||||
// if the item is on blacklist, the instruction was set to ERROR
|
||||
checkErrorBlacklisting( &item );
|
||||
}
|
||||
|
||||
if (!item._isDirectory) {
|
||||
_progressInfo._totalFileCount++;
|
||||
|
||||
@@ -21,6 +21,13 @@
|
||||
|
||||
#include <csync.h>
|
||||
|
||||
#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_CLANG) && (__GNUC__ * 100 + __GNUC_MINOR__ < 408)
|
||||
// openSuse 12.3 didn't like enum bitfields.
|
||||
#define BITFIELD(size)
|
||||
#else
|
||||
#define BITFIELD(size) :size
|
||||
#endif
|
||||
|
||||
namespace OCC {
|
||||
|
||||
class SyncFileItem {
|
||||
@@ -114,19 +121,19 @@ public:
|
||||
// Variables usefull for everybody
|
||||
QString _file;
|
||||
QString _renameTarget;
|
||||
Type _type:3;
|
||||
Direction _direction:2;
|
||||
bool _isDirectory:1;
|
||||
Type _type BITFIELD(3);
|
||||
Direction _direction BITFIELD(2);
|
||||
bool _isDirectory BITFIELD(1);
|
||||
|
||||
/// Whether there's an entry in the blacklist table.
|
||||
/// Note: that entry may have retries left, so this can be true
|
||||
/// without the status being FileIgnored.
|
||||
bool _hasBlacklistEntry:1;
|
||||
bool _hasBlacklistEntry BITFIELD(1);
|
||||
|
||||
// Variables usefull to report to the user
|
||||
Status _status:4;
|
||||
bool _isRestoration:1; // The original operation was forbidden, and this is a restoration
|
||||
bool _should_update_etag:1;
|
||||
Status _status BITFIELD(4);
|
||||
bool _isRestoration BITFIELD(1); // The original operation was forbidden, and this is a restoration
|
||||
bool _should_update_etag BITFIELD(1);
|
||||
quint16 _httpErrorCode;
|
||||
QString _errorString; // Contains a string only in case of error
|
||||
QByteArray _responseTimeStamp;
|
||||
@@ -155,8 +162,8 @@ public:
|
||||
time_t _other_modtime;
|
||||
QByteArray _other_etag;
|
||||
QByteArray _other_fileId;
|
||||
enum csync_instructions_e _instruction:16;
|
||||
enum csync_instructions_e _other_instruction:16;
|
||||
enum csync_instructions_e _instruction BITFIELD(16);
|
||||
enum csync_instructions_e _other_instruction BITFIELD(16);
|
||||
} log;
|
||||
};
|
||||
|
||||
|
||||
@@ -1783,7 +1783,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="75"/>
|
||||
<source>OwnCloud Path:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Διαδρομή ownCloud:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="89"/>
|
||||
@@ -1909,7 +1909,7 @@ It is not advisable to use it.</source>
|
||||
<location filename="../src/gui/socketapi.cpp" line="431"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Διαμοιρασμός με %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2218,7 +2218,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="156"/>
|
||||
<source>The mounted directory is temporarily not available on the server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ο προσαρτημένος κατάλογος δεν είναι προσωρινά διαθέσιμος στον δικομιστή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="159"/>
|
||||
|
||||
@@ -916,7 +916,7 @@ Les items cochés seront également supprimés s'ils empêchent la suppress
|
||||
<message>
|
||||
<location filename="../src/gui/updater/ocupdater.cpp" line="275"/>
|
||||
<source>Skip this version</source>
|
||||
<translation>Ignorer cette version.</translation>
|
||||
<translation>Ignorer cette version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/updater/ocupdater.cpp" line="276"/>
|
||||
@@ -1007,7 +1007,7 @@ Les items cochés seront également supprimés s'ils empêchent la suppress
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.cpp" line="34"/>
|
||||
<source>Hostname of proxy server</source>
|
||||
<translation>Nom d'hôte ou serveur mandataire</translation>
|
||||
<translation>Nom d'hôte du serveur mandataire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/networksettings.cpp" line="35"/>
|
||||
@@ -2389,7 +2389,7 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="295"/>
|
||||
<source>None.</source>
|
||||
<translation>Aucun.</translation>
|
||||
<translation>Aucune</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="299"/>
|
||||
|
||||
@@ -2265,7 +2265,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="567"/>
|
||||
<source>Unable to initialize a sync journal.</source>
|
||||
<translation>Non é posíbel iniciar un rexistro de sincronización.</translation>
|
||||
<translation>Non é posíbel preparar un rexistro de sincronización.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="648"/>
|
||||
|
||||
@@ -1926,7 +1926,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="101"/>
|
||||
<source>Subject Alternative Names:</source>
|
||||
<translation>Subject Alternative Names(サブジェクトの別名):</translation>
|
||||
<translation>サブジェクトの別名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="103"/>
|
||||
@@ -1971,7 +1971,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="115"/>
|
||||
<source>Expires on:</source>
|
||||
<translation>期限切れ期日:</translation>
|
||||
<translation>有効期限:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="118"/>
|
||||
|
||||
+14
-14
@@ -244,27 +244,27 @@ Total tid kvar %5</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/addcertificatedialog.ui" line="35"/>
|
||||
<source>Certificate :</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Certifikat :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/addcertificatedialog.ui" line="51"/>
|
||||
<source>Browse...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bläddra...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/addcertificatedialog.ui" line="60"/>
|
||||
<source>Certificate password :</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Certifikatlösenord :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/addcertificatedialog.cpp" line="23"/>
|
||||
<source>Select a certificate</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Välj ett certifikat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/addcertificatedialog.cpp" line="23"/>
|
||||
<source>Certificate files (*.p12 *.pfx)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Certifikatfiler (*.p12 *.pfx)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -329,7 +329,7 @@ Total tid kvar %5</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotedelete.cpp" line="41"/>
|
||||
<source>Connection timed out</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tidsgräns för anslutningen överskreds</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -898,7 +898,7 @@ Valda objekt kommer också att raderas om dom hindrar en mapp från att tas bort
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemove.cpp" line="45"/>
|
||||
<source>Connection timed out</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tidsgräns för anslutningen överskreds</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1131,7 +1131,7 @@ efter ytterligare privilegier under processen.</translation>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="297"/>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.cpp" line="318"/>
|
||||
<source>(%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>(%1)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1535,7 +1535,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="156"/>
|
||||
<source>File Removed</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Filen Raderad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="171"/>
|
||||
@@ -1792,12 +1792,12 @@ Det är inte lämpligt använda den.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="127"/>
|
||||
<source>Set password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ange lösenord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="149"/>
|
||||
<source>Set expiry date</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sätt utgångsdatum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="67"/>
|
||||
@@ -1813,7 +1813,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="141"/>
|
||||
<source>Password Protected</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lösenordsskyddad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="299"/>
|
||||
@@ -1858,7 +1858,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="453"/>
|
||||
<source>The file can not be synced.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Filen kan inte synkas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="463"/>
|
||||
@@ -1908,7 +1908,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<location filename="../src/gui/socketapi.cpp" line="431"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Dela med %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
+49
-43
@@ -733,7 +733,7 @@ Are you sure you want to perform this operation?</source>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="47"/>
|
||||
<source>Show crash reporter</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Показати звіти про помилки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="57"/>
|
||||
@@ -1202,7 +1202,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="193"/>
|
||||
<source>Timeout while trying to connect to %1 at %2.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Перевищено час очікування з'єднання до %1 на %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="204"/>
|
||||
@@ -1212,7 +1212,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="253"/>
|
||||
<source>Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Доступ заборонений сервером. Щоб довести, що у Вас є права доступу, <a href="%1">клікніть тут</a> для входу через Ваш браузер.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudsetupwizard.cpp" line="275"/>
|
||||
@@ -1361,7 +1361,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="121"/>
|
||||
<source>Invalid JSON reply from the poll URL</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Неправильна JSON відповідь на сформований URL</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1420,7 +1420,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="104"/>
|
||||
<source>Continue blacklisting: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Продовжити занесення до чорного списку:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="200"/>
|
||||
@@ -1477,7 +1477,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotedelete.cpp" line="103"/>
|
||||
<source>Wrong HTTP code returned by server. Expected 204, but recieved "%1 %2".</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сервер відповів неправильним HTTP кодом. Очікувався 204, але отриманий "%1 %2".</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1485,7 +1485,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemkdir.cpp" line="67"/>
|
||||
<source>Wrong HTTP code returned by server. Expected 201, but recieved "%1 %2".</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сервер відповів неправильним HTTP кодом. Очікувався 201, але отриманий "%1 %2".</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1508,7 +1508,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemove.cpp" line="127"/>
|
||||
<source>Wrong HTTP code returned by server. Expected 201, but recieved "%1 %2".</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сервер відповів неправильним HTTP кодом. Очікувався 201, але отриманий "%1 %2".</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1551,7 +1551,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="468"/>
|
||||
<source>Poll URL missing</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Не вистачає сформованого URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="493"/>
|
||||
@@ -1645,13 +1645,19 @@ It is not advisable to use it.</source>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="265"/>
|
||||
<source>%n files are ignored because of previous errors.
|
||||
</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%n файл пропущено через попередні помилки.
|
||||
</numerusform><numerusform>%n файлів пропущено через попередні помилки.
|
||||
</numerusform><numerusform>%n файлів пропущено через попередні помилки.
|
||||
</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="266"/>
|
||||
<source>%n files are partially downloaded.
|
||||
</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%n файлів частково завантажений.
|
||||
</numerusform><numerusform>%n файлів частково завантажені.
|
||||
</numerusform><numerusform>%n файлів частково завантажено.
|
||||
</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="267"/>
|
||||
@@ -1669,12 +1675,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/selectivesyncdialog.cpp" line="318"/>
|
||||
<source>Choose What to Sync: Select remote subfolders you wish to synchronize.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Виберіть Що Синхронізувати: Виберіть папки на віддаленому сервері, які Ви хотіли б синхронізувати.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/selectivesyncdialog.cpp" line="319"/>
|
||||
<source>Choose What to Sync: Deselect remote subfolders you do not wish to synchronize.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Виберіть Що Синхронізувати: Зніміть вибір папок на віддаленому сервері, які Ви не хочете синхронізувати.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/selectivesyncdialog.cpp" line="325"/>
|
||||
@@ -1761,12 +1767,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="14"/>
|
||||
<source>Share NewDocument.odt</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Поділитися NewDocument.odt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="26"/>
|
||||
<source>Share Info</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Поділитися Інформацією</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="34"/>
|
||||
@@ -1777,12 +1783,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="53"/>
|
||||
<source>share label</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>поділитися міткою</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="75"/>
|
||||
<source>OwnCloud Path:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Шлях до OwnCloud:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="89"/>
|
||||
@@ -1803,12 +1809,12 @@ It is not advisable to use it.</source>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="67"/>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="461"/>
|
||||
<source>%1 path: %2</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 шлях: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="68"/>
|
||||
<source>%1 Sharing</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ви поділилися %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="141"/>
|
||||
@@ -1823,27 +1829,27 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="351"/>
|
||||
<source>OCS API error code: %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>OCS API код помилки: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="374"/>
|
||||
<source>There is no sync folder configured.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Немає папок налаштованих для синхронізації.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="386"/>
|
||||
<source>Can not find an folder to upload to.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Неможливо знайти папку для завантаження в неї.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="393"/>
|
||||
<source>Sharing of external directories is not yet working.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Функція відкриття доступу до зовнішніх папок поки не працює.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="408"/>
|
||||
<source>A sync file with the same name exists. The file can not be registered to sync.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Існує файл з ім'ям як у синхронізованого. Файл не може бути прийнятий до синхронізації.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="420"/>
|
||||
@@ -1853,17 +1859,17 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="422"/>
|
||||
<source>Unable to register in sync space.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Неможливо зареєструватися в синхронізованому просторі.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="453"/>
|
||||
<source>The file can not be synced.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Файл не може бути синхронізований.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="463"/>
|
||||
<source>Sync of registered file was not successful yet.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Синхронізація зареєстрованого файлу поки не була успішною.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1908,7 +1914,7 @@ It is not advisable to use it.</source>
|
||||
<location filename="../src/gui/socketapi.cpp" line="431"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Поділитися з %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2122,7 +2128,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="99"/>
|
||||
<source>CSync failed to load the journal file. The journal file is corrupted.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CSync не вдалося завантажити файл журналу. Файл журналу пошкоджений.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="102"/>
|
||||
@@ -2217,12 +2223,12 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="156"/>
|
||||
<source>The mounted directory is temporarily not available on the server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Приєднана тека тимчасово недоступна на сервері</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="159"/>
|
||||
<source>An error opening a directory happened</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Сталася помилка при відкритті теки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="162"/>
|
||||
@@ -2345,7 +2351,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="237"/>
|
||||
<source><p>Copyright ownCloud, Incorporated</p></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p> Права належать ownCloud, Incorporated </p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/theme.cpp" line="238"/>
|
||||
@@ -2453,7 +2459,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="435"/>
|
||||
<source>Crash now</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Критична помилка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="446"/>
|
||||
@@ -2501,7 +2507,7 @@ It is not advisable to use it.</source>
|
||||
<message utf8="true">
|
||||
<location filename="../src/libsync/owncloudtheme.cpp" line="48"/>
|
||||
<source><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><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></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><p>Версія %2. Для більш детальної інформації відвідайте <a href="%3">%4</a></p> <p><small> Klaas Freitag, Daniel Molkentin, Jan-Christoph Borchardt, Olivier Goffart, Markus Götz та інші.</ small></p> <p> Права належать ownCloud, Inc. </p> <p> Під ліцензією GNU General Public License (GPL) Version 2.0 <br/> ownCloud і логотип ownCloud є зареєстрованими товарними знаками ownCloud, Inc. в США та інших країнах. </p></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2560,7 +2566,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="224"/>
|
||||
<source>S&ync everything from server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Синхронізувати все з сервером</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudadvancedsetuppage.ui" line="306"/>
|
||||
@@ -2578,7 +2584,7 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.ui" line="43"/>
|
||||
<source><html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p> Не вдалося підключитися до безпечного серверу за наданною адресою. Як Ви хочете продовжити? </p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.ui" line="55"/>
|
||||
@@ -2588,17 +2594,17 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.ui" line="62"/>
|
||||
<source>Retry unencrypted over HTTP (insecure)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Спробувати без шифрування через HTTP (небезпечно)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.ui" line="69"/>
|
||||
<source>Configure client-side TLS certificate</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Налаштувати TLS сертифікат клієнта</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudconnectionmethoddialog.cpp" line="18"/>
|
||||
<source><html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p>Не вдалося підключитися до безпечного серверу за адресою <em>%1</em>. Як Ви хочете продовжити?</p></body></html></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2747,22 +2753,22 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/utility.cpp" line="113"/>
|
||||
<source>%L1 TiB</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%L1 Тіб</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/utility.cpp" line="116"/>
|
||||
<source>%L1 GiB</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%L1 ГіБ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/utility.cpp" line="119"/>
|
||||
<source>%L1 MiB</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%L1 МіБ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/utility.cpp" line="122"/>
|
||||
<source>%L1 KiB</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%L1 КіБ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/utility.cpp" line="125"/>
|
||||
|
||||
+146
-141
@@ -32,27 +32,27 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="107"/>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="110"/>
|
||||
<source>TextLabel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="128"/>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="131"/>
|
||||
<source>Select a remote destination folder</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="140"/>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="143"/>
|
||||
<source>Create Folder</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="160"/>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="163"/>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="174"/>
|
||||
<location filename="../src/gui/folderwizardtargetpage.ui" line="177"/>
|
||||
<source>Folders</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -476,62 +476,62 @@ Are you sure you want to perform this operation?</source>
|
||||
<context>
|
||||
<name>OCC::FolderMan</name>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="234"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="233"/>
|
||||
<source>Could not reset folder state</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="235"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="234"/>
|
||||
<source>An old sync journal '%1' 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="1013"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1012"/>
|
||||
<source>Undefined State.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1016"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1015"/>
|
||||
<source>Waits to start syncing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1019"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1018"/>
|
||||
<source>Preparing for sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1022"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1021"/>
|
||||
<source>Sync is running.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1025"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1024"/>
|
||||
<source>Last Sync was successful.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1030"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1029"/>
|
||||
<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="1033"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1032"/>
|
||||
<source>Setup Error.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1036"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1035"/>
|
||||
<source>User Abort.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1039"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1038"/>
|
||||
<source>Sync is paused.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderman.cpp" line="1045"/>
|
||||
<location filename="../src/gui/folderman.cpp" line="1044"/>
|
||||
<source>%1 (Sync is paused)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -558,8 +558,8 @@ Are you sure you want to perform this operation?</source>
|
||||
<context>
|
||||
<name>OCC::FolderWizard</name>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="509"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="511"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="595"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="597"/>
|
||||
<source>Add Folder</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -635,47 +635,47 @@ Are you sure you want to perform this operation?</source>
|
||||
<context>
|
||||
<name>OCC::FolderWizardRemotePath</name>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="259"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="268"/>
|
||||
<source>Create Remote Folder</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="260"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="269"/>
|
||||
<source>Enter the name of the new folder to be created below '%1':</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="289"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="298"/>
|
||||
<source>Folder was successfully created on %1.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="298"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="309"/>
|
||||
<source>Authentication failed accessing %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="300"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="311"/>
|
||||
<source>Failed to create the folder on %1. Please check manually.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="350"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="392"/>
|
||||
<source>Choose this to sync the entire account</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="407"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="493"/>
|
||||
<source>This folder is already being synced.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="409"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="495"/>
|
||||
<source>You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="413"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="499"/>
|
||||
<source>You are already syncing all your files. Syncing another folder is <b>not</b> supported. If you want to sync multiple folders, please remove the currently configured root folder sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -683,7 +683,7 @@ Are you sure you want to perform this operation?</source>
|
||||
<context>
|
||||
<name>OCC::FolderWizardSelectiveSync</name>
|
||||
<message>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="451"/>
|
||||
<location filename="../src/gui/folderwizard.cpp" line="537"/>
|
||||
<source>Choose What to Sync: You can optionally deselect remote subfolders you do not wish to synchronize.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1373,7 +1373,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PUTFileJob</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="87"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="93"/>
|
||||
<source>Connection Timeout</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1381,7 +1381,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PollJob</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="137"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="143"/>
|
||||
<source>Invalid JSON reply from the poll URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1422,12 +1422,12 @@ It is not advisable to use it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="449"/>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="461"/>
|
||||
<source>The file could not be downloaded completely.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="485"/>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="497"/>
|
||||
<source>File %1 cannot be saved because of a local file name clash!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1492,12 +1492,12 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateRemoteDelete</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotedelete.cpp" line="93"/>
|
||||
<location filename="../src/libsync/propagateremotedelete.cpp" line="94"/>
|
||||
<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="109"/>
|
||||
<location filename="../src/libsync/propagateremotedelete.cpp" line="114"/>
|
||||
<source>Wrong HTTP code returned by server. Expected 204, but received "%1 %2".</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1555,33 +1555,33 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileQNAM</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="174"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="180"/>
|
||||
<source>File Removed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="188"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="549"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="194"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="552"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="474"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="477"/>
|
||||
<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="508"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="511"/>
|
||||
<source>Poll URL missing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="531"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="534"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="564"/>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="567"/>
|
||||
<source>The server did not acknowledge the last chunk. (No e-tag were present)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1639,22 +1639,22 @@ It is not advisable to use it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="118"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="112"/>
|
||||
<source>Copied to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="118"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="112"/>
|
||||
<source>The sync status has been copied to the clipboard.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="258"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="261"/>
|
||||
<source>Currently no files are ignored because of previous errors and no downloads are in progress.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="261"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="264"/>
|
||||
<source>%n files are ignored because of previous errors.
|
||||
</source>
|
||||
<translation type="unfinished">
|
||||
@@ -1663,7 +1663,7 @@ It is not advisable to use it.</source>
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="262"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="265"/>
|
||||
<source>%n files are partially downloaded.
|
||||
</source>
|
||||
<translation type="unfinished">
|
||||
@@ -1672,7 +1672,7 @@ It is not advisable to use it.</source>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="263"/>
|
||||
<location filename="../src/gui/protocolwidget.cpp" line="266"/>
|
||||
<source>Try to sync these again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1792,17 +1792,17 @@ It is not advisable to use it.</source>
|
||||
<source>Share NewDocument.odt</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="159"/>
|
||||
<source>Share Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="20"/>
|
||||
<location filename="../src/gui/sharedialog.ui" line="167"/>
|
||||
<source>TextLabel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="29"/>
|
||||
<source>Share link</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="71"/>
|
||||
<source>Copy &Link</source>
|
||||
@@ -1824,6 +1824,11 @@ It is not advisable to use it.</source>
|
||||
<source>Set &expiration date</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="159"/>
|
||||
<source>Share Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="186"/>
|
||||
<source>share label</source>
|
||||
@@ -1835,8 +1840,18 @@ It is not advisable to use it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.ui" line="29"/>
|
||||
<source>Share link</source>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="89"/>
|
||||
<source>Share Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="91"/>
|
||||
<source>Share File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="99"/>
|
||||
<source>Local path: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -1855,11 +1870,31 @@ It is not advisable to use it.</source>
|
||||
<source>Password Protected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="325"/>
|
||||
<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/sharedialog.cpp" line="410"/>
|
||||
<source>Public sh&aring requires a password:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="438"/>
|
||||
<source>Choose a password for the public link</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="490"/>
|
||||
<source>Check to &share by public link</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="491"/>
|
||||
<source>&Shared by public link (uncheck to delete share)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="509"/>
|
||||
<source>OCS API error code: %1</source>
|
||||
@@ -1875,54 +1910,14 @@ It is not advisable to use it.</source>
|
||||
<source>Cannot find an folder to upload to.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="565"/>
|
||||
<source>A sync file with the same name exists. The file cannot be registered to sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="610"/>
|
||||
<source>The file cannot be synced.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="550"/>
|
||||
<source>Sharing of external directories is not yet working.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="89"/>
|
||||
<source>Share Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="91"/>
|
||||
<source>Share File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="99"/>
|
||||
<source>Local path: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="325"/>
|
||||
<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/sharedialog.cpp" line="410"/>
|
||||
<source>Public sh&aring requires a password:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="490"/>
|
||||
<source>Check to &share by public link</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="491"/>
|
||||
<source>&Shared by public link (uncheck to delete share)</source>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="565"/>
|
||||
<source>A sync file with the same name exists. The file cannot be registered to sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -1935,6 +1930,11 @@ It is not advisable to use it.</source>
|
||||
<source>Unable to register in sync space.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="610"/>
|
||||
<source>The file cannot be synced.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="620"/>
|
||||
<source>Sync of registered file was not successful yet.</source>
|
||||
@@ -1975,7 +1975,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="449"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -2085,12 +2085,12 @@ It is not advisable to use it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="193"/>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="199"/>
|
||||
<source>Certificate information:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="222"/>
|
||||
<location filename="../src/gui/sslbutton.cpp" line="228"/>
|
||||
<source>This connection is NOT secure as it is not encrypted.
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -2257,6 +2257,11 @@ It is not advisable to use it.</source>
|
||||
<source>CSync failed due to not handled permission deniend.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="145"/>
|
||||
<source>CSync failed to access</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="148"/>
|
||||
<source>CSync tried to create a directory that already exists.</source>
|
||||
@@ -2277,21 +2282,16 @@ It is not advisable to use it.</source>
|
||||
<source>Aborted by the user</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="163"/>
|
||||
<source>The mounted directory is temporarily not available on the server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="145"/>
|
||||
<source>CSync failed to access</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="160"/>
|
||||
<source>The service is temporarily unavailable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="163"/>
|
||||
<source>The mounted directory is temporarily not available on the server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="166"/>
|
||||
<source>An error occurred while opening a directory</source>
|
||||
@@ -2348,59 +2348,59 @@ It is not advisable to use it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="937"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="944"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="938"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="945"/>
|
||||
<source>Ignored because of the "choose what to sync" blacklist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="962"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="963"/>
|
||||
<source>Not allowed because you don't have permission to add sub-directories in that directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="968"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="969"/>
|
||||
<source>Not allowed because you don't have permission to add parent directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="975"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="976"/>
|
||||
<source>Not allowed because you don't have permission to add files in that directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="995"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="996"/>
|
||||
<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="1012"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1032"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1013"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1033"/>
|
||||
<source>Not allowed to remove, restoring</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1045"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1046"/>
|
||||
<source>Local files and share folder removed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1100"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1101"/>
|
||||
<source>Move not allowed, item restored</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1109"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1110"/>
|
||||
<source>Move not allowed because %1 is read-only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1110"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1111"/>
|
||||
<source>the destination</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1110"/>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="1111"/>
|
||||
<source>the source</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -2852,12 +2852,12 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>main.cpp</name>
|
||||
<message>
|
||||
<location filename="../src/gui/main.cpp" line="45"/>
|
||||
<location filename="../src/gui/main.cpp" line="38"/>
|
||||
<source>System Tray not available</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/main.cpp" line="46"/>
|
||||
<location filename="../src/gui/main.cpp" line="39"/>
|
||||
<source>%1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as 'trayer' and try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -2873,74 +2873,79 @@ 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="31"/>
|
||||
<source>Downloaded</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="34"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="33"/>
|
||||
<source>Uploaded</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="36"/>
|
||||
<source>Downloaded, renamed conflicting file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="38"/>
|
||||
<source>Deleted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="40"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="41"/>
|
||||
<source>Moved to %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="42"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="43"/>
|
||||
<source>Ignored</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="44"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="45"/>
|
||||
<source>Filesystem access error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="46"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="47"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="49"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="52"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="50"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="53"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="62"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="63"/>
|
||||
<source>downloading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="64"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="65"/>
|
||||
<source>uploading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="66"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="67"/>
|
||||
<source>deleting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="69"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="70"/>
|
||||
<source>moving</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="71"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="72"/>
|
||||
<source>ignoring</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="73"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="75"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="74"/>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="76"/>
|
||||
<source>error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário