summaryrefslogtreecommitdiffstats
path: root/src/PortalService.h
diff options
context:
space:
mode:
authorEmanoil Kotsev <deloptes@gmail.com>2024-07-11 23:13:01 +0000
committerEmanoil Kotsev <deloptes@gmail.com>2024-07-11 23:13:01 +0000
commitfa084fcf0267031321a692022c8da1022167ebed (patch)
treec8c330654b5c0d06050de2b3f0b07f7c84a86b93 /src/PortalService.h
parentae92cf1205676d2ff0c344b2a1305e546d5dd0a5 (diff)
downloadxdg-desktop-portal-tde-fa084fcf0267031321a692022c8da1022167ebed.tar.gz
xdg-desktop-portal-tde-fa084fcf0267031321a692022c8da1022167ebed.zip
reworked and created the structure for the complete interface implementation
Note: this is only the structure of the interface Signed-off-by: Emanoil Kotsev <deloptes@gmail.com>
Diffstat (limited to 'src/PortalService.h')
-rw-r--r--src/PortalService.h501
1 files changed, 501 insertions, 0 deletions
diff --git a/src/PortalService.h b/src/PortalService.h
new file mode 100644
index 0000000..fb744bb
--- /dev/null
+++ b/src/PortalService.h
@@ -0,0 +1,501 @@
+/*******************************************************************************
+ XDG desktop portal implementation for TDE
+ Copyright © 2024 Mavridis Philippe <mavridisf@gmail.com>
+
+ 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,
+ or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ Improvements and feedback are welcome!
+ *******************************************************************************/
+
+#ifndef __PORTAL_SERVICE_H
+#define __PORTAL_SERVICE_H
+
+// TQt
+#include <tqdbusconnection.h>
+#include <tqdbusobject.h>
+
+#include <tqmap.h>
+
+#include <printInterface.h>
+#include <settingsInterface.h>
+#include <notificationInterface.h>
+#include <lockdownInterface.h>
+#include <inhibitInterface.h>
+#include <filechooserInterface.h>
+#include <emailInterface.h>
+#include <dynamiclauncherInterface.h>
+#include <appchooserInterface.h>
+#include <accountInterface.h>
+#include <accessInterface.h>
+#include <sessionInterface.h>
+
+#include <propertiesInterface.h>
+
+#include <desktopNode.h>
+#include <dbusbaseNode.h>
+#include <sessionNode.h>
+
+class PropertiesService: public org::freedesktop::DBus::PropertiesInterface
+{
+public:
+ PropertiesService(TQT_DBusConnection&);
+ virtual ~PropertiesService();
+
+protected:
+ bool handleSignalSend(const TQT_DBusMessage& reply);
+ TQString objectPath() const;
+
+ bool Get(const TQString& interface, const TQString& name, TQT_DBusVariant& value, TQT_DBusError& error);
+ bool Set(const TQString& interface, const TQString& name, const TQT_DBusVariant& value, TQT_DBusError& error);
+ bool GetAll(const TQString& interface, TQMap<TQString, TQT_DBusVariant>& properties, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ void handleMethodReply(const TQT_DBusMessage& reply);
+
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class AccessService: public org::freedesktop::impl::portal::AccessInterface
+{
+public:
+ AccessService(TQT_DBusConnection&);
+ virtual ~AccessService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool AccessDialog(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title, const TQString& subtitle,
+ const TQString& body, const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class AccountService: public org::freedesktop::impl::portal::AccountInterface
+{
+public:
+ AccountService(TQT_DBusConnection&);
+ virtual ~AccountService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool GetUserInformation(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& window, const TQMap<TQString, TQT_DBusVariant>& options,
+ TQ_UINT32& response, TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class AppChooserService: public org::freedesktop::impl::portal::AppChooserInterface
+{
+public:
+ AppChooserService(TQT_DBusConnection&);
+ virtual ~AppChooserService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool ChooseApplication(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQStringList& choices,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+ virtual bool UpdateChoices(const TQT_DBusObjectPath& handle,
+ const TQStringList& choices, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class DynamicLauncherService: public org::freedesktop::impl::portal::DynamicLauncherInterface
+{
+public:
+ DynamicLauncherService(TQT_DBusConnection&);
+ virtual ~DynamicLauncherService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool PrepareInstall(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& name, const TQT_DBusVariant& icon_v,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+ virtual bool RequestInstallToken(const TQString& app_id,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class EmailService: public org::freedesktop::impl::portal::EmailInterface
+{
+public:
+ EmailService(TQT_DBusConnection&);
+ virtual ~EmailService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool ComposeEmail(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class FileChooserService: public org::freedesktop::impl::portal::FileChooserInterface
+{
+public:
+ FileChooserService(TQT_DBusConnection&);
+ virtual ~FileChooserService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+protected:
+ virtual bool OpenFile(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+ virtual bool SaveFile(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+ virtual bool SaveFiles(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class InhibitService: public org::freedesktop::impl::portal::InhibitInterface
+{
+public:
+ InhibitService(TQT_DBusConnection&);
+ virtual ~InhibitService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool Inhibit(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& window, TQ_UINT32 flags,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQT_DBusError& error);
+
+ virtual bool CreateMonitor(const TQT_DBusObjectPath& handle,
+ const TQT_DBusObjectPath& session_handle, const TQString& app_id,
+ const TQString& window, TQ_UINT32& response, TQT_DBusError& error);
+
+ virtual bool QueryEndResponse(const TQT_DBusObjectPath& session_handle, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class LockdownService: public org::freedesktop::impl::portal::LockdownInterface
+{
+public:
+ LockdownService(TQT_DBusConnection&);
+ virtual ~LockdownService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+ // this requires Properties as there are properties handled here
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class NotificationService: public org::freedesktop::impl::portal::NotificationInterface
+{
+public:
+ NotificationService(TQT_DBusConnection&);
+ virtual ~NotificationService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool AddNotification(const TQString& app_id, const TQString& id,
+ const TQMap<TQString, TQT_DBusVariant>& notification, TQT_DBusError& error);
+
+ virtual bool RemoveNotification(const TQString& app_id, const TQString& id, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class PrintService: public org::freedesktop::impl::portal::PrintInterface
+{
+public:
+ PrintService(TQT_DBusConnection&);
+ virtual ~PrintService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+ virtual bool Print(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title, const TQT_DBusUnixFd& fd,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+ virtual bool PreparePrint(const TQT_DBusObjectPath& handle, const TQString& app_id,
+ const TQString& parent_window, const TQString& title,
+ const TQMap<TQString, TQT_DBusVariant>& settings,
+ const TQMap<TQString, TQT_DBusVariant>& page_setup,
+ const TQMap<TQString, TQT_DBusVariant>& options, TQ_UINT32& response,
+ TQMap<TQString, TQT_DBusVariant>& results, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class SettingsService: public org::freedesktop::impl::portal::SettingsInterface
+{
+public:
+ SettingsService(TQT_DBusConnection&);
+ virtual ~SettingsService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool ReadAll(const TQStringList& namespaces, TQT_DBusDataMap<
+ TQString>& value, TQT_DBusError& error);
+
+ virtual bool Read(const TQString& _namespace, const TQString& key, TQT_DBusVariant& value, TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+class SessionService: public org::freedesktop::impl::portal::SessionInterface
+{
+public:
+ SessionService(TQT_DBusConnection&);
+ virtual ~SessionService();
+
+protected:
+ // implement methods
+ virtual bool handleSignalSend(const TQT_DBusMessage& reply);
+ virtual TQString objectPath() const;
+
+protected:
+ virtual bool Close(TQT_DBusError& error);
+
+protected:
+ // implement sending replies
+ virtual void handleMethodReply(const TQT_DBusMessage& reply);
+private:
+ TQT_DBusConnection *m_connection;
+};
+
+/**
+ * RootNodeService
+ * Service: -
+ * Path : /
+ * Children: org
+ */
+class RootNodeService: public DBusBaseNode
+{
+public:
+ RootNodeService(TQT_DBusConnection&);
+ virtual ~RootNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+/**
+ * OrgNodeService
+ * Service: -
+ * Path : /org
+ * Children: freedesktop
+ */
+class OrgNodeService: public DBusBaseNode
+{
+public:
+ OrgNodeService(TQT_DBusConnection&);
+ virtual ~OrgNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+/**
+ * FreeDesktopNodeService
+ * Service: -
+ * Path : /org/freedesktop
+ * Children: portal
+ */
+class FreeDesktopNodeService: public DBusBaseNode
+{
+public:
+ FreeDesktopNodeService(TQT_DBusConnection&);
+ virtual ~FreeDesktopNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+/**
+ * PortalNodeService
+ * Service: -
+ * Path : /org/freedesktop/portal
+ * Children: desktop
+ */
+class PortalNodeService: public DBusBaseNode
+{
+public:
+ PortalNodeService(TQT_DBusConnection&);
+ virtual ~PortalNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+/*
+ * DesktopNodeService
+ * Service: org.freedesktop.DBus.Introspectable
+ * Path : /org/freedesktop/portal/desktop
+ * Children: session
+ * Interfaces:
+ */
+class DesktopNodeService: public org::freedesktop::portal::desktopNode
+{
+public:
+ DesktopNodeService(TQT_DBusConnection&);
+ virtual ~DesktopNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+/*
+ * SessionNodeService
+ * Service: -
+ * Path : /org/freedesktop/portal/desktop/session
+ * Children: -
+ */
+class SessionNodeService: public org::freedesktop::portal::desktop::sessionNode
+{
+public:
+ SessionNodeService(TQT_DBusConnection&);
+ virtual ~SessionNodeService();
+
+protected:
+ virtual TQT_DBusObjectBase* createInterface(const TQString&);
+
+private:
+ TQMap<TQString, TQT_DBusObjectBase*> mInterfaces;
+ TQT_DBusConnection mConnection;
+};
+
+#endif // __DESTKOP_PORTAL_H
+
+// kate: replace-tabs true; tab-width 4; indent-width 4;