Comparar commits
23 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| cff58aa994 | |||
| cc7cd6925c | |||
| 2868caec81 | |||
| 45dd1d0acf | |||
| 552af7b94d | |||
| 8934979ba1 | |||
| b3e16e0eb0 | |||
| 7773380deb | |||
| e22050a434 | |||
| 7b0231bfce | |||
| edc58c045f | |||
| 035058934f | |||
| 9b1f46e560 | |||
| 9e7a8e619b | |||
| 9c0cd2b13e | |||
| 58ad781bd4 | |||
| 9d6701ecbe | |||
| d659c54798 | |||
| 0e9170cb36 | |||
| 8820bc1c17 | |||
| 74f67c97a9 | |||
| fd96b482c5 | |||
| 727e73d640 |
@@ -1,15 +1,21 @@
|
||||
sudo: required
|
||||
|
||||
language: cpp
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
branches:
|
||||
only:
|
||||
- coverity_scan
|
||||
|
||||
before_install:
|
||||
- sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
|
||||
- sudo sh -c "echo 'deb-src http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
|
||||
- wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/xUbuntu_12.04/Release.key
|
||||
- sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
|
||||
- sudo sh -c "echo 'deb-src http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
|
||||
- wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/Ubuntu_14.04/Release.key
|
||||
- sudo apt-key add - < Release.key
|
||||
- sudo apt-get update
|
||||
- sudo apt-get build-dep owncloud-client
|
||||
- sudo apt-get -y build-dep owncloud-client
|
||||
- checkout=$(git show-ref --head --hash head)
|
||||
- cd ../
|
||||
- wget https://scan.coverity.com/download/linux-64 --post-data "token=$token&project=owncloud%2Fmirall" -O coverity_tool.tgz
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
ChangeLog
|
||||
=========
|
||||
version 2.2.0 (release 2016-05-12)
|
||||
* Overlay icons: Refactoring - mainly for performance improvements
|
||||
* Improved error handling with Sync Journal on USB storages (#4632)
|
||||
* Sharing Completion: Improved UI of completion in sharing from desktop. (#3737)
|
||||
* Show server notifications on the client (#3733)
|
||||
* Improved Speed with small files by dynamic parallel request count (#4529)
|
||||
* LockWatcher: Make sure to sync files after apps released exclusive locks on Windows.
|
||||
* Improved handling of Win32 file locks and network files
|
||||
* Workaround Ubuntu 16.04 tray icon bug (#4693)
|
||||
* Removed the Alias field from the folder definition (#4695)
|
||||
* Improved netrc parser (#4691)
|
||||
* Improved user notifications about ignored files and conflicts (#4761, #3222)
|
||||
* Add warnings for old server versions (#4523)
|
||||
* Enable tranportation checksums if the server supports based on server capabilities (#3735)
|
||||
|
||||
* Default Chunk-size changed to 10MB (#4354)
|
||||
* Documentation Improvements, ie. about overlay icons
|
||||
* Translation fixes
|
||||
* Countless other bugfixes
|
||||
* Sqlite Update to recent version
|
||||
* Update of QtKeyChain to support Windows credential store
|
||||
* Packaging of dolphin overlay icon module for bleeding edge distros
|
||||
|
||||
version 2.1.1 (release 2016-02-10)
|
||||
* UI improvements for HiDPI screens, error messages, RTL languages
|
||||
* Fix occurences of "Connection Closed" when a new unauthenticated TCP socket is used
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
set( MIRALL_VERSION_MAJOR 2 )
|
||||
set( MIRALL_VERSION_MINOR 2 )
|
||||
set( MIRALL_VERSION_PATCH 0 )
|
||||
set( MIRALL_VERSION_PATCH 1 )
|
||||
set( MIRALL_VERSION_YEAR 2016 )
|
||||
set( MIRALL_SOVERSION 0 )
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'ownCloud Client Manual'
|
||||
copyright = u'2013, The ownCloud developers'
|
||||
copyright = u'2013-2016, The ownCloud developers'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -250,7 +250,7 @@ texinfo_documents = [
|
||||
epub_title = u'ownCloud Client Manual'
|
||||
epub_author = u'The ownCloud developers'
|
||||
epub_publisher = u'The ownCloud developers'
|
||||
epub_copyright = u'2013, The ownCloud developers'
|
||||
epub_copyright = u'2013-2016, The ownCloud developers'
|
||||
|
||||
# The language of the text. It defaults to the language option
|
||||
# or en if the language is not set.
|
||||
|
||||
|
Antes Largura: | Altura: | Tamanho: 86 KiB Depois Largura: | Altura: | Tamanho: 52 KiB |
|
Depois Largura: | Altura: | Tamanho: 82 KiB |
|
Antes Largura: | Altura: | Tamanho: 49 KiB Depois Largura: | Altura: | Tamanho: 58 KiB |
|
Antes Largura: | Altura: | Tamanho: 58 KiB Depois Largura: | Altura: | Tamanho: 224 KiB |
|
Antes Largura: | Altura: | Tamanho: 23 KiB Depois Largura: | Altura: | Tamanho: 20 KiB |
|
Antes Largura: | Altura: | Tamanho: 24 KiB Depois Largura: | Altura: | Tamanho: 34 KiB |
@@ -4,16 +4,16 @@ ownCloud Desktop Client Manual
|
||||
==============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:maxdepth: 2
|
||||
|
||||
introduction
|
||||
installing
|
||||
navigating
|
||||
advancedusage
|
||||
autoupdate
|
||||
|
||||
building
|
||||
architecture
|
||||
troubleshooting
|
||||
faq
|
||||
glossary
|
||||
glossary
|
||||
|
||||
@@ -12,26 +12,22 @@ Desktop Sync client enables you to:
|
||||
Your files are always automatically synchronized between your ownCloud server
|
||||
and local PC.
|
||||
|
||||
.. note:: Because of various technical issues, desktop sync clients older than
|
||||
1.7 will not allowed to connect and sync with the ownCloud 8.1+ server. It
|
||||
is highly recommended to keep your client updated.
|
||||
|
||||
Because of various technical issues, desktop sync clients older than 1.7 will
|
||||
not allowed to connect and sync with the ownCloud 8.1+ server. It is highly
|
||||
recommended to keep your client updated.
|
||||
|
||||
Improvements and New Features
|
||||
-----------------------------
|
||||
|
||||
The 2.1 release of the ownCloud desktop sync client has many new features and
|
||||
The 2.2 release of the ownCloud desktop sync client has many new features and
|
||||
improvements. (See the `complete changelog
|
||||
<https://owncloud.org/changelog/desktop/>`_.)
|
||||
|
||||
* Improved appearance on HiDPI screens
|
||||
* Improved error messages
|
||||
* Several fixes/improvements to the sharing dialog
|
||||
* Several fixes/improvements to the server activity tab
|
||||
* Allow changeable upload chunk size in owncloud.cfg
|
||||
* Forget password on explicit sign-out
|
||||
* Windows: Fix deleting and replacing of read-only files
|
||||
* Share with internal ownCloud users from your desktop
|
||||
* Separate views for server activity, sync activity, and errors
|
||||
* Don't re-upload *eml-files if size and checksum are unchanged
|
||||
* Improved upload/download progress indicator
|
||||
* Show server notifications on the client
|
||||
* Improved sync speed
|
||||
* Improved handling of Win32 file locks and network files
|
||||
* Improved user notifications about ignored files and conflicts
|
||||
* Add warnings for old server versions
|
||||
* Update of QtKeyChain to support Windows credential store
|
||||
* Packaging of dolphin overlay icon module for bleeding edge distros
|
||||
|
||||
@@ -62,6 +62,7 @@ This menu provides the following options:
|
||||
* Recent Changes, showing latest activities
|
||||
* Settings
|
||||
* Help menu
|
||||
* Pause synchronizations
|
||||
* An option to log in or log out of all of your accounts at once
|
||||
* Quit ownCloud, logging out and closing the client
|
||||
|
||||
@@ -83,7 +84,7 @@ have the following features:
|
||||
* Connection status, showing which ownCloud server you are connected to, and
|
||||
your ownCloud username.
|
||||
* An **Account** button, which contains a dropdown menu with **Add New**,
|
||||
**Log In/Log Out**, and **Remove**.
|
||||
**Log Out**, and **Remove**.
|
||||
* Used and available space on the server.
|
||||
* Current synchronization status.
|
||||
* **Add Folder Sync Connection** button, which is active only when you have
|
||||
@@ -93,26 +94,17 @@ The little button with three dots (the overflow menu) that sits to the right of
|
||||
the sync status bar offers four additional options:
|
||||
|
||||
* Open Folder
|
||||
* Choose What to Sync
|
||||
* Choose What to Sync (This appears only when your file tree is collapsed, and
|
||||
expands the file tree)
|
||||
* Pause Sync / Resume Sync
|
||||
* Remove folder sync connection
|
||||
|
||||
**Open Folder** opens a file explorer window displaying the client-side folder
|
||||
that is being synced.
|
||||
|
||||
**Choose What to Sync** opens the folder sync tree view. Use this to sync all
|
||||
or only some of the folders in the folder tree.
|
||||
**Open Folder** opens your local ownCloud sync folder.
|
||||
|
||||
**Pause Sync** pauses sync operations without making any changes to your
|
||||
account. It will continue to update file and folder lists, without
|
||||
downloading or updating files. To stop all sync activity use **Remove Sync**.
|
||||
|
||||
**Resume Sync** resumes sync operations.
|
||||
|
||||
**Remove Sync** removes the sync connection without removing the account. This
|
||||
stops all sync activity, including file and folder list updates. If you want to
|
||||
synchronize the folder tree again then click the **Add Folder Sync Connection**
|
||||
button, and re-select the folder tree that you want to sync.
|
||||
downloading or updating files. To stop all sync activity use **Remove
|
||||
Folder Sync Connection**.
|
||||
|
||||
.. figure:: images/client-7.png
|
||||
:alt: Extra options for sync operations
|
||||
@@ -125,12 +117,10 @@ button, and re-select the folder tree that you want to sync.
|
||||
Adding New Accounts
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You may configure multiple ownCloud accounts in your desktop sync client.
|
||||
Simply
|
||||
You may configure multiple ownCloud accounts in your desktop sync client. Simply
|
||||
click the **Account** > **Add New** button on any account tab to add a new
|
||||
account, and then follow the account creation wizard. The new account will
|
||||
appear as a new tab in the settings dialog, where you can adjust its settings
|
||||
at
|
||||
appear as a new tab in the settings dialog, where you can adjust its settings at
|
||||
any time. Use **Account** > **Remove** to delete accounts.
|
||||
|
||||
File Manager Overlay Icons
|
||||
@@ -175,9 +165,7 @@ the ``owncloud-client-nautilus`` plugin.) You can create share links, and share
|
||||
with internal ownCloud users the same way as in your ownCloud Web interface.
|
||||
|
||||
.. figure:: images/mac-share.png
|
||||
:alt: Sync client integration in Finder on Mac OS X.
|
||||
|
||||
*Shared ownCloud files in Finder on Mac OS X*
|
||||
:alt: Sync client integration in Windows Explorer.
|
||||
|
||||
Right-click your systray icon, hover over the account you want to use, and
|
||||
left-click "Open folder [folder name] to quickly enter your local ownCloud
|
||||
@@ -206,6 +194,25 @@ such as files not synced.
|
||||
|
||||
.. figure:: images/client-8.png
|
||||
:alt: Activity windows logs all server and client activities.
|
||||
|
||||
Server Notifications
|
||||
--------------------
|
||||
|
||||
Starting with version 2.2.0, the client will display notifications from your
|
||||
ownCloud server that require manual interaction by you. For example, when a
|
||||
user on a remote ownCloud creates a new Federated share for you, you can accept
|
||||
it from your desktop client.
|
||||
|
||||
The desktop client automatically checks for available notifications
|
||||
automatically on a regular basis. Notifications are displayed in the Server
|
||||
Activity tab, and if you have **Show Desktop Notifications** enabled (General
|
||||
tab) you'll also see a systray notification.
|
||||
|
||||
.. figure:: images/client12.png
|
||||
:alt: Activity window with notification.
|
||||
|
||||
This also displays notifications sent to users by the ownCloud admin via the
|
||||
Announcements app.
|
||||
|
||||
General Window
|
||||
--------------
|
||||
|
||||
@@ -36,8 +36,7 @@ using namespace std;
|
||||
|
||||
OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud";
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
|
||||
CommunicationSocket socket;
|
||||
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
|
||||
@@ -72,8 +71,7 @@ OCClientInterface::ContextMenuInfo OCClientInterface::FetchInfo()
|
||||
|
||||
void OCClientInterface::ShareObject(const std::wstring &path)
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud";
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
|
||||
CommunicationSocket socket;
|
||||
if (!WaitNamedPipe(pipename.data(), PIPE_TIMEOUT)) {
|
||||
|
||||
@@ -24,11 +24,31 @@
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#define BUFSIZE 1024
|
||||
#define DEFAULT_BUFLEN 4096
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define DEFAULT_BUFLEN 4096
|
||||
namespace {
|
||||
|
||||
std::wstring getUserName() {
|
||||
DWORD len = DEFAULT_BUFLEN;
|
||||
TCHAR buf[DEFAULT_BUFLEN];
|
||||
if (GetUserName(buf, &len)) {
|
||||
return std::wstring(&buf[0], len);
|
||||
} else {
|
||||
return std::wstring();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::wstring CommunicationSocket::DefaultPipePath()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud\\";
|
||||
pipename += getUserName();
|
||||
return pipename;
|
||||
}
|
||||
|
||||
CommunicationSocket::CommunicationSocket()
|
||||
: _pipe(INVALID_HANDLE_VALUE)
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
class __declspec(dllexport) CommunicationSocket
|
||||
{
|
||||
public:
|
||||
static std::wstring DefaultPipePath();
|
||||
|
||||
CommunicationSocket();
|
||||
~CommunicationSocket();
|
||||
|
||||
@@ -43,4 +45,4 @@ private:
|
||||
bool _connected;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -31,25 +31,10 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define BUFSIZE 512
|
||||
|
||||
std::wstring getUserName() {
|
||||
DWORD len = BUFSIZE;
|
||||
TCHAR buf[BUFSIZE];
|
||||
if (GetUserName(buf, &len)) {
|
||||
return std::wstring(&buf[0], len);
|
||||
} else {
|
||||
return std::wstring();
|
||||
}
|
||||
}
|
||||
|
||||
// This code is run in a thread
|
||||
void RemotePathChecker::workerThreadLoop()
|
||||
{
|
||||
auto pipename = std::wstring(L"\\\\.\\pipe\\");
|
||||
pipename += L"ownCloud\\";
|
||||
pipename += getUserName();
|
||||
|
||||
auto pipename = CommunicationSocket::DefaultPipePath();
|
||||
bool connected = false;
|
||||
CommunicationSocket socket;
|
||||
std::unordered_set<std::wstring> asked;
|
||||
|
||||
@@ -56,6 +56,13 @@
|
||||
// The second number should be changed when there are new features.
|
||||
#define MIRALL_SOCKET_API_VERSION "1.0"
|
||||
|
||||
static inline QString removeTrailingSlash(QString path)
|
||||
{
|
||||
Q_ASSERT(path.endsWith(QLatin1Char('/')));
|
||||
path.truncate(path.length()-1);
|
||||
return path;
|
||||
}
|
||||
|
||||
namespace OCC {
|
||||
|
||||
#define DEBUG qDebug() << "SocketApi: "
|
||||
@@ -142,7 +149,7 @@ void SocketApi::slotNewConnection()
|
||||
|
||||
foreach( Folder *f, FolderMan::instance()->map() ) {
|
||||
if (f->canSync()) {
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
}
|
||||
@@ -189,7 +196,7 @@ void SocketApi::slotRegisterPath( const QString& alias )
|
||||
|
||||
Folder *f = FolderMan::instance()->folder(alias);
|
||||
if (f) {
|
||||
QString message = buildRegisterPathMessage(f->path());
|
||||
QString message = buildRegisterPathMessage(removeTrailingSlash(f->path()));
|
||||
foreach(QIODevice *socket, _listeners) {
|
||||
sendMessage(socket, message);
|
||||
}
|
||||
@@ -205,7 +212,7 @@ void SocketApi::slotUnregisterPath( const QString& alias )
|
||||
|
||||
Folder *f = FolderMan::instance()->folder(alias);
|
||||
if (f)
|
||||
broadcastMessage(QLatin1String("UNREGISTER_PATH"), f->path(), QString::null, true );
|
||||
broadcastMessage(QLatin1String("UNREGISTER_PATH"), removeTrailingSlash(f->path()), QString::null, true );
|
||||
|
||||
_registeredAliases.remove(alias);
|
||||
}
|
||||
@@ -225,10 +232,11 @@ void SocketApi::slotUpdateFolderView(Folder *f)
|
||||
f->syncResult().status() == SyncResult::Error ||
|
||||
f->syncResult().status() == SyncResult::SetupError ) {
|
||||
|
||||
broadcastMessage(QLatin1String("STATUS"), f->path() ,
|
||||
QString rootPath = removeTrailingSlash(f->path());
|
||||
broadcastMessage(QLatin1String("STATUS"), rootPath,
|
||||
f->syncEngine().syncFileStatusTracker().fileStatus("").toSocketAPIString());
|
||||
|
||||
broadcastMessage(QLatin1String("UPDATE_VIEW"), f->path() );
|
||||
broadcastMessage(QLatin1String("UPDATE_VIEW"), rootPath);
|
||||
} else {
|
||||
qDebug() << "Not sending UPDATE_VIEW for" << f->alias() << "because status() is" << f->syncResult().status();
|
||||
}
|
||||
@@ -302,8 +310,12 @@ void SocketApi::command_RETRIEVE_FILE_STATUS(const QString& argument, QIODevice*
|
||||
// this can happen in offline mode e.g.: nothing to worry about
|
||||
statusString = QLatin1String("NOP");
|
||||
} else {
|
||||
const QString file = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
|
||||
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(file);
|
||||
QString relativePath = QDir::cleanPath(argument).mid(syncFolder->cleanPath().length()+1);
|
||||
if( relativePath.endsWith(QLatin1Char('/')) ) {
|
||||
relativePath.truncate(relativePath.length()-1);
|
||||
qWarning() << "Removed trailing slash for directory: " << relativePath << "Status pushes won't have one.";
|
||||
}
|
||||
SyncFileStatus fileStatus = syncFolder->syncEngine().syncFileStatusTracker().fileStatus(relativePath);
|
||||
|
||||
statusString = fileStatus.toSocketAPIString();
|
||||
}
|
||||
|
||||
@@ -92,15 +92,11 @@ SyncFileItem SyncFileStatusTracker::rootSyncFileItem()
|
||||
return fakeRootItem;
|
||||
}
|
||||
|
||||
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
|
||||
SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& relativePath)
|
||||
{
|
||||
QString fileName = systemFileName.normalized(QString::NormalizationForm_C);
|
||||
if( fileName.endsWith(QLatin1Char('/')) ) {
|
||||
fileName.truncate(fileName.length()-1);
|
||||
qDebug() << "Removed trailing slash: " << fileName;
|
||||
}
|
||||
Q_ASSERT(!relativePath.endsWith(QLatin1Char('/')));
|
||||
|
||||
if( fileName.isEmpty() ) {
|
||||
if (relativePath.isEmpty()) {
|
||||
// This is the root sync folder, it doesn't have an entry in the database and won't be walked by csync, so create one manually.
|
||||
return syncFileItemStatus(rootSyncFileItem());
|
||||
}
|
||||
@@ -111,22 +107,22 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString& systemFileName)
|
||||
// update the exclude list at runtime and doing it statically here removes
|
||||
// our ability to notify changes through the fileStatusChanged signal,
|
||||
// it's an acceptable compromize to treat all exclude types the same.
|
||||
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + fileName,
|
||||
if( _syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + relativePath,
|
||||
_syncEngine->localPath(),
|
||||
_syncEngine->ignoreHiddenFiles()) ) {
|
||||
return SyncFileStatus(SyncFileStatus::StatusWarning);
|
||||
}
|
||||
|
||||
if ( _dirtyPaths.contains(fileName) )
|
||||
if ( _dirtyPaths.contains(relativePath) )
|
||||
return SyncFileStatus::StatusSync;
|
||||
|
||||
SyncFileItem* item = _syncEngine->findSyncItem(fileName);
|
||||
SyncFileItem* item = _syncEngine->findSyncItem(relativePath);
|
||||
if (item) {
|
||||
return syncFileItemStatus(*item);
|
||||
}
|
||||
|
||||
// If we're not currently syncing that file, look it up in the database to know if it's shared
|
||||
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(fileName);
|
||||
SyncJournalFileRecord rec = _syncEngine->journal()->getFileRecord(relativePath);
|
||||
if (rec.isValid()) {
|
||||
return syncFileItemStatus(rec.toSyncFileItem());
|
||||
}
|
||||
@@ -158,7 +154,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
|
||||
} else if (showWarningInSocketApi(*item)) {
|
||||
_syncProblems[item->_file] = SyncFileStatus::StatusWarning;
|
||||
}
|
||||
emit fileStatusChanged(getSystemDestination(*item), syncFileItemStatus(*item));
|
||||
emit fileStatusChanged(getSystemDestination(item->destination()), syncFileItemStatus(*item));
|
||||
}
|
||||
|
||||
// Make sure to push any status that might have been resolved indirectly since the last sync
|
||||
@@ -170,7 +166,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector& items)
|
||||
SyncFileStatus::SyncFileStatusTag severity = it->second;
|
||||
if (severity == SyncFileStatus::StatusError)
|
||||
invalidateParentPaths(path);
|
||||
emit fileStatusChanged(_syncEngine->localPath() + path, fileStatus(path));
|
||||
emit fileStatusChanged(getSystemDestination(path), fileStatus(path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,11 +180,10 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItem &item)
|
||||
} else if (showWarningInSocketApi(item)) {
|
||||
_syncProblems[item._file] = SyncFileStatus::StatusWarning;
|
||||
} else {
|
||||
// There is currently no situation where an error status set during discovery/update is fixed by propagation.
|
||||
Q_ASSERT(_syncProblems.find(item._file) == _syncProblems.end());
|
||||
_syncProblems.erase(item._file);
|
||||
}
|
||||
|
||||
emit fileStatusChanged(getSystemDestination(item), syncFileItemStatus(item));
|
||||
emit fileStatusChanged(getSystemDestination(item.destination()), syncFileItemStatus(item));
|
||||
}
|
||||
|
||||
void SyncFileStatusTracker::slotSyncEngineRunningChanged()
|
||||
@@ -236,20 +231,19 @@ void SyncFileStatusTracker::invalidateParentPaths(const QString& path)
|
||||
QStringList splitPath = path.split('/', QString::SkipEmptyParts);
|
||||
for (int i = 0; i < splitPath.size(); ++i) {
|
||||
QString parentPath = QStringList(splitPath.mid(0, i)).join(QLatin1String("/"));
|
||||
emit fileStatusChanged(_syncEngine->localPath() + parentPath, fileStatus(parentPath));
|
||||
emit fileStatusChanged(getSystemDestination(parentPath), fileStatus(parentPath));
|
||||
}
|
||||
}
|
||||
|
||||
QString SyncFileStatusTracker::getSystemDestination(const SyncFileItem& item)
|
||||
QString SyncFileStatusTracker::getSystemDestination(const QString& relativePath)
|
||||
{
|
||||
QString systemFileName = _syncEngine->localPath() + item.destination();
|
||||
// the trailing slash for directories must be appended as the filenames coming in
|
||||
// from the plugins have that too. Otherwise the matching entry item is not found
|
||||
// in the plugin.
|
||||
if( item._type == SyncFileItem::Type::Directory ) {
|
||||
systemFileName += QLatin1Char('/');
|
||||
QString systemPath = _syncEngine->localPath() + relativePath;
|
||||
// SyncEngine::localPath() has a trailing slash, make sure to remove it if the
|
||||
// destination is empty.
|
||||
if( systemPath.endsWith(QLatin1Char('/')) ) {
|
||||
systemPath.truncate(systemPath.length()-1);
|
||||
}
|
||||
return systemFileName;
|
||||
return systemPath;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ class OWNCLOUDSYNC_EXPORT SyncFileStatusTracker : public QObject
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SyncFileStatusTracker(SyncEngine* syncEngine);
|
||||
SyncFileStatus fileStatus(const QString& systemFileName);
|
||||
SyncFileStatus fileStatus(const QString& relativePath);
|
||||
|
||||
public slots:
|
||||
void slotPathTouched(const QString& fileName);
|
||||
@@ -54,7 +54,7 @@ private:
|
||||
SyncFileItem rootSyncFileItem();
|
||||
|
||||
void invalidateParentPaths(const QString& path);
|
||||
QString getSystemDestination(const SyncFileItem& syncEnginePath);
|
||||
QString getSystemDestination(const QString& relativePath);
|
||||
|
||||
SyncEngine* _syncEngine;
|
||||
|
||||
|
||||
@@ -26,22 +26,23 @@ private slots:
|
||||
bool excludeHidden = true;
|
||||
bool keepHidden = false;
|
||||
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b~", "b~", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
|
||||
bool x = excluded.isExcluded("/a/b", "/a", keepHidden);
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b~", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
|
||||
|
||||
QString path(BIN_PATH);
|
||||
path.append("/sync-exclude.lst");
|
||||
excluded.addExcludeFilePath(path);
|
||||
excluded.reloadExcludes();
|
||||
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/b~", "b~", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", ".b", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.Trashes", ".Trashes", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "foo_conflict-bar", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", ".b", excludeHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/b~", "/a", keepHidden));
|
||||
QVERIFY(!excluded.isExcluded("/a/.b", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.Trashes", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/foo_conflict-bar", "/a", keepHidden));
|
||||
QVERIFY(excluded.isExcluded("/a/.b", "/a", excludeHidden));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -121,7 +121,9 @@ private slots:
|
||||
// Current requires an X-Server
|
||||
return;
|
||||
}
|
||||
QString ver = versionOfInstalledBinary(BIN_PATH);
|
||||
// pass the binary name owncloud to the next call. This brakes branding,
|
||||
// but branding is not supposed to work with this.
|
||||
QString ver = versionOfInstalledBinary(BIN_PATH+QLatin1String("/owncloud"));
|
||||
qDebug() << "Version of installed ownCloud Binary: " << ver;
|
||||
QVERIFY( !ver.isEmpty());
|
||||
|
||||
@@ -134,34 +136,27 @@ private slots:
|
||||
|
||||
void testTimeAgo()
|
||||
{
|
||||
// Both times in local time
|
||||
// Both times in same timezone
|
||||
QDateTime d1 = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
|
||||
QDateTime d2 = QDateTime::fromString("2015-01-23T09:20:30+01:00", Qt::ISODate);
|
||||
QString s = timeAgoInWords(d2, d1);
|
||||
QCOMPARE(s, QLatin1String("1 day(s) ago"));
|
||||
|
||||
//
|
||||
// Different timezones
|
||||
QDateTime earlyTS = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
|
||||
earlyTS.setTimeSpec(Qt::UTC);
|
||||
QDateTime laterTS = earlyTS.toOffsetFromUtc(3600);
|
||||
laterTS.setTimeSpec(Qt::UTC);
|
||||
QDateTime laterTS = QDateTime::fromString("2015-01-24T09:20:30-01:00", Qt::ISODate);
|
||||
s = timeAgoInWords(earlyTS, laterTS);
|
||||
QCOMPARE(s, QLatin1String("1 hour(s) ago"));
|
||||
QCOMPARE(s, QLatin1String("2 hour(s) ago"));
|
||||
|
||||
// 'Now' in whatever timezone
|
||||
earlyTS = QDateTime::currentDateTime();
|
||||
|
||||
laterTS.setTimeSpec(Qt::LocalTime);
|
||||
laterTS.setTimeZone( QTimeZone("Pacific/Easter") );
|
||||
laterTS = earlyTS;
|
||||
|
||||
s = timeAgoInWords(earlyTS, laterTS );
|
||||
QCOMPARE(s, QLatin1String("now"));
|
||||
|
||||
earlyTS = earlyTS.addSecs(-6);
|
||||
s = timeAgoInWords(earlyTS, laterTS );
|
||||
QCOMPARE(s, QLatin1String("Less than a minute ago"));
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -2559,7 +2559,7 @@ No és aconsellada usar-la.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Comparteix amb %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Nedoporučuje se jí používat.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Sdílet s %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Via %1 teilen</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Διαμοιρασμός με %1</translation>
|
||||
|
||||
@@ -2582,7 +2582,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
||||
@@ -440,17 +440,17 @@
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/activitywidget.cpp" line="351"/>
|
||||
<source>You received %n new notification(s) from %2.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ha recibido %n nueva notificación de %2.</numerusform><numerusform>Ha recibido %n nueva notificacióne(s) de %2.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/activitywidget.cpp" line="359"/>
|
||||
<source>You received %n new notification(s) from %1 and %2.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ha recibido %n nueva notificación de %1 y de %2.</numerusform><numerusform>Ha recibido %n nuevas notificacióne(s) de %1 y de %2.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="361"/>
|
||||
<source>You received new notifications from %1, %2 and other accounts.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ha recibido nuevas notificaciónes de %1, %2 y otras cuentas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="365"/>
|
||||
@@ -1684,7 +1684,7 @@ for additional privileges during the process.</source>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="51"/>
|
||||
<source>&Email</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Email</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/wizard/owncloudhttpcredspage.cpp" line="61"/>
|
||||
@@ -1952,7 +1952,7 @@ No se recomienda usarla.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>El archivo descargado está vacio aunque el servidor dice que deberia haber sido %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
|
||||
@@ -2384,7 +2384,7 @@ No se recomienda usarla.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="113"/>
|
||||
<source>Retrieving maximum possible sharing permissions from server...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Descargando el maximo número de permisos compartidos del servidor...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="169"/>
|
||||
@@ -2562,7 +2562,7 @@ No se recomienda usarla.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartir con %1</translation>
|
||||
|
||||
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2551,7 +2551,7 @@ Selle kasutamine pole soovitatav.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Jagatud kasutajaga %1</translation>
|
||||
|
||||
@@ -2557,7 +2557,7 @@ Ez da gomendagarria erabltzea.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2550,7 +2550,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>اشتراکگذاری با %1</translation>
|
||||
|
||||
@@ -2558,7 +2558,7 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Partager avec %1</translation>
|
||||
|
||||
@@ -2557,7 +2557,7 @@ Recomendámoslle que non o use.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartir con %1</translation>
|
||||
|
||||
@@ -2554,7 +2554,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Megosztás vele: %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ Non è consigliabile utilizzarlo.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Condividi con %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>%1 と共有</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Det er ikke tilrådelig å bruke den.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Del med %1</translation>
|
||||
|
||||
@@ -631,42 +631,42 @@
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="494"/>
|
||||
<source>%1 and %n other file(s) have been removed.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn verwijderd.</numerusform><numerusform>%1 en %n andere bestand(en) zijn verwijderd.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="501"/>
|
||||
<source>%1 and %n other file(s) have been downloaded.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn gedownload.</numerusform><numerusform>%1 en %n andere bestand(en) zijn gedownload.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="508"/>
|
||||
<source>%1 and %n other file(s) have been updated.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) zijn bijgewerkt.</numerusform><numerusform>%1 en %n andere bestand(en) zijn bijgewerkt.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="515"/>
|
||||
<source>%1 has been renamed to %2 and %n other file(s) have been renamed.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd.</numerusform><numerusform>%1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="522"/>
|
||||
<source>%1 has been moved to %2 and %n other file(s) have been moved.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst.</numerusform><numerusform>%1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst.</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="529"/>
|
||||
<source>%1 has and %n other file(s) have sync conflicts.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) hebben een sync conflict.</numerusform><numerusform>%1 en %n andere bestand(en) hebben sync conflicten.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="531"/>
|
||||
<source>%1 has a sync conflict. Please check the conflict file!</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 heeft een sync conflict. Controleer het conflict bestand!</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../src/gui/folder.cpp" line="536"/>
|
||||
<source>%1 and %n other file(s) could not be synced due to errors. See the log for details.</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform><numerusform>%1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="538"/>
|
||||
@@ -1954,7 +1954,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
<source>The downloaded file is empty despite the server announced it should have been %1.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Het gedownloade bestand is leeg, hoewel de server meldde dat het %1 zou moeten zijn.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="694"/>
|
||||
@@ -2386,7 +2386,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="113"/>
|
||||
<source>Retrieving maximum possible sharing permissions from server...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Maximum aantal mogelijke permissies van de server ophalen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/sharedialog.cpp" line="169"/>
|
||||
@@ -2564,7 +2564,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Delen met %1</translation>
|
||||
@@ -3639,7 +3639,7 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="37"/>
|
||||
<source>Server version downloaded, copied changed local file into conflict file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/progressdispatcher.cpp" line="39"/>
|
||||
|
||||
@@ -455,7 +455,7 @@
|
||||
<message>
|
||||
<location filename="../src/gui/activitywidget.cpp" line="365"/>
|
||||
<source>%1 Notifications - Action Required</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 Powiadomień - Wymagana akcja</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -524,7 +524,7 @@
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="772"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1920,7 +1920,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/owncloudpropagator.cpp" line="712"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1938,17 +1938,17 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="381"/>
|
||||
<source>Free space on disk is less than %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Wolne miejsce na dysku jest mniejsze niż %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="496"/>
|
||||
<source>File was deleted from server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Plik został usunięty z serwera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="545"/>
|
||||
<source>The file could not be downloaded completely.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ten plik nie mógł być całkowicie pobrany.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="552"/>
|
||||
@@ -1968,7 +1968,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatedownload.cpp" line="792"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2009,7 +2009,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="181"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2040,7 +2040,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagatorjobs.cpp" line="245"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2066,7 +2066,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemkdir.cpp" line="148"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2094,7 +2094,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateremotemove.cpp" line="175"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2143,7 +2143,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateupload.cpp" line="782"/>
|
||||
<source>Error writing metadata to the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd podczas zapisu metadanych do bazy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2563,7 +2563,7 @@ Niezalecane jest jego użycie.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Współdzielone z %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Partilhar com %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Compartilhar com %1</translation>
|
||||
|
||||
@@ -2562,7 +2562,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Поделиться с %1</translation>
|
||||
|
||||
@@ -2555,7 +2555,7 @@ Nie je vhodné ju používať.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Zdieľať s %1</translation>
|
||||
|
||||
@@ -2560,7 +2560,7 @@ Uporaba ni priporočljiva.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Omogoči souporabo z %1</translation>
|
||||
|
||||
@@ -2556,7 +2556,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Подели са %1</translation>
|
||||
|
||||
@@ -2563,7 +2563,7 @@ Det är inte lämpligt använda den.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Dela med %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>แชร์กับ %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ Kullanmanız önerilmez.</translation>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>%1 ile paylaş</translation>
|
||||
|
||||
@@ -2551,7 +2551,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>Поділитися з %1</translation>
|
||||
|
||||
@@ -2560,7 +2560,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>共享给 %1</translation>
|
||||
|
||||
@@ -2561,7 +2561,7 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::SocketApi</name>
|
||||
<message>
|
||||
<location filename="../src/gui/socketapi.cpp" line="441"/>
|
||||
<location filename="../src/gui/socketapi.cpp" line="453"/>
|
||||
<source>Share with %1</source>
|
||||
<comment>parameter is ownCloud</comment>
|
||||
<translation>與 %1 分享</translation>
|
||||
|
||||