summaryrefslogtreecommitdiff
path: root/noncore/comm/keypebble/krfblogin.h
blob: 5208210966e2ab2ddaf172e51afae75bfd67bd45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// -*- c++ -*-

#ifndef KRFBLOGIN_H
#define KRFBLOGIN_H

#include <qobject.h>

class KRFBConnection;

/**
 * Handles logging into the RFB server.
 *
 * @version $Id$
 * @author Richard Moore, rich@kde.org
 */
class KRFBLogin : QObject
{
  Q_OBJECT

public:
  enum State {
    AwaitingServerVersion,
    AwaitingAuthScheme,
    AwaitingChallenge,
    WaitingForResponse,
    Authenticated,
    Ready,
    Failed,
    Error
  };

  KRFBLogin( KRFBConnection *con );
  ~KRFBLogin();

  KRFBLogin::State state() const;

protected:
  void sendClientVersion();

protected slots:
  void getPassword();
  void gotServerVersion();
  void gotAuthScheme();
  void gotChallenge();
  void gotAuthResult();
  void gotFailureReasonSize();

signals:
  void passwordRequired( KRFBConnection * );
  void error( const QString & );
  void status( const QString & );

private:
  KRFBConnection *con;
  State currentState;
  QCString versionString;
  int serverMajor;
  int serverMinor;
};

#endif // KRFBLOGIN_H