diff options
author | Emanoil Kotsev <deloptes@gmail.com> | 2024-07-11 23:13:01 +0000 |
---|---|---|
committer | Emanoil Kotsev <deloptes@gmail.com> | 2024-07-11 23:13:01 +0000 |
commit | fa084fcf0267031321a692022c8da1022167ebed (patch) | |
tree | c8c330654b5c0d06050de2b3f0b07f7c84a86b93 /src/PortalService.h | |
parent | ae92cf1205676d2ff0c344b2a1305e546d5dd0a5 (diff) | |
download | xdg-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.h | 501 |
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; |