00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IN_TELEPATHY_QT4_HEADER
00009 #error IN_TELEPATHY_QT4_HEADER
00010 #endif
00011
00012 #include <TelepathyQt4/Types>
00013
00014 #include <QtGlobal>
00015
00016 #include <QString>
00017 #include <QObject>
00018 #include <QVariant>
00019
00020 #include <QDBusPendingReply>
00021
00022 #include <TelepathyQt4/AbstractInterface>
00023 #include <TelepathyQt4/DBusProxy>
00024 #include <TelepathyQt4/Global>
00025
00026 namespace Tp
00027 {
00028 class PendingVariant;
00029 class PendingOperation;
00030 }
00031
00032 namespace Tp
00033 {
00034 namespace Client
00035 {
00036
00044 class TELEPATHY_QT4_EXPORT ChannelRequestInterface : public Tp::AbstractInterface
00045 {
00046 Q_OBJECT
00047
00048 public:
00055 static inline QLatin1String staticInterfaceName()
00056 {
00057 return QLatin1String("org.freedesktop.Telepathy.ChannelRequest");
00058 }
00059
00067 ChannelRequestInterface(
00068 const QString& busName,
00069 const QString& objectPath,
00070 QObject* parent = 0
00071 );
00072
00081 ChannelRequestInterface(
00082 const QDBusConnection& connection,
00083 const QString& busName,
00084 const QString& objectPath,
00085 QObject* parent = 0
00086 );
00087
00094 ChannelRequestInterface(Tp::DBusProxy *proxy);
00095
00105 inline Tp::PendingVariant *requestPropertyAccount() const
00106 {
00107 return internalRequestProperty(QLatin1String("Account"));
00108 }
00109
00125 inline Tp::PendingVariant *requestPropertyUserActionTime() const
00126 {
00127 return internalRequestProperty(QLatin1String("UserActionTime"));
00128 }
00129
00148 inline Tp::PendingVariant *requestPropertyPreferredHandler() const
00149 {
00150 return internalRequestProperty(QLatin1String("PreferredHandler"));
00151 }
00152
00173 inline Tp::PendingVariant *requestPropertyRequests() const
00174 {
00175 return internalRequestProperty(QLatin1String("Requests"));
00176 }
00177
00188 inline Tp::PendingVariant *requestPropertyInterfaces() const
00189 {
00190 return internalRequestProperty(QLatin1String("Interfaces"));
00191 }
00192
00234 inline Tp::PendingVariant *requestPropertyHints() const
00235 {
00236 return internalRequestProperty(QLatin1String("Hints"));
00237 }
00238
00245 Tp::PendingVariantMap *requestAllProperties() const
00246 {
00247 return internalRequestAllProperties();
00248 }
00249
00250 public Q_SLOTS:
00283 inline QDBusPendingReply<> Proceed(int timeout = -1)
00284 {
00285 if (!invalidationReason().isEmpty()) {
00286 return QDBusPendingReply<>(QDBusMessage::createError(
00287 invalidationReason(),
00288 invalidationMessage()
00289 ));
00290 }
00291
00292 QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
00293 this->staticInterfaceName(), QLatin1String("Proceed"));
00294 return this->connection().asyncCall(callMessage, timeout);
00295 }
00296
00339 inline QDBusPendingReply<> Cancel(int timeout = -1)
00340 {
00341 if (!invalidationReason().isEmpty()) {
00342 return QDBusPendingReply<>(QDBusMessage::createError(
00343 invalidationReason(),
00344 invalidationMessage()
00345 ));
00346 }
00347
00348 QDBusMessage callMessage = QDBusMessage::createMethodCall(this->service(), this->path(),
00349 this->staticInterfaceName(), QLatin1String("Cancel"));
00350 return this->connection().asyncCall(callMessage, timeout);
00351 }
00352
00353 Q_SIGNALS:
00376 void Failed(const QString& error, const QString& message);
00377
00386 void Succeeded();
00387
00428 void SucceededWithChannel(const QDBusObjectPath& connection, const QVariantMap& connectionProperties, const QDBusObjectPath& channel, const QVariantMap& channelProperties);
00429
00430 protected:
00431 virtual void invalidate(Tp::DBusProxy *, const QString &, const QString &);
00432 };
00433 }
00434 }
00435 Q_DECLARE_METATYPE(Tp::Client::ChannelRequestInterface*)