00001
00023 #ifndef _TelepathyQt_captcha_authentication_h_HEADER_GUARD_
00024 #define _TelepathyQt_captcha_authentication_h_HEADER_GUARD_
00025
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029
00030 #include <TelepathyQt/Channel>
00031 #include <TelepathyQt/Connection>
00032
00033 #include <TelepathyQt/Global>
00034 #include <TelepathyQt/SharedPtr>
00035
00036 namespace Tp
00037 {
00038
00039 class PendingCaptchaAnswer;
00040 class PendingCaptchaCancel;
00041 class PendingCaptchas;
00042
00043 class TP_QT_EXPORT CaptchaAuthentication : public Tp::Object
00044 {
00045 Q_OBJECT
00046 Q_DISABLE_COPY(CaptchaAuthentication)
00047
00048 public:
00049 enum ChallengeType {
00050 NoChallenge = 0,
00051 OCRChallenge = 1,
00052 AudioRecognitionChallenge = 2,
00053 PictureQuestionChallenge = 4,
00054 PictureRecognitionChallenge = 8,
00055 TextQuestionChallenge = 16,
00056 SpeechQuestionChallenge = 32,
00057 SpeechRecognitionChallenge = 64,
00058 VideoQuestionChallenge = 128,
00059 VideoRecognitionChallenge = 256,
00060 UnknownChallenge = 32768
00061 };
00062 Q_DECLARE_FLAGS(ChallengeTypes, ChallengeType)
00063
00064 virtual ~CaptchaAuthentication();
00065
00066 ChannelPtr channel() const;
00067
00068 bool canRetry() const;
00069 Tp::CaptchaStatus status() const;
00070
00071 QString error() const;
00072 Connection::ErrorDetails errorDetails() const;
00073
00074 Tp::PendingCaptchas *requestCaptchas(const QStringList &preferredMimeTypes = QStringList(),
00075 ChallengeTypes preferredTypes = ~ChallengeTypes(NoChallenge));
00076 Tp::PendingOperation *answer(uint id, const QString &answer);
00077 Tp::PendingOperation *answer(const Tp::CaptchaAnswers &response);
00078
00079 Q_SIGNALS:
00080 void statusChanged(Tp::CaptchaStatus status);
00081
00082 public Q_SLOTS:
00083 Tp::PendingOperation *cancel(Tp::CaptchaCancelReason reason,
00084 const QString &message = QString());
00085
00086 private Q_SLOTS:
00087 TP_QT_NO_EXPORT void onPropertiesChanged(const QVariantMap &changedProperties,
00088 const QStringList &invalidatedProperties);
00089
00090 private:
00091 TP_QT_NO_EXPORT CaptchaAuthentication(const ChannelPtr &parent);
00092
00093 friend class ServerAuthenticationChannel;
00094
00095 struct Private;
00096 friend struct Private;
00097 Private *mPriv;
00098 };
00099
00100 }
00101
00102 Q_DECLARE_OPERATORS_FOR_FLAGS(Tp::CaptchaAuthentication::ChallengeTypes)
00103
00104 #endif