Who stole the ! from main.cpp?
[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(QString returnMessage READ returnMessage WRITE setReturnMessage STORED false);
44   Q_PROPERTY(bool returnMessageEnabled READ returnMessageEnabled WRITE setReturnMessageEnabled STORED false);
45   Q_PROPERTY(bool autoAwayEnabled READ autoAwayEnabled WRITE setAutoAwayEnabled STORED false);
46   Q_PROPERTY(int autoAwayTime READ autoAwayTime WRITE setAutoAwayTime STORED false);
47   Q_PROPERTY(QString autoAwayReason READ autoAwayReason WRITE setAutoAwayReason STORED false);
48   Q_PROPERTY(bool autoAwayReasonEnabled READ autoAwayReasonEnabled WRITE setAutoAwayReasonEnabled STORED false);
49   Q_PROPERTY(QString autoReturnMessage READ autoReturnMessage WRITE setAutoReturnMessage STORED false);
50   Q_PROPERTY(bool autoReturnMessageEnabled READ autoReturnMessageEnabled WRITE setAutoReturnMessageEnabled STORED false);
51   Q_PROPERTY(QString ident READ ident WRITE setIdent STORED false);
52   Q_PROPERTY(QString kickReason READ kickReason WRITE setKickReason STORED false);
53   Q_PROPERTY(QString partReason READ partReason WRITE setPartReason STORED false);
54   Q_PROPERTY(QString quitReason READ quitReason WRITE setQuitReason STORED false);
55
56   public:
57     Identity(IdentityId id = 0, QObject *parent = 0);
58     Identity(const Identity &other, QObject *parent = 0);
59     void setToDefaults();
60
61     bool operator==(const Identity &other);
62     bool operator!=(const Identity &other);
63
64     bool isValid() const;
65
66     IdentityId id() const;
67     QString identityName() const;
68     QString realName() const;
69     QStringList nicks() const;
70     QString awayNick() const;
71     bool awayNickEnabled() const;
72     QString awayReason() const;
73     bool awayReasonEnabled() const;
74     QString returnMessage() const;
75     bool returnMessageEnabled() const;
76     bool autoAwayEnabled() const;
77     int autoAwayTime() const;
78     QString autoAwayReason() const;
79     bool autoAwayReasonEnabled() const;
80     QString autoReturnMessage() const;
81     bool autoReturnMessageEnabled() const;
82     QString ident() const;
83     QString kickReason() const;
84     QString partReason() const;
85     QString quitReason() const;
86
87     bool initialized() const;
88     void setInitialized();
89
90   public slots:
91     void setId(IdentityId id);
92     void setIdentityName(const QString &name);
93     void setRealName(const QString &realName);
94     void setNicks(const QStringList &nicks);
95     void setAwayNick(const QString &awayNick);
96     void setAwayNickEnabled(bool enabled);
97     void setAwayReason(const QString &awayReason);
98     void setAwayReasonEnabled(bool enabled);
99     void setReturnMessage(const QString &returnMessage);
100     void setReturnMessageEnabled(bool enabled);
101     void setAutoAwayEnabled(bool enabled);
102     void setAutoAwayTime(int time);
103     void setAutoAwayReason(const QString &reason);
104     void setAutoAwayReasonEnabled(bool enabled);
105     void setAutoReturnMessage(const QString &message);
106     void setAutoReturnMessageEnabled(bool enabled);
107     void setIdent(const QString &ident);
108     void setKickReason(const QString &reason);
109     void setPartReason(const QString &reason);
110     void setQuitReason(const QString &reason);
111
112     void update(const Identity &other);
113
114   signals:
115     void idSet(IdentityId id);
116     void identityNameSet(const QString &name);
117     void realNameSet(const QString &realName);
118     void nicksSet(const QStringList &nicks);
119     void awayNickSet(const QString &awayNick);
120     void awayNickEnabledSet(bool);
121     void awayReasonSet(const QString &awayReason);
122     void awayReasonEnabledSet(bool);
123     void returnMessageSet(const QString &returnMessage);
124     void returnMessageEnabledSet(bool);
125     void autoAwayEnabledSet(bool);
126     void autoAwayTimeSet(int);
127     void autoAwayReasonSet(const QString &);
128     void autoAwayReasonEnabledSet(bool);
129     void autoReturnMessageSet(const QString &);
130     void autoReturnMessageEnabledSet(bool);
131     void identSet(const QString &);
132     void kickReasonSet(const QString &);
133     void partReasonSet(const QString &);
134     void quitReasonSet(const QString &);
135
136     void updatedRemotely();
137
138   private:
139     bool _initialized;
140     IdentityId _identityId;
141     QString _identityName, _realName;
142     QStringList _nicks;
143     QString _awayNick;
144     bool _awayNickEnabled;
145     QString _awayReason;
146     bool _awayReasonEnabled;
147     QString _returnMessage;
148     bool _returnMessageEnabled;
149     bool _autoAwayEnabled;
150     int _autoAwayTime;
151     QString _autoAwayReason;
152     bool _autoAwayReasonEnabled;
153     QString _autoReturnMessage;
154     bool _autoReturnMessageEnabled;
155     QString _ident, _kickReason, _partReason, _quitReason;
156
157     void init();
158
159     friend QDataStream &operator>>(QDataStream &in, Identity &identity);
160 };
161
162 QDataStream &operator<<(QDataStream &out, Identity identity);
163 QDataStream &operator>>(QDataStream &in, Identity &identity);
164
165 Q_DECLARE_METATYPE(Identity);
166
167 #endif