Home · All Classes · All Namespaces · Modules · Functions · Files

channel-class-spec.h

00001 
00023 #ifndef _TelepathyQt4_channel_class_spec_h_HEADER_GUARD_
00024 #define _TelepathyQt4_channel_class_spec_h_HEADER_GUARD_
00025 
00026 #ifndef IN_TELEPATHY_QT4_HEADER
00027 #error IN_TELEPATHY_QT4_HEADER
00028 #endif
00029 
00030 #include <TelepathyQt4/Constants>
00031 #include <TelepathyQt4/Global>
00032 #include <TelepathyQt4/Types>
00033 
00034 #include <QSharedDataPointer>
00035 #include <QVariant>
00036 
00037 namespace Tp
00038 {
00039 
00040 class TELEPATHY_QT4_EXPORT ChannelClassSpec
00041 {
00042 public:
00043     ChannelClassSpec();
00044     ChannelClassSpec(const ChannelClass &cc);
00045     ChannelClassSpec(const QVariantMap &props);
00046     ChannelClassSpec(const QString &channelType, HandleType targetHandleType,
00047             const QVariantMap &otherProperties = QVariantMap());
00048     ChannelClassSpec(const QString &channelType, HandleType targetHandleType, bool requested,
00049             const QVariantMap &otherProperties = QVariantMap());
00050     ChannelClassSpec(const ChannelClassSpec &other,
00051             const QVariantMap &additionalProperties = QVariantMap());
00052     ~ChannelClassSpec();
00053 
00054     bool isValid() const;
00055 
00056     ChannelClassSpec &operator=(const ChannelClassSpec &other);
00057 
00058     bool operator==(const ChannelClassSpec &other) const
00059     {
00060         return this->isSubsetOf(other) && this->allProperties().size() ==
00061             other.allProperties().size();
00062     }
00063 
00064     bool isSubsetOf(const ChannelClassSpec &other) const;
00065     bool matches(const QVariantMap &immutableProperties) const;
00066 
00067     // TODO: Use new TP_QT4_... constants
00068     QString channelType() const
00069     {
00070         return qdbus_cast<QString>(
00071                 property(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType")));
00072     }
00073 
00074     void setChannelType(const QString &type)
00075     {
00076         setProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
00077                 QVariant::fromValue(type));
00078     }
00079 
00080     HandleType targetHandleType() const
00081     {
00082         return (HandleType) qdbus_cast<uint>(
00083                 property(
00084                     QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType")));
00085     }
00086 
00087     void setTargetHandleType(HandleType type)
00088     {
00089         setProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
00090                 QVariant::fromValue((uint) type));
00091     }
00092 
00093     bool hasRequested() const
00094     {
00095         return hasProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".Requested"));
00096     }
00097 
00098     bool isRequested() const
00099     {
00100         return qdbus_cast<bool>(
00101                 property(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".Requested")));
00102     }
00103 
00104     void setRequested(bool requested)
00105     {
00106         setProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".Requested"),
00107                 QVariant::fromValue(requested));
00108     }
00109 
00110     void unsetRequested()
00111     {
00112         unsetProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".Requested"));
00113     }
00114 
00115     bool hasStreamedMediaInitialAudioFlag() const
00116     {
00117         return qdbus_cast<bool>(
00118                 property(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA
00119                         ".InitialAudio")));
00120     }
00121 
00122     void setStreamedMediaInitialAudioFlag()
00123     {
00124         setProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialAudio"),
00125                 QVariant::fromValue(true));
00126     }
00127 
00128     void unsetStreamedMediaInitialAudioFlag()
00129     {
00130         unsetProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA
00131                     ".InitialAudio"));
00132     }
00133 
00134     bool hasStreamedMediaInitialVideoFlag() const
00135     {
00136         return qdbus_cast<bool>(
00137                 property(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA
00138                         ".InitialVideo")));
00139     }
00140 
00141     void setStreamedMediaInitialVideoFlag()
00142     {
00143         setProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialVideo"),
00144                 QVariant::fromValue(true));
00145     }
00146 
00147     void unsetStreamedMediaInitialVideoFlag()
00148     {
00149         unsetProperty(QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA
00150                     ".InitialVideo"));
00151     }
00152 
00153     bool hasProperty(const QString &qualifiedName) const;
00154     QVariant property(const QString &qualifiedName) const;
00155 
00156     void setProperty(const QString &qualifiedName, const QVariant &value);
00157     void unsetProperty(const QString &qualifiedName);
00158 
00159     QVariantMap allProperties() const;
00160     ChannelClass bareClass() const;
00161 
00162     static ChannelClassSpec textChat(const QVariantMap &additionalProperties = QVariantMap());
00163     static ChannelClassSpec textChatroom(const QVariantMap &additionalProperties = QVariantMap());
00164     static ChannelClassSpec unnamedTextChat(const QVariantMap &additionalProperties = QVariantMap());
00165 
00166     static ChannelClassSpec streamedMediaCall(const QVariantMap &additionalProperties = QVariantMap());
00167     static ChannelClassSpec streamedMediaAudioCall(const QVariantMap &additionalProperties =
00168             QVariantMap());
00169     static ChannelClassSpec streamedMediaVideoCall(const QVariantMap &additionalProperties =
00170             QVariantMap());
00171     static ChannelClassSpec streamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties =
00172             QVariantMap());
00173 
00174     static ChannelClassSpec unnamedStreamedMediaCall(const QVariantMap &additionalProperties =
00175             QVariantMap());
00176     static ChannelClassSpec unnamedStreamedMediaAudioCall(const QVariantMap &additionalProperties =
00177             QVariantMap());
00178     static ChannelClassSpec unnamedStreamedMediaVideoCall(const QVariantMap &additionalProperties =
00179             QVariantMap());
00180     static ChannelClassSpec unnamedStreamedMediaVideoCallWithAudio(const QVariantMap &additionalProperties =
00181             QVariantMap());
00182 
00183     // TODO: add Call when it's undrafted
00184     static ChannelClassSpec roomList(const QVariantMap &additionalProperties = QVariantMap());
00185     static ChannelClassSpec outgoingFileTransfer(const QVariantMap &additionalProperties = QVariantMap());
00186     static ChannelClassSpec incomingFileTransfer(const QVariantMap &additionalProperties = QVariantMap());
00187     static ChannelClassSpec outgoingStreamTube(const QString &service = QString(),
00188             const QVariantMap &additionalProperties = QVariantMap());
00189     static ChannelClassSpec incomingStreamTube(const QString &service = QString(),
00190             const QVariantMap &additionalProperties = QVariantMap());
00191     // TODO: add dbus tubes when they're implemented
00192     static ChannelClassSpec contactSearch(const QVariantMap &additionalProperties = QVariantMap());
00193 
00194 private:
00195     struct Private;
00196     friend struct Private;
00197     QSharedDataPointer<Private> mPriv;
00198 };
00199 
00200 class TELEPATHY_QT4_EXPORT ChannelClassSpecList :
00201                 public QList<ChannelClassSpec>
00202 {
00203 public:
00204     ChannelClassSpecList() { }
00205 
00206     ChannelClassSpecList(const ChannelClassSpec &spec)
00207     {
00208         append(spec);
00209     }
00210 
00211     ChannelClassSpecList(const QList<ChannelClassSpec> &other)
00212         : QList<ChannelClassSpec>(other)
00213     {
00214     }
00215 
00216     ChannelClassSpecList(const ChannelClassList &classes)
00217     {
00218         // Why doesn't Qt have range constructors like STL... stupid, so stupid.
00219         Q_FOREACH (const ChannelClass &cc, classes) {
00220             append(cc);
00221         }
00222     }
00223 
00224     ChannelClassList bareClasses() const
00225     {
00226         ChannelClassList list;
00227         Q_FOREACH (const ChannelClassSpec &spec, *this) {
00228             list.append(spec.bareClass());
00229         }
00230         return list;
00231     }
00232 };
00233 
00234 } // Tp
00235 
00236 Q_DECLARE_METATYPE(Tp::ChannelClassSpec);
00237 Q_DECLARE_METATYPE(Tp::ChannelClassSpecList);
00238 
00239 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt4 0.5.12