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

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/socketapi.cpp')
-rw-r--r--src/gui/socketapi.cpp66
1 files changed, 56 insertions, 10 deletions
diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp
index 82705c59a..bf4e75d3b 100644
--- a/src/gui/socketapi.cpp
+++ b/src/gui/socketapi.cpp
@@ -32,7 +32,9 @@
#include "account.h"
#include "capabilities.h"
#include "asserts.h"
+#include "guiutility.h"
+#include <array>
#include <QBitArray>
#include <QUrl>
#include <QMetaMethod>
@@ -45,6 +47,8 @@
#include <QLocalSocket>
#include <QStringBuilder>
+#include <QClipboard>
+
#include <sqlite3.h>
@@ -436,19 +440,10 @@ void SocketApi::command_SHARE(const QString &localFile, SocketListener *listener
return;
}
- SyncJournalFileRecord rec = shareFolder->journalDb()->getFileRecord(localFileClean);
-
- bool allowReshare = true; // lets assume the good
- if (rec.isValid()) {
- // check the permission: Is resharing allowed?
- if (!rec._remotePerm.contains('R')) {
- allowReshare = false;
- }
- }
const QString message = QLatin1String("SHARE:OK:") + QDir::toNativeSeparators(localFile);
listener->sendMessage(message);
- emit shareCommandReceived(remotePath, localFileClean, allowReshare);
+ emit shareCommandReceived(remotePath, localFileClean);
}
}
@@ -514,6 +509,39 @@ void SocketApi::command_SHARE_MENU_TITLE(const QString &, SocketListener *listen
listener->sendMessage(QLatin1String("SHARE_MENU_TITLE:") + tr("Share with %1", "parameter is ownCloud").arg(Theme::instance()->appNameGUI()));
}
+void SocketApi::command_COPY_PRIVATE_LINK(const QString &localFile, SocketListener *)
+{
+ auto url = getPrivateLinkUrl(localFile);
+ if (!url.isEmpty()) {
+ QApplication::clipboard()->setText(url.toString());
+ }
+}
+
+void SocketApi::command_EMAIL_PRIVATE_LINK(const QString &localFile, SocketListener *)
+{
+ auto url = getPrivateLinkUrl(localFile);
+ if (!url.isEmpty()) {
+ Utility::openEmailComposer(
+ tr("I shared something with you"),
+ url.toString(),
+ 0);
+ }
+}
+
+void SocketApi::command_GET_STRINGS(const QString &, SocketListener *listener)
+{
+ static std::array<std::pair<const char *, QString>, 5> strings { {
+ { "SHARE_MENU_TITLE", tr("Share with %1...", "parameter is ownCloud").arg(Theme::instance()->appNameGUI()) },
+ { "APPNAME", Theme::instance()->appNameGUI() },
+ { "CONTEXT_MENU_TITLE", Theme::instance()->appNameGUI() },
+ { "COPY_PRIVATE_LINK_TITLE", tr("Copy private link to clipboard") },
+ { "EMAIL_PRIVATE_LINK_TITLE", tr("Send private link by email...") },
+ } };
+ for (auto key_value : strings) {
+ listener->sendMessage(QString("STRING:%1:%2").arg(key_value.first, key_value.second));
+ }
+}
+
QString SocketApi::buildRegisterPathMessage(const QString &path)
{
QFileInfo fi(path);
@@ -522,4 +550,22 @@ QString SocketApi::buildRegisterPathMessage(const QString &path)
return message;
}
+QUrl SocketApi::getPrivateLinkUrl(const QString &localFile) const
+{
+ Folder *shareFolder = FolderMan::instance()->folderForPath(localFile);
+ if (!shareFolder) {
+ qCWarning(lcSocketApi) << "Unknown path" << localFile;
+ return QUrl();
+ }
+
+ const QString localFileClean = QDir::cleanPath(localFile);
+ const QString file = localFileClean.mid(shareFolder->cleanPath().length() + 1);
+
+ SyncJournalFileRecord rec = shareFolder->journalDb()->getFileRecord(file);
+ if (rec.isValid()) {
+ return shareFolder->accountState()->account()->filePermalinkUrl(rec.numericFileId());
+ }
+ return QUrl();
+}
+
} // namespace OCC