10 #include <tqstringlist.h>
13 #include <tqdbusdata.h>
14 #include <tqdbusdatalist.h>
15 #include <tqdbusdatamap.h>
16 #include <tqdbuserror.h>
17 #include <tqdbusmessage.h>
18 #include <tqdbusvariant.h>
30 interfaceElement.setAttribute(
"name",
"org.freedesktop.DBus.Properties");
32 TQDomDocument document = interfaceElement.ownerDocument();
33 TQDomElement methodElement = document.createElement(
"method");
34 methodElement.setAttribute(
"name",
"Get");
36 TQDomElement argumentElement = document.createElement(
"arg");
37 argumentElement.setAttribute(
"name",
"interface");
38 argumentElement.setAttribute(
"type",
"s");
39 argumentElement.setAttribute(
"direction",
"in");
40 methodElement.appendChild(argumentElement);
42 argumentElement = document.createElement(
"arg");
43 argumentElement.setAttribute(
"name",
"name");
44 argumentElement.setAttribute(
"type",
"s");
45 argumentElement.setAttribute(
"direction",
"in");
46 methodElement.appendChild(argumentElement);
48 argumentElement = document.createElement(
"arg");
49 argumentElement.setAttribute(
"name",
"value");
50 argumentElement.setAttribute(
"type",
"v");
51 argumentElement.setAttribute(
"direction",
"out");
52 methodElement.appendChild(argumentElement);
54 interfaceElement.appendChild(methodElement);
56 methodElement = document.createElement(
"method");
57 methodElement.setAttribute(
"name",
"Set");
59 argumentElement = document.createElement(
"arg");
60 argumentElement.setAttribute(
"name",
"interface");
61 argumentElement.setAttribute(
"type",
"s");
62 argumentElement.setAttribute(
"direction",
"in");
63 methodElement.appendChild(argumentElement);
65 argumentElement = document.createElement(
"arg");
66 argumentElement.setAttribute(
"name",
"name");
67 argumentElement.setAttribute(
"type",
"s");
68 argumentElement.setAttribute(
"direction",
"in");
69 methodElement.appendChild(argumentElement);
71 argumentElement = document.createElement(
"arg");
72 argumentElement.setAttribute(
"name",
"value");
73 argumentElement.setAttribute(
"type",
"v");
74 argumentElement.setAttribute(
"direction",
"in");
75 methodElement.appendChild(argumentElement);
77 interfaceElement.appendChild(methodElement);
79 methodElement = document.createElement(
"method");
80 methodElement.setAttribute(
"name",
"GetAll");
82 argumentElement = document.createElement(
"arg");
83 argumentElement.setAttribute(
"name",
"interface");
84 argumentElement.setAttribute(
"type",
"s");
85 argumentElement.setAttribute(
"direction",
"in");
86 methodElement.appendChild(argumentElement);
88 argumentElement = document.createElement(
"arg");
89 argumentElement.setAttribute(
"name",
"properties");
90 argumentElement.setAttribute(
"type",
"a{sv}");
91 argumentElement.setAttribute(
"direction",
"out");
92 methodElement.appendChild(argumentElement);
94 interfaceElement.appendChild(methodElement);
96 methodElement = document.createElement(
"signal");
97 methodElement.setAttribute(
"name",
"PropertiesChanged");
99 argumentElement = document.createElement(
"arg");
100 argumentElement.setAttribute(
"name",
"interface");
101 argumentElement.setAttribute(
"type",
"s");
102 argumentElement.setAttribute(
"direction",
"out");
103 methodElement.appendChild(argumentElement);
105 argumentElement = document.createElement(
"arg");
106 argumentElement.setAttribute(
"name",
"changed_properties");
107 argumentElement.setAttribute(
"type",
"a{sv}");
108 argumentElement.setAttribute(
"direction",
"out");
109 methodElement.appendChild(argumentElement);
111 argumentElement = document.createElement(
"arg");
112 argumentElement.setAttribute(
"name",
"invalidated_properties");
113 argumentElement.setAttribute(
"type",
"as");
114 argumentElement.setAttribute(
"direction",
"out");
115 methodElement.appendChild(argumentElement);
117 interfaceElement.appendChild(methodElement);
123 Q_ASSERT(!path.isEmpty());
125 TQT_DBusMessage message = TQT_DBusMessage::signal(path,
"org.freedesktop.DBus.Properties",
"PropertiesChanged");
127 message << TQT_DBusData::fromString(
interface);
128 message << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap< TQString >(changed_properties));
129 message << TQT_DBusData::fromList((invalidated_properties));
138 TQT_DBusMessage reply;
140 TQString _interface = message[0].toString();
141 TQString _name = message[1].toString();
142 TQT_DBusVariant _value;
144 if (
Get(_interface, _name, _value, error))
146 reply = TQT_DBusMessage::methodReply(message);
147 reply << TQT_DBusData::fromVariant(_value);
151 if (!error.isValid())
153 tqWarning(
"Call to implementation of org::freedesktop::DBus::PropertiesInterface::Get returned 'false' but error object is not valid!");
155 error = TQT_DBusError::stdFailed(
"org.freedesktop.DBus.Properties.Get execution failed");
158 reply = TQT_DBusMessage::methodError(message, error);
167 TQT_DBusMessage reply;
169 TQString _interface = message[0].toString();
170 TQString _name = message[1].toString();
171 TQT_DBusVariant _value = message[2].toVariant();
173 if (
Set(_interface, _name, _value, error))
175 reply = TQT_DBusMessage::methodReply(message);
179 if (!error.isValid())
181 tqWarning(
"Call to implementation of org::freedesktop::DBus::PropertiesInterface::Set returned 'false' but error object is not valid!");
183 error = TQT_DBusError::stdFailed(
"org.freedesktop.DBus.Properties.Set execution failed");
186 reply = TQT_DBusMessage::methodError(message, error);
195 TQT_DBusMessage reply;
197 TQString _interface = message[0].toString();
200 if (
GetAll(_interface, _properties, error))
202 reply = TQT_DBusMessage::methodReply(message);
203 reply << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap< TQString >(_properties));
207 if (!error.isValid())
209 tqWarning(
"Call to implementation of org::freedesktop::DBus::PropertiesInterface::GetAll returned 'false' but error object is not valid!");
211 error = TQT_DBusError::stdFailed(
"org.freedesktop.DBus.Properties.GetAll execution failed");
214 reply = TQT_DBusMessage::methodError(message, error);
222 if (message.interface() !=
"org.freedesktop.DBus.Properties")
return false;
224 if (message.member() ==
"Get")
226 TQT_DBusMessage reply =
callGet(message);
232 if (message.member() ==
"Set")
234 TQT_DBusMessage reply =
callSet(message);
240 if (message.member() ==
"GetAll")
static void buildIntrospectionData(TQDomElement &interfaceElement)
virtual bool handleMethodCall(const TQT_DBusMessage &message)
virtual bool emitPropertiesChanged(const TQString &interface, const TQMap< TQString, TQT_DBusVariant > &changed_properties, const TQStringList &invalidated_properties)
virtual TQString objectPath() const =0
TQT_DBusMessage callGetAll(const TQT_DBusMessage &message)
static const TQCString interface()
virtual void handleMethodReply(const TQT_DBusMessage &reply)=0
virtual bool GetAll(const TQString &interface, TQMap< TQString, TQT_DBusVariant > &properties, TQT_DBusError &error)=0
virtual bool Get(const TQString &interface, const TQString &name, TQT_DBusVariant &value, TQT_DBusError &error)=0
virtual bool Set(const TQString &interface, const TQString &name, const TQT_DBusVariant &value, TQT_DBusError &error)=0
TQT_DBusMessage callSet(const TQT_DBusMessage &message)
virtual bool handleSignalSend(const TQT_DBusMessage &reply)=0
TQT_DBusMessage callGet(const TQT_DBusMessage &message)