From 9f0e0b0f6abc3f4434d863413f0f27734ae84fdf Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Tue, 8 Dec 2020 18:05:29 +0100 Subject: [PATCH] Update the FolderStatusModel when a folder encryption ends Signed-off-by: Kevin Ottens --- src/gui/accountsettings.cpp | 14 +++++++++++++- src/gui/accountsettings.h | 2 +- src/gui/folderstatusmodel.h | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 59e016831..69eca9563 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -59,6 +59,10 @@ #include "account.h" +namespace { +constexpr auto propertyFolderInfo = "folderInfo"; +} + namespace OCC { Q_LOGGING_CATEGORY(lcAccountSettings, "nextcloud.gui.account.settings", QtInfoMsg) @@ -239,6 +243,13 @@ void AccountSettings::slotEncryptFolderFinished(int status) if (!job->errorString().isEmpty()) { QMessageBox::warning(nullptr, tr("Warning"), job->errorString()); } + + const auto folderInfo = job->property(propertyFolderInfo).value(); + Q_ASSERT(folderInfo); + const auto index = _model->indexForPath(folderInfo->_folder, folderInfo->_path); + Q_ASSERT(index.isValid()); + _model->resetAndFetch(index.parent()); + job->deleteLater(); } @@ -297,7 +308,7 @@ bool AccountSettings::canEncryptOrDecrypt (const FolderStatusModel::SubFolderInf return true; } -void AccountSettings::slotMarkSubfolderEncrypted(const FolderStatusModel::SubFolderInfo* folderInfo) +void AccountSettings::slotMarkSubfolderEncrypted(FolderStatusModel::SubFolderInfo* folderInfo) { if (!canEncryptOrDecrypt(folderInfo)) { return; @@ -309,6 +320,7 @@ void AccountSettings::slotMarkSubfolderEncrypted(const FolderStatusModel::SubFol const auto path = folderInfo->_path.chopped(1); auto job = new OCC::EncryptFolderJob(accountsState()->account(), folderInfo->_folder->journalDb(), path, folderInfo->_fileId, this); + job->setProperty(propertyFolderInfo, QVariant::fromValue(folderInfo)); connect(job, &OCC::EncryptFolderJob::finished, this, &AccountSettings::slotEncryptFolderFinished); job->start(); } diff --git a/src/gui/accountsettings.h b/src/gui/accountsettings.h index f41a72174..c9f152cc3 100644 --- a/src/gui/accountsettings.h +++ b/src/gui/accountsettings.h @@ -94,7 +94,7 @@ protected slots: void slotDeleteAccount(); void slotToggleSignInState(); void refreshSelectiveSyncStatus(); - void slotMarkSubfolderEncrypted(const FolderStatusModel::SubFolderInfo* folderInfo); + void slotMarkSubfolderEncrypted(FolderStatusModel::SubFolderInfo *folderInfo); void slotSubfolderContextMenuRequested(const QModelIndex& idx, const QPoint& point); void slotCustomContextMenuRequested(const QPoint &); void slotFolderListClicked(const QModelIndex &indx); diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h index ddf470d86..194e8edf9 100644 --- a/src/gui/folderstatusmodel.h +++ b/src/gui/folderstatusmodel.h @@ -163,4 +163,6 @@ signals: } // namespace OCC +Q_DECLARE_METATYPE(OCC::FolderStatusModel::SubFolderInfo*) + #endif // FOLDERSTATUSMODEL_H