diff options
Diffstat (limited to 'src/portal_service.h')
-rw-r--r-- | src/portal_service.h | 109 |
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 |