/******************************************************************************* XDG desktop portal implementation for TDE Copyright © 2024 Mavridis Philippe 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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& 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& options, TQ_UINT32& response, TQMap& 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& options, TQ_UINT32& response, TQMap& 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& options, TQ_UINT32& response, TQMap& 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& options, TQ_UINT32& response, TQMap& results, TQT_DBusError& error); virtual bool RequestInstallToken(const TQString& app_id, const TQMap& 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& options, TQ_UINT32& response, TQMap& 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& options, TQ_UINT32& response, TQMap& results, TQT_DBusError& error); virtual bool SaveFile(const TQT_DBusObjectPath& handle, const TQString& app_id, const TQString& parent_window, const TQString& title, const TQMap& options, TQ_UINT32& response, TQMap& results, TQT_DBusError& error); virtual bool SaveFiles(const TQT_DBusObjectPath& handle, const TQString& app_id, const TQString& parent_window, const TQString& title, const TQMap& options, TQ_UINT32& response, TQMap& 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& 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& 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& options, TQ_UINT32& response, TQMap& results, TQT_DBusError& error); virtual bool PreparePrint(const TQT_DBusObjectPath& handle, const TQString& app_id, const TQString& parent_window, const TQString& title, const TQMap& settings, const TQMap& page_setup, const TQMap& options, TQ_UINT32& response, TQMap& 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 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 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 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 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 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 mInterfaces; TQT_DBusConnection mConnection; }; #endif // __DESTKOP_PORTAL_H // kate: replace-tabs true; tab-width 4; indent-width 4;