--- /dev/null
+/*
+@version: 0.6
+@author: Sudheer K. <scifi1947 at gmail.com>
+@license: GNU General Public License
+
+Based on Telepathy-SNOM with copyright notice below.
+*/
+
+/*
+ * Telepathy SNOM VoIP phone connection manager
+ * Copyright (C) 2006 by basyskom GmbH
+ * @author Tobias Hunger <info@basyskom.de>
+ *
+ * This library is free software; you can redisQObject::tribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is disQObject::tributed 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 SQObject::treet, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _VICAR_CONNECTION_H_
+#define _VICAR_CONNECTION_H_
+
+#include "connectiontypes.h"
+#include "connectioninterfacerequeststypes.h"
+#include "connectioninterfacecapabilitiestypes.h"
+
+#include <QtDBus/QDBusContext>
+#include <QtDBus/QtDBus>
+
+class ConnectionPrivate;
+
+class Connection : public QObject, protected QDBusContext
+{
+ Q_OBJECT
+
+public:
+ explicit Connection(const QString & account,
+ QObject * parent = 0);
+ ~Connection();
+
+ QString name() const;
+ QString serviceName() const;
+ QDBusObjectPath objectPath() const;
+
+ bool registerObject();
+ void unregisterObject();
+
+ enum Status
+ {
+ Connected = 0,
+ Connecting = 1,
+ Disconnected = 2
+ };
+
+ enum Reason
+ {
+ ReasonNone = 0,
+ ReasonRequested = 1,
+ ReasonNetworkError = 2,
+ ReasonAuthenticationFailed = 3,
+ ReasonEncryptionError = 4,
+ ReasonNameInUse = 5,
+ ReasonCertNotProvided = 6,
+ ReasonCertUntrusted = 7,
+ ReasonCertExpired = 8,
+ ReasonCertNotActivated = 9,
+ ReasonCertHostnameMismatch = 10,
+ ReasonCertFingerprintMismatch = 11,
+ ReasonCertSelfSigned = 12,
+ ReasonCertOtherError = 13
+ };
+
+ enum Handle
+ {
+ HandleNone = 0,
+ HandleContact = 1,
+ HandleRoom = 2,
+ HandleRoomList = 3,
+ HandleGroup = 4
+ };
+
+public slots:
+ //org.freedesktop.Telepathy.Connection
+ void Connect();
+ void Disconnect();
+
+ QStringList GetInterfaces();
+ QString GetProtocol();
+ uint GetStatus();
+
+ uint GetSelfHandle();
+ QList<uint> RequestHandles(const uint handle_type, const QStringList &names);
+ void HoldHandles(const uint handle_type, const QList<uint> &handles);
+ QStringList InspectHandles(const uint handle_type, const QList<uint> &handles);
+ void ReleaseHandles(const uint handle_type, const QList<uint> &handles);
+
+ org::freedesktop::Telepathy::ChannelInfoList ListChannels();
+ QDBusObjectPath RequestChannel(const QString &type,
+ uint handle_type, uint handle,
+ bool suppress_handler);
+
+ //New methods added in Telepathy specification 0.21.3
+ void AddClientInterest(const QStringList &tokens);
+ void RemoveClientInterest(const QStringList &tokens);
+
+
+ //org.freedesktop.Telepathy.Connection.Interface.Requests
+ QDBusObjectPath CreateChannel(const QVariantMap &request,
+ QVariantMap &channel_properties);
+
+ bool EnsureChannel(const QVariantMap &request,
+ QDBusObjectPath &channel_object,
+ QVariantMap &channel_properties);
+ //org.freedesktop.Telepathy.Connection.Interface.Capabilities
+ org::freedesktop::Telepathy::CapabilityPairList AdvertiseCapabilities(org::freedesktop::Telepathy::CapabilityPairList Add,
+ const QStringList &Remove);
+ org::freedesktop::Telepathy::ContactCapabilitiesList GetCapabilities(const QList<uint> &Handles);
+
+protected slots:
+ QDBusObjectPath processChannel(const QVariantMap &request);
+
+signals:
+ void NewChannel(const QDBusObjectPath & object_path,
+ const QString & channel_type,
+ uint handle_type, uint handle,
+ bool suppress_handler);
+ void StatusChanged(uint status, uint reason);
+ //New signals added in Telepathy specification 0.17.10
+ void SelfHandleChanged(uint handle);
+ void ConnectionError(const QString & error, QVariantMap errorDetails);
+
+
+ //org.freedesktop.Telepathy.Connection.Interface.Requests
+ void ChannelClosed(const QDBusObjectPath &removed_channel_object);
+ void NewChannels(org::freedesktop::Telepathy::ChannelDetailsList new_channels);
+
+ //org.freedesktop.Telepathy.Connection.Interface.Capabilities
+ void CapabilitiesChanged(org::freedesktop::Telepathy::CapabilityChangeList changes);
+
+private:
+ Connection(const Connection &); // no impl.
+ ConnectionPrivate * const d;
+};
+
+#endif