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

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorallexzander <blackslayer4@gmail.com>2021-01-29 21:00:21 +0300
committerallexzander <blackslayer4@gmail.com>2021-02-04 11:05:18 +0300
commit81a090b362f10df8d208924c97148b0bcff135ad (patch)
treec6466fd57619bafbbafa68b48c494ab07b0e307b /src/gui/accountsettings.cpp
parent93b26bc666523d245b323c03567f81f7f7687ccb (diff)
Allow creation of new folders from the Settings Dialog.
Signed-off-by: allexzander <blackslayer4@gmail.com>
Diffstat (limited to 'src/gui/accountsettings.cpp')
-rw-r--r--src/gui/accountsettings.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index ec6254b91..5b340de40 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -17,6 +17,7 @@
#include "ui_accountsettings.h"
#include "theme.h"
+#include "foldercreationdialog.h"
#include "folderman.h"
#include "folderwizard.h"
#include "folderstatusmodel.h"
@@ -333,6 +334,46 @@ void AccountSettings::slotEditCurrentIgnoredFiles()
openIgnoredFilesDialog(f->path());
}
+void AccountSettings::slotOpenMakeFolderDialog()
+{
+ const auto &selected = _ui->_folderList->selectionModel()->currentIndex();
+
+ if (!selected.isValid()) {
+ qCWarning(lcAccountSettings) << "Selection model current folder index is not valid.";
+ return;
+ }
+
+ const auto &classification = _model->classify(selected);
+
+ if (classification != FolderStatusModel::SubFolder && classification != FolderStatusModel::RootFolder) {
+ return;
+ }
+
+ const QString fileName = [this, &selected, &classification] {
+ QString result;
+ if (classification == FolderStatusModel::RootFolder) {
+ const auto alias = _model->data(selected, FolderStatusDelegate::FolderAliasRole).toString();
+ if (const auto folder = FolderMan::instance()->folder(alias)) {
+ result = folder->path();
+ }
+ } else {
+ result = _model->data(selected, FolderStatusDelegate::FolderPathRole).toString();
+ }
+
+ if (result.endsWith('/')) {
+ result.chop(1);
+ }
+
+ return result;
+ }();
+
+ if (!fileName.isEmpty()) {
+ const auto folderCreationDialog = new FolderCreationDialog(fileName, this);
+ folderCreationDialog->setAttribute(Qt::WA_DeleteOnClose);
+ folderCreationDialog->open();
+ }
+}
+
void AccountSettings::slotEditCurrentLocalIgnoredFiles()
{
QModelIndex selected = _ui->_folderList->selectionModel()->currentIndex();
@@ -403,6 +444,10 @@ void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex& index
ac = menu.addAction(tr("Edit Ignored Files"));
connect(ac, &QAction::triggered, this, &AccountSettings::slotEditCurrentLocalIgnoredFiles);
+ ac = menu.addAction(tr("Create new folder"));
+ connect(ac, &QAction::triggered, this, &AccountSettings::slotOpenMakeFolderDialog);
+ ac->setEnabled(QFile::exists(fileName));
+
const auto folder = info->_folder;
if (folder && folder->virtualFilesEnabled()) {
auto availabilityMenu = menu.addMenu(tr("Availability"));
@@ -475,6 +520,10 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
ac = menu->addAction(tr("Edit Ignored Files"));
connect(ac, &QAction::triggered, this, &AccountSettings::slotEditCurrentIgnoredFiles);
+ ac = menu->addAction(tr("Create new folder"));
+ connect(ac, &QAction::triggered, this, &AccountSettings::slotOpenMakeFolderDialog);
+ ac->setEnabled(QFile::exists(folder->path()));
+
if (!_ui->_folderList->isExpanded(index) && folder->supportsSelectiveSync()) {
ac = menu->addAction(tr("Choose what to sync"));
ac->setEnabled(folderConnected);