Comparar commits
3 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 0e58dd79da | |||
| 83dfbb933b | |||
| 100603fdc0 |
@@ -89,7 +89,7 @@ struct csync_s {
|
||||
|
||||
/* hooks for checking the white list (uses the update_callback_userdata) */
|
||||
int (*checkSelectiveSyncBlackListHook)(void*, const char*);
|
||||
int (*checkSelectiveSyncNewFolderHook)(void*, const char* /* path */, const char* /* remotePerm */);
|
||||
int (*checkSelectiveSyncNewFolderHook)(void*, const char*);
|
||||
|
||||
|
||||
csync_vio_opendir_hook remote_opendir_hook;
|
||||
|
||||
@@ -436,7 +436,7 @@ static int _csync_detect_update(CSYNC *ctx, const char *file,
|
||||
st->instruction = CSYNC_INSTRUCTION_NEW;
|
||||
|
||||
if (fs->type == CSYNC_VIO_FILE_TYPE_DIRECTORY && ctx->current == REMOTE_REPLICA && ctx->callbacks.checkSelectiveSyncNewFolderHook) {
|
||||
if (ctx->callbacks.checkSelectiveSyncNewFolderHook(ctx->callbacks.update_callback_userdata, path, fs->remotePerm)) {
|
||||
if (ctx->callbacks.checkSelectiveSyncNewFolderHook(ctx->callbacks.update_callback_userdata, path)) {
|
||||
csync_file_stat_free(st);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -646,6 +646,12 @@ X-GNOME-Autostart-Delay=3
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
|
||||
GenericName[oc]=Dorsièr de Sincronizacion
|
||||
|
||||
@@ -675,13 +675,8 @@ void AccountSettings::refreshSelectiveSyncStatus()
|
||||
ui->selectiveSyncButtons->setVisible(true);
|
||||
ui->bigFolderUi->setVisible(false);
|
||||
} else {
|
||||
ConfigFile cfg;
|
||||
QString info =
|
||||
!cfg.confirmExternalStorage() ? tr("There are folders that were not synchronized because they are too big: ") :
|
||||
!cfg.newBigFolderSizeLimit().first ? tr("There are folders that were not synchronized because they are external storages: ") :
|
||||
tr("There are folders that were not synchronized because they are too big or external storages: ");
|
||||
|
||||
ui->selectiveSyncNotification->setText(info + msg);
|
||||
QString wholeMsg = tr("There are new folders that were not synchronized because they are too big: ") + msg;
|
||||
ui->selectiveSyncNotification->setText(wholeMsg);
|
||||
ui->selectiveSyncButtons->setVisible(false);
|
||||
ui->bigFolderUi->setVisible(true);
|
||||
shouldBeVisible = true;
|
||||
|
||||
+7
-12
@@ -104,8 +104,7 @@ Folder::Folder(const FolderDefinition& definition,
|
||||
connect(_engine.data(), SIGNAL(transmissionProgress(ProgressInfo)), this, SLOT(slotTransmissionProgress(ProgressInfo)));
|
||||
connect(_engine.data(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)),
|
||||
this, SLOT(slotItemCompleted(const SyncFileItem &, const PropagatorJob &)));
|
||||
connect(_engine.data(), SIGNAL(newBigFolder(QString,bool)),
|
||||
this, SLOT(slotNewBigFolderDiscovered(QString,bool)));
|
||||
connect(_engine.data(), SIGNAL(newBigFolder(QString)), this, SLOT(slotNewBigFolderDiscovered(QString)));
|
||||
connect(_engine.data(), SIGNAL(seenLockedFile(QString)), FolderMan::instance(), SLOT(slotSyncOnceFileUnlocks(QString)));
|
||||
connect(_engine.data(), SIGNAL(aboutToPropagate(SyncFileItemVector&)),
|
||||
SLOT(slotLogPropagationStart()));
|
||||
@@ -749,12 +748,10 @@ void Folder::startSync(const QStringList &pathList)
|
||||
|
||||
setDirtyNetworkLimits();
|
||||
|
||||
SyncOptions opt;
|
||||
ConfigFile cfgFile;
|
||||
auto newFolderLimit = cfgFile.newBigFolderSizeLimit();
|
||||
opt._newBigFolderSizeLimit = newFolderLimit.first ? newFolderLimit.second * 1000LL * 1000LL : -1; // convert from MB to B
|
||||
opt._confirmExternalStorage = cfgFile.confirmExternalStorage();
|
||||
_engine->setSyncOptions(opt);
|
||||
quint64 limit = newFolderLimit.first ? newFolderLimit.second * 1000 * 1000 : -1; // convert from MB to B
|
||||
_engine->setNewBigFolderSizeLimit(limit);
|
||||
|
||||
_engine->setIgnoreHiddenFiles(_definition.ignoreHiddenFiles);
|
||||
|
||||
@@ -931,7 +928,7 @@ void Folder::slotItemCompleted(const SyncFileItem &item, const PropagatorJob& jo
|
||||
emit ProgressDispatcher::instance()->itemCompleted(alias(), item, job);
|
||||
}
|
||||
|
||||
void Folder::slotNewBigFolderDiscovered(const QString &newF, bool isExternal)
|
||||
void Folder::slotNewBigFolderDiscovered(const QString &newF)
|
||||
{
|
||||
auto newFolder = newF;
|
||||
if (!newFolder.endsWith(QLatin1Char('/'))) {
|
||||
@@ -956,11 +953,9 @@ void Folder::slotNewBigFolderDiscovered(const QString &newF, bool isExternal)
|
||||
journal->setSelectiveSyncList(SyncJournalDb::SelectiveSyncUndecidedList, undecidedList);
|
||||
emit newBigFolderDiscovered(newFolder);
|
||||
}
|
||||
QString message = !isExternal ?
|
||||
(tr("A new folder larger than %1 MB has been added: %2.\n")
|
||||
.arg(ConfigFile().newBigFolderSizeLimit().second).arg(newF))
|
||||
: (tr("A folder from an external storage has been added.\n"));
|
||||
message += tr("Please go in the settings to select it if you wish to download it.");
|
||||
QString message = tr("A new folder larger than %1 MB has been added: %2.\n"
|
||||
"Please go in the settings to select it if you wish to download it.")
|
||||
.arg(ConfigFile().newBigFolderSizeLimit().second).arg(newF);
|
||||
|
||||
auto logger = Logger::instance();
|
||||
logger->postOptionalGuiLog(Theme::instance()->appNameGUI(), message);
|
||||
|
||||
+1
-1
@@ -290,7 +290,7 @@ private slots:
|
||||
|
||||
void slotEmitFinishedDelayed();
|
||||
|
||||
void slotNewBigFolderDiscovered(const QString &, bool isExternal);
|
||||
void slotNewBigFolderDiscovered(const QString &);
|
||||
|
||||
void slotLogPropagationStart();
|
||||
|
||||
|
||||
@@ -29,14 +29,6 @@ Q_DECLARE_METATYPE(QPersistentModelIndex)
|
||||
namespace OCC {
|
||||
|
||||
static const char propertyParentIndexC[] = "oc_parentIndex";
|
||||
static const char propertyPermissionMap[] = "oc_permissionMap";
|
||||
|
||||
static QString removeTrailingSlash(const QString &s) {
|
||||
if (s.endsWith('/')) {
|
||||
return s.left(s.size() - 1);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
FolderStatusModel::FolderStatusModel(QObject *parent)
|
||||
:QAbstractItemModel(parent), _accountState(0), _dirty(false)
|
||||
@@ -170,7 +162,7 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
|
||||
case Qt::CheckStateRole:
|
||||
return x._checked;
|
||||
case Qt::DecorationRole:
|
||||
return QFileIconProvider().icon(x._isExternal ? QFileIconProvider::Network : QFileIconProvider::Folder);
|
||||
return QFileIconProvider().icon(QFileIconProvider::Folder);
|
||||
case Qt::ForegroundRole:
|
||||
if (x._isUndecided) {
|
||||
return QColor(Qt::red);
|
||||
@@ -376,9 +368,6 @@ FolderStatusModel::SubFolderInfo* FolderStatusModel::infoForIndex(const QModelIn
|
||||
if (parentInfo->hasLabel()) {
|
||||
return 0;
|
||||
}
|
||||
if (index.row() >= parentInfo->_subs.size()) {
|
||||
return 0;
|
||||
}
|
||||
return &parentInfo->_subs[index.row()];
|
||||
} else {
|
||||
if (index.row() >= _folders.count()) {
|
||||
@@ -548,15 +537,12 @@ void FolderStatusModel::fetchMore(const QModelIndex& parent)
|
||||
path += info->_path;
|
||||
}
|
||||
LsColJob *job = new LsColJob(_accountState->account(), path, this);
|
||||
job->setProperties(QList<QByteArray>() << "resourcetype" << "http://owncloud.org/ns:size" << "http://owncloud.org/ns:permissions");
|
||||
job->setProperties(QList<QByteArray>() << "resourcetype" << "http://owncloud.org/ns:size");
|
||||
job->setTimeout(60 * 1000);
|
||||
connect(job, SIGNAL(directoryListingSubfolders(QStringList)),
|
||||
SLOT(slotUpdateDirectories(QStringList)));
|
||||
connect(job, SIGNAL(finishedWithError(QNetworkReply*)),
|
||||
this, SLOT(slotLscolFinishedWithError(QNetworkReply*)));
|
||||
connect(job, SIGNAL(directoryListingIterated(const QString&, const QMap<QString,QString>&)),
|
||||
this, SLOT(slotGatherPermissions(const QString&, const QMap<QString,QString>&)));
|
||||
|
||||
job->start();
|
||||
|
||||
QPersistentModelIndex persistentIndex(parent);
|
||||
@@ -567,20 +553,6 @@ void FolderStatusModel::fetchMore(const QModelIndex& parent)
|
||||
QTimer::singleShot(1000, this, SLOT(slotShowFetchProgress()));
|
||||
}
|
||||
|
||||
void FolderStatusModel::slotGatherPermissions(const QString &href, const QMap<QString,QString> &map)
|
||||
{
|
||||
auto it = map.find("permissions");
|
||||
if (it == map.end())
|
||||
return;
|
||||
|
||||
auto job = sender();
|
||||
auto permissionMap = job->property(propertyPermissionMap).toMap();
|
||||
job->setProperty(propertyPermissionMap, QVariant()); // avoid a detach of the map while it is modified
|
||||
Q_ASSERT(!href.endsWith(QLatin1Char('/'))); // LsColXMLParser::parse removes the trailing slash before calling us.
|
||||
permissionMap[href] = *it;
|
||||
job->setProperty(propertyPermissionMap, permissionMap);
|
||||
}
|
||||
|
||||
void FolderStatusModel::slotUpdateDirectories(const QStringList &list)
|
||||
{
|
||||
auto job = qobject_cast<LsColJob *>(sender());
|
||||
@@ -626,7 +598,6 @@ void FolderStatusModel::slotUpdateDirectories(const QStringList &list)
|
||||
selectiveSyncUndecidedSet.insert(str);
|
||||
}
|
||||
}
|
||||
const auto permissionMap = job->property(propertyPermissionMap).toMap();
|
||||
|
||||
QStringList sortedSubfolders = list;
|
||||
// skip the parent item (first in the list)
|
||||
@@ -647,8 +618,8 @@ void FolderStatusModel::slotUpdateDirectories(const QStringList &list)
|
||||
newInfo._folder = parentInfo->_folder;
|
||||
newInfo._pathIdx = parentInfo->_pathIdx;
|
||||
newInfo._pathIdx << newSubs.size();
|
||||
newInfo._size = job->_sizes.value(path);
|
||||
newInfo._isExternal = permissionMap.value(removeTrailingSlash(path)).toString().contains("M");
|
||||
auto size = job ? job->_sizes.value(path) : 0;
|
||||
newInfo._size = size;
|
||||
newInfo._path = relativePath;
|
||||
newInfo._name = relativePath.split('/', QString::SkipEmptyParts).last();
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
|
||||
struct SubFolderInfo {
|
||||
SubFolderInfo()
|
||||
: _folder(0), _size(0), _isExternal(false), _fetched(false), _fetching(false),
|
||||
: _folder(0), _size(0), _fetched(false), _fetching(false),
|
||||
_hasError(false), _fetchingLabel(false), _isUndecided(false), _checked(Qt::Checked) {}
|
||||
Folder *_folder;
|
||||
QString _name;
|
||||
@@ -59,7 +59,6 @@ public:
|
||||
QVector<int> _pathIdx;
|
||||
QVector<SubFolderInfo> _subs;
|
||||
qint64 _size;
|
||||
bool _isExternal;
|
||||
|
||||
bool _fetched; // If we did the LSCOL for this folder already
|
||||
bool _fetching; // Whether a LSCOL job is currently running
|
||||
@@ -114,7 +113,6 @@ public slots:
|
||||
|
||||
private slots:
|
||||
void slotUpdateDirectories(const QStringList &);
|
||||
void slotGatherPermissions(const QString &name, const QMap<QString,QString> &properties);
|
||||
void slotLscolFinishedWithError(QNetworkReply *r);
|
||||
void slotFolderSyncStateChange(Folder* f);
|
||||
void slotFolderScheduleQueueChanged();
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
|
||||
#include <QNetworkProxy>
|
||||
#include <QDir>
|
||||
#include <QScopedValueRollback>
|
||||
|
||||
namespace OCC {
|
||||
|
||||
@@ -67,7 +66,6 @@ GeneralSettings::GeneralSettings(QWidget *parent) :
|
||||
connect(_ui->crashreporterCheckBox, SIGNAL(toggled(bool)), SLOT(saveMiscSettings()));
|
||||
connect(_ui->newFolderLimitCheckBox, SIGNAL(toggled(bool)), SLOT(saveMiscSettings()));
|
||||
connect(_ui->newFolderLimitSpinBox, SIGNAL(valueChanged(int)), SLOT(saveMiscSettings()));
|
||||
connect(_ui->newExternalStorage, SIGNAL(toggled(bool)), SLOT(saveMiscSettings()));
|
||||
|
||||
#ifndef WITH_CRASHREPORTER
|
||||
_ui->crashreporterCheckBox->setVisible(false);
|
||||
@@ -87,9 +85,6 @@ GeneralSettings::GeneralSettings(QWidget *parent) :
|
||||
_ui->monoIconsCheckBox->setVisible(QDir(themeDir).exists());
|
||||
|
||||
connect(_ui->ignoredFilesButton, SIGNAL(clicked()), SLOT(slotIgnoreFilesEditor()));
|
||||
|
||||
// accountAdded means the wizard was finished and the wizard might change some options.
|
||||
connect(AccountManager::instance(), SIGNAL(accountAdded(AccountState*)), this, SLOT(loadMiscSettings()));
|
||||
}
|
||||
|
||||
GeneralSettings::~GeneralSettings()
|
||||
@@ -104,7 +99,6 @@ QSize GeneralSettings::sizeHint() const {
|
||||
|
||||
void GeneralSettings::loadMiscSettings()
|
||||
{
|
||||
QScopedValueRollback<bool> scope(_currentlyLoading, true);
|
||||
ConfigFile cfgFile;
|
||||
_ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons());
|
||||
_ui->desktopNotificationsCheckBox->setChecked(cfgFile.optionalDesktopNotifications());
|
||||
@@ -112,8 +106,6 @@ void GeneralSettings::loadMiscSettings()
|
||||
auto newFolderLimit = cfgFile.newBigFolderSizeLimit();
|
||||
_ui->newFolderLimitCheckBox->setChecked(newFolderLimit.first);
|
||||
_ui->newFolderLimitSpinBox->setValue(newFolderLimit.second);
|
||||
_ui->newExternalStorage->setChecked(cfgFile.confirmExternalStorage());
|
||||
_ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons());
|
||||
}
|
||||
|
||||
void GeneralSettings::slotUpdateInfo()
|
||||
@@ -138,8 +130,6 @@ void GeneralSettings::slotUpdateInfo()
|
||||
|
||||
void GeneralSettings::saveMiscSettings()
|
||||
{
|
||||
if (_currentlyLoading)
|
||||
return;
|
||||
ConfigFile cfgFile;
|
||||
bool isChecked = _ui->monoIconsCheckBox->isChecked();
|
||||
cfgFile.setMonoIcons(isChecked);
|
||||
@@ -148,7 +138,6 @@ void GeneralSettings::saveMiscSettings()
|
||||
|
||||
cfgFile.setNewBigFolderSizeLimit(_ui->newFolderLimitCheckBox->isChecked(),
|
||||
_ui->newFolderLimitSpinBox->value());
|
||||
cfgFile.setConfirmExternalStorage(_ui->newExternalStorage->isChecked());
|
||||
}
|
||||
|
||||
void GeneralSettings::slotToggleLaunchOnStartup(bool enable)
|
||||
|
||||
@@ -45,14 +45,13 @@ private slots:
|
||||
void slotToggleOptionalDesktopNotifications(bool);
|
||||
void slotUpdateInfo();
|
||||
void slotIgnoreFilesEditor();
|
||||
void loadMiscSettings();
|
||||
|
||||
private:
|
||||
void loadMiscSettings();
|
||||
|
||||
Ui::GeneralSettings *_ui;
|
||||
QPointer<IgnoreListEditor> _ignoreEditor;
|
||||
QPointer<SyncLogDialog> _syncLogDialog;
|
||||
bool _currentlyLoading = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>785</width>
|
||||
<width>706</width>
|
||||
<height>523</height>
|
||||
</rect>
|
||||
</property>
|
||||
@@ -52,37 +52,33 @@
|
||||
<property name="title">
|
||||
<string>Advanced</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QPushButton" name="ignoredFilesButton">
|
||||
<property name="text">
|
||||
<string>Edit &Ignored Files</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>555</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="ignoredFilesButton">
|
||||
<property name="text">
|
||||
<string>Edit &Ignored Files</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>555</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="newFolderLimitCheckBox">
|
||||
<property name="text">
|
||||
<string>Ask for confirmation before synchronizing folders larger than</string>
|
||||
<string>Ask &confirmation before downloading folders larger than</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
@@ -102,7 +98,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string extracomment="Trailing part of "Ask confirmation before syncing folder larger than" ">MB</string>
|
||||
<string>MB</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -121,14 +117,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="newExternalStorage">
|
||||
<property name="text">
|
||||
<string>Ask for confirmation before synchronizing external storages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="crashreporterCheckBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
@@ -141,6 +130,23 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -533,11 +533,9 @@ void OwncloudSetupWizard::slotAssistantFinished( int result )
|
||||
if (f) {
|
||||
f->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList,
|
||||
_ocWizard->selectiveSyncBlacklist());
|
||||
if (!_ocWizard->isConfirmBigFolderChecked()) {
|
||||
// The user already accepted the selective sync dialog. everything is in the white list
|
||||
f->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList,
|
||||
// The user already accepted the selective sync dialog. everything is in the white list
|
||||
f->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList,
|
||||
QStringList() << QLatin1String("/"));
|
||||
}
|
||||
}
|
||||
_ocWizard->appendToConfigurationLog(tr("<font color=\"green\"><b>Local sync folder %1 successfully created!</b></font>").arg(localFolder));
|
||||
}
|
||||
|
||||
@@ -68,15 +68,6 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage()
|
||||
_ui.lServerIcon->setPixmap(appIcon.pixmap(48));
|
||||
_ui.lLocalIcon->setText(QString());
|
||||
_ui.lLocalIcon->setPixmap(QPixmap(Theme::hidpiFileName(":/client/resources/folder-sync.png")));
|
||||
|
||||
if (theme->wizardHideExternalStorageConfirmationCheckbox()) {
|
||||
_ui.confCheckBoxExternal->hide();
|
||||
}
|
||||
if (theme->wizardHideFolderSizeLimitCheckbox()) {
|
||||
_ui.confCheckBoxSize->hide();
|
||||
_ui.confSpinBox->hide();
|
||||
_ui.confTraillingSizeLabel->hide();
|
||||
}
|
||||
}
|
||||
|
||||
void OwncloudAdvancedSetupPage::setupCustomization()
|
||||
@@ -127,12 +118,6 @@ void OwncloudAdvancedSetupPage::initializePage()
|
||||
_selectiveSyncBlacklist = QStringList("/");
|
||||
QTimer::singleShot(0, this, SLOT(slotSelectiveSyncClicked()));
|
||||
}
|
||||
|
||||
ConfigFile cfgFile;
|
||||
auto newFolderLimit = cfgFile.newBigFolderSizeLimit();
|
||||
_ui.confCheckBoxSize->setChecked(newFolderLimit.first);
|
||||
_ui.confSpinBox->setValue(newFolderLimit.second);
|
||||
_ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage());
|
||||
}
|
||||
|
||||
// Called if the user changes the user- or url field. Adjust the texts and
|
||||
@@ -215,11 +200,6 @@ QStringList OwncloudAdvancedSetupPage::selectiveSyncBlacklist() const
|
||||
return _selectiveSyncBlacklist;
|
||||
}
|
||||
|
||||
bool OwncloudAdvancedSetupPage::isConfirmBigFolderChecked() const
|
||||
{
|
||||
return _ui.rSyncEverything->isChecked() && _ui.confCheckBoxSize->isChecked();
|
||||
}
|
||||
|
||||
bool OwncloudAdvancedSetupPage::validatePage()
|
||||
{
|
||||
if(!_created) {
|
||||
@@ -228,13 +208,6 @@ bool OwncloudAdvancedSetupPage::validatePage()
|
||||
startSpinner();
|
||||
emit completeChanged();
|
||||
|
||||
if (_ui.rSyncEverything->isChecked()) {
|
||||
ConfigFile cfgFile;
|
||||
cfgFile.setNewBigFolderSizeLimit(_ui.confCheckBoxSize->isChecked(),
|
||||
_ui.confSpinBox->value());
|
||||
cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked());
|
||||
}
|
||||
|
||||
emit createLocalAndRemoteFolders(localFolder(), _remoteFolder);
|
||||
return false;
|
||||
} else {
|
||||
|
||||
@@ -41,7 +41,6 @@ public:
|
||||
bool validatePage() Q_DECL_OVERRIDE;
|
||||
QString localFolder() const;
|
||||
QStringList selectiveSyncBlacklist() const;
|
||||
bool isConfirmBigFolderChecked() const;
|
||||
void setRemoteFolder( const QString& remoteFolder);
|
||||
void setMultipleFoldersExist( bool exist );
|
||||
void directoriesCreated();
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>912</width>
|
||||
<height>633</height>
|
||||
<width>917</width>
|
||||
<height>493</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -226,14 +226,11 @@
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rSyncEverything">
|
||||
<property name="text">
|
||||
@@ -266,64 +263,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="horizontalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Minimum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>10</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="confCheckBoxSize">
|
||||
<property name="text">
|
||||
<string>Ask for confirmation before synchroni&zing folders larger than</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="confSpinBox">
|
||||
<property name="maximum">
|
||||
<number>999999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>99</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="confTraillingSizeLabel">
|
||||
<property name="text">
|
||||
<string extracomment="Trailing part of "Ask confirmation before syncing folder larger than" ">MB</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="confCheckBoxExternal">
|
||||
<property name="text">
|
||||
<string>Ask for confirmation before synchronizing e&xternal storages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
@@ -406,70 +345,5 @@
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>rSyncEverything</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>confCheckBoxSize</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>217</x>
|
||||
<y>78</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>298</x>
|
||||
<y>126</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>rSyncEverything</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>confSpinBox</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>311</x>
|
||||
<y>83</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>952</x>
|
||||
<y>134</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>rSyncEverything</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>confTraillingSizeLabel</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>277</x>
|
||||
<y>76</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>1076</x>
|
||||
<y>136</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>rSyncEverything</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>confCheckBoxExternal</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>181</x>
|
||||
<y>78</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>382</x>
|
||||
<y>174</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>506</width>
|
||||
<height>515</height>
|
||||
<width>602</width>
|
||||
<height>193</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -80,7 +80,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Ser&ver Address</string>
|
||||
<string>Server &Address</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>leUrl</cstring>
|
||||
@@ -166,13 +166,10 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>200</height>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
|
||||
@@ -86,6 +86,7 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
|
||||
setTitleFormat(Qt::RichText);
|
||||
setSubTitleFormat(Qt::RichText);
|
||||
setButtonText(QWizard::CustomButton1, tr("Skip folders configuration"));
|
||||
|
||||
}
|
||||
|
||||
void OwncloudWizard::setAccount(AccountPtr account)
|
||||
@@ -108,10 +109,6 @@ QStringList OwncloudWizard::selectiveSyncBlacklist() const
|
||||
return _advancedSetupPage->selectiveSyncBlacklist();
|
||||
}
|
||||
|
||||
bool OwncloudWizard::isConfirmBigFolderChecked() const
|
||||
{
|
||||
return _advancedSetupPage->isConfirmBigFolderChecked();
|
||||
}
|
||||
|
||||
QString OwncloudWizard::ocUrl() const
|
||||
{
|
||||
|
||||
@@ -59,7 +59,6 @@ public:
|
||||
QString ocUrl() const;
|
||||
QString localFolder() const;
|
||||
QStringList selectiveSyncBlacklist() const;
|
||||
bool isConfirmBigFolderChecked() const;
|
||||
|
||||
void enableFinishOnResultWidget(bool enable);
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ set(libsync_SRCS
|
||||
propagateremotedelete.cpp
|
||||
propagateremotemove.cpp
|
||||
propagateremotemkdir.cpp
|
||||
propagatefiles.cpp
|
||||
syncengine.cpp
|
||||
syncfilestatus.cpp
|
||||
syncfilestatustracker.cpp
|
||||
|
||||
@@ -116,6 +116,15 @@ bool Capabilities::chunkingNg() const
|
||||
return _capabilities["dav"].toMap()["chunking"].toByteArray() >= "1.0";
|
||||
}
|
||||
|
||||
bool Capabilities::scheduling() const
|
||||
{
|
||||
static const auto scheduling = qgetenv("OWNCLOUD_SCHEDULING");
|
||||
if (scheduling == "0") return false;
|
||||
if (scheduling == "1") return true;
|
||||
|
||||
return _capabilities["dav"].toMap()["scheduling"].toByteArray() >= "1.0";
|
||||
}
|
||||
|
||||
bool Capabilities::chunkingParallelUploadDisabled() const
|
||||
{
|
||||
return _capabilities["dav"].toMap()["chunkingParallelUploadDisabled"].toBool();
|
||||
|
||||
@@ -41,6 +41,7 @@ public:
|
||||
int sharePublicLinkExpireDateDays() const;
|
||||
bool shareResharing() const;
|
||||
bool chunkingNg() const;
|
||||
bool scheduling() const;
|
||||
|
||||
/// disable parallel upload in chunking
|
||||
bool chunkingParallelUploadDisabled() const;
|
||||
|
||||
@@ -52,6 +52,7 @@ static const char updateCheckIntervalC[] = "updateCheckInterval";
|
||||
static const char geometryC[] = "geometry";
|
||||
static const char timeoutC[] = "timeout";
|
||||
static const char chunkSizeC[] = "chunkSize";
|
||||
static const char smallFileSizeC[] = "smallFileSize";
|
||||
|
||||
static const char proxyHostC[] = "Proxy/host";
|
||||
static const char proxyTypeC[] = "Proxy/type";
|
||||
@@ -67,7 +68,6 @@ static const char downloadLimitC[] = "BWLimit/downloadLimit";
|
||||
|
||||
static const char newBigFolderSizeLimitC[] = "newBigFolderSizeLimit";
|
||||
static const char useNewBigFolderSizeLimitC[] = "useNewBigFolderSizeLimit";
|
||||
static const char confirmExternalStorageC[] = "confirmExternalStorage";
|
||||
|
||||
static const char maxLogLinesC[] = "Logging/maxLogLines";
|
||||
|
||||
@@ -129,6 +129,12 @@ quint64 ConfigFile::chunkSize() const
|
||||
return settings.value(QLatin1String(chunkSizeC), 10*1000*1000).toLongLong(); // default to 10 MB
|
||||
}
|
||||
|
||||
quint64 ConfigFile::smallFileSize() const
|
||||
{
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
return settings.value(QLatin1String(smallFileSizeC), 500*1000).toLongLong(); // default to 500 kB
|
||||
}
|
||||
|
||||
void ConfigFile::setOptionalDesktopNotifications(bool show)
|
||||
{
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
@@ -597,16 +603,6 @@ void ConfigFile::setNewBigFolderSizeLimit(bool isChecked, quint64 mbytes)
|
||||
setValue(useNewBigFolderSizeLimitC, isChecked);
|
||||
}
|
||||
|
||||
bool ConfigFile::confirmExternalStorage() const
|
||||
{
|
||||
return getValue(confirmExternalStorageC, QString(), true).toBool();
|
||||
}
|
||||
|
||||
void ConfigFile::setConfirmExternalStorage(bool isChecked)
|
||||
{
|
||||
setValue(confirmExternalStorageC, isChecked);
|
||||
}
|
||||
|
||||
bool ConfigFile::promptDeleteFiles() const
|
||||
{
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
|
||||
@@ -105,8 +105,6 @@ public:
|
||||
/** [checked, size in MB] **/
|
||||
QPair<bool, quint64> newBigFolderSizeLimit() const;
|
||||
void setNewBigFolderSizeLimit(bool isChecked, quint64 mbytes);
|
||||
bool confirmExternalStorage() const;
|
||||
void setConfirmExternalStorage(bool);
|
||||
|
||||
static bool setConfDir(const QString &value);
|
||||
|
||||
@@ -115,6 +113,7 @@ public:
|
||||
|
||||
int timeout() const;
|
||||
quint64 chunkSize() const;
|
||||
quint64 smallFileSize() const;
|
||||
|
||||
void saveGeometry(QWidget *w);
|
||||
void restoreGeometry(QWidget *w);
|
||||
|
||||
@@ -20,9 +20,6 @@
|
||||
#include <QUrl>
|
||||
#include "account.h"
|
||||
#include <QFileInfo>
|
||||
#include "theme.h"
|
||||
#include <cstring>
|
||||
|
||||
|
||||
namespace OCC {
|
||||
|
||||
@@ -84,32 +81,14 @@ int DiscoveryJob::isInSelectiveSyncBlackListCallback(void *data, const char *pat
|
||||
return static_cast<DiscoveryJob*>(data)->isInSelectiveSyncBlackList(path);
|
||||
}
|
||||
|
||||
bool DiscoveryJob::checkSelectiveSyncNewFolder(const QString& path, const char *remotePerm)
|
||||
bool DiscoveryJob::checkSelectiveSyncNewFolder(const QString& path)
|
||||
{
|
||||
|
||||
if (_syncOptions._confirmExternalStorage && std::strchr(remotePerm, 'M')) {
|
||||
// 'M' in the permission means external storage.
|
||||
|
||||
/* Note: DiscoverySingleDirectoryJob::directoryListingIteratedSlot make sure that only the
|
||||
* root of a mounted storage has 'M', all sub entries have 'm' */
|
||||
|
||||
// Only allow it if the white list contains exactly this path (not parents)
|
||||
// We want to ask confirmation for external storage even if the parents where selected
|
||||
if (_selectiveSyncWhiteList.contains(path + QLatin1Char('/'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
emit newBigFolder(path, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
// If this path or the parent is in the white list, then we do not block this file
|
||||
// If this path or the parent is in the white list, then we do not block this file
|
||||
if (findPathInList(_selectiveSyncWhiteList, path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto limit = _syncOptions._newBigFolderSizeLimit;
|
||||
if (limit < 0) {
|
||||
if (_newBigFolderSizeLimit < 0) {
|
||||
// no limit, everything is allowed;
|
||||
return false;
|
||||
}
|
||||
@@ -123,9 +102,10 @@ bool DiscoveryJob::checkSelectiveSyncNewFolder(const QString& path, const char *
|
||||
_vioWaitCondition.wait(&_vioMutex);
|
||||
}
|
||||
|
||||
auto limit = _newBigFolderSizeLimit;
|
||||
if (result >= limit) {
|
||||
// we tell the UI there is a new folder
|
||||
emit newBigFolder(path, false);
|
||||
emit newBigFolder(path);
|
||||
return true;
|
||||
} else {
|
||||
// it is not too big, put it in the white list (so we will not do more query for the children)
|
||||
@@ -139,9 +119,9 @@ bool DiscoveryJob::checkSelectiveSyncNewFolder(const QString& path, const char *
|
||||
}
|
||||
}
|
||||
|
||||
int DiscoveryJob::checkSelectiveSyncNewFolderCallback(void *data, const char *path, const char *remotePerm)
|
||||
int DiscoveryJob::checkSelectiveSyncNewFolderCallback(void *data, const char *path)
|
||||
{
|
||||
return static_cast<DiscoveryJob*>(data)->checkSelectiveSyncNewFolder(QString::fromUtf8(path), remotePerm);
|
||||
return static_cast<DiscoveryJob*>(data)->checkSelectiveSyncNewFolder(QString::fromUtf8(path));
|
||||
}
|
||||
|
||||
|
||||
@@ -341,9 +321,7 @@ void DiscoverySingleDirectoryJob::directoryListingIteratedSlot(QString file, con
|
||||
// The first entry is for the folder itself, we should process it differently.
|
||||
_ignoredFirst = true;
|
||||
if (map.contains("permissions")) {
|
||||
auto perm = map.value("permissions");
|
||||
emit firstDirectoryPermissions(perm);
|
||||
_isExternalStorage = perm.contains(QLatin1Char('M'));
|
||||
emit firstDirectoryPermissions(map.value("permissions"));
|
||||
}
|
||||
if (map.contains("data-fingerprint")) {
|
||||
_dataFingerprint = map.value("data-fingerprint").toUtf8();
|
||||
@@ -366,13 +344,6 @@ void DiscoverySingleDirectoryJob::directoryListingIteratedSlot(QString file, con
|
||||
if (!file_stat->etag || strlen(file_stat->etag) == 0) {
|
||||
qDebug() << "WARNING: etag of" << file_stat->name << "is" << file_stat->etag << " This must not happen.";
|
||||
}
|
||||
if (_isExternalStorage) {
|
||||
/* All the entries in a external storage have 'M' in their permission. However, for all
|
||||
purposes in the desktop client, we only need to know about the mount points.
|
||||
So replace the 'M' by a 'm' for every sub entries in an external storage */
|
||||
std::replace(std::begin(file_stat->remotePerm), std::end(file_stat->remotePerm),
|
||||
'M', 'm');
|
||||
}
|
||||
|
||||
QStringRef fileRef(&file);
|
||||
int slashPos = file.lastIndexOf(QLatin1Char('/'));
|
||||
|
||||
@@ -34,15 +34,6 @@ class Account;
|
||||
* if the files are new, or changed.
|
||||
*/
|
||||
|
||||
struct SyncOptions {
|
||||
/** Maximum size (in Bytes) a folder can have without asking for confirmation.
|
||||
* -1 means infinite */
|
||||
qint64 _newBigFolderSizeLimit = -1;
|
||||
/** If a confirmation should be asked for external storages */
|
||||
bool _confirmExternalStorage = false;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief The FileStatPointer class
|
||||
* @ingroup libsync
|
||||
@@ -116,8 +107,6 @@ private:
|
||||
bool _ignoredFirst;
|
||||
// Set to true if this is the root path and we need to check the data-fingerprint
|
||||
bool _isRootPath;
|
||||
// If this directory is an external storage (The first item has 'M' in its permission)
|
||||
bool _isExternalStorage = false;
|
||||
QPointer<LsColJob> _lsColJob;
|
||||
|
||||
public:
|
||||
@@ -187,8 +176,8 @@ class DiscoveryJob : public QObject {
|
||||
*/
|
||||
bool isInSelectiveSyncBlackList(const char* path) const;
|
||||
static int isInSelectiveSyncBlackListCallback(void *, const char *);
|
||||
bool checkSelectiveSyncNewFolder(const QString &path, const char *remotePerm);
|
||||
static int checkSelectiveSyncNewFolderCallback(void* data, const char* path, const char* remotePerm);
|
||||
bool checkSelectiveSyncNewFolder(const QString &path);
|
||||
static int checkSelectiveSyncNewFolderCallback(void*, const char*);
|
||||
|
||||
// Just for progress
|
||||
static void update_job_update_callback (bool local,
|
||||
@@ -208,7 +197,7 @@ class DiscoveryJob : public QObject {
|
||||
|
||||
public:
|
||||
explicit DiscoveryJob(CSYNC *ctx, QObject* parent = 0)
|
||||
: QObject(parent), _csync_ctx(ctx) {
|
||||
: QObject(parent), _csync_ctx(ctx), _newBigFolderSizeLimit(-1) {
|
||||
// We need to forward the log property as csync uses thread local
|
||||
// and updates run in another thread
|
||||
_log_callback = csync_get_log_callback();
|
||||
@@ -218,7 +207,7 @@ public:
|
||||
|
||||
QStringList _selectiveSyncBlackList;
|
||||
QStringList _selectiveSyncWhiteList;
|
||||
SyncOptions _syncOptions;
|
||||
qint64 _newBigFolderSizeLimit;
|
||||
Q_INVOKABLE void start();
|
||||
signals:
|
||||
void finished(int result);
|
||||
@@ -229,7 +218,7 @@ signals:
|
||||
void doGetSizeSignal(const QString &path, qint64 *result);
|
||||
|
||||
// A new folder was discovered and was not synced because of the confirmation feature
|
||||
void newBigFolder(const QString &folder, bool isExternal);
|
||||
void newBigFolder(const QString &folder);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -312,6 +312,8 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
|
||||
directories.push(qMakePair(QString(), _rootJob.data()));
|
||||
QVector<PropagatorJob*> directoriesToRemove;
|
||||
QString removedDirectory;
|
||||
bool enableScheduledRequests = true;
|
||||
PropagateFiles* filesJob = new PropagateFiles(this);
|
||||
foreach(const SyncFileItemPtr &item, items) {
|
||||
|
||||
if (!removedDirectory.isEmpty() && item->_file.startsWith(removedDirectory)) {
|
||||
@@ -388,6 +390,9 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
|
||||
currentDirJob->append(dir);
|
||||
}
|
||||
directories.push(qMakePair(item->destination() + "/" , dir));
|
||||
} else if (enableScheduledRequests
|
||||
&& (item->_instruction == CSYNC_INSTRUCTION_NEW || item->_instruction == CSYNC_INSTRUCTION_SYNC)) {
|
||||
filesJob->append(item);
|
||||
} else if (PropagateItemJob* current = createJob(item)) {
|
||||
if (item->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE) {
|
||||
// will delete directories, so defer execution
|
||||
@@ -399,10 +404,18 @@ void OwncloudPropagator::start(const SyncFileItemVector& items)
|
||||
}
|
||||
}
|
||||
|
||||
if (enableScheduledRequests && !filesJob->isEmpty()){
|
||||
// This job has parallelism WaitForFinished to allow directoriesToRemove be last
|
||||
_rootJob->append(filesJob);
|
||||
} else {
|
||||
delete filesJob;
|
||||
}
|
||||
|
||||
foreach(PropagatorJob* it, directoriesToRemove) {
|
||||
_rootJob->append(it);
|
||||
}
|
||||
|
||||
|
||||
connect(_rootJob.data(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)),
|
||||
this, SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
|
||||
connect(_rootJob.data(), SIGNAL(progress(const SyncFileItem &,quint64)), this, SIGNAL(progress(const SyncFileItem &,quint64)));
|
||||
@@ -458,6 +471,20 @@ quint64 OwncloudPropagator::chunkSize()
|
||||
return chunkSize;
|
||||
}
|
||||
|
||||
quint64 OwncloudPropagator::smallFileSize()
|
||||
{
|
||||
// A small filesize item is a file whose transfer time
|
||||
// typically will be lower than its bookkeeping time.
|
||||
static uint smallFileSize;
|
||||
if (!smallFileSize) {
|
||||
smallFileSize = qgetenv("OWNCLOUD_SMALLFILE_SIZE").toUInt();
|
||||
if (smallFileSize == 0) {
|
||||
ConfigFile cfg;
|
||||
smallFileSize = cfg.smallFileSize();
|
||||
}
|
||||
}
|
||||
return smallFileSize;
|
||||
}
|
||||
|
||||
bool OwncloudPropagator::localFileNameClash( const QString& relFile )
|
||||
{
|
||||
|
||||
@@ -262,7 +262,6 @@ public:
|
||||
class OwncloudPropagator : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
PropagateItemJob *createJob(const SyncFileItemPtr& item);
|
||||
QScopedPointer<PropagateDirectory> _rootJob;
|
||||
|
||||
public:
|
||||
@@ -327,6 +326,7 @@ public:
|
||||
|
||||
/** returns the size of chunks in bytes */
|
||||
static quint64 chunkSize();
|
||||
static quint64 smallFileSize();
|
||||
|
||||
AccountPtr account() const;
|
||||
|
||||
@@ -342,7 +342,11 @@ public:
|
||||
*/
|
||||
DiskSpaceResult diskSpaceCheck() const;
|
||||
|
||||
PropagateItemJob *createJob(const SyncFileItemPtr& item);
|
||||
|
||||
int runningAtRootJob(){
|
||||
return _rootJob.data()->_runningNow;
|
||||
}
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -415,6 +419,106 @@ private slots:
|
||||
void slotPollFinished();
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The PropagateFiles class is a container class.
|
||||
*
|
||||
* It will also ensure proper bandwidth utilization vs bookkeeping balance
|
||||
*
|
||||
* @ingroup libsync
|
||||
*
|
||||
* State Machine:
|
||||
*
|
||||
* _________________________________________________ ___________________________________________
|
||||
* | | |
|
||||
* | (Empty DB items queue and populated Data items queue?) |
|
||||
* | | | |
|
||||
* | Yes | | No |
|
||||
* | | | |
|
||||
* |<-----------[Schedule Data job] (Empty Data items queue and populated DB items queue?) |
|
||||
* | | | |
|
||||
* | No | | Yes |
|
||||
* | | | |
|
||||
* | | [Schedule DB job]--------------->|
|
||||
* | | |
|
||||
* | | |
|
||||
* | (Populated Data items queue and populated DB items queue?) |
|
||||
* | | | |
|
||||
* | Yes | | No |
|
||||
* | | | |
|
||||
* | (Active running Data items number exceeded limit?) [Finish - no items] |
|
||||
* | | | |
|
||||
* | No | | Yes |
|
||||
* | | | |
|
||||
* <---[Schedule Data job] [Schedule DB job]------------------------------------------>
|
||||
*
|
||||
*
|
||||
*/
|
||||
class PropagateFiles : public PropagatorJob {
|
||||
Q_OBJECT
|
||||
public:
|
||||
QVector<PropagatorJob *> _subJobs;
|
||||
|
||||
QVector<SyncFileItemPtr> _syncDBItems; // Items which bookkeeping on the server is longer then the transfer of its payload
|
||||
|
||||
QVector<SyncFileItemPtr> _syncDataItems; // Items which transfer of the payload is longer then bookkeeping on the server
|
||||
|
||||
int _jobsFinished; // number of jobs that have completed
|
||||
SyncFileItem::Status _hasError; // NoStatus, or NormalError / SoftError if there was an error
|
||||
int _firstUnfinishedSubJob;
|
||||
int _totalItems;
|
||||
int _activeDBJobsNow;
|
||||
int _activeDataJobsNow;
|
||||
|
||||
explicit PropagateFiles(OwncloudPropagator *propagator)
|
||||
: PropagatorJob(propagator)
|
||||
, _jobsFinished(0), _hasError(SyncFileItem::NoStatus), _firstUnfinishedSubJob(0), _totalItems(0), _activeDBJobsNow(0), _activeDataJobsNow(0) { }
|
||||
|
||||
virtual ~PropagateFiles() {
|
||||
qDeleteAll(_subJobs);
|
||||
}
|
||||
|
||||
bool isEmpty() {
|
||||
return _syncDBItems.isEmpty() && _syncDataItems.isEmpty();
|
||||
}
|
||||
|
||||
void append(const SyncFileItemPtr &item);
|
||||
virtual bool scheduleNextJob() Q_DECL_OVERRIDE;
|
||||
bool scheduleNewJob(QVector<SyncFileItemPtr> &syncJobs);
|
||||
bool scheduleNextItem();
|
||||
|
||||
virtual void abort() Q_DECL_OVERRIDE {
|
||||
foreach (PropagatorJob *n, _subJobs)
|
||||
n->abort();
|
||||
}
|
||||
|
||||
void finalize();
|
||||
|
||||
qint64 committedDiskSpace() const Q_DECL_OVERRIDE;
|
||||
|
||||
JobParallelism parallelism() Q_DECL_OVERRIDE { return OCC::PropagatorJob::WaitForFinished; }
|
||||
|
||||
private slots:
|
||||
bool possiblyRunNextJob(PropagatorJob *next) {
|
||||
if (next->_state == NotYetStarted) {
|
||||
connect(next, SIGNAL(finished(SyncFileItem::Status)), this, SLOT(slotSubJobFinished(SyncFileItem::Status)), Qt::QueuedConnection);
|
||||
connect(next, SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)),
|
||||
this, SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)));
|
||||
connect(next, SIGNAL(progress(const SyncFileItem &,quint64)), this, SIGNAL(progress(const SyncFileItem &,quint64)));
|
||||
connect(next, SIGNAL(ready()), this, SIGNAL(ready()));
|
||||
|
||||
PropagateItemJob *job = qobject_cast<PropagateItemJob *>(next);
|
||||
if(job->_item->_size <= propagator()->smallFileSize()){
|
||||
_activeDBJobsNow++;
|
||||
} else {
|
||||
_activeDataJobsNow++;
|
||||
}
|
||||
}
|
||||
return next->scheduleNextJob();
|
||||
}
|
||||
|
||||
void slotSubJobFinished(SyncFileItem::Status status);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
qint64 committedDiskSpace() const Q_DECL_OVERRIDE;
|
||||
|
||||
// We think it might finish quickly because it is a small file.
|
||||
bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return _item->_size < 100*1024; }
|
||||
bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return _item->_size < propagator()->smallFileSize(); }
|
||||
|
||||
/**
|
||||
* Whether an existing folder with the same name may be deleted before
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* Copyright (C) by Piotr Mrowczynski <piotr@owncloud.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include "owncloudpropagator.h"
|
||||
|
||||
namespace OCC {
|
||||
|
||||
|
||||
qint64 PropagateFiles::committedDiskSpace() const
|
||||
{
|
||||
qint64 needed = 0;
|
||||
foreach (PropagatorJob* job, _subJobs) {
|
||||
needed += job->committedDiskSpace();
|
||||
}
|
||||
return needed;
|
||||
}
|
||||
|
||||
void PropagateFiles::append(const SyncFileItemPtr &item)
|
||||
{
|
||||
_totalItems++;
|
||||
if(item->_size <= propagator()->smallFileSize()){
|
||||
_syncDBItems.append(item);
|
||||
} else {
|
||||
_syncDataItems.append(item);
|
||||
}
|
||||
}
|
||||
|
||||
bool PropagateFiles::scheduleNextJob()
|
||||
{
|
||||
if (_state == Finished) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_state == NotYetStarted) {
|
||||
_state = Running;
|
||||
|
||||
if (isEmpty()) {
|
||||
finalize();
|
||||
return true;
|
||||
}
|
||||
_subJobs.reserve(_totalItems);
|
||||
}
|
||||
|
||||
if (_state == Running) {
|
||||
// This will ensure that all other jobs in the earlier PropagateDirectory are finished, so we can start with data transfers
|
||||
if (propagator()->runningAtRootJob() != 1){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// cache the value of first unfinished subjob
|
||||
int i = _firstUnfinishedSubJob;
|
||||
int subJobsCount = _subJobs.count();
|
||||
while (i < subJobsCount && _subJobs.at(i)->_state == Finished) {
|
||||
_firstUnfinishedSubJob = ++i;
|
||||
}
|
||||
for (int i = _firstUnfinishedSubJob; i < subJobsCount; ++i) {
|
||||
if (_subJobs.at(i)->_state == Finished) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (possiblyRunNextJob(_subJobs.at(i))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Q_ASSERT(_subJobs.at(i)->_state == Running);
|
||||
}
|
||||
|
||||
return scheduleNextItem();
|
||||
}
|
||||
|
||||
bool PropagateFiles::scheduleNewJob(QVector<SyncFileItemPtr> &syncJobs){
|
||||
// This function is used to schedule new job and lazily create job from sync items
|
||||
Q_ASSERT(!syncJobs.isEmpty());
|
||||
const SyncFileItemPtr &item = syncJobs.takeFirst();
|
||||
PropagateItemJob* job = propagator()->createJob(item);
|
||||
_subJobs.append(job);
|
||||
return possiblyRunNextJob(job);
|
||||
}
|
||||
|
||||
bool PropagateFiles::scheduleNextItem()
|
||||
{
|
||||
/// This function holds the whole bookkeeping/data-transfers balance logic
|
||||
|
||||
bool syncDBItemsEmpty = _syncDBItems.isEmpty();
|
||||
bool syncDataItemsEmpty = _syncDataItems.isEmpty();
|
||||
|
||||
if (syncDBItemsEmpty && !syncDataItemsEmpty){
|
||||
// There are no more DB jobs, ensure to maximally parallelise Data Transfers now
|
||||
return scheduleNewJob(_syncDataItems);
|
||||
} else if (!syncDBItemsEmpty && syncDataItemsEmpty){
|
||||
// There are no more data transfer jobs, ensure to maximally parallelise DB jobs now
|
||||
return scheduleNewJob(_syncDBItems);
|
||||
} else if (!syncDBItemsEmpty && !syncDataItemsEmpty){
|
||||
// Both queues have items, ensure bookkeeping and data transfer balance
|
||||
if (_activeDataJobsNow < 2){
|
||||
// By default, we have max 3 connections available for bigger files
|
||||
// On the other hand, we have max 6 for isLikelyToFinishQuickly files (also small files)
|
||||
// It makes sense to use 2 queues for bigger data transfers, and leave the remaining 1-4 for faster operations
|
||||
return scheduleNewJob(_syncDataItems);
|
||||
} else {
|
||||
return scheduleNewJob(_syncDBItems);
|
||||
}
|
||||
}
|
||||
|
||||
// This means that we have no more file-items to sync -> finish
|
||||
return false;
|
||||
}
|
||||
|
||||
void PropagateFiles::slotSubJobFinished(SyncFileItem::Status status)
|
||||
{
|
||||
if (status == SyncFileItem::FatalError) {
|
||||
abort();
|
||||
_state = Finished;
|
||||
emit finished(status);
|
||||
return;
|
||||
} else if (status == SyncFileItem::NormalError || status == SyncFileItem::SoftError) {
|
||||
_hasError = status;
|
||||
}
|
||||
|
||||
PropagateItemJob *job = qobject_cast<PropagateItemJob *>(sender());
|
||||
if(job->_item->_size <= propagator()->smallFileSize()){
|
||||
_activeDBJobsNow--;
|
||||
} else {
|
||||
_activeDataJobsNow--;
|
||||
}
|
||||
Q_ASSERT(job);
|
||||
|
||||
_jobsFinished++;
|
||||
|
||||
// We finished processing all the jobs
|
||||
// check if we finished
|
||||
if (_jobsFinished >= _totalItems) {
|
||||
Q_ASSERT(!_activeDBJobsNow && !_activeDataJobsNow); // how can we be finished if there are still jobs running now
|
||||
finalize();
|
||||
} else {
|
||||
emit ready();
|
||||
}
|
||||
}
|
||||
|
||||
void PropagateFiles::finalize()
|
||||
{
|
||||
_state = Finished;
|
||||
emit finished(_hasError == SyncFileItem::NoStatus ? SyncFileItem::Success : _hasError);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
|
||||
void start() Q_DECL_OVERRIDE;
|
||||
|
||||
bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return _item->_size < 100*1024; }
|
||||
bool isLikelyFinishedQuickly() Q_DECL_OVERRIDE { return _item->_size < propagator()->smallFileSize(); }
|
||||
|
||||
private slots:
|
||||
void slotComputeContentChecksum();
|
||||
|
||||
@@ -71,6 +71,7 @@ SyncEngine::SyncEngine(AccountPtr account, const QString& localPath,
|
||||
, _backInTimeFiles(0)
|
||||
, _uploadLimit(0)
|
||||
, _downloadLimit(0)
|
||||
, _newBigFolderSizeLimit(-1)
|
||||
, _checksum_hook(journal)
|
||||
, _anotherSyncNeeded(NoFollowUpSync)
|
||||
{
|
||||
@@ -829,14 +830,14 @@ void SyncEngine::startSync()
|
||||
return;
|
||||
}
|
||||
|
||||
discoveryJob->_syncOptions = _syncOptions;
|
||||
discoveryJob->_newBigFolderSizeLimit = _newBigFolderSizeLimit;
|
||||
discoveryJob->moveToThread(&_thread);
|
||||
connect(discoveryJob, SIGNAL(finished(int)), this, SLOT(slotDiscoveryJobFinished(int)));
|
||||
connect(discoveryJob, SIGNAL(folderDiscovered(bool,QString)),
|
||||
this, SIGNAL(folderDiscovered(bool,QString)));
|
||||
|
||||
connect(discoveryJob, SIGNAL(newBigFolder(QString,bool)),
|
||||
this, SIGNAL(newBigFolder(QString,bool)));
|
||||
connect(discoveryJob, SIGNAL(newBigFolder(QString)),
|
||||
this, SIGNAL(newBigFolder(QString)));
|
||||
|
||||
|
||||
// This is used for the DiscoveryJob to be able to request the main thread/
|
||||
|
||||
@@ -78,7 +78,10 @@ public:
|
||||
|
||||
bool isSyncRunning() const { return _syncRunning; }
|
||||
|
||||
void setSyncOptions(const SyncOptions &options) { _syncOptions = options; }
|
||||
/* Set the maximum size a folder can have without asking for confirmation
|
||||
* -1 means infinite
|
||||
*/
|
||||
void setNewBigFolderSizeLimit(qint64 limit) { _newBigFolderSizeLimit = limit; }
|
||||
bool ignoreHiddenFiles() const { return _csync_ctx->ignore_hidden_files; }
|
||||
void setIgnoreHiddenFiles(bool ignore) { _csync_ctx->ignore_hidden_files = ignore; }
|
||||
|
||||
@@ -143,7 +146,7 @@ signals:
|
||||
void aboutToRestoreBackup(bool *restore);
|
||||
|
||||
// A new folder was discovered and was not synced because of the confirmation feature
|
||||
void newBigFolder(const QString &folder, bool isExternal);
|
||||
void newBigFolder(const QString &folder);
|
||||
|
||||
/** Emitted when propagation has problems with a locked file.
|
||||
*
|
||||
@@ -254,7 +257,8 @@ private:
|
||||
|
||||
int _uploadLimit;
|
||||
int _downloadLimit;
|
||||
SyncOptions _syncOptions;
|
||||
/* maximum size a folder can have without asking for confirmation: -1 means infinite */
|
||||
qint64 _newBigFolderSizeLimit;
|
||||
|
||||
// hash containing the permissions on the remote directory
|
||||
QHash<QString, QByteArray> _remotePerms;
|
||||
|
||||
+1
-12
@@ -275,15 +275,6 @@ qint64 Theme::newBigFolderSizeLimit() const
|
||||
return 500;
|
||||
}
|
||||
|
||||
bool Theme::wizardHideExternalStorageConfirmationCheckbox() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Theme::wizardHideFolderSizeLimitCheckbox() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QString Theme::gitSHA1() const
|
||||
{
|
||||
@@ -421,7 +412,7 @@ QPixmap Theme::wizardHeaderBanner() const
|
||||
if (!c.isValid())
|
||||
return QPixmap();
|
||||
|
||||
QPixmap pix(QSize(750, 78));
|
||||
QPixmap pix(QSize(600, 78));
|
||||
pix.fill(wizardHeaderBackgroundColor());
|
||||
return pix;
|
||||
}
|
||||
@@ -487,6 +478,4 @@ QString Theme::quotaBaseFolder() const
|
||||
{
|
||||
return QLatin1String("/");
|
||||
}
|
||||
|
||||
|
||||
} // end namespace client
|
||||
|
||||
@@ -219,17 +219,6 @@ public:
|
||||
**/
|
||||
virtual qint64 newBigFolderSizeLimit() const;
|
||||
|
||||
/**
|
||||
* Hide the checkbox that says "Ask for confirmation before synchronizing folders larger than X MB"
|
||||
* in the account wizard
|
||||
*/
|
||||
virtual bool wizardHideFolderSizeLimitCheckbox() const;
|
||||
/**
|
||||
* Hide the checkbox that says "Ask for confirmation before synchronizing external storages"
|
||||
* in the account wizard
|
||||
*/
|
||||
virtual bool wizardHideExternalStorageConfirmationCheckbox() const;
|
||||
|
||||
/**
|
||||
* Alternative path on the server that provides access to the webdav capabilities
|
||||
*
|
||||
@@ -313,7 +302,6 @@ public:
|
||||
*/
|
||||
virtual QString quotaBaseFolder() const;
|
||||
|
||||
|
||||
protected:
|
||||
#ifndef TOKEN_AUTH_ONLY
|
||||
QIcon themeIcon(const QString& name, bool sysTray = false, bool sysTrayMenuVisible = false) const;
|
||||
|
||||
@@ -2156,32 +2156,32 @@ No és aconsellada usar-la.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>El fitxer local s'ha eliminat durant la sincronització.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>El fitxer local ha canviat durant la sincronització.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2158,32 +2158,32 @@ Nedoporučuje se jí používat.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Vynucené ukončení procesu při resetu HTTP připojení s Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Místní soubor byl odstraněn během synchronizace.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Místní soubor byl změněn během synchronizace.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Neočekávaný návratový kód ze serveru (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Chybějící souborové ID ze serveru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Chybějící ETag ze serveru</translation>
|
||||
</message>
|
||||
|
||||
@@ -2156,32 +2156,32 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Auftragsabbruch beim Rücksetzen der HTTP-Verbindung mit QT < 5.4.2 wird erzwungen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Die lokale Datei wurde während der Synchronisation gelöscht.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Eine lokale Datei wurde während der Synchronisation geändert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Unerwarteter Rückgabe-Code Antwort vom Server (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Fehlende Datei-ID vom Server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Fehlender ETag vom Server</translation>
|
||||
</message>
|
||||
@@ -3038,7 +3038,7 @@ Es ist nicht ratsam, diese zu benutzen.</translation>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="444"/>
|
||||
<source>File names ending with a period are not supported on this file system.</source>
|
||||
<translation>Dateinamen enden mit einem Periode, die in diesem Dateisystem nicht unterstützt wird.</translation>
|
||||
<translation>Dateinamen enden mit einem Punkt, die in diesem Dateisystem nicht unterstützt wird.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="454"/>
|
||||
|
||||
@@ -2156,32 +2156,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Εξαναγκασμός ακύρωσης εργασίας στην επαναφορά σύνδεσης HTTP με Qt < 5.4.2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Το τοπικό αρχείο αφαιρέθηκε κατά το συγχρονισμό.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Το τοπικό αρχείο τροποποιήθηκε κατά τον συγχρονισμό.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2181,32 +2181,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
@@ -2157,32 +2157,32 @@ No se recomienda usarla.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Forzar el trabajo en una conexión HTTP, causará un Reset si Qt< 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>El archivo local ha sido eliminado durante la sincronización.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Un archivo local fue modificado durante la sincronización.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Respuesta inesperada del servidor (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Perdido archivo ID del servidor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Perdido ETag del servidor</translation>
|
||||
</message>
|
||||
|
||||
@@ -2149,32 +2149,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2150,32 +2150,32 @@ Selle kasutamine pole soovitatav.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Kohalik fail on eemaldatud sünkroniseeringu käigus.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Kohalik fail muutus sünkroniseeringu käigus.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2152,32 +2152,32 @@ Ez da gomendagarria erabltzea.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Fitxategi lokala ezabatu da sinkronizazioan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Fitxategi lokala aldatu da sinkronizazioan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2149,32 +2149,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>فایل محلی در حین همگامسازی حذف شده است.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>فایل محلی در حین همگامسازی تغییر کرده است.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2153,32 +2153,32 @@ Osoitteen käyttäminen ei ole suositeltavaa.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Paikallinen tiedosto poistettiin synkronoinnin aikana.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Paikallinen tiedosto muuttui synkronoinnin aikana.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Odottamaton paluukoodi palvelimelta (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
+10
-10
@@ -751,7 +751,7 @@ Continuer la synchronisation comme d'habitude fera en sorte que tous les fi
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="1022"/>
|
||||
<source>Backup detected</source>
|
||||
<translation>Sauvegarde détecté</translation>
|
||||
<translation>Sauvegarde détectée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/folder.cpp" line="1024"/>
|
||||
@@ -2158,32 +2158,32 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Arrêt forcé du job après réinitialisation de connexion HTTP avec Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Fichier local supprimé pendant la synchronisation.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Fichier local modifié pendant la synchronisation.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Le serveur a retourné un code inattendu (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -3336,12 +3336,12 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="619"/>
|
||||
<source>Unpause all synchronization</source>
|
||||
<translation>relancer toutes les synchronisations</translation>
|
||||
<translation>Relancer toutes les synchronisations</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="621"/>
|
||||
<source>Unpause synchronization</source>
|
||||
<translation>relancer la synchronisation </translation>
|
||||
<translation>Relancer la synchronisation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="629"/>
|
||||
@@ -3351,7 +3351,7 @@ Il est déconseillé de l'utiliser.</translation>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="631"/>
|
||||
<source>Pause synchronization</source>
|
||||
<translation>Mettre en pause la synchronisation </translation>
|
||||
<translation>Mettre en pause la synchronisation </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/owncloudgui.cpp" line="638"/>
|
||||
|
||||
@@ -2152,32 +2152,32 @@ Recomendámoslle que non o use.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Forzando a interrupción do traballo na conexión HTTP reiniciandoa con Qt <5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>O ficheiro local retirarase durante a sincronización.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>O ficheiro local cambiou durante a sincronización.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2149,32 +2149,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>A helyi fájl el lett távolítva a szinkronizálás alatt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2157,32 +2157,32 @@ Non è consigliabile utilizzarlo.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Forzare l'interruzione dell'operazione in caso di ripristino della connessione HTTP con Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Il file locale è stato rimosso durante la sincronizzazione.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Un file locale è cambiato durante la sincronizzazione.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Codice di uscita inatteso dal server (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>File ID mancante dal server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>ETag mancante dal server</translation>
|
||||
</message>
|
||||
|
||||
@@ -2154,32 +2154,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>5.4.2 以下のQt でHTTP 接続リセットが強制終了されました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>ローカルファイルを同期中に削除します。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>ローカルのファイルが同期中に変更されました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>サーバー (%1) からの予期しない戻りコード</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>サーバーからファイルIDの戻りがありません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>サーバーからETagの戻りがありません</translation>
|
||||
</message>
|
||||
|
||||
@@ -2158,32 +2158,32 @@ Det er ikke tilrådelig å bruke den.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Tvinger avbryting av jobb ved HTTP connection reset med Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Den lokale filen ble fjernet under synkronisering.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Lokal fil endret under synkronisering.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Uventet returkode fra serveren (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Mangler File ID fra server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Mangler ETag fra server</translation>
|
||||
</message>
|
||||
|
||||
@@ -2163,32 +2163,32 @@ We adviseren deze site niet te gebruiken.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Forceren job-beëindiging op HTTP verbindingsreset met Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Het lokale bestand werd verwijderd tijdens sync.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Lokaal bestand gewijzigd bij sync.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Onverwachte reactie van server (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Ontbrekende File ID van de server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Ontbrekende ETag van de server</translation>
|
||||
</message>
|
||||
|
||||
@@ -2156,32 +2156,32 @@ Niezalecane jest jego użycie.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Pliki lokalny został usunięty podczas synchronizacji.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Lokalny plik zmienił się podczas synchronizacji.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2156,32 +2156,32 @@ Não é aconselhada a sua utilização.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>A forçar aborto no trabalho de redefinição de conexão HTTP com Qt < 5.4.3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>O arquivo local foi removido durante a sincronização.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Ficheiro local alterado durante a sincronização.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2157,32 +2157,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Forçando cancelamento do trabalho em redefinição de conexão HTTP com o Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>O arquivo local foi removido durante a sincronização.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Arquivo local modificado durante a sincronização.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Código de retorno inesperado do servidor (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Falta ID do arquivo do servidor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Falta ETag do servidor</translation>
|
||||
</message>
|
||||
|
||||
@@ -2155,32 +2155,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Принудительная остановка задачи при сбросе HTTP подключения для Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Локальный файл был удалён в процессе синхронизации.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Локальный файл изменился в процессе синхронизации.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Неожиданный код завершения от сервера (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Отсутствует код файла от сервера</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Отсутствует ETag с сервера</translation>
|
||||
</message>
|
||||
|
||||
@@ -2154,32 +2154,32 @@ Nie je vhodné ju používať.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Vynútené ukončenie procesu pri resete HTTP pripojení s Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Lokálny súbor bol odstránený počas synchronizácie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Lokálny súbor bol zmenený počas synchronizácie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2158,32 +2158,32 @@ Uporaba ni priporočljiva.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Vsiljevanje prekinitve posla na prekinitvi povezave HTTP s Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Krajevna datoteka je bila med usklajevanjem odstranjena.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Krajevna datoteka je bila med usklajevanjem spremenjena.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>Napaka: nepričakovan odziv s strežnika (%1).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>Na strežniku manjka ID datoteke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>Na strežniku manjka ETag datoteke</translation>
|
||||
</message>
|
||||
|
||||
@@ -2151,32 +2151,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Присили прекид посла код прекида ХТТП везе са КуТ < 5.4.2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Локални фајл је уклоњен током синхронизације.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Локални фајл измењен током синхронизације.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2158,32 +2158,32 @@ Det är inte lämpligt använda den.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Tvinga jobbavbryt vid återställning av HTTP-anslutning med Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Den lokala filen togs bort under synkronisering.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Lokal fil ändrades under synk.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2158,32 +2158,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>บังคับให้ยกเลิกงานในการตั้งค่าการเชื่อมต่อ HTTP กับ Qt < 5.4.2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>ไฟล์ต้นทางถูกลบออกในระหว่างการประสานข้อมูล</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>ไฟล์ต้นทางถูกเปลี่ยนแปลงขณะกำลังประสานข้อมูล</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation>มีรหัสข้อผิดพลาดตอบกลับมาจากเซิร์ฟเวอร์ (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation>ไฟล์ไอดีได้หายไปจากเซิร์ฟเวอร์</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation>ETag ได้หายไปจากเซิร์ฟเวอร์</translation>
|
||||
</message>
|
||||
@@ -3038,17 +3038,17 @@ It is not advisable to use it.</source>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="444"/>
|
||||
<source>File names ending with a period are not supported on this file system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ชื่อไฟล์ที่ลงท้ายด้วยระยะเวลา ยังไม่ได้รับการสนับสนุนบนระบบไฟล์นี้</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="454"/>
|
||||
<source>File names containing the character '%1' are not supported on this file system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ชื่อไฟล์ที่มีตัวอักษร '%1' ยังไม่ได้รับการสนับสนุนบนระบบไฟล์นี้</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="457"/>
|
||||
<source>The file name is a reserved name on this file system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ชื่อไฟล์นี้เป็นชื่อที่ถูกสงวนไว้</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="462"/>
|
||||
|
||||
@@ -2155,32 +2155,32 @@ Kullanmanız önerilmez.</translation>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Qt < 5.4.2 ile HTTP bağlantı sıfırlamasında görev iptali zorlanıyor.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Eşitleme sırasında yerel dosya kaldırıldı.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Eşitleme sırasında yerel dosya değişti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2150,32 +2150,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Примусове припинення завдання при скиданні HTTP з’єднання з Qt < 5.4.2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>Локальний файл було видалено під час синхронізації.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>Локальний файл змінився під час синхронізації.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2155,32 +2155,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>Qt < 5.4.2 时强制中止连接重置。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>本地文件在同步时已删除。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>本地文件在同步时已修改。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
@@ -2156,32 +2156,32 @@ It is not advisable to use it.</source>
|
||||
<context>
|
||||
<name>OCC::PropagateUploadFileNG</name>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="362"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="365"/>
|
||||
<source>Forcing job abort on HTTP connection reset with Qt < 5.4.2.</source>
|
||||
<translation>HTTP連線工作被強制中斷,Qt版本< 5.4.2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="393"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="396"/>
|
||||
<source>The local file was removed during sync.</source>
|
||||
<translation>本地端的檔案在同步過程中被刪除。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="404"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="407"/>
|
||||
<source>Local file changed during sync.</source>
|
||||
<translation>本地端的檔案在同步過程中被更改。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="453"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="456"/>
|
||||
<source>Unexpected return code from server (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="460"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="463"/>
|
||||
<source>Missing File ID from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="473"/>
|
||||
<location filename="../src/libsync/propagateuploadng.cpp" line="476"/>
|
||||
<source>Missing ETag from server</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário