mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-26 06:15:48 +03:00
Placeholders: Download from shell integration
This commit is contained in:
parent
91f53521ae
commit
d6078f958b
3 changed files with 60 additions and 7 deletions
|
@ -686,6 +686,22 @@ void SocketApi::command_OPEN_PRIVATE_LINK(const QString &localFile, SocketListen
|
|||
fetchPrivateLinkUrlHelper(localFile, &SocketApi::openPrivateLink);
|
||||
}
|
||||
|
||||
void SocketApi::command_DOWNLOAD_PLACEHOLDER(const QString &filesArg, SocketListener *)
|
||||
{
|
||||
QStringList files = filesArg.split(QLatin1Char('\x1e')); // Record Separator
|
||||
auto placeholderSuffix = QStringLiteral(OWNCLOUD_PLACEHOLDER_SUFFIX);
|
||||
|
||||
for (const auto &file : files) {
|
||||
if (!file.endsWith(placeholderSuffix))
|
||||
continue;
|
||||
auto folder = FolderMan::instance()->folderForPath(file);
|
||||
if (folder) {
|
||||
QString relativePath = QDir::cleanPath(file).mid(folder->cleanPath().length() + 1);
|
||||
folder->downloadPlaceholder(relativePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SocketApi::copyUrlToClipboard(const QString &link)
|
||||
{
|
||||
QApplication::clipboard()->setText(link);
|
||||
|
@ -876,14 +892,36 @@ SocketApi::FileData SocketApi::FileData::parentFolder() const
|
|||
void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListener *listener)
|
||||
{
|
||||
listener->sendMessage(QString("GET_MENU_ITEMS:BEGIN"));
|
||||
bool hasSeveralFiles = argument.contains(QLatin1Char('\x1e')); // Record Separator
|
||||
FileData fileData = hasSeveralFiles ? FileData{} : FileData::get(argument);
|
||||
QStringList files = argument.split(QLatin1Char('\x1e')); // Record Separator
|
||||
|
||||
// Find the common sync folder.
|
||||
// syncFolder will be null if files are in different folders.
|
||||
Folder *syncFolder = nullptr;
|
||||
for (const auto &file : files) {
|
||||
auto folder = FolderMan::instance()->folderForPath(file);
|
||||
if (folder != syncFolder) {
|
||||
if (!syncFolder) {
|
||||
syncFolder = folder;
|
||||
} else {
|
||||
syncFolder = nullptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sharing actions show for single files only
|
||||
if (syncFolder && files.size() == 1 && syncFolder->accountState()->isConnected()) {
|
||||
QString systemPath = QDir::cleanPath(argument);
|
||||
if (systemPath.endsWith(QLatin1Char('/'))) {
|
||||
systemPath.truncate(systemPath.length() - 1);
|
||||
}
|
||||
|
||||
FileData fileData = FileData::get(argument);
|
||||
const auto record = fileData.journalRecord();
|
||||
const bool isOnTheServer = record.isValid();
|
||||
const auto isE2eEncryptedPath = fileData.journalRecord()._isE2eEncrypted || !fileData.journalRecord()._e2eMangledName.isEmpty();
|
||||
auto flagString = isOnTheServer && !isE2eEncryptedPath ? QLatin1String("::") : QLatin1String(":d:");
|
||||
|
||||
if (fileData.folder && fileData.folder->accountState()->isConnected()) {
|
||||
DirectEditor* editor = getDirectEditorForLocalFile(fileData.localPath);
|
||||
if (editor) {
|
||||
//listener->sendMessage(QLatin1String("MENU_ITEM:EDIT") + flagString + tr("Edit via ") + editor->name());
|
||||
|
@ -933,6 +971,19 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Placeholder download action
|
||||
if (syncFolder) {
|
||||
auto placeholderSuffix = QStringLiteral(OWNCLOUD_PLACEHOLDER_SUFFIX);
|
||||
bool hasPlaceholderFile = false;
|
||||
for (const auto &file : files) {
|
||||
if (file.endsWith(placeholderSuffix))
|
||||
hasPlaceholderFile = true;
|
||||
}
|
||||
if (hasPlaceholderFile)
|
||||
listener->sendMessage(QLatin1String("MENU_ITEM:DOWNLOAD_PLACEHOLDER::") + tr("Download file(s)", "", files.size()));
|
||||
}
|
||||
|
||||
listener->sendMessage(QString("GET_MENU_ITEMS:END"));
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@ private:
|
|||
Q_INVOKABLE void command_COPY_PRIVATE_LINK(const QString &localFile, SocketListener *listener);
|
||||
Q_INVOKABLE void command_EMAIL_PRIVATE_LINK(const QString &localFile, SocketListener *listener);
|
||||
Q_INVOKABLE void command_OPEN_PRIVATE_LINK(const QString &localFile, SocketListener *listener);
|
||||
Q_INVOKABLE void command_DOWNLOAD_PLACEHOLDER(const QString &filesArg, SocketListener *listener);
|
||||
Q_INVOKABLE void command_RESOLVE_CONFLICT(const QString &localFile, SocketListener *listener);
|
||||
Q_INVOKABLE void command_DELETE_ITEM(const QString &localFile, SocketListener *listener);
|
||||
Q_INVOKABLE void command_MOVE_ITEM(const QString &localFile, SocketListener *listener);
|
||||
|
|
|
@ -76,6 +76,7 @@ public:
|
|||
|
||||
bool isSyncRunning() const { return _syncRunning; }
|
||||
|
||||
SyncOptions syncOptions() const { return _syncOptions; }
|
||||
void setSyncOptions(const SyncOptions &options) { _syncOptions = options; }
|
||||
bool ignoreHiddenFiles() const { return _csync_ctx->ignore_hidden_files; }
|
||||
void setIgnoreHiddenFiles(bool ignore) { _csync_ctx->ignore_hidden_files = ignore; }
|
||||
|
|
Loading…
Reference in a new issue