only sending heartbeat on socket connections
[quassel.git] / src / common / identity.h
1 /***************************************************************************
2  *   Copyright (C) 2005-08 by the Quassel Project                          *
3  *   devel@quassel-irc.org                                                 *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) version 3.                                           *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20
21 #ifndef _IDENTITY_H_
22 #define _IDENTITY_H_
23
24 #include <QDataStream>
25 #include <QMetaType>
26 #include <QString>
27 #include <QStringList>
28
29 #include "types.h"
30 #include "syncableobject.h"
31
32 class Identity : public SyncableObject {
33   Q_OBJECT
34
35   Q_PROPERTY(IdentityId identityId READ id WRITE setId STORED false)
36   Q_PROPERTY(QString identityName READ identityName WRITE setIdentityName STORED false)
37   Q_PROPERTY(QString realName READ realName WRITE setRealName STORED false)
38   Q_PROPERTY(QStringList nicks READ nicks WRITE setNicks STORED false)
39   Q_PROPERTY(QString awayNick READ awayNick WRITE setAwayNick STORED false)
40   Q_PROPERTY(bool awayNickEnabled READ awayNickEnabled WRITE setAwayNickEnabled STORED false)
41   Q_PROPERTY(QString awayReason READ awayReason WRITE setAwayReason STORED false)
42   Q_PROPERTY(bool awayReasonEnabled READ awayReasonEnabled WRITE setAwayReasonEnabled STORED false)
43   Q_PROPERTY(bool autoAwayEnabled READ autoAwayEnabled WRITE setAutoAwayEnabled STORED false)
44   Q_PROPERTY(int autoAwayTime READ autoAwayTime WRITE setAutoAwayTime STORED false)
45   Q_PROPERTY(QString autoAwayReason READ autoAwayReason WRITE setAutoAwayReason STORED false)
46   Q_PROPERTY(bool autoAwayReasonEnabled READ autoAwayReasonEnabled WRITE setAutoAwayReasonEnabled STORED false)
47   Q_PROPERTY(bool detachAwayEnabled READ detachAwayEnabled WRITE setDetachAwayEnabled STORED false)
48   Q_PROPERTY(QString detachAwayReason READ detachAwayReason WRITE setDetachAwayReason STORED false)
49   Q_PROPERTY(bool detachAwayReasonEnabled READ detachAwayReasonEnabled WRITE setDetachAwayReasonEnabled STORED false)
50   Q_PROPERTY(QString ident READ ident WRITE setIdent STORED false)
51   Q_PROPERTY(QString kickReason READ kickReason WRITE setKickReason STORED false)
52   Q_PROPERTY(QString partReason READ partReason WRITE setPartReason STORED false)
53   Q_PROPERTY(QString quitReason READ quitReason WRITE setQuitReason STORED false)
54
55   public:
56     Identity(IdentityId id = 0, QObject *parent = 0);
57     Identity(const Identity &other, QObject *parent = 0);
58     void setToDefaults();
59
60     bool operator==(const Identity &other);
61     bool operator!=(const Identity &other);
62
63     bool isValid() const;
64
65     IdentityId id() const;
66     QString identityName() const;
67     QString realName() const;
68     QStringList nicks() const;
69     QString awayNick() const;
70     bool awayNickEnabled() const;
71     QString awayReason() const;
72     bool awayReasonEnabled() const;
73     bool autoAwayEnabled() const;
74     int autoAwayTime() const;
75     QString autoAwayReason() const;
76     bool autoAwayReasonEnabled() const;
77     bool detachAwayEnabled() const;
78     QString detachAwayReason() const;
79     bool detachAwayReasonEnabled() const;
80     QString ident() const;
81     QString kickReason() const;
82     QString partReason() const;
83     QString quitReason() const;
84
85   public slots:
86     void setId(IdentityId id);
87     void setIdentityName(const QString &name);
88     void setRealName(const QString &realName);
89     void setNicks(const QStringList &nicks);
90     void setAwayNick(const QString &awayNick);
91     void setAwayNickEnabled(bool enabled);
92     void setAwayReason(const QString &awayReason);
93     void setAwayReasonEnabled(bool enabled);
94     void setAutoAwayEnabled(bool enabled);
95     void setAutoAwayTime(int time);
96     void setAutoAwayReason(const QString &reason);
97     void setAutoAwayReasonEnabled(bool enabled);
98     void setDetachAwayEnabled(bool enabled);
99     void setDetachAwayReason(const QString &reason);
100     void setDetachAwayReasonEnabled(bool enabled);
101     void setIdent(const QString &ident);
102     void setKickReason(const QString &reason);
103     void setPartReason(const QString &reason);
104     void setQuitReason(const QString &reason);
105
106     void update(const Identity &other);
107
108   signals:
109     void idSet(IdentityId id);
110     void identityNameSet(const QString &name);
111     void realNameSet(const QString &realName);
112     void nicksSet(const QStringList &nicks);
113     void awayNickSet(const QString &awayNick);
114     void awayNickEnabledSet(bool);
115     void awayReasonSet(const QString &awayReason);
116     void awayReasonEnabledSet(bool);
117     void autoAwayEnabledSet(bool);
118     void autoAwayTimeSet(int);
119     void autoAwayReasonSet(const QString &);
120     void autoAwayReasonEnabledSet(bool);
121     void detachAwayEnabledSet(bool);
122     void detachAwayReasonSet(const QString &);
123     void detachAwayReasonEnabledSet(bool);
124     void identSet(const QString &);
125     void kickReasonSet(const QString &);
126     void partReasonSet(const QString &);
127     void quitReasonSet(const QString &);
128
129   private:
130     IdentityId _identityId;
131     QString _identityName, _realName;
132     QStringList _nicks;
133     QString _awayNick;
134     bool _awayNickEnabled;
135     QString _awayReason;
136     bool _awayReasonEnabled;
137     bool _autoAwayEnabled;
138     int _autoAwayTime;
139     QString _autoAwayReason;
140     bool _autoAwayReasonEnabled;
141     bool _detachAwayEnabled;
142     QString _detachAwayReason;
143     bool _detachAwayReasonEnabled;
144     QString _ident, _kickReason, _partReason, _quitReason;
145
146     void init();
147
148     friend QDataStream &operator>>(QDataStream &in, Identity &identity);
149 };
150
151 QDataStream &operator<<(QDataStream &out, Identity identity);
152 QDataStream &operator>>(QDataStream &in, Identity &identity);
153
154 Q_DECLARE_METATYPE(Identity)
155
156 #endif