ircnetworkentity.cpp
1 //------------------------------------------------------------------------------
2 // ircnetworkentity.cpp
3 //------------------------------------------------------------------------------
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
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 Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 // 02110-1301, USA.
19 //
20 //------------------------------------------------------------------------------
21 // Copyright (C) 2010 "Zalewa" <zalewapl@gmail.com>
22 //------------------------------------------------------------------------------
23 #include "ircnetworkentity.h"
24 
25 #include "irc/chatnetworknamer.h"
26 #include "patternlist.h"
27 #include <QVariantMap>
28 
29 DClass<IRCNetworkEntity>
30 {
31  public:
32  QString address;
33  QStringList autojoinChannels;
34  QStringList autojoinCommands;
35  bool bAutojoinNetwork;
36  QString description;
37  PatternList ignoredUsers;
38  QString nickservCommand;
39  QString nickservPassword;
40  QString password;
41  unsigned short port;
42 };
43 
44 DPointered(IRCNetworkEntity)
45 
47 {
48  d->bAutojoinNetwork = false;
49  d->port = 6667;
50  d->nickservCommand = "/msg nickserv identify %1";
51 }
52 
53 IRCNetworkEntity::~IRCNetworkEntity()
54 {
55 }
56 
57 const QString &IRCNetworkEntity::address() const
58 {
59  return d->address;
60 }
61 
62 const QStringList &IRCNetworkEntity::autojoinChannels() const
63 {
64  return d->autojoinChannels;
65 }
66 
68 {
69  return d->autojoinChannels;
70 }
71 
72 const QStringList &IRCNetworkEntity::autojoinCommands() const
73 {
74  return d->autojoinCommands;
75 }
76 
78 {
79  return d->autojoinCommands;
80 }
81 
83 {
84  return d->bAutojoinNetwork;;
85 }
86 
87 bool IRCNetworkEntity::isValid() const
88 {
89  return !address().isEmpty() && port() != 0;
90 }
91 
92 const QString &IRCNetworkEntity::description() const
93 {
94  return d->description;
95 }
96 
97 const QString &IRCNetworkEntity::nickservCommand() const
98 {
99  return d->nickservCommand;
100 }
101 
102 const QString &IRCNetworkEntity::nickservPassword() const
103 {
104  return d->nickservPassword;
105 }
106 
108 {
109  return description().toLower().trimmed() < other.description().toLower().trimmed();
110 }
111 
113 {
114  return address() == other.address() && port() == other.port();
115 }
116 
117 const QString &IRCNetworkEntity::password() const
118 {
119  return d->password;
120 }
121 
122 unsigned short IRCNetworkEntity::port() const
123 {
124  return d->port;
125 }
126 
127 
128 void IRCNetworkEntity::setAddress(const QString &v)
129 {
130  d->address = v;
131 }
132 
133 void IRCNetworkEntity::setAutojoinChannels(const QStringList &v)
134 {
135  d->autojoinChannels = v;
136 }
137 
138 void IRCNetworkEntity::setAutojoinCommands(const QStringList &v)
139 {
140  d->autojoinCommands = v;
141 }
142 
143 void IRCNetworkEntity::setAutojoinNetwork(bool v)
144 {
145  d->bAutojoinNetwork = v;
146 }
147 
148 void IRCNetworkEntity::setDescription(const QString &v)
149 {
150  d->description = ChatNetworkNamer::convertToValidName(v);
151 }
152 
153 void IRCNetworkEntity::setNickservCommand(const QString &v)
154 {
155  d->nickservCommand = v;
156 }
157 
158 void IRCNetworkEntity::setNickservPassword(const QString &v)
159 {
160  d->nickservPassword = v;
161 }
162 
163 void IRCNetworkEntity::setPassword(const QString &v)
164 {
165  d->password = v;
166 }
167 
168 void IRCNetworkEntity::setPort(unsigned short v)
169 {
170  d->port = v;
171 }
172 
173 const PatternList &IRCNetworkEntity::ignoredUsers() const
174 {
175  return d->ignoredUsers;
176 }
177 
178 void IRCNetworkEntity::setIgnoredUsers(const PatternList &val)
179 {
180  d->ignoredUsers = val;
181 }
182 
183 IRCNetworkEntity IRCNetworkEntity::deserializeQVariant(const QVariant &var)
184 {
185  QVariantMap map = var.toMap();
186  IRCNetworkEntity result;
187  result.setAddress(map["address"].toString());
188  result.setAutojoinChannels(map["autoJoinChannels"].toStringList());
189  result.setAutojoinCommands(map["autoJoinCommands"].toStringList());
190  result.setAutojoinNetwork(map["autoJoinNetwork"].toBool());
191  result.setDescription(map["description"].toString());
192  result.setIgnoredUsers(PatternList::deserializeQVariant(map["ignoredUsers"]));
193  result.setNickservCommand(map["nickservCommand"].toString());
194  result.setNickservPassword(map["nickservPassword"].toString());
195  result.setPassword(map["password"].toString());
196  result.setPort(map["port"].toInt());
197  return result;
198 }
199 
200 QVariant IRCNetworkEntity::serializeQVariant() const
201 {
202  QVariantMap map;
203  map["address"] = address();
204  map["autoJoinChannels"] = autojoinChannels();
205  map["autoJoinCommands"] = autojoinCommands();
206  map["autoJoinNetwork"] = isAutojoinNetwork();
207  map["description"] = description();
208  map["ignoredUsers"] = ignoredUsers().serializeQVariant();
209  map["nickservCommand"] = nickservCommand();
210  map["nickservPassword"] = nickservPassword();
211  map["password"] = password();
212  map["port"] = port();
213  return map;
214 }
unsigned short port() const
Port of the server or network to connect to.
bool operator<(const IRCNetworkEntity &other) const
Sorts by description.
const QStringList & autojoinChannels() const
List of channels to which a /join command will be issued automatically when a connection with this ne...
const QString & description() const
A short, human-readable description for the network. (Preferably a single word).
bool isAutojoinNetwork() const
Join this network when Doomseeker starts up.
bool operator==(const IRCNetworkEntity &other) const
Checks to see if this is the same server.
Data structure that describes and defines a connection to an IRC network or server.
const QStringList & autojoinCommands() const
List of commands executed on network join.
const QString & password() const
Password for the server or network. Ignored if empty.
const QString & address() const
Address of the server or network to connect to.