summaryrefslogtreecommitdiffstats
path: root/qt/src/qdbusinternalfilters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt/src/qdbusinternalfilters.cpp')
-rw-r--r--qt/src/qdbusinternalfilters.cpp235
1 files changed, 0 insertions, 235 deletions
diff --git a/qt/src/qdbusinternalfilters.cpp b/qt/src/qdbusinternalfilters.cpp
deleted file mode 100644
index ed210744..00000000
--- a/qt/src/qdbusinternalfilters.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-/* -*- mode: C++ -*-
- *
- * Copyright (C) 2006 Trolltech AS. All rights reserved.
- * Author: Thiago Macieira <thiago.macieira@trolltech.com>
- *
- * Licensed under the Academic Free License version 2.1
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- */
-
-#include "qdbusconnection_p.h"
-
-#include <dbus/dbus.h>
-#include <QtCore/qcoreapplication.h>
-#include <QtCore/qmetaobject.h>
-#include <QtCore/qstringlist.h>
-
-#include "qdbusabstractadaptor.h"
-#include "qdbusabstractadaptor_p.h"
-#include "qdbusconnection.h"
-#include "qdbusmessage.h"
-#include "qdbustypehelper_p.h"
-#include "qdbusutil.h"
-
-// defined in qdbusxmlgenerator.cpp
-extern QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo,
- const QMetaObject *base, int flags);
-
-static const char introspectableInterfaceXml[] =
- " <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
- " <method name=\"Introspect\">\n"
- " <arg name=\"xml_data\" type=\"s\" direction=\"out\"/>\n"
- " </method>\n"
- " </interface>\n";
-
-static const char propertiesInterfaceXml[] =
- " <interface name=\"org.freedesktop.DBus.Properties\">\n"
- " <method name=\"Get\">\n"
- " <arg name=\"interface_name\" type=\"s\" direction=\"in\"/>\n"
- " <arg name=\"property_name\" type=\"s\" direction=\"in\"/>\n"
- " <arg name=\"value\" type=\"v\" direction=\"out\"/>\n"
- " </method>\n"
- " <method name=\"Set\">\n"
- " <arg name=\"interface_name\" type=\"s\" direction=\"in\"/>\n"
- " <arg name=\"property_name\" type=\"s\" direction=\"in\"/>\n"
- " <arg name=\"value\" type=\"v\" direction=\"in\"/>\n"
- " </method>\n"
- " </interface>\n";
-
-static QString generateSubObjectXml(QObject *object)
-{
- QString retval;
- foreach (QObject *child, object->children()) {
- QString name = child->objectName();
- if (!name.isEmpty())
- retval += QString(QLatin1String(" <node name=\"%1\"/>\n"))
- .arg(name);
- }
- return retval;
-}
-
-QString qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node)
-{
- // object may be null
-
- QString xml_data(QLatin1String(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE));
- xml_data += QLatin1String("<node>\n");
-
- if (node->obj) {
- if (node->flags & QDBusConnection::ExportContents) {
- const QMetaObject *mo = node->obj->metaObject();
- for ( ; mo != &QObject::staticMetaObject; mo = mo->superClass())
- xml_data += qDBusGenerateMetaObjectXml(QString(), mo, mo->superClass(),
- node->flags);
- }
-
- // does this object have adaptors?
- QDBusAdaptorConnector *connector;
- if (node->flags & QDBusConnection::ExportAdaptors &&
- (connector = qDBusFindAdaptorConnector(node->obj))) {
-
- // trasverse every adaptor in this object
- QDBusAdaptorConnector::AdaptorMap::ConstIterator it = connector->adaptors.constBegin();
- QDBusAdaptorConnector::AdaptorMap::ConstIterator end = connector->adaptors.constEnd();
- for ( ; it != end; ++it) {
- // add the interface:
- QString ifaceXml = QDBusAbstractAdaptorPrivate::retrieveIntrospectionXml(it->adaptor);
- if (ifaceXml.isEmpty()) {
- // add the interface's contents:
- ifaceXml += qDBusGenerateMetaObjectXml(it->interface, it->metaObject,
- &QDBusAbstractAdaptor::staticMetaObject,
- QDBusConnection::ExportAllContents);
-
- QDBusAbstractAdaptorPrivate::saveIntrospectionXml(it->adaptor, ifaceXml);
- }
-
- xml_data += ifaceXml;
- }
- }
-
- xml_data += QLatin1String( introspectableInterfaceXml );
- xml_data += QLatin1String( propertiesInterfaceXml );
- }
-
- if (node->flags & QDBusConnection::ExportChildObjects) {
- xml_data += generateSubObjectXml(node->obj);
- } else {
- // generate from the object tree
- foreach (const QDBusConnectionPrivate::ObjectTreeNode::Data &entry, node->children) {
- if (entry.node && (entry.node->obj || !entry.node->children.isEmpty()))
- xml_data += QString(QLatin1String(" <node name=\"%1\"/>\n"))
- .arg(entry.name);
- }
- }
-
- xml_data += QLatin1String("</node>\n");
- return xml_data;
-}
-
-void qDBusIntrospectObject(const QDBusConnectionPrivate::ObjectTreeNode *node,
- const QDBusMessage &msg)
-{
- // now send it
- QDBusMessage reply = QDBusMessage::methodReply(msg);
- reply << qDBusIntrospectObject(node);
- msg.connection().send(reply);
-}
-
-// implement the D-Bus interface org.freedesktop.DBus.Properties
-
-static void sendPropertyError(const QDBusMessage &msg, const QString &interface_name)
-{
- QDBusMessage error = QDBusMessage::error(msg, QLatin1String(DBUS_ERROR_INVALID_ARGS),
- QString::fromLatin1("Interface %1 was not found in object %2")
- .arg(interface_name)
- .arg(msg.path()));
- msg.connection().send(error);
-}
-
-void qDBusPropertyGet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg)
-{
- Q_ASSERT(msg.count() == 2);
- QString interface_name = msg.at(0).toString();
- QByteArray property_name = msg.at(1).toString().toUtf8();
-
- QDBusAdaptorConnector *connector;
- QVariant value;
- if (node->flags & QDBusConnection::ExportAdaptors &&
- (connector = qDBusFindAdaptorConnector(node->obj))) {
-
- // find the class that implements interface_name
- QDBusAdaptorConnector::AdaptorMap::ConstIterator it;
- it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(),
- interface_name);
- if (it != connector->adaptors.constEnd() && it->interface == interface_name)
- value = it->adaptor->property(property_name);
- }
-
- if (!value.isValid() && node->flags & QDBusConnection::ExportProperties) {
- // try the object itself
- int pidx = node->obj->metaObject()->indexOfProperty(property_name);
- if (pidx != -1) {
- QMetaProperty mp = node->obj->metaObject()->property(pidx);
- if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) ==
- QDBusConnection::ExportAllProperties)
- value = mp.read(node->obj);
- }
- }
-
- if (!value.isValid()) {
- // the property was not found
- sendPropertyError(msg, interface_name);
- return;
- }
-
- QDBusMessage reply = QDBusMessage::methodReply(msg);
- reply.setSignature(QLatin1String("v"));
- reply << value;
- msg.connection().send(reply);
-}
-
-void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, const QDBusMessage &msg)
-{
- Q_ASSERT(msg.count() == 3);
- QString interface_name = msg.at(0).toString();
- QByteArray property_name = msg.at(1).toString().toUtf8();
- QVariant value = QDBusTypeHelper<QVariant>::fromVariant(msg.at(2));
-
- QDBusAdaptorConnector *connector;
- if (node->flags & QDBusConnection::ExportAdaptors &&
- (connector = qDBusFindAdaptorConnector(node->obj))) {
-
- // find the class that implements interface_name
- QDBusAdaptorConnector::AdaptorMap::ConstIterator it;
- it = qLowerBound(connector->adaptors.constBegin(), connector->adaptors.constEnd(),
- interface_name);
- if (it != connector->adaptors.end() && it->interface == interface_name)
- if (it->adaptor->setProperty(property_name, value)) {
- msg.connection().send(QDBusMessage::methodReply(msg));
- return;
- }
- }
-
- if (node->flags & QDBusConnection::ExportProperties) {
- // try the object itself
- int pidx = node->obj->metaObject()->indexOfProperty(property_name);
- if (pidx != -1) {
- QMetaProperty mp = node->obj->metaObject()->property(pidx);
- if (mp.isScriptable() || (node->flags & QDBusConnection::ExportAllProperties) ==
- QDBusConnection::ExportAllProperties) {
-
- if (mp.write(node->obj, value)) {
- msg.connection().send(QDBusMessage::methodReply(msg));
- return;
- }
- }
- }
- }
-
- // the property was not found or not written to
- sendPropertyError(msg, interface_name);
-}