зеркало из https://github.com/nextcloud/desktop.git
Fix typos found by codespell
Signed-off-by: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com>
This commit is contained in:
Родитель
e3f948a3b2
Коммит
9d830e94f9
|
@ -53,7 +53,7 @@ rm -rf usr/include
|
|||
rm -rf usr/mkspecs
|
||||
rm -rf usr/lib/x86_64-linux-gnu/
|
||||
|
||||
# Don't bundle the explorer extentions as we can't do anything with them in the AppImage
|
||||
# Don't bundle the explorer extensions as we can't do anything with them in the AppImage
|
||||
rm -rf usr/share/caja-python/
|
||||
rm -rf usr/share/nautilus-python/
|
||||
rm -rf usr/share/nemo-python/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Use the configuration below with appropriate changes,
|
||||
# if you want to support a new client version using
|
||||
# your own fork. In such a case the tags do not come
|
||||
# accross to the main repo for a pull request, so
|
||||
# across to the main repo for a pull request, so
|
||||
# some hacking is needed
|
||||
[versionhack]
|
||||
commit = bc7e65b39552ac458b2adacf76cbf98735ec29a0
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
# Check if varialbe MAC_INSTALLER_BACKGROUND_FILE is defined.
|
||||
# Check if variable MAC_INSTALLER_BACKGROUND_FILE is defined.
|
||||
# Make sure that the MAC_INSTALLER_BACKGROUND_FILE contains the full path, ie.
|
||||
# includes CMAKE_SOURCE_DIR or so.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# - Check if the protoype we expect is correct.
|
||||
# - Check if the prototype we expect is correct.
|
||||
# check_prototype_definition(FUNCTION PROTOTYPE RETURN HEADER VARIABLE)
|
||||
# FUNCTION - The name of the function (used to check if prototype exists)
|
||||
# PROTOTYPE- The prototype to check.
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
# If SKIP_DEPENDENCY_HANDLING is not set, the INTERFACE_LINK_LIBRARIES property
|
||||
# of the imported target for <component> will be set to contain the imported
|
||||
# targets for the components listed in <name>_<component>_component_deps.
|
||||
# <component>_FOUND will also be set to false if any of the compoments in
|
||||
# <component>_FOUND will also be set to false if any of the components in
|
||||
# <name>_<component>_component_deps are not found. This requires the components
|
||||
# in <name>_<component>_component_deps to be listed before <component> in the
|
||||
# COMPONENTS argument.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# FEATURE: name of the feature, e.g. "libjpeg"
|
||||
# DESCRIPTION: description what this feature provides
|
||||
# URL: home page
|
||||
# REQUIRED: TRUE or FALSE, indicating whether the featue is required
|
||||
# REQUIRED: TRUE or FALSE, indicating whether the feature is required
|
||||
# MIN_VERSION: minimum version number. empty string if unneeded
|
||||
# COMMENTS: More info you may want to provide. empty string if unnecessary
|
||||
#
|
||||
|
|
|
@ -29,7 +29,7 @@ project=gets.chomp
|
|||
|
||||
printf("\n")
|
||||
|
||||
print("Other projects to include (e.g. \"owutil tinyxml\", leave emtpy to skip): ")
|
||||
print("Other projects to include (e.g. \"owutil tinyxml\", leave empty to skip): ")
|
||||
otherprojects=gets.chomp
|
||||
|
||||
printf("\n")
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% set script_files = script_files + ['_static/bootstrap.js'] %}
|
||||
{% set css_files = ['_static/bootstrap.css', '_static/bootstrap-sphinx.css'] + css_files %}
|
||||
|
||||
{# Sidebar: Rework into our Boostrap nav section. #}
|
||||
{# Sidebar: Rework into our Bootstrap nav section. #}
|
||||
{% macro navBar() %}
|
||||
<div id="navbar" class="navbar navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
|
|
|
@ -193,7 +193,7 @@ table.field-list {
|
|||
.bs-sidenav ul{
|
||||
list-style-type: none;
|
||||
padding-left: 25px;
|
||||
margin-left: 0; /* bootstrap 2 compatability. */
|
||||
margin-left: 0; /* bootstrap 2 compatibility. */
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
|
|
|
@ -12,7 +12,7 @@ pygments_style = tango
|
|||
# Tab name for entire site. (Default: "Site")
|
||||
navbar_site_name = Sitex
|
||||
|
||||
# A list of tuples containting pages to link to. The value should be
|
||||
# A list of tuples containing pages to link to. The value should be
|
||||
# in the form [(name, page), ..]
|
||||
navbar_links =
|
||||
|
||||
|
|
|
@ -193,7 +193,7 @@ table.field-list {
|
|||
.bs-sidenav ul{
|
||||
list-style-type: none;
|
||||
padding-left: 25px;
|
||||
margin-left: 0; /* bootstrap 2 compatability. */
|
||||
margin-left: 0; /* bootstrap 2 compatibility. */
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
|
|
|
@ -12,7 +12,7 @@ pygments_style = tango
|
|||
# Tab name for entire site. (Default: "Site")
|
||||
navbar_site_name = Sitex
|
||||
|
||||
# A list of tuples containting pages to link to. The value should be
|
||||
# A list of tuples containing pages to link to. The value should be
|
||||
# in the form [(name, page), ..]
|
||||
navbar_links =
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ Then, in Terminal:
|
|||
|
||||
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
|
||||
.. note:: Under certain cirumstances, you may get on error along the
|
||||
.. note:: Under certain circumstances, you may get on error along the
|
||||
lines of ``Permission denied @ apply2files`` when installing certain
|
||||
Homebrew packages. This is `a known issue`_ and can be fixed by changing
|
||||
the permissions on the affected files with the following command:
|
||||
|
|
|
@ -273,7 +273,7 @@ epub_copyright = u'2013-2018, The Nextcloud developers'
|
|||
# The format is a list of tuples containing the path and title.
|
||||
#epub_pre_files = []
|
||||
|
||||
# HTML files shat should be inserted after the pages created by sphinx.
|
||||
# HTML files that should be inserted after the pages created by sphinx.
|
||||
# The format is a list of tuples containing the path and title.
|
||||
#epub_post_files = []
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ Some interesting values that can be set on the configuration file are:
|
|||
| | | This option only works on linux |
|
||||
+----------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------+
|
||||
| ``showExperimentalOptions`` | ``false`` | Whether to show experimental options that are still undergoing testing in the user interface. |
|
||||
| | | Turning this on does not enable experimental behavior on its own. It does enable user inferface |
|
||||
| | | Turning this on does not enable experimental behavior on its own. It does enable user interface |
|
||||
| | | options that can be used to opt in to experimental features. |
|
||||
+----------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------+
|
||||
| ``showMainDialogAsNormalWindow`` | ``false`` | Whether the main dialog should be shown as a normal window even if tray icons are available. |
|
||||
|
|
|
@ -11,7 +11,7 @@ The Nextcloud desktop client uploads local changes and downloads remote changes.
|
|||
When a file has changed on the local side and on the remote between synchronization
|
||||
runs the client will be unable to resolve the situation on its own. It will
|
||||
create a conflict file with the local version, download the remote version and
|
||||
notify the user that a conflict occured which needs attention.
|
||||
notify the user that a conflict occurred which needs attention.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
|
|
@ -1067,7 +1067,7 @@ HTML_STYLESHEET =
|
|||
# defined cascading style sheet that is included after the standard style sheets
|
||||
# created by doxygen. Using this option one can overrule certain style aspects.
|
||||
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
||||
# standard style sheet and is therefor more robust against future updates.
|
||||
# standard style sheet and is therefore more robust against future updates.
|
||||
# Doxygen will copy the style sheet file to the output directory. For an example
|
||||
# see the documentation.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
@ -1951,7 +1951,7 @@ PREDEFINED = OWNCLOUDSYNC_EXPORT
|
|||
EXPAND_AS_DEFINED =
|
||||
|
||||
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
|
||||
# remove all refrences to function-like macros that are alone on a line, have an
|
||||
# remove all references to function-like macros that are alone on a line, have an
|
||||
# all uppercase name, and do not end with a semicolon. Such function macros are
|
||||
# typically used for boiler-plate code, and will confuse the parser if not
|
||||
# removed.
|
||||
|
|
|
@ -19,7 +19,7 @@ The |version| release of the Nextcloud desktop sync client has many new features
|
|||
improvements.
|
||||
|
||||
* Main dialog will be a regular window if tray icons are not available on the system.
|
||||
* Virtual files wil be optional. That enables the desktop client to run on older Windows versions.
|
||||
* Virtual files will be optional. That enables the desktop client to run on older Windows versions.
|
||||
* Improvements for the virtual files on Windows
|
||||
* Network traffic performance improvements
|
||||
* Improvements to the sync engine
|
||||
|
|
|
@ -227,7 +227,7 @@ folders larger than [folder size]**.
|
|||
Using the Network Window
|
||||
------------------------
|
||||
|
||||
.. index:: proxy settings, SOCKS, bandwith, throttling, limiting
|
||||
.. index:: proxy settings, SOCKS, bandwidth, throttling, limiting
|
||||
|
||||
The Network settings window enables you to define network proxy settings, and
|
||||
also to limit download and upload bandwidth.
|
||||
|
|
|
@ -124,7 +124,7 @@ The tab provides several useful options:
|
|||
Network
|
||||
~~~~~~~
|
||||
|
||||
.. index:: proxy settings, SOCKS, bandwith, throttling, limiting
|
||||
.. index:: proxy settings, SOCKS, bandwidth, throttling, limiting
|
||||
|
||||
This tab consolidates ``Proxy Settings`` and ``Bandwith Limiting``:
|
||||
|
||||
|
|
|
@ -94,8 +94,8 @@
|
|||
[self.delegate addMenuItem:item];
|
||||
});
|
||||
} else {
|
||||
// LOG UNKOWN COMMAND
|
||||
NSLog(@"Unkown command: %@", command);
|
||||
// LOG UNKNOWN COMMAND
|
||||
NSLog(@"Unknown command: %@", command);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# this script creates a plugin for caja, just by replacing
|
||||
# all occurences of Nautilus with Caja (case sensitive).
|
||||
# all occurrences of Nautilus with Caja (case sensitive).
|
||||
|
||||
cp syncstate.py syncstate_caja.py
|
||||
sed -i.org -e 's/Nautilus/Caja/g' syncstate_caja.py
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# this script creates a plugin for nemo, just be replacing
|
||||
# all occurences of Nautilus with Nemo.
|
||||
# all occurrences of Nautilus with Nemo.
|
||||
|
||||
cp syncstate.py syncstate_nemo.py
|
||||
sed -i.org -e 's/autilus/emo/g' syncstate_nemo.py
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
# this script replaces the line
|
||||
# appname = 'Nextcloud'
|
||||
# with the correct branding name in the syncstate.py script
|
||||
# It also replaces the occurences in the class name so several
|
||||
# It also replaces the occurrences in the class name so several
|
||||
# branding can be loaded (see #6524)
|
||||
sed -i.org -e "s/Nextcloud/$1/g" syncstate.py
|
||||
|
|
|
@ -105,7 +105,7 @@ class SocketConnect(GObject.GObject):
|
|||
return False # Don't run again
|
||||
except Exception as e:
|
||||
print("Could not connect to unix socket " + sock_file + ". " + str(e))
|
||||
except Exception as e: # Bad habbit
|
||||
except Exception as e: # Bad habit
|
||||
print("Connect could not be established, try again later.")
|
||||
self._sock.close()
|
||||
|
||||
|
|
|
@ -98,8 +98,8 @@ IFACEMETHODIMP_(ULONG) NCOverlay::Release()
|
|||
|
||||
IFACEMETHODIMP NCOverlay::GetPriority(int *pPriority)
|
||||
{
|
||||
// this defines which handler has prededence, so
|
||||
// we order this in terms of likelyhood
|
||||
// this defines which handler has precedence, so
|
||||
// we order this in terms of likelihood
|
||||
switch (_state) {
|
||||
case State_OK:
|
||||
*pPriority = 0; break;
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
<?define OverlayGuidWarning = "@WIN_SHELLEXT_OVERLAY_GUID_WARNING@" ?>
|
||||
|
||||
<!--
|
||||
Preceeding spaces are intended, two spaces to put us ahead of the competition :/
|
||||
Preceding spaces are intended, two spaces to put us ahead of the competition :/
|
||||
|
||||
There is a limit in Windows (oh wonder^^) so that only the first 15 extensions get invoked, this is why to use that dirty little trick to get ahead ;)
|
||||
See: https://docs.microsoft.com/en-us/windows/win32/shell/context-menu-handlers?redirectedfrom=MSDN#employing-the-verb-selection-model
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#define OVERLAY_GUID_WARNING L"@WIN_SHELLEXT_OVERLAY_GUID_WARNING@"
|
||||
|
||||
//
|
||||
// Preceeding spaces are intended, two spaces to put us ahead of the competition :/
|
||||
// Preceding spaces are intended, two spaces to put us ahead of the competition :/
|
||||
//
|
||||
// There is a limit in Windows (oh wonder^^) so that only the first 15 extensions get invoked, this is why to use that dirty little trick to get ahead ;)
|
||||
// See: https://docs.microsoft.com/en-us/windows/win32/shell/context-menu-handlers?redirectedfrom=MSDN#employing-the-verb-selection-model
|
||||
|
|
|
@ -172,7 +172,7 @@ bool FileSystem::uncheckedRenameReplace(const QString &originFileName,
|
|||
#ifndef Q_OS_WIN
|
||||
bool success = false;
|
||||
QFile orig(originFileName);
|
||||
// We want a rename that also overwites. QFile::rename does not overwite.
|
||||
// We want a rename that also overwrites. QFile::rename does not overwrite.
|
||||
// Qt 5.1 has QSaveFile::renameOverwrite we could use.
|
||||
// ### FIXME
|
||||
success = true;
|
||||
|
|
|
@ -219,11 +219,11 @@ public:
|
|||
* This usually creates some temporary files next to the db file, like
|
||||
* $dbfile-shm or $dbfile-wal.
|
||||
*
|
||||
* returns true if it could be openend or is currently opened.
|
||||
* returns true if it could be opened or is currently opened.
|
||||
*/
|
||||
bool open();
|
||||
|
||||
/** Returns whether the db is currently openend. */
|
||||
/** Returns whether the db is currently opened. */
|
||||
bool isOpen();
|
||||
|
||||
/** Close the database */
|
||||
|
|
|
@ -125,7 +125,7 @@ public:
|
|||
QString _file;
|
||||
QString _renameTarget;
|
||||
|
||||
/// The last X-Request-ID of the request that failled
|
||||
/// The last X-Request-ID of the request that failed
|
||||
QByteArray _requestId;
|
||||
|
||||
[[nodiscard]] bool isValid() const;
|
||||
|
|
|
@ -279,7 +279,7 @@ void Utility::usleep(int usec)
|
|||
QThread::usleep(usec);
|
||||
}
|
||||
|
||||
// This can be overriden from the tests
|
||||
// This can be overridden from the tests
|
||||
OCSYNC_EXPORT bool fsCasePreserving_override = []() -> bool {
|
||||
QByteArray env = qgetenv("OWNCLOUD_TEST_CASE_PRESERVING");
|
||||
if (!env.isEmpty())
|
||||
|
@ -298,7 +298,7 @@ bool Utility::fileNamesEqual(const QString &fn1, const QString &fn2)
|
|||
const QDir fd2(fn2);
|
||||
|
||||
// Attention: If the path does not exist, canonicalPath returns ""
|
||||
// ONLY use this function with existing pathes.
|
||||
// ONLY use this function with existing paths.
|
||||
const QString a = fd1.canonicalPath();
|
||||
const QString b = fd2.canonicalPath();
|
||||
bool re = !a.isEmpty() && QString::compare(a, b, fsCasePreserving() ? Qt::CaseInsensitive : Qt::CaseSensitive) == 0;
|
||||
|
@ -673,7 +673,7 @@ bool Utility::isPathWindowsDrivePartitionRoot(const QString &path)
|
|||
return false;
|
||||
}
|
||||
|
||||
// must mutch a pattern "[A-Za-z]:"
|
||||
// must match a pattern "[A-Za-z]:"
|
||||
if (!(path.at(1) == QLatin1Char(':') && path.at(0).isLetter())) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ namespace Utility {
|
|||
// if false, the two cases are two different files.
|
||||
OCSYNC_EXPORT bool fsCasePreserving();
|
||||
|
||||
// Check if two pathes that MUST exist are equal. This function
|
||||
// Check if two paths that MUST exist are equal. This function
|
||||
// uses QDir::canonicalPath() to judge and cares for the systems
|
||||
// case sensitivity.
|
||||
OCSYNC_EXPORT bool fileNamesEqual(const QString &fn1, const QString &fn2);
|
||||
|
@ -167,7 +167,7 @@ namespace Utility {
|
|||
* Use this to get a string that describes the timespan between the first and
|
||||
* the second timestamp in a human readable and understandable form.
|
||||
*
|
||||
* If the second parameter is ommitted, the current time is used.
|
||||
* If the second parameter is omitted, the current time is used.
|
||||
*/
|
||||
OCSYNC_EXPORT QString timeAgoInWords(const QDateTime &dt, const QDateTime &from = QDateTime());
|
||||
|
||||
|
@ -276,7 +276,7 @@ namespace Utility {
|
|||
{
|
||||
public:
|
||||
/**
|
||||
* NTFS permissions lookup is diabled by default for performance reasons
|
||||
* NTFS permissions lookup is disabled by default for performance reasons
|
||||
* Enable it and disable it again once we leave the scope
|
||||
* https://doc.qt.io/Qt-5/qfileinfo.html#ntfs-permissions
|
||||
*/
|
||||
|
|
|
@ -527,7 +527,7 @@ void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex& index
|
|||
ac = menu.addAction(tr("Encrypt"));
|
||||
connect(ac, &QAction::triggered, [this, info] { slotMarkSubfolderEncrypted(info); });
|
||||
} else {
|
||||
// Ingore decrypting for now since it only works with an empty folder
|
||||
// Ignore decrypting for now since it only works with an empty folder
|
||||
// connect(ac, &QAction::triggered, [this, &info] { slotMarkSubfolderDecrypted(info); });
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,12 +159,12 @@ public:
|
|||
///Asks for user credentials
|
||||
void handleInvalidCredentials();
|
||||
|
||||
/** Returns the notifications status retrieved by the notificatons endpoint
|
||||
/** Returns the notifications status retrieved by the notifications endpoint
|
||||
* https://github.com/nextcloud/desktop/issues/2318#issuecomment-680698429
|
||||
*/
|
||||
bool isDesktopNotificationsAllowed() const;
|
||||
|
||||
/** Set desktop notifications status retrieved by the notificatons endpoint
|
||||
/** Set desktop notifications status retrieved by the notifications endpoint
|
||||
*/
|
||||
void setDesktopNotificationsAllowed(bool isAllowed);
|
||||
|
||||
|
|
|
@ -728,7 +728,7 @@ void Application::parseOptions(const QStringList &options)
|
|||
// virtual file, open it after the Folder were created (if the app is not terminated)
|
||||
QTimer::singleShot(0, this, [this, option] { openVirtualFile(option); });
|
||||
} else if (option.startsWith(QStringLiteral(APPLICATION_URI_HANDLER_SCHEME "://open"))) {
|
||||
// see the section Local file editing of the Architecture page of the user documenation
|
||||
// see the section Local file editing of the Architecture page of the user documentation
|
||||
_editFileLocallyUrl = QUrl::fromUserInput(option);
|
||||
if (!_editFileLocallyUrl.isValid()) {
|
||||
_editFileLocallyUrl.clear();
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace OCC {
|
|||
* checkAuthentication is the quick version that only does the propfind
|
||||
* while checkServerAndAuth is doing the 4 calls.
|
||||
*
|
||||
* We cannot use the capabilites call to test the login and the password because of
|
||||
* We cannot use the capabilities call to test the login and the password because of
|
||||
* https://github.com/owncloud/core/issues/12930
|
||||
*
|
||||
* Here follows the state machine
|
||||
|
|
|
@ -754,7 +754,7 @@ void FolderMan::slotRunOneEtagJob()
|
|||
Folder *folder = nullptr;
|
||||
for (Folder *f : qAsConst(_folderMap)) {
|
||||
if (f->etagJob()) {
|
||||
// Caveat: always grabs the first folder with a job, but we think this is Ok for now and avoids us having a seperate queue.
|
||||
// Caveat: always grabs the first folder with a job, but we think this is Ok for now and avoids us having a separate queue.
|
||||
_currentEtagJob = f->etagJob();
|
||||
folder = f;
|
||||
break;
|
||||
|
@ -987,7 +987,7 @@ void FolderMan::runEtagJobIfPossible(Folder *folder)
|
|||
return;
|
||||
}
|
||||
if (_scheduledFolders.contains(folder)) {
|
||||
qCInfo(lcFolderMan) << "Can not run etag job: Folder is alreday scheduled";
|
||||
qCInfo(lcFolderMan) << "Can not run etag job: Folder is already scheduled";
|
||||
return;
|
||||
}
|
||||
if (_disabledFolders.contains(folder)) {
|
||||
|
@ -1727,7 +1727,7 @@ QPair<FolderMan::PathValidityResult, QString> FolderMan::checkPathValidityForNew
|
|||
return result;
|
||||
}
|
||||
|
||||
// if both pathes are equal, the server url needs to be different
|
||||
// if both paths are equal, the server url needs to be different
|
||||
// otherwise it would mean that a new connection from the same local folder
|
||||
// to the same account is added which is not wanted. The account must differ.
|
||||
if (serverUrl.isValid() && !differentPaths) {
|
||||
|
|
|
@ -264,7 +264,7 @@ public slots:
|
|||
/**
|
||||
* Triggers a sync run once the lock on the given file is removed.
|
||||
*
|
||||
* Automatically detemines the folder that's responsible for the file.
|
||||
* Automatically determines the folder that's responsible for the file.
|
||||
* See slotWatchedFileUnlocked().
|
||||
*/
|
||||
void slotSyncOnceFileUnlocks(const QString &path);
|
||||
|
|
|
@ -163,7 +163,7 @@ void WatcherThread::watchChanges(size_t fileNotifyBufferSize,
|
|||
if (curEntry->NextEntryOffset == 0) {
|
||||
break;
|
||||
}
|
||||
// FILE_NOTIFY_INFORMATION has no fixed size and the offset is in bytes therefor we first need to cast to char
|
||||
// FILE_NOTIFY_INFORMATION has no fixed size and the offset is in bytes therefore we first need to cast to char
|
||||
curEntry = reinterpret_cast<FILE_NOTIFY_INFORMATION *>(reinterpret_cast<char*>(curEntry) + curEntry->NextEntryOffset);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include <QUrl>
|
||||
|
||||
#define OCS_SUCCESS_STATUS_CODE 100
|
||||
// Apparantly the v2.php URLs can return that
|
||||
// Apparently the v2.php URLs can return that
|
||||
#define OCS_SUCCESS_STATUS_CODE_V2 200
|
||||
// Two factor auth notification returns Accepted 202
|
||||
#define OCS_ACCEPTED_STATUS_CODE 202
|
||||
|
|
|
@ -367,7 +367,7 @@ public:
|
|||
{
|
||||
auto toolbar = qobject_cast<QToolBar *>(parent);
|
||||
if (!toolbar) {
|
||||
// this means we are in the extention menu, no special action here
|
||||
// this means we are in the extension menu, no special action here
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -387,7 +387,7 @@ public:
|
|||
* @param password The password of the share, may be empty
|
||||
*
|
||||
* On success the signal linkShareCreated is emitted
|
||||
* For older server the linkShareRequiresPassword signal is emitted when it seems appropiate
|
||||
* For older server the linkShareRequiresPassword signal is emitted when it seems appropriate
|
||||
* In case of a server error the serverError signal is emitted
|
||||
*/
|
||||
void createLinkShare(const QString &path,
|
||||
|
|
|
@ -349,7 +349,7 @@ bool Systray::raiseFileDetailDialogs(const QString &localPath)
|
|||
continue;
|
||||
}
|
||||
|
||||
// If it is empty then we have raised no dialogs, so return false (and viceversa)
|
||||
// If it is empty then we have raised no dialogs, so return false (and vice-versa)
|
||||
return !_fileDetailDialogs.empty();
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ bool SortedActivityListModel::lessThan(const QModelIndex &sourceLeft, const QMod
|
|||
|
||||
// Then compare by status
|
||||
if (leftSyncFileItemStatus != rightSyncFileItemStatus) {
|
||||
// We want to shove erors towards the top.
|
||||
// We want to shove errors towards the top.
|
||||
return (leftSyncFileItemStatus != SyncFileItem::NoStatus &&
|
||||
leftSyncFileItemStatus != SyncFileItem::Success) ||
|
||||
leftSyncFileItemStatus == SyncFileItem::FatalError ||
|
||||
|
|
|
@ -282,7 +282,7 @@ void User::slotDisconnectPushNotifications()
|
|||
|
||||
disconnect(_account->account().data(), &Account::pushNotificationsDisabled, this, &User::slotDisconnectPushNotifications);
|
||||
|
||||
// connection to WebSocket may have dropped or an error occured, so we need to bring back the polling until we have re-established the connection
|
||||
// connection to WebSocket may have dropped or an error occurred, so we need to bring back the polling until we have re-established the connection
|
||||
setNotificationRefreshInterval(ConfigFile().notificationRefreshInterval());
|
||||
}
|
||||
|
||||
|
@ -462,7 +462,7 @@ void User::slotNotificationRequestFinished(int statusCode)
|
|||
qCWarning(lcActivity) << "Notification Request to Server failed, leave notification visible.";
|
||||
} else {
|
||||
// to do use the model to rebuild the list or remove the item
|
||||
qCWarning(lcActivity) << "Notification Request to Server successed, rebuilding list.";
|
||||
qCWarning(lcActivity) << "Notification Request to Server succeeded, rebuilding list.";
|
||||
_activityModel->removeActivityFromActivityList(row);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ public:
|
|||
|
||||
/**
|
||||
* Shows a dialog explaining the virtual files mode and warning about it
|
||||
* being experimental. Calles the callback with true if enabling was
|
||||
* being experimental. Calls the callback with true if enabling was
|
||||
* chosen.
|
||||
*/
|
||||
static void askExperimentalVirtualFilesFeature(QWidget *receiver, const std::function<void(bool enable)> &callback);
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
|
||||
/** @brief sets an optional postfix shown greyed out */
|
||||
void setPostfix(const QString &postfix);
|
||||
/** @brief retrives the postfix */
|
||||
/** @brief retrieves the postfix */
|
||||
[[nodiscard]] QString postfix() const;
|
||||
/** @brief retrieves combined text() and postfix() */
|
||||
[[nodiscard]] QString fullText() const;
|
||||
|
|
|
@ -60,7 +60,7 @@ private:
|
|||
};
|
||||
|
||||
// We need a separate class here, since we cannot simply return the same WebEnginePage object
|
||||
// this leads to a strage segfault somewhere deep inside of the QWebEngine code
|
||||
// this leads to a strange segfault somewhere deep inside of the QWebEngine code
|
||||
class ExternalWebEnginePage : public QWebEnginePage {
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
@ -90,7 +90,7 @@ WebView::WebView(QWidget *parent)
|
|||
_profile->installUrlSchemeHandler("nc", _schemeHandler);
|
||||
|
||||
/*
|
||||
* Set a proper accept langauge to the language of the client
|
||||
* Set a proper accept language to the language of the client
|
||||
* code from: http://code.qt.io/cgit/qt/qtbase.git/tree/src/network/access/qhttpnetworkconnection.cpp
|
||||
*/
|
||||
{
|
||||
|
@ -137,7 +137,7 @@ void WebView::slotResizeToContents(const QSizeF &size){
|
|||
|
||||
WebView::~WebView() {
|
||||
/*
|
||||
* The Qt implmentation deletes children in the order they are added to the
|
||||
* The Qt implementation deletes children in the order they are added to the
|
||||
* object tree, so in this case _page is deleted after _profile, which
|
||||
* violates the assumption that _profile should exist longer than
|
||||
* _page [1]. Here I delete _page manually so that _profile can be safely
|
||||
|
|
|
@ -85,7 +85,7 @@ public:
|
|||
* This function reads the body of the reply and parses out the
|
||||
* error information, if possible.
|
||||
*
|
||||
* \a body is optinally filled with the reply body.
|
||||
* \a body is optionally filled with the reply body.
|
||||
*
|
||||
* Warning: Needs to call reply()->readAll().
|
||||
*/
|
||||
|
|
|
@ -43,7 +43,7 @@ AccessManager::AccessManager(QObject *parent)
|
|||
#endif
|
||||
|
||||
#ifndef Q_OS_LINUX
|
||||
// Atempt to workaround for https://github.com/owncloud/client/issues/3969
|
||||
// Attempt to workaround for https://github.com/owncloud/client/issues/3969
|
||||
setConfiguration(QNetworkConfiguration());
|
||||
#endif
|
||||
setCookieJar(new CookieJar);
|
||||
|
|
|
@ -99,7 +99,7 @@ public:
|
|||
/**
|
||||
* The user that can be used in dav url.
|
||||
*
|
||||
* This can very well be different frome the login user that's
|
||||
* This can very well be different from the login user that's
|
||||
* stored in credentials()->user().
|
||||
*/
|
||||
[[nodiscard]] QString davUser() const;
|
||||
|
|
|
@ -79,7 +79,7 @@ private slots:
|
|||
const QByteArray &transmissionChecksumType,
|
||||
const QByteArray &transmissionChecksum);
|
||||
|
||||
// invoked on internal error to unlock a folder and faile
|
||||
// invoked on internal error to unlock a folder and failed
|
||||
void slotOnErrorStartFolderUnlock(OCC::SyncFileItemPtr item,
|
||||
const OCC::SyncFileItem::Status status,
|
||||
const QString &errorString,
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
[[nodiscard]] QColor serverColor() const;
|
||||
[[nodiscard]] QColor serverTextColor() const;
|
||||
|
||||
/// Returns which kind of push notfications are available
|
||||
/// Returns which kind of push notifications are available
|
||||
[[nodiscard]] PushNotificationTypes availablePushNotifications() const;
|
||||
|
||||
/// Websocket url for files push notifications if available
|
||||
|
|
|
@ -1534,7 +1534,7 @@ void FolderMetadata::setupExistingMetadata(const QByteArray& metadata)
|
|||
qCInfo(lcCseMetadata()) << doc.toJson(QJsonDocument::Compact);
|
||||
|
||||
// The metadata is being retrieved as a string stored in a json.
|
||||
// This *seems* to be broken but the RFC doesn't explicits how it wants.
|
||||
// This *seems* to be broken but the RFC doesn't explicit how it wants.
|
||||
// I'm currently unsure if this is error on my side or in the server implementation.
|
||||
// And because inside of the meta-data there's an object called metadata, without '-'
|
||||
// make it really different.
|
||||
|
|
|
@ -97,7 +97,7 @@ bool StoreMetaDataApiJob::finished()
|
|||
emit error(_fileId, retCode);
|
||||
}
|
||||
|
||||
qCInfo(lcCseJob()) << "Metadata submited to the server successfully";
|
||||
qCInfo(lcCseJob()) << "Metadata submitted to the server successfully";
|
||||
emit success(_fileId);
|
||||
return true;
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ bool UpdateMetadataApiJob::finished()
|
|||
emit error(_fileId, retCode);
|
||||
}
|
||||
|
||||
qCInfo(lcCseJob()) << "Metadata submited to the server successfully";
|
||||
qCInfo(lcCseJob()) << "Metadata submitted to the server successfully";
|
||||
emit success(_fileId);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -567,7 +567,7 @@ chrono::milliseconds ConfigFile::forceSyncInterval(const QString &connection) co
|
|||
auto defaultInterval = chrono::hours(2);
|
||||
auto interval = millisecondsValue(settings, forceSyncIntervalC, defaultInterval);
|
||||
if (interval < pollInterval) {
|
||||
qCWarning(lcConfigFile) << "Force sync interval is less than the remote poll inteval, reverting to" << pollInterval.count();
|
||||
qCWarning(lcConfigFile) << "Force sync interval is less than the remote poll interval, reverting to" << pollInterval.count();
|
||||
interval = pollInterval;
|
||||
}
|
||||
return interval;
|
||||
|
|
|
@ -391,7 +391,7 @@ void HttpCredentials::slotReadJobDone(QKeychain::Job *incoming)
|
|||
emit fetched();
|
||||
} else {
|
||||
// we come here if the password is empty or any other keychain
|
||||
// error happend.
|
||||
// error happened.
|
||||
|
||||
_fetchErrorString = job->error() != QKeychain::EntryNotFound ? job->errorString() : QString();
|
||||
|
||||
|
@ -528,7 +528,7 @@ void HttpCredentials::persist()
|
|||
// write secrets to the keychain
|
||||
if (!_clientCertBundle.isEmpty()) {
|
||||
// Option 1: If we have a pkcs12 bundle, that'll be written to the config file
|
||||
// and we'll just store the bundle password in the keychain. That's prefered
|
||||
// and we'll just store the bundle password in the keychain. That's preferred
|
||||
// since the keychain on older Windows platforms can only store a limited number
|
||||
// of bytes per entry and key/cert may exceed that.
|
||||
auto *job = new QKeychain::WritePasswordJob(Theme::instance()->appName());
|
||||
|
|
|
@ -109,7 +109,7 @@ public:
|
|||
* Call this method to start the job synchronously.
|
||||
* Awaits completion with no need to connect some slot to the finished() signal first.
|
||||
*
|
||||
* @return Returns true on succeess (QKeychain::NoError).
|
||||
* @return Returns true on success (QKeychain::NoError).
|
||||
*/
|
||||
bool exec();
|
||||
|
||||
|
@ -142,7 +142,7 @@ public:
|
|||
* Call this method to start the job synchronously.
|
||||
* Awaits completion with no need to connect some slot to the finished() signal first.
|
||||
*
|
||||
* @return Returns true on succeess (QKeychain::NoError).
|
||||
* @return Returns true on success (QKeychain::NoError).
|
||||
*/
|
||||
bool exec();
|
||||
|
||||
|
@ -180,7 +180,7 @@ public:
|
|||
* Call this method to start the job synchronously.
|
||||
* Awaits completion with no need to connect some slot to the finished() signal first.
|
||||
*
|
||||
* @return Returns true on succeess (QKeychain::NoError).
|
||||
* @return Returns true on success (QKeychain::NoError).
|
||||
*/
|
||||
bool exec();
|
||||
|
||||
|
|
|
@ -771,7 +771,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(
|
|||
|
||||
if (opts._vfs->mode() != Vfs::Off && !item->_encryptedFileName.isEmpty()) {
|
||||
// We are syncing a file for the first time (local entry is invalid) and it is encrypted file that will be virtual once synced
|
||||
// to avoid having error of "file has changed during sync" when trying to hydrate it excplicitly - we must remove Constants::e2EeTagSize bytes from the end
|
||||
// to avoid having error of "file has changed during sync" when trying to hydrate it explicitly - we must remove Constants::e2EeTagSize bytes from the end
|
||||
// as explicit hydration does not care if these bytes are present in the placeholder or not, but, the size must not change in the middle of the sync
|
||||
// this way it works for both implicit and explicit hydration by making a placeholder size that does not includes encryption tag Constants::e2EeTagSize bytes
|
||||
// another scenario - we are syncing a file which is on disk but not in the database (database was removed or file was not written there yet)
|
||||
|
@ -1503,7 +1503,7 @@ void ProcessDirectoryJob::processFileConflict(const SyncFileItemPtr &item, Proce
|
|||
|
||||
// Do we have an UploadInfo for this?
|
||||
// Maybe the Upload was completed, but the connection was broken just before
|
||||
// we recieved the etag (Issue #5106)
|
||||
// we received the etag (Issue #5106)
|
||||
auto up = _discoveryData->_statedb->getUploadInfo(path._original);
|
||||
if (up._valid && up._contentChecksum == serverEntry.checksumHeader) {
|
||||
// Solve the conflict into an upload, or nothing
|
||||
|
|
|
@ -518,7 +518,7 @@ private:
|
|||
};
|
||||
|
||||
/**
|
||||
* @brief A basic job around a network request without extra funtionality
|
||||
* @brief A basic job around a network request without extra functionality
|
||||
* @ingroup libsync
|
||||
*
|
||||
* Primarily adds timeout and redirection handling.
|
||||
|
|
|
@ -425,7 +425,7 @@ void OwncloudPropagator::adjustDeletedFoldersWithNewChildren(SyncFileItemVector
|
|||
/*
|
||||
process each item that is new and is a directory and make sure every parent in its tree has the instruction CSYNC_INSTRUCTION_NEW
|
||||
instead of CSYNC_INSTRUCTION_REMOVE
|
||||
NOTE: We are iterating backwords to take advantage of optimization later, when searching for the parent of current it
|
||||
NOTE: We are iterating backwards to take advantage of optimization later, when searching for the parent of current it
|
||||
*/
|
||||
for (auto it = std::crbegin(items); it != std::crend(items); ++it) {
|
||||
if ((*it)->_instruction != CSYNC_INSTRUCTION_NEW || (*it)->_direction != SyncFileItem::Up || !(*it)->isDirectory() || (*it)->_file == QStringLiteral("/")) {
|
||||
|
@ -441,7 +441,7 @@ void OwncloudPropagator::adjustDeletedFoldersWithNewChildren(SyncFileItemVector
|
|||
if (itemRootFolderName.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
// #2 iterate backwords (for optimization) and find the root folder by name
|
||||
// #2 iterate backwards (for optimization) and find the root folder by name
|
||||
const auto itemRootFolderReverseIt = std::find_if(it, std::crend(items), [&itemRootFolderName](const auto ¤tItem) {
|
||||
return currentItem->_file == itemRootFolderName;
|
||||
});
|
||||
|
|
|
@ -456,7 +456,7 @@ public:
|
|||
bool _abortRequested = false;
|
||||
|
||||
/** The list of currently active jobs.
|
||||
This list contains the jobs that are currently using ressources and is used purely to
|
||||
This list contains the jobs that are currently using resources and is used purely to
|
||||
know how many jobs there is currently running for the scheduler.
|
||||
Jobs add themself to the list when they do an assynchronous operation.
|
||||
Jobs can be several time on the list (example, when several chunks are uploaded in parallel)
|
||||
|
@ -468,7 +468,7 @@ public:
|
|||
|
||||
/** Per-folder quota guesses.
|
||||
*
|
||||
* This starts out empty. When an upload in a folder fails due to insufficent
|
||||
* This starts out empty. When an upload in a folder fails due to insufficient
|
||||
* remote quota, the quota guess is updated to be attempted_size-1 at maximum.
|
||||
*
|
||||
* Note that it will usually just an upper limit for the actual quota - but
|
||||
|
|
|
@ -82,7 +82,7 @@ inline SyncFileItem::Status classifyError(QNetworkReply::NetworkError nerror,
|
|||
}
|
||||
|
||||
if (httpCode == 503) {
|
||||
// When the server is in maintenance mode, we want to exit the sync immediatly
|
||||
// When the server is in maintenance mode, we want to exit the sync immediately
|
||||
// so that we do not flood the server with many requests
|
||||
// BUG: This relies on a translated string and is thus unreliable.
|
||||
// In the future it should return a NormalError and trigger a status.php
|
||||
|
|
|
@ -285,8 +285,8 @@ ProgressInfo::Estimates ProgressInfo::totalProgress() const
|
|||
// on the upload speed. That's particularly relevant for large file
|
||||
// up/downloads, where files per second will be close to 0.
|
||||
//
|
||||
// However, when many *small* files are transfered, the estimate
|
||||
// can become very pessimistic as the transfered amount per second
|
||||
// However, when many *small* files are transferred, the estimate
|
||||
// can become very pessimistic as the transferred amount per second
|
||||
// drops significantly.
|
||||
//
|
||||
// So, if we detect a high rate of files per second or a very low
|
||||
|
@ -324,7 +324,7 @@ quint64 ProgressInfo::optimisticEta() const
|
|||
{
|
||||
// This assumes files and transfers finish as quickly as possible
|
||||
// *but* note that maxPerSecond could be serious underestimate
|
||||
// (if we never got to fully excercise transfer or files/second)
|
||||
// (if we never got to fully exercise transfer or files/second)
|
||||
|
||||
return _fileProgress.remaining() / _maxFilesPerSecond * 1000
|
||||
+ _sizeProgress.remaining() / _maxBytesPerSecond * 1000;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
/*
|
||||
* Removing the root encrypted folder is consisted of multiple steps:
|
||||
* - 1st step is to obtain the folderID via LsColJob so it then can be used for the next step
|
||||
* - 2nd step is to lock the root folder useing the folderID from the previous step. !!! NOTE: If there are no nested items in the folder, this, and subsequent steps are skipped until step 7.
|
||||
* - 2nd step is to lock the root folder using the folderID from the previous step. !!! NOTE: If there are no nested items in the folder, this, and subsequent steps are skipped until step 7.
|
||||
* - 3rd step is to obtain the root folder's metadata (it contains list of nested files and folders)
|
||||
* - 4th step is to remove the nested files and folders from the metadata and send it to the server via UpdateMetadataApiJob
|
||||
* - 5th step is to trigger DeleteJob for every nested file and folder of the root folder
|
||||
|
|
|
@ -368,7 +368,7 @@ void PropagateUploadFileCommon::slotComputeTransmissionChecksum(const QByteArray
|
|||
|
||||
void PropagateUploadFileCommon::slotStartUpload(const QByteArray &transmissionChecksumType, const QByteArray &transmissionChecksum)
|
||||
{
|
||||
// Remove ourselfs from the list of active job, before any posible call to done()
|
||||
// Remove ourselves from the list of active job, before any possible call to done()
|
||||
// When we start chunks, we will add it again, once for every chunks.
|
||||
propagator()->_activeJobList.removeOne(this);
|
||||
|
||||
|
@ -723,7 +723,7 @@ void PropagateUploadFileCommon::slotJobDestroyed(QObject *job)
|
|||
_jobs.erase(std::remove(_jobs.begin(), _jobs.end(), job), _jobs.end());
|
||||
}
|
||||
|
||||
// This function is used whenever there is an error occuring and jobs might be in progress
|
||||
// This function is used whenever there is an error occurring and jobs might be in progress
|
||||
void PropagateUploadFileCommon::abortWithError(SyncFileItem::Status status, const QString &error)
|
||||
{
|
||||
if (_aborting)
|
||||
|
@ -864,7 +864,7 @@ void PropagateUploadFileCommon::abortNetworkJobs(
|
|||
|
||||
// Abort the job
|
||||
if (abortType == AbortType::Asynchronous) {
|
||||
// Connect to finished signal of job reply to asynchonously finish the abort
|
||||
// Connect to finished signal of job reply to asynchronously finish the abort
|
||||
connect(reply, &QNetworkReply::finished, this, oneAbortFinished);
|
||||
}
|
||||
reply->abort();
|
||||
|
|
|
@ -264,7 +264,7 @@ private slots:
|
|||
void slotStartUpload(const QByteArray &transmissionChecksumType, const QByteArray &transmissionChecksum);
|
||||
// invoked when encrypted folder lock has been released
|
||||
void slotFolderUnlocked(const QByteArray &folderId, int httpReturnCode);
|
||||
// invoked on internal error to unlock a folder and faile
|
||||
// invoked on internal error to unlock a folder and failed
|
||||
void slotOnErrorStartFolderUnlock(SyncFileItem::Status status, const QString &errorString);
|
||||
|
||||
public:
|
||||
|
@ -325,7 +325,7 @@ private:
|
|||
/**
|
||||
* @ingroup libsync
|
||||
*
|
||||
* Propagation job, impementing the old chunking agorithm
|
||||
* Propagation job, implementing the old chunking algorithm
|
||||
*
|
||||
*/
|
||||
class PropagateUploadFileV1 : public PropagateUploadFileCommon
|
||||
|
@ -372,7 +372,7 @@ private slots:
|
|||
/**
|
||||
* @ingroup libsync
|
||||
*
|
||||
* Propagation job, impementing the new chunking agorithm
|
||||
* Propagation job, implementing the new chunking algorithm
|
||||
*
|
||||
*/
|
||||
class PropagateUploadFileNG : public PropagateUploadFileCommon
|
||||
|
|
|
@ -63,7 +63,7 @@ void PropagateUploadEncrypted::start()
|
|||
}
|
||||
|
||||
/* We try to lock a folder, if it's locked we try again in one second.
|
||||
* if it's still locked we try again in one second. looping untill one minute.
|
||||
* if it's still locked we try again in one second. looping until one minute.
|
||||
* -> fail.
|
||||
* the 'loop': /
|
||||
* slotFolderEncryptedIdReceived -> slotTryLock -> lockError -> stillTime? -> slotTryLock
|
||||
|
@ -231,7 +231,7 @@ void PropagateUploadEncrypted::slotUpdateMetadataSuccess(const QByteArray& fileI
|
|||
QFileInfo outputInfo(_completeFileName);
|
||||
|
||||
qCDebug(lcPropagateUploadEncrypted) << "Encrypted Info:" << outputInfo.path() << outputInfo.fileName() << outputInfo.size();
|
||||
qCDebug(lcPropagateUploadEncrypted) << "Finalizing the upload part, now the actuall uploader will take over";
|
||||
qCDebug(lcPropagateUploadEncrypted) << "Finalizing the upload part, now the actual uploader will take over";
|
||||
emit finalized(outputInfo.path() + QLatin1Char('/') + outputInfo.fileName(),
|
||||
_remoteParentPath + QLatin1Char('/') + outputInfo.fileName(),
|
||||
outputInfo.size());
|
||||
|
|
|
@ -56,7 +56,7 @@ private slots:
|
|||
void slotUpdateMetadataError(const QByteArray& fileId, int httpReturnCode);
|
||||
|
||||
signals:
|
||||
// Emmited after the file is encrypted and everythign is setup.
|
||||
// Emitted after the file is encrypted and everything is setup.
|
||||
void finalized(const QString& path, const QString& filename, quint64 size);
|
||||
void error();
|
||||
void folderUnlocked(const QByteArray &folderId, int httpStatus);
|
||||
|
|
|
@ -256,7 +256,7 @@ void PropagateUploadFileV1::slotPutFinished()
|
|||
}
|
||||
}
|
||||
|
||||
// Check whether the file changed since discovery. the file check here is the original and not the temprary.
|
||||
// Check whether the file changed since discovery. the file check here is the original and not the temporary.
|
||||
Q_ASSERT(_item->_modtime > 0);
|
||||
if (_item->_modtime <= 0) {
|
||||
qCWarning(lcPropagateUpload()) << "invalid modified time" << _item->_file << _item->_modtime;
|
||||
|
|
|
@ -198,7 +198,7 @@ void PushNotifications::handleAuthenticated()
|
|||
emit ready();
|
||||
|
||||
// We maybe reconnected to websocket while being offline for a
|
||||
// while. To not miss any notifications that may have happend,
|
||||
// while. To not miss any notifications that may have happened,
|
||||
// emit all the signals once.
|
||||
emitFilesChanged();
|
||||
emitNotificationsChanged();
|
||||
|
|
|
@ -296,7 +296,7 @@ void SyncEngine::conflictRecordMaintenance()
|
|||
// If so, add them now.
|
||||
//
|
||||
// This happens when the conflicts table is new or when conflict files
|
||||
// are downlaoded but the server doesn't send conflict headers.
|
||||
// are downloaded but the server doesn't send conflict headers.
|
||||
for (const auto &path : qAsConst(_seenConflictFiles)) {
|
||||
ASSERT(Utility::isConflictFile(path));
|
||||
|
||||
|
@ -1177,7 +1177,7 @@ void SyncEngine::wipeVirtualFiles(const QString &localPath, SyncJournalDb &journ
|
|||
});
|
||||
|
||||
if (!resGetFilesBelowPath) {
|
||||
qCWarning(lcEngine) << "Faied to get files below path" << localPath;
|
||||
qCWarning(lcEngine) << "Failed to get files below path" << localPath;
|
||||
}
|
||||
|
||||
journal.forceRemoteDiscoveryNextSync();
|
||||
|
@ -1204,7 +1204,7 @@ void SyncEngine::switchToVirtualFiles(const QString &localPath, SyncJournalDb &j
|
|||
});
|
||||
|
||||
if (!res) {
|
||||
qCWarning(lcEngine) << "Faied to get files below path" << localPath;
|
||||
qCWarning(lcEngine) << "Failed to get files below path" << localPath;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ signals:
|
|||
void started();
|
||||
|
||||
/**
|
||||
* Emited when the sync engine detects that all the files have been removed or change.
|
||||
* Emitted when the sync engine detects that all the files have been removed or change.
|
||||
* This usually happen when the server was reset or something.
|
||||
* Set *cancel to true in a slot connected from this signal to abort the sync.
|
||||
*/
|
||||
|
@ -211,7 +211,7 @@ private slots:
|
|||
void slotItemCompleted(const OCC::SyncFileItemPtr &item, const OCC::ErrorCategory category);
|
||||
void slotDiscoveryFinished();
|
||||
void slotPropagationFinished(bool success);
|
||||
void slotProgress(const OCC::SyncFileItem &item, qint64 curent);
|
||||
void slotProgress(const OCC::SyncFileItem &item, qint64 current);
|
||||
void slotCleanPollsJobAborted(const QString &error, const OCC::ErrorCategory category);
|
||||
|
||||
/** Records that a file was touched by a job. */
|
||||
|
@ -313,7 +313,7 @@ private:
|
|||
|
||||
static bool s_anySyncRunning; //true when one sync is running somewhere (for debugging)
|
||||
|
||||
// Must only be acessed during update and reconcile
|
||||
// Must only be accessed during update and reconcile
|
||||
QVector<SyncFileItemPtr> _syncItems;
|
||||
|
||||
AccountPtr _account;
|
||||
|
|
|
@ -136,7 +136,7 @@ SyncFileStatus SyncFileStatusTracker::fileStatus(const QString &relativePath)
|
|||
// that the status of CSYNC_FILE_EXCLUDE_LIST excludes will change if the user
|
||||
// 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.
|
||||
// it's an acceptable compromise to treat all exclude types the same.
|
||||
// Update: This extra check shouldn't hurt even though silently excluded files
|
||||
// are now available via slotAddSilentlyExcluded().
|
||||
if (_syncEngine->excludedFiles().isExcluded(_syncEngine->localPath() + relativePath,
|
||||
|
@ -287,7 +287,7 @@ void SyncFileStatusTracker::slotItemCompleted(const SyncFileItemPtr &item)
|
|||
&& item->_instruction != CSYNC_INSTRUCTION_UPDATE_METADATA
|
||||
&& item->_instruction != CSYNC_INSTRUCTION_IGNORE
|
||||
&& item->_instruction != CSYNC_INSTRUCTION_ERROR) {
|
||||
// decSyncCount calls *must* be symetric with incSyncCount calls in slotAboutToPropagate
|
||||
// decSyncCount calls *must* be symmetric with incSyncCount calls in slotAboutToPropagate
|
||||
decSyncCountAndEmitStatusChanged(item->destination(), sharedFlag);
|
||||
} else {
|
||||
emit fileStatusChanged(getSystemDestination(item->destination()), resolveSyncAndErrorStatus(item->destination(), sharedFlag));
|
||||
|
|
|
@ -106,7 +106,7 @@ public:
|
|||
|
||||
private:
|
||||
/**
|
||||
* Only sync files that mathc the expression
|
||||
* Only sync files that match the expression
|
||||
* Invalid pattern by default.
|
||||
*/
|
||||
QRegularExpression _fileRegex = QRegularExpression(QStringLiteral("("));
|
||||
|
|
|
@ -278,9 +278,9 @@ public:
|
|||
[[nodiscard]] bool doNotUseProxy() const;
|
||||
|
||||
/**
|
||||
* This is only usefull when previous version had a different overrideServerUrl
|
||||
* This is only useful when previous version had a different overrideServerUrl
|
||||
* with a different auth type in that case You should then specify "http" or "shibboleth".
|
||||
* Normaly this should be left empty.
|
||||
* Normally this should be left empty.
|
||||
*/
|
||||
[[nodiscard]] QString forceConfigAuthType() const;
|
||||
|
||||
|
@ -352,7 +352,7 @@ public:
|
|||
void setSystrayUseMonoIcons(bool mono);
|
||||
|
||||
/**
|
||||
* Retrieve wether to use mono icons for systray
|
||||
* Retrieve whether to use mono icons for systray
|
||||
*/
|
||||
[[nodiscard]] bool systrayUseMonoIcons() const;
|
||||
|
||||
|
@ -458,7 +458,7 @@ public:
|
|||
/**
|
||||
* @brief the server folder that should be queried for the quota information
|
||||
*
|
||||
* This can be configured to show the quota infromation for a different
|
||||
* This can be configured to show the quota information for a different
|
||||
* folder than the root. This is the folder on which the client will do
|
||||
* PROPFIND calls to get "quota-available-bytes" and "quota-used-bytes"
|
||||
*
|
||||
|
|
|
@ -143,7 +143,7 @@ void UpdateFileDropMetadataJob::slotUpdateMetadataSuccess(const QByteArray &file
|
|||
Q_UNUSED(fileId);
|
||||
qCDebug(lcUpdateFileDropMetadataJob) << "Uploading of the metadata success, Encrypting the file";
|
||||
|
||||
qCDebug(lcUpdateFileDropMetadataJob) << "Finalizing the upload part, now the actuall uploader will take over";
|
||||
qCDebug(lcUpdateFileDropMetadataJob) << "Finalizing the upload part, now the actual uploader will take over";
|
||||
unlockFolder();
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ if(NOT DEFINED CUSTOM_STATE_ICON_INDEX_OFFSET)
|
|||
set(CUSTOM_STATE_ICON_INDEX_OFFSET 1)
|
||||
endif()
|
||||
|
||||
# indeces used for referencing icon within the binary's resources and .rc file's IDI_ICON{i} entries 'i'
|
||||
# indices used for referencing icon within the binary's resources and .rc file's IDI_ICON{i} entries 'i'
|
||||
if(NOT DEFINED CUSTOM_STATE_ICON_LOCKED_INDEX)
|
||||
set(CUSTOM_STATE_ICON_LOCKED_INDEX 1)
|
||||
endif()
|
||||
|
|
|
@ -1051,7 +1051,7 @@ QNetworkReply *FakeQNAM::createRequest(QNetworkAccessManager::Operation op, cons
|
|||
|
||||
auto verb = newRequest.attribute(QNetworkRequest::CustomVerbAttribute);
|
||||
if (verb == QLatin1String("PROPFIND")) {
|
||||
// Ignore outgoingData always returning somethign good enough, works for now.
|
||||
// Ignore outgoingData always returning something good enough, works for now.
|
||||
reply = new FakePropfindReply { info, op, newRequest, this };
|
||||
} else if (verb == QLatin1String("GET") || op == QNetworkAccessManager::GetOperation) {
|
||||
reply = new FakeGetReply { info, op, newRequest, this };
|
||||
|
|
|
@ -181,7 +181,7 @@ private slots:
|
|||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(aboutToRemoveAllFilesCalled, 0);
|
||||
|
||||
// Do some change localy
|
||||
// Do some change locally
|
||||
fakeFolder.localModifier().appendByte("A/a1");
|
||||
|
||||
// reset the server.
|
||||
|
@ -259,7 +259,7 @@ private slots:
|
|||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(fingerprintRequests, 2);
|
||||
auto currentState = fakeFolder.currentLocalState();
|
||||
// Altough the local file is kept as a conflict, the server file is downloaded
|
||||
// Although the local file is kept as a conflict, the server file is downloaded
|
||||
QCOMPARE(currentState.find("A/a1")->contentChar, 'O');
|
||||
auto conflict = findConflict(currentState, "A/a1");
|
||||
QVERIFY(conflict);
|
||||
|
@ -325,7 +325,7 @@ private slots:
|
|||
QStringList() << "A/" << "B/" << "C/" << "S/");
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(fakeFolder.currentLocalState(), FileInfo{}); // all files should be one localy
|
||||
QCOMPARE(fakeFolder.currentLocalState(), FileInfo{}); // all files should be one locally
|
||||
QCOMPARE(fakeFolder.currentRemoteState(), FileInfo::A12_B12_C12_S12()); // Server not changed
|
||||
QCOMPARE(aboutToRemoveAllFilesCalled, 0); // But we did not show the popup
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ private slots:
|
|||
insertFile("err/single_error2", 300, waitAndChain(errorCallback));
|
||||
|
||||
// First sync should finish by itself.
|
||||
// All the things in "success/" should be transfered, the things in "err/" not
|
||||
// All the things in "success/" should be transferred, the things in "err/" not
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
QCOMPARE(nGET, 0);
|
||||
QCOMPARE(*fakeFolder.currentLocalState().find("success"),
|
||||
|
|
|
@ -408,7 +408,7 @@ private slots:
|
|||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
|
||||
// Modify the file localy and start the upload
|
||||
// Modify the file locally and start the upload
|
||||
fakeFolder.localModifier().setContents("A/a0", 'B');
|
||||
fakeFolder.localModifier().appendByte("A/a0");
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ using namespace OCC;
|
|||
|
||||
static constexpr qint64 stopAfter = 3'123'668;
|
||||
|
||||
/* A FakeGetReply that sends max 'fakeSize' bytes, but whose ContentLength has the corect size */
|
||||
/* A FakeGetReply that sends max 'fakeSize' bytes, but whose ContentLength has the correct size */
|
||||
class BrokenFakeGetReply : public FakeGetReply
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -26,7 +26,7 @@ public:
|
|||
{
|
||||
if (aborted)
|
||||
return 0;
|
||||
return std::min(size, fakeSize) + QIODevice::bytesAvailable(); // NOLINT: This is intended to simulare the brokeness
|
||||
return std::min(size, fakeSize) + QIODevice::bytesAvailable(); // NOLINT: This is intended to simulate the brokenness
|
||||
}
|
||||
|
||||
qint64 readData(char *data, qint64 maxlen) override
|
||||
|
|
|
@ -27,7 +27,7 @@ static void applyPermissionsFromName(FileInfo &info) {
|
|||
// https://github.com/owncloud/client/issues/2038
|
||||
static void assertCsyncJournalOk(SyncJournalDb &journal)
|
||||
{
|
||||
// The DB is openend in locked mode: close to allow us to access.
|
||||
// The DB is opened in locked mode: close to allow us to access.
|
||||
journal.close();
|
||||
|
||||
SqlDatabase db;
|
||||
|
@ -283,7 +283,7 @@ private slots:
|
|||
QVERIFY(currentLocalState.find("readonlyDirectory_PERM_M_/subdir_PERM_CK_/subsubdir_PERM_CKDNV_/normalFile_PERM_WVND_.data" ));
|
||||
// new still exist
|
||||
QVERIFY(currentLocalState.find("readonlyDirectory_PERM_M_/newname_PERM_CK_/subsubdir_PERM_CKDNV_/normalFile_PERM_WVND_.data" ));
|
||||
// but is not on server: so remove it localy for the future comarison
|
||||
// but is not on server: so remove it locally for the future comarison
|
||||
fakeFolder.localModifier().remove("readonlyDirectory_PERM_M_/newname_PERM_CK_");
|
||||
|
||||
//2.
|
||||
|
|
|
@ -214,7 +214,7 @@ private slots:
|
|||
|
||||
QVERIFY(fakeServer.waitForTextMessages());
|
||||
// FIXME: This a little bit ugly but I had no better idea how to trigger a error on the websocket client.
|
||||
// The websocket that is retrived through the server is not connected to the ssl error signal.
|
||||
// The websocket that is retrieved through the server is not connected to the ssl error signal.
|
||||
auto pushNotificationsWebSocketChildren = account->pushNotifications()->findChildren<QWebSocket *>();
|
||||
QVERIFY(pushNotificationsWebSocketChildren.size() == 1);
|
||||
emit pushNotificationsWebSocketChildren[0]->sslErrors(QList<QSslError>());
|
||||
|
@ -274,7 +274,7 @@ private slots:
|
|||
auto account = FakeWebSocketServer::createAccount();
|
||||
QVERIFY(fakeServer.authenticateAccount(account));
|
||||
|
||||
// Set the ping timeout interval to zero and check if the server attemps to authenticate again
|
||||
// Set the ping timeout interval to zero and check if the server attempts to authenticate again
|
||||
fakeServer.clearTextMessages();
|
||||
account->pushNotifications()->setPingInterval(0);
|
||||
QVERIFY(fakeServer.authenticateAccount(
|
||||
|
|
|
@ -77,7 +77,7 @@ private slots:
|
|||
QCOMPARE(sizeRequests.count(), 1); // "A/newBigDir";
|
||||
sizeRequests.clear();
|
||||
|
||||
// Simulate that we accept all files by seting a wildcard white list
|
||||
// Simulate that we accept all files by setting a wildcard white list
|
||||
fakeFolder.syncEngine().journal()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList,
|
||||
QStringList() << QLatin1String("/"));
|
||||
fakeFolder.syncEngine().journal()->schedulePathForRemoteDiscovery(QString("A/newBigDir"));
|
||||
|
|
|
@ -25,7 +25,7 @@ private slots:
|
|||
fakeFolder.remoteModifier().remove("A");
|
||||
fakeFolder.localModifier().insert("A/hello.txt");
|
||||
|
||||
// Symetry
|
||||
// Symmetry
|
||||
fakeFolder.localModifier().remove("B");
|
||||
fakeFolder.remoteModifier().insert("B/hello.txt");
|
||||
|
||||
|
@ -35,7 +35,7 @@ private slots:
|
|||
QVERIFY(!fakeFolder.currentRemoteState().find("A/a1"));
|
||||
QVERIFY(fakeFolder.currentRemoteState().find("A/hello.txt"));
|
||||
|
||||
// Symetry
|
||||
// Symmetry
|
||||
QVERIFY(!fakeFolder.currentRemoteState().find("B/b1"));
|
||||
QVERIFY(fakeFolder.currentRemoteState().find("B/hello.txt"));
|
||||
|
||||
|
|
|
@ -1091,7 +1091,7 @@ private slots:
|
|||
return nullptr;
|
||||
});
|
||||
|
||||
// make sure the first sync failes and files get restored to original folder
|
||||
// make sure the first sync fails and files get restored to original folder
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
@ -1142,7 +1142,7 @@ private slots:
|
|||
return nullptr;
|
||||
});
|
||||
|
||||
// make sure the first sync failes and files get restored to original folder
|
||||
// make sure the first sync fails and files get restored to original folder
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
|
|
|
@ -351,7 +351,7 @@ private slots:
|
|||
QCOMPARE(counter.nGET, 1);
|
||||
counter.reset();
|
||||
|
||||
// remove localy, and remote move at the same time
|
||||
// remove locally, and remote move at the same time
|
||||
fakeFolder.localModifier().remove("A/Q/W/a1m");
|
||||
remote.rename("A/Q/W/a1m", "A/Q/W/a1p");
|
||||
remote.rename(prefix + "/A/Q/W/a1m", prefix + "/A/Q/W/a1p");
|
||||
|
@ -814,7 +814,7 @@ private slots:
|
|||
|
||||
// Test that renaming a file within a directory that was renamed on the other side actually do a rename.
|
||||
|
||||
// 1) move the folder alphabeticaly before
|
||||
// 1) move the folder alphabetically before
|
||||
fakeFolder.remoteModifier().rename("A/a1", "A/a1m");
|
||||
fakeFolder.localModifier().rename("A", "_A");
|
||||
fakeFolder.localModifier().rename("B/b1", "B/b1m");
|
||||
|
|
|
@ -259,7 +259,7 @@ private slots:
|
|||
// a single character
|
||||
QVERIFY(!isPathWindowsDrivePartitionRoot("a"));
|
||||
|
||||
// a missing second chracter
|
||||
// a missing second character
|
||||
QVERIFY(!isPathWindowsDrivePartitionRoot("c/"));
|
||||
QVERIFY(!isPathWindowsDrivePartitionRoot("c\\"));
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче