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

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex-z <blackslayer4@gmail.com>2022-07-19 13:05:20 +0300
committeralex-z <blackslayer4@gmail.com>2022-08-03 11:38:33 +0300
commitd42d3c057f0daacea92aed9fa97263bdc8b38841 (patch)
tree761ac43e744c819d159b42ce3518566ebbaec31f /src/common
parent4f85f7a45dfa3a5a44047f383dfd53b4c776a5b7 (diff)
Implement URI handler for local file editing
Signed-off-by: alex-z <blackslayer4@gmail.com>
Diffstat (limited to 'src/common')
-rw-r--r--src/common/utility.h5
-rw-r--r--src/common/utility_mac.cpp2
-rw-r--r--src/common/utility_unix.cpp23
-rw-r--r--src/common/utility_win.cpp2
4 files changed, 32 insertions, 0 deletions
diff --git a/src/common/utility.h b/src/common/utility.h
index 98dc3030a..6179be9d5 100644
--- a/src/common/utility.h
+++ b/src/common/utility.h
@@ -247,6 +247,11 @@ namespace Utility {
*/
OCSYNC_EXPORT QString getCurrentUserName();
+ /**
+ * @brief Registers the desktop app as a handler for a custom URI to enable local editing
+ */
+ OCSYNC_EXPORT void registerUriHandlerForLocalEditing();
+
#ifdef Q_OS_WIN
OCSYNC_EXPORT bool registryKeyExists(HKEY hRootKey, const QString &subKey);
OCSYNC_EXPORT QVariant registryGetKeyValue(HKEY hRootKey, const QString &subKey, const QString &valueName);
diff --git a/src/common/utility_mac.cpp b/src/common/utility_mac.cpp
index d3a3d480a..9a220527f 100644
--- a/src/common/utility_mac.cpp
+++ b/src/common/utility_mac.cpp
@@ -141,4 +141,6 @@ QString Utility::getCurrentUserName()
return {};
}
+void Utility::registerUriHandlerForLocalEditing() { /* URI handler is registered via MacOSXBundleInfo.plist.in */ }
+
} // namespace OCC
diff --git a/src/common/utility_unix.cpp b/src/common/utility_unix.cpp
index 887213f09..27e66dc73 100644
--- a/src/common/utility_unix.cpp
+++ b/src/common/utility_unix.cpp
@@ -19,6 +19,7 @@
#include <QStandardPaths>
#include <QtGlobal>
+#include <QProcess>
namespace OCC {
@@ -113,4 +114,26 @@ QString Utility::getCurrentUserName()
return {};
}
+void Utility::registerUriHandlerForLocalEditing()
+{
+ const auto appImagePath = qEnvironmentVariable("APPIMAGE");
+ const auto runningInsideAppImage = !appImagePath.isNull() && QFile::exists(appImagePath);
+
+ if (!runningInsideAppImage) {
+ // only register x-scheme-handler if running inside appImage
+ return;
+ }
+
+ // mirall.desktop.in must have an x-scheme-handler mime type specified
+ const QString desktopFileName = QLatin1String(LINUX_APPLICATION_ID) + QLatin1String(".desktop");
+ QProcess process;
+ const QStringList args = {
+ QLatin1String("default"),
+ desktopFileName,
+ QStringLiteral("x-scheme-handler/%1").arg(QStringLiteral(APPLICATION_URI_HANDLER_SCHEME))
+ };
+ process.start(QStringLiteral("xdg-mime"), args, QIODevice::ReadOnly);
+ process.waitForFinished();
+}
+
} // namespace OCC
diff --git a/src/common/utility_win.cpp b/src/common/utility_win.cpp
index ed322669b..37b348660 100644
--- a/src/common/utility_win.cpp
+++ b/src/common/utility_win.cpp
@@ -448,6 +448,8 @@ QString Utility::getCurrentUserName()
return QString::fromWCharArray(username);
}
+void Utility::registerUriHandlerForLocalEditing() { /* URI handler is registered via Nextcloud.wxs */ }
+
Utility::NtfsPermissionLookupRAII::NtfsPermissionLookupRAII()
{
qt_ntfs_permission_lookup++;