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

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2022-07-07 16:51:35 +0300
committerHannah von Reth <hannah.vonreth@owncloud.com>2022-07-07 16:51:35 +0300
commitb779de22de0e0b48a328b146501f7e9e12d37f5b (patch)
tree7977b72488cc9d7d1a1869e76eb3ac2745dc886d /src
parent0f0eaf2910994ce5f5c2ede05377f7e15192ec48 (diff)
parentf8120c54a4b2e9fc0bc75856d6e78de19d1f5505 (diff)
Merge remote-tracking branch 'origin/2.10'
Diffstat (limited to 'src')
-rw-r--r--src/gui/accountsettings.cpp33
-rw-r--r--src/gui/folder.cpp17
-rw-r--r--src/gui/folder.h14
3 files changed, 50 insertions, 14 deletions
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index 9659bf0ab..6d46fe46a 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -235,9 +235,6 @@ void AccountSettings::doExpand()
void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
{
- const auto removeFolderAction = [this](QMenu *menu) {
- return menu->addAction(tr("Remove folder sync connection"), this, &AccountSettings::slotRemoveCurrentFolder);
- };
QTreeView *tv = ui->_folderList;
QModelIndex index = tv->indexAt(pos);
@@ -245,6 +242,11 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
return;
}
+ const auto removeFolderAction = [index, this](QMenu *menu) {
+ Q_ASSERT(!_model->folder(index)->isDeployed());
+ return menu->addAction(tr("Remove folder sync connection"), this, &AccountSettings::slotRemoveCurrentFolder);
+ };
+
auto classification = _model->classify(index);
if (classification != FolderStatusModel::RootFolder && classification != FolderStatusModel::SubFolder) {
return;
@@ -252,7 +254,7 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
// Only allow removal if the item isn't in "ready" state.
- if (classification == FolderStatusModel::RootFolder && !_model->data(index, FolderStatusDelegate::IsReady).toBool()) {
+ if (classification == FolderStatusModel::RootFolder && !_model->data(index, FolderStatusDelegate::IsReady).toBool() && !_model->folder(index)->isDeployed()) {
QMenu *menu = new QMenu(tv);
menu->setAttribute(Qt::WA_DeleteOnClose);
removeFolderAction(menu);
@@ -340,18 +342,21 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
QAction *ac = menu->addAction(folderPaused ? tr("Resume sync") : tr("Pause sync"));
connect(ac, &QAction::triggered, this, &AccountSettings::slotEnableCurrentFolder);
- removeFolderAction(menu);
+ if (!_model->folder(index)->isDeployed()) {
+ removeFolderAction(menu);
- if (folder->virtualFilesEnabled() && !Theme::instance()->forceVirtualFilesOption()) {
- menu->addAction(tr("Disable virtual file support..."), this, &AccountSettings::slotDisableVfsCurrentFolder);
- }
+ if (folder->virtualFilesEnabled() && !Theme::instance()->forceVirtualFilesOption()) {
+ menu->addAction(tr("Disable virtual file support..."), this, &AccountSettings::slotDisableVfsCurrentFolder);
+ }
- if (Theme::instance()->showVirtualFilesOption()
- && !folder->virtualFilesEnabled() && FolderMan::instance()->checkVfsAvailability(folder->path())) {
- const auto mode = bestAvailableVfsMode();
- if (mode == Vfs::WindowsCfApi || Theme::instance()->enableExperimentalFeatures()) {
- ac = menu->addAction(tr("Enable virtual file support%1...").arg(mode == Vfs::WindowsCfApi ? QString() : tr(" (experimental)")));
- connect(ac, &QAction::triggered, this, &AccountSettings::slotEnableVfsCurrentFolder);
+ if (Theme::instance()->showVirtualFilesOption()
+ && !folder->virtualFilesEnabled() && FolderMan::instance()->checkVfsAvailability(folder->path())) {
+ const auto mode = bestAvailableVfsMode();
+
+ if (mode == Vfs::WindowsCfApi || (Theme::instance()->enableExperimentalFeatures() && mode != Vfs::Off)) {
+ ac = menu->addAction(tr("Enable virtual file support%1...").arg(mode == Vfs::WindowsCfApi ? QString() : tr(" (experimental)")));
+ connect(ac, &QAction::triggered, this, &AccountSettings::slotEnableVfsCurrentFolder);
+ }
}
}
menu->popup(QCursor::pos());
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 917d533e8..e810698f8 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -71,6 +71,11 @@ auto displayNameC()
return QLatin1String("displayString");
}
+auto deployedC()
+{
+ return QStringLiteral("deployed");
+}
+
constexpr int SettingsVersionC = 5;
}
@@ -786,6 +791,11 @@ bool Folder::supportsSelectiveSync() const
return !virtualFilesEnabled() && !isVfsOnOffSwitchPending();
}
+bool Folder::isDeployed() const
+{
+ return _definition.isDeployed();
+}
+
void Folder::saveToSettings() const
{
// Remove first to make sure we don't get duplicates
@@ -1366,6 +1376,7 @@ void FolderDefinition::save(QSettings &settings, const FolderDefinition &folder)
settings.setValue(displayNameC(), folder.displayName());
settings.setValue(QLatin1String("paused"), folder.paused);
settings.setValue(QLatin1String("ignoreHiddenFiles"), folder.ignoreHiddenFiles);
+ settings.setValue(deployedC(), folder.isDeployed());
settings.setValue(QStringLiteral("virtualFilesMode"), Vfs::modeToString(folder.virtualFilesMode));
@@ -1388,6 +1399,7 @@ FolderDefinition FolderDefinition::load(QSettings &settings, const QByteArray &i
folder.paused = settings.value(QLatin1String("paused")).toBool();
folder.ignoreHiddenFiles = settings.value(QLatin1String("ignoreHiddenFiles"), QVariant(true)).toBool();
folder.navigationPaneClsid = settings.value(QLatin1String("navigationPaneClsid")).toUuid();
+ folder._deployed = settings.value(deployedC(), false).toBool();
folder.virtualFilesMode = Vfs::Off;
QString vfsModeString = settings.value(QStringLiteral("virtualFilesMode")).toString();
@@ -1466,4 +1478,9 @@ bool Folder::groupInSidebar() const
}
return false;
}
+
+bool FolderDefinition::isDeployed() const
+{
+ return _deployed;
+}
} // namespace OCC
diff --git a/src/gui/folder.h b/src/gui/folder.h
index 238cd9d5c..79173cf61 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -115,6 +115,13 @@ public:
QString displayName() const;
+ /**
+ * The folder is deployed by an admin
+ * We will hide the remove option and the disable/enable vfs option.
+ */
+ bool isDeployed() const;
+
+
private:
FolderDefinition(const QByteArray &id, const QUrl &davUrl, const QString &displayName);
@@ -127,6 +134,7 @@ private:
/// path on remote (usually no trailing /, exception "/")
QString _targetPath;
+ bool _deployed;
friend class FolderMan;
};
@@ -349,6 +357,12 @@ public:
*/
bool groupInSidebar() const;
+ /**
+ * The folder is deployed by an admin
+ * We will hide the remove option and the disable/enable vfs option.
+ */
+ bool isDeployed() const;
+
signals:
void syncStateChange();
void syncStarted();