summaryrefslogtreecommitdiff
path: root/src/nym/nym.h
blob: 550a79e4fdac396c03c5cdf02412c44562730e6f (plain) (blame)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#ifndef NYM_H
#define NYM_H

#include <QObject>

#include "gnunet.h"

class Nym : public QObject
{
  Q_OBJECT;
  Q_PROPERTY (QString name READ name WRITE setName NOTIFY nameChanged);
  Q_PROPERTY (QString pubKeyString READ pubKeyString);
  Q_PROPERTY (QString gnsUrl READ gnsUrl CONSTANT);

 public:

  explicit
    Nym (GNUNET_CRYPTO_EcdsaPublicKey pubKey, QObject *parent = 0);

  int
  getIndex () const
  {
    return m_index;
  }

  void
  setIndex (int index)
  {
    m_index = index;
  }


  QString
  name ()
  {
    return m_name;
  }

  void
  setName (QString name)
  {
    m_name = name;
    emit nameChanged (name);
    emit modifiedSignal (m_index);
  }


  GNUNET_CRYPTO_EcdsaPublicKey
  pubKey () const
  {
    return m_pubKey;
  }

  QString
  pubKeyString ()
  {
    return m_pubKeyStr;
  }

  void
  setPubKey (GNUNET_CRYPTO_EcdsaPublicKey pubKey)
  {
    m_pubKey = pubKey;
    char *pubKeyChr = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pubKey);
    m_pubKeyStr = QString::fromLatin1 (pubKeyChr);
    GNUNET_free (pubKeyChr);

    if (!m_name.length ())
    {
      m_name = m_pubKeyStr.left (8);
    }
  }

  QString
  gnsUrl ()
  {
    return QString ("gnunet://gns/%1/").arg (m_pubKeyStr);
  }

  GNUNET_SOCIAL_Nym *
  nym ()
  {
    return m_nym;
  }
  void
  setNym (GNUNET_SOCIAL_Nym *nym)
  {
    m_nym = nym;
  }

 protected:

  int m_index;

  QString m_name;
  QString m_pubKeyStr;
  GNUNET_CRYPTO_EcdsaPublicKey m_pubKey;
  GNUNET_SOCIAL_Nym *m_nym;

 signals:

  void modifiedSignal (int index);
  void nameChanged (QString name);

};

#endif