00001
00023 #ifndef _TelepathyQt_base_call_h_HEADER_GUARD_
00024 #define _TelepathyQt_base_call_h_HEADER_GUARD_
00025
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029
00030
00031 #include <TelepathyQt/DBusService>
00032 #include <TelepathyQt/Global>
00033 #include <TelepathyQt/Types>
00034 #include <TelepathyQt/Callbacks>
00035 #include <TelepathyQt/Constants>
00036 #include <TelepathyQt/BaseChannel>
00037
00038 #include <QDBusConnection>
00039
00040 class QString;
00041
00042 namespace Tp
00043 {
00044
00045 class TP_QT_EXPORT AbstractCallContentInterface : public AbstractDBusServiceInterface
00046 {
00047 Q_OBJECT
00048 Q_DISABLE_COPY(AbstractCallContentInterface)
00049
00050 public:
00051 AbstractCallContentInterface(const QString &interfaceName);
00052 virtual ~AbstractCallContentInterface();
00053
00054 private:
00055 friend class BaseCallContent;
00056
00057 class Private;
00058 friend class Private;
00059 Private *mPriv;
00060 };
00061
00062 class TP_QT_EXPORT BaseCallContent : public DBusService
00063 {
00064 Q_OBJECT
00065 Q_DISABLE_COPY(BaseCallContent)
00066
00067 public:
00068 static BaseCallContentPtr create(const QDBusConnection &dbusConnection,
00069 BaseChannel* channel,
00070 const QString &name,
00071 const Tp::MediaStreamType &type,
00072 const Tp::MediaStreamDirection &direction) {
00073 return BaseCallContentPtr(new BaseCallContent(dbusConnection, channel, name, type, direction));
00074 }
00075
00076 virtual ~BaseCallContent();
00077 QVariantMap immutableProperties() const;
00078 bool registerObject(DBusError *error = NULL);
00079 virtual QString uniqueName() const;
00080
00081 QList<AbstractCallContentInterfacePtr> interfaces() const;
00082 AbstractCallContentInterfacePtr interface(const QString &interfaceName) const;
00083 bool plugInterface(const AbstractCallContentInterfacePtr &interface);
00084
00085 QString name() const;
00086 Tp::MediaStreamType type() const;
00087 Tp::CallContentDisposition disposition() const;
00088 Tp::ObjectPathList streams() const;
00089 protected:
00090 BaseCallContent(const QDBusConnection &dbusConnection,
00091 BaseChannel* channel,
00092 const QString &name,
00093 const Tp::MediaStreamType &type,
00094 const Tp::MediaStreamDirection &direction);
00095
00096 virtual bool registerObject(const QString &busName, const QString &objectPath,
00097 DBusError *error);
00098 void remove();
00099
00100 private:
00101 class Adaptee;
00102 friend class Adaptee;
00103 struct Private;
00104 friend struct Private;
00105 Private *mPriv;
00106 };
00107
00108 class TP_QT_EXPORT BaseCallMuteInterface : public AbstractChannelInterface
00109 {
00110 Q_OBJECT
00111 Q_DISABLE_COPY(BaseCallMuteInterface)
00112
00113 public:
00114 static BaseCallMuteInterfacePtr create() {
00115 return BaseCallMuteInterfacePtr(new BaseCallMuteInterface());
00116 }
00117 template<typename BaseCallMuteInterfaceSubclass>
00118 static SharedPtr<BaseCallMuteInterfaceSubclass> create() {
00119 return SharedPtr<BaseCallMuteInterfaceSubclass>(
00120 new BaseCallMuteInterfaceSubclass());
00121 }
00122 virtual ~BaseCallMuteInterface();
00123
00124 QVariantMap immutableProperties() const;
00125
00126 Tp::LocalMuteState localMuteState() const;
00127 void setMuteState(const Tp::LocalMuteState &state);
00128
00129 typedef Callback2<void, const Tp::LocalMuteState&, DBusError*> SetMuteStateCallback;
00130 void setSetMuteStateCallback(const SetMuteStateCallback &cb);
00131 Q_SIGNALS:
00132 void muteStateChanged(const Tp::LocalMuteState &state);
00133 private:
00134 BaseCallMuteInterface();
00135 void createAdaptor();
00136
00137 class Adaptee;
00138 friend class Adaptee;
00139 struct Private;
00140 friend struct Private;
00141 Private *mPriv;
00142 };
00143
00144 class TP_QT_EXPORT BaseCallContentDTMFInterface : public AbstractCallContentInterface
00145 {
00146 Q_OBJECT
00147 Q_DISABLE_COPY(BaseCallContentDTMFInterface)
00148
00149 public:
00150 static BaseCallContentDTMFInterfacePtr create() {
00151 return BaseCallContentDTMFInterfacePtr(new BaseCallContentDTMFInterface());
00152 }
00153 template<typename BaseCallContentDTMFInterfaceSubclass>
00154 static SharedPtr<BaseCallContentDTMFInterfaceSubclass> create() {
00155 return SharedPtr<BaseCallContentDTMFInterfaceSubclass>(
00156 new BaseCallContentDTMFInterfaceSubclass());
00157 }
00158 virtual ~BaseCallContentDTMFInterface();
00159
00160 QVariantMap immutableProperties() const;
00161
00162 bool currentlySendingTones() const;
00163 void setCurrentlySendingTones(bool sendingTones);
00164
00165 QString deferredTones() const;
00166 void setDeferredTones(const QString &deferredTones);
00167
00168
00169 typedef Callback2<void, uchar, DBusError*> StartToneCallback;
00170 void setStartToneCallback(const StartToneCallback &cb);
00171 typedef Callback1<void, DBusError*> StopToneCallback;
00172 void setStopToneCallback(const StopToneCallback &cb);
00173 typedef Callback2<void, const QString&, DBusError*> MultipleTonesCallback;
00174 void setMultipleTonesCallback(const MultipleTonesCallback &cb);
00175 Q_SIGNALS:
00176
00177 private:
00178 BaseCallContentDTMFInterface();
00179 void createAdaptor();
00180
00181 class Adaptee;
00182 friend class Adaptee;
00183 struct Private;
00184 friend struct Private;
00185 Private *mPriv;
00186 };
00187
00188
00189 }
00190 #endif