summaryrefslogtreecommitdiffstats
path: root/src/dbusInterface.h
blob: 3fa807112102658729ad29211410f8978afddbc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
 /**************************************************************************
 *   Copyright (C) 2006-2007 by Danny Kukawka                              *
 *                           <dkukawka@suse.de>, <danny.kukawka@web.de>    *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of version 2 of the GNU General Public License     *
 *   as published by the Free Software Foundation.                         *
 *                                                                         *
 *   This program 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 General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.          *
 ***************************************************************************/

/*!
*  \file 	dbusInterface.h
*  \brief 	Headerfile for dbusInterface.cpp and the class \ref dbusInterface.
*/
/*!
*  \class 	dbusInterface
*  \brief 	class for connection to D-Bus
*  \author 	Danny Kukawka, <dkukawka@suse.de>, <danny.kukawka@web.de>
*  \date    	2006-2007
*/

#ifndef _DBUS_INTERFACE_H_
#define _DBUS_INTERFACE_H_

#ifndef DBUS_API_SUBJECT_TO_CHANGE
#define DBUS_API_SUBJECT_TO_CHANGE
#endif

// Global Header
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

// QT - Header
#include <tqobject.h>
#include <tqstring.h>

// D-Bus Header
#include <tqdbusconnection.h>
#include <tqdbusobjectpath.h>
#include <tqdbusproxy.h>
#include <tqdbusunixfd.h>

// tdepowersave - Header
#include "tdepowersave_debug.h"

#define CK_SERVICE		"org.freedesktop.ConsoleKit"
#define CK_MANAGER_IFACE	"org.freedesktop.ConsoleKit.Manager"
#define CK_MANAGER_OBJECT	"/org/freedesktop/ConsoleKit/Manager"
#define CK_SESSION_IFACE	"org.freedesktop.ConsoleKit.Session"
#define CK_SEAT_IFACE		"org.freedesktop.ConsoleKit.Seat"

#define SYSTEMD_LOGIN1_SERVICE		"org.freedesktop.login1"
#define SYSTEMD_LOGIN1_PATH		"/org/freedesktop/login1"
#define SYSTEMD_LOGIN1_MANAGER_IFACE	"org.freedesktop.login1.Manager"
#define SYSTEMD_LOGIN1_SESSION_IFACE	"org.freedesktop.login1.Session"
#define SYSTEMD_LOGIN1_SEAT_IFACE	"org.freedesktop.login1.Seat"

class dbusInterface : public TQObject{
	Q_OBJECT
	

private:

	//! TQt connection to D-Bus
	TQT_DBusConnection dBusConn;

	//! TQt D-Bus proxy for watching signals
	TQT_DBusProxy* dBusWatch;
	TQT_DBusProxy* dBusLocal;

	TQT_DBusObjectPath systemdSession;
	TQT_DBusProxy* systemdSeat;
	TQT_DBusUnixFd systemdInhibit;

	TQT_DBusObjectPath consolekitSession;
	TQT_DBusProxy* consolekitSeat;

	/* D-Bus helper functions */
	//! to initialise the connection to D-Bus 
	bool initDBUS();

	//! handles signal service registred/unregistered
	void onServiceRegistered(const TQString&);
	void onServiceUnregistered(const TQString&);

private slots:

	//! to reconnect to D-Bus
	bool reconnect();

public:

	//! default constructor
	dbusInterface();
	//! default destructor
	~dbusInterface();

	//! to close the connection to D-Bus
	bool close();

	// --- helper to get private members of the class --- //
	//! to get information if TDEPowersave is connected to D-Bus
	bool isConnectedToDBUS();

	//! to check active session state
	bool checkActiveSession();

public slots:

	void handleDBusSignal(const TQT_DBusMessage&);

signals:

	void activeSessionChanged(bool);

};

#endif