Update the FolderStatusModel when a folder encryption ends
authorKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 8 Dec 2020 17:05:29 +0000 (18:05 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:59:24 +0000 (10:59 +0100)
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
src/gui/accountsettings.cpp
src/gui/accountsettings.h
src/gui/folderstatusmodel.h

index 59e01683132c81edb419fdb12dac2158861e3ffb..69eca95631de8753a4cacb8b32de70c77880e71a 100644 (file)
 
 #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<FolderStatusModel::SubFolderInfo*>();
+    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();
 }
index f41a72174c272169ad296954cc0eb8e2e09aae02..c9f152cc33fae092b070376f1b7bf4d1b69cb42d 100644 (file)
@@ -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);
index ddf470d86804b5a2d42283a0ab207a083ceca018..194e8edf98aa9aa4985c13214747d34038131493 100644 (file)
@@ -163,4 +163,6 @@ signals:
 
 } // namespace OCC
 
+Q_DECLARE_METATYPE(OCC::FolderStatusModel::SubFolderInfo*)
+
 #endif // FOLDERSTATUSMODEL_H