summaryrefslogtreecommitdiffstats
path: root/src/portal_service.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/portal_service.h')
-rw-r--r--src/portal_service.h109
1 files changed, 103 insertions, 6 deletions
diff --git a/src/portal_service.h b/src/portal_service.h
index 8e7c400..9e3b282 100644
--- a/src/portal_service.h
+++ b/src/portal_service.h
@@ -2,6 +2,9 @@
XDG desktop portal implementation for TDE
Copyright © 2024 Mavridis Philippe <[email protected]>
+ Partially based on code from kdbusnotification
+ Copyright © 2021 Emanoil Kotsev <[email protected]>
+
This program or library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the License,
@@ -26,20 +29,114 @@
#include <tqdbusconnection.h>
#include <tqdbusobject.h>
-class TDEFileChooserPortal;
+// DBus
+#include "interfaces/desktopNode.h"
+#include "interfaces/dbusbaseNode.h"
+
+#define REGISTER_PORTAL(klass) \
+ m_interfaces.insert(klass::interface(), new klass(connection));
+
+#define DESTROY_PORTAL(klass) \
+ delete m_interfaces[klass::interface()];
+
+/**
+ * DesktopNodeService
+ * Service : org.freedesktop.DBus.Introspectable
+ * Path : /org/freedesktop/portal/desktop
+ * Children : -
+ */
+class DesktopNodeService : public org::freedesktop::portal::desktopNode
+{
+ public:
+ DesktopNodeService(TQT_DBusConnection&);
+ ~DesktopNodeService();
+
+ protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+ private:
+ TQMap<TQString, TQT_DBusObjectBase*> m_interfaces;
+ TQT_DBusConnection m_connection;
+};
+
+/**
+ * PortalNodeService
+ * Service : -
+ * Path : /org/freedesktop/portal
+ * Children : Desktop
+ */
+class PortalNodeService : public DBusBaseNode
+{
+ public:
+ PortalNodeService(TQT_DBusConnection&);
+ ~PortalNodeService();
+
+ protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+ private:
+ TQMap<TQString, TQT_DBusObjectBase*> m_interfaces;
+ TQT_DBusConnection m_connection;
+};
+
+/**
+ * FreeDesktopNodeService
+ * Service : -
+ * Path : /org/freedesktop
+ * Children : portal
+ */
+class FreeDesktopNodeService : public DBusBaseNode
+{
+ public:
+ FreeDesktopNodeService(TQT_DBusConnection&);
+ ~FreeDesktopNodeService();
+
+ protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+ private:
+ TQMap<TQString, TQT_DBusObjectBase*> m_interfaces;
+ TQT_DBusConnection m_connection;
+};
+
+/**
+ * OrgNodeService
+ * Service : -
+ * Path : /org
+ * Children : freedesktop
+ */
+class OrgNodeService : public DBusBaseNode
+{
+ public:
+ OrgNodeService(TQT_DBusConnection&);
+ ~OrgNodeService();
+
+ protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+ private:
+ TQMap<TQString, TQT_DBusObjectBase*> m_interfaces;
+ TQT_DBusConnection m_connection;
+};
-class TDEPortalService : public TQT_DBusObjectBase
+/**
+ * RootNodeService
+ * Service : -
+ * Path : /
+ * Children : org
+ */
+class RootNodeService : public DBusBaseNode
{
public:
- TDEPortalService(TQT_DBusConnection &connection);
- ~TDEPortalService();
+ RootNodeService(TQT_DBusConnection&);
+ ~RootNodeService();
protected:
- bool handleMethodCall(const TQT_DBusMessage &message);
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
private:
+ TQMap<TQString, TQT_DBusObjectBase*> m_interfaces;
TQT_DBusConnection m_connection;
- TQT_DBusObjectBase* getPortalInterface(TQCString portal);
};
#endif // __DESTKOP_PORTAL_H