summaryrefslogtreecommitdiffstats
path: root/src/portal_daemon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/portal_daemon.h')
-rw-r--r--src/portal_daemon.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/portal_daemon.h b/src/portal_daemon.h
new file mode 100644
index 0000000..974f234
--- /dev/null
+++ b/src/portal_daemon.h
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ XDG desktop portal implementation for TDE
+ Copyright © 2024 Mavridis Philippe <mavridisf@gmail.com>
+
+ Partially based on code from kdbusnotification
+ Copyright © 2021 Emanoil Kotsev <deloptes@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_DAEMON_H
+#define __PORTAL_DAEMON_H
+
+// TQt
+#include <tqdbusconnection.h>
+#include <tqdbusmessage.h>
+
+// TDE
+#include <kuniqueapplication.h>
+
+// DBus
+#include "portal_service.h"
+
+// Defines
+#define DBUS_PORTAL_SERVICE "org.freedesktop.impl.portal.desktop.tde"
+#define DBUS_RETRY_TIMEOUT 5000
+#define DBUS_RETRY_COUNT 3
+
+#define ZAP(x) if (x) { delete x; x = nullptr; }
+
+class PortalDaemon : public KUniqueApplication
+{
+ TQ_OBJECT
+
+ public:
+ PortalDaemon();
+ virtual ~PortalDaemon();
+
+ private:
+ void connectDBus();
+ void disconnectDBus();
+
+ private slots:
+ void slotDBusSignal(const TQT_DBusMessage&);
+
+ private:
+ RootNodeService *d_root;
+ OrgNodeService *d_org;
+ FreeDesktopNodeService *d_freedesktop;
+ PortalNodeService *d_portal;
+ DesktopNodeService *d_desktop;
+
+ TQT_DBusConnection m_connection;
+ uint m_retryCount;
+};
+
+#endif // __PORTAL_DAEMON_H
+
+// kate: replace-tabs true; tab-width 4; indent-width 4; \ No newline at end of file