From: Claudio Cambra Date: Fri, 9 Dec 2022 17:31:06 +0000 (+0100) Subject: Move encrypt menu entry declaration to own method X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~70^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=39a48bf8229b3a57f83910cb2c9392fb6f4776af;p=nextcloud-desktop.git Move encrypt menu entry declaration to own method Signed-off-by: Claudio Cambra --- diff --git a/src/gui/socketapi/socketapi.cpp b/src/gui/socketapi/socketapi.cpp index 541063c8f..100c9087b 100644 --- a/src/gui/socketapi/socketapi.cpp +++ b/src/gui/socketapi/socketapi.cpp @@ -1155,6 +1155,33 @@ void SocketApi::sendSharingContextMenuOptions(const FileData &fileData, SocketLi //listener->sendMessage(QLatin1String("MENU_ITEM:EMAIL_PRIVATE_LINK") + flagString + tr("Send private link by email …")); } +void SocketApi::sendEncryptFolderCommandMenuEntries(const QFileInfo &fileInfo, + const FileData &fileData, + const bool isE2eEncryptedPath, + const OCC::SocketListener* const listener) const +{ + if (!fileInfo.isDir() || isE2eEncryptedPath) { + return; + } + + bool anyAncestorEncrypted = false; + auto ancestor = fileData.parentFolder(); + while (ancestor.journalRecord().isValid()) { + if (ancestor.journalRecord()._isE2eEncrypted) { + anyAncestorEncrypted = true; + break; + } + + ancestor = ancestor.parentFolder(); + } + + if (!anyAncestorEncrypted) { + const auto isOnTheServer = fileData.journalRecord().isValid(); + const auto flagString = isOnTheServer ? QLatin1String("::") : QLatin1String(":d:"); + listener->sendMessage(QStringLiteral("MENU_ITEM:ENCRYPT") + flagString + tr("Encrypt")); + } +} + void SocketApi::sendLockFileCommandMenuEntries(const QFileInfo &fileInfo, Folder* const syncFolder, const FileData &fileData, @@ -1282,23 +1309,6 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe listener->sendMessage(QLatin1String("MENU_ITEM:ACTIVITY") + flagString + tr("Activity")); } - if (fileInfo.isDir() && !isE2eEncryptedPath) { - bool anyAncestorEncrypted = false; - auto ancestor = fileData.parentFolder(); - while (ancestor.journalRecord().isValid()) { - if (ancestor.journalRecord()._isE2eEncrypted) { - anyAncestorEncrypted = true; - break; - } - - ancestor = ancestor.parentFolder(); - } - - if (!anyAncestorEncrypted) { - listener->sendMessage(QStringLiteral("MENU_ITEM:ENCRYPT") + flagString + tr("Encrypt")); - } - } - DirectEditor* editor = getDirectEditorForLocalFile(fileData.localPath); if (editor) { //listener->sendMessage(QLatin1String("MENU_ITEM:EDIT") + flagString + tr("Edit via ") + editor->name()); @@ -1307,6 +1317,7 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe listener->sendMessage(QLatin1String("MENU_ITEM:OPEN_PRIVATE_LINK") + flagString + tr("Open in browser")); } + sendEncryptFolderCommandMenuEntries(fileInfo, fileData, isE2eEncryptedPath, listener); sendLockFileCommandMenuEntries(fileInfo, syncFolder, fileData, listener); sendSharingContextMenuOptions(fileData, listener, !isE2eEncryptedPath); diff --git a/src/gui/socketapi/socketapi.h b/src/gui/socketapi/socketapi.h index ab3b6c264..0806158a2 100644 --- a/src/gui/socketapi/socketapi.h +++ b/src/gui/socketapi/socketapi.h @@ -153,8 +153,15 @@ private: // Sends the context menu options relating to sharing to listener void sendSharingContextMenuOptions(const FileData &fileData, SocketListener *listener, bool enabled); - void - sendLockFileCommandMenuEntries(const QFileInfo &fileInfo, Folder *const syncFolder, const FileData &fileData, const SocketListener *const listener) const; + void sendEncryptFolderCommandMenuEntries(const QFileInfo &fileInfo, + const FileData &fileData, + const bool isE2eEncryptedPath, + const OCC::SocketListener* const listener) const; + + void sendLockFileCommandMenuEntries(const QFileInfo &fileInfo, + Folder *const syncFolder, + const FileData &fileData, + const SocketListener *const listener) const; void sendLockFileInfoMenuEntries(const QFileInfo &fileInfo, Folder* const syncFolder,