29 #ifndef IRCCONNECTION_H
30 #define IRCCONNECTION_H
35 #include <QtCore/qobject.h>
36 #include <QtCore/qvariant.h>
37 #include <QtCore/qmetatype.h>
38 #include <QtCore/qstringlist.h>
39 #include <QtCore/qscopedpointer.h>
40 #include <QtNetwork/qabstractsocket.h>
46 class IrcConnectionPrivate;
52 Q_PROPERTY(QString host READ host WRITE setHost NOTIFY hostChanged)
53 Q_PROPERTY(
int port READ port WRITE setPort NOTIFY portChanged)
54 Q_PROPERTY(QStringList servers READ servers WRITE setServers NOTIFY serversChanged)
55 Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)
56 Q_PROPERTY(QString nickName READ nickName WRITE setNickName NOTIFY nickNameChanged)
57 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
58 Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
59 Q_PROPERTY(QStringList nickNames READ nickNames WRITE setNickNames NOTIFY nickNamesChanged)
60 Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged)
61 Q_PROPERTY(QVariantMap userData READ userData WRITE setUserData NOTIFY userDataChanged)
62 Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding)
63 Q_PROPERTY(
Status status READ status NOTIFY statusChanged)
64 Q_PROPERTY(
bool active READ isActive NOTIFY statusChanged)
65 Q_PROPERTY(
bool connected READ isConnected NOTIFY statusChanged)
66 Q_PROPERTY(
bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
67 Q_PROPERTY(
int reconnectDelay READ reconnectDelay WRITE setReconnectDelay NOTIFY reconnectDelayChanged)
68 Q_PROPERTY(
int connectionCount READ connectionCount NOTIFY connectionCountChanged)
69 Q_PROPERTY(QAbstractSocket* socket READ socket WRITE setSocket)
70 Q_PROPERTY(
bool secure READ isSecure WRITE setSecure NOTIFY secureChanged)
71 Q_PROPERTY(
bool secureSupported READ isSecureSupported)
72 Q_PROPERTY(QString saslMechanism READ saslMechanism WRITE setSaslMechanism NOTIFY saslMechanismChanged)
73 Q_PROPERTY(QStringList supportedSaslMechanisms READ supportedSaslMechanisms CONSTANT)
74 Q_PROPERTY(QVariantMap ctcpReplies READ ctcpReplies WRITE setCtcpReplies NOTIFY ctcpRepliesChanged)
75 Q_PROPERTY(
IrcNetwork* network READ network CONSTANT)
76 Q_PROPERTY(
IrcProtocol* protocol READ protocol WRITE setProtocol)
81 explicit IrcConnection(
const QString& host, QObject* parent =
nullptr);
84 Q_INVOKABLE
IrcConnection* clone(QObject *parent =
nullptr)
const;
87 void setHost(
const QString& host);
90 void setPort(
int port);
92 QStringList servers()
const;
93 void setServers(
const QStringList& servers);
95 Q_INVOKABLE
static bool isValidServer(
const QString& server);
97 QString userName()
const;
98 void setUserName(
const QString& name);
100 QString nickName()
const;
101 void setNickName(
const QString& name);
103 QString realName()
const;
104 void setRealName(
const QString& name);
106 QString password()
const;
107 void setPassword(
const QString& password);
109 QStringList nickNames()
const;
110 void setNickNames(
const QStringList& names);
112 QString displayName()
const;
113 void setDisplayName(
const QString& name);
115 QVariantMap userData()
const;
116 void setUserData(
const QVariantMap& data);
118 QByteArray encoding()
const;
119 void setEncoding(
const QByteArray& encoding);
130 Status status()
const;
131 bool isActive()
const;
132 bool isConnected()
const;
133 bool isEnabled()
const;
135 int reconnectDelay()
const;
136 void setReconnectDelay(
int seconds);
138 int connectionCount()
const;
140 QAbstractSocket* socket()
const;
141 void setSocket(QAbstractSocket* socket);
143 bool isSecure()
const;
144 void setSecure(
bool secure);
145 static bool isSecureSupported();
147 QString saslMechanism()
const;
148 void setSaslMechanism(
const QString& mechanism);
150 static QStringList supportedSaslMechanisms();
152 QVariantMap ctcpReplies()
const;
153 void setCtcpReplies(
const QVariantMap& replies);
160 void installMessageFilter(QObject* filter);
161 void removeMessageFilter(QObject* filter);
163 void installCommandFilter(QObject* filter);
164 void removeCommandFilter(QObject* filter);
166 Q_INVOKABLE QByteArray saveState(
int version = 0)
const;
167 Q_INVOKABLE
bool restoreState(
const QByteArray& state,
int version = 0);
172 void quit(
const QString& reason = QString());
173 void setEnabled(
bool enabled =
true);
174 void setDisabled(
bool disabled =
true);
177 bool sendData(
const QByteArray& data);
178 bool sendRaw(
const QString& message);
189 void nickNameReserved(QString* alternate);
220 void hostChanged(
const QString& host);
221 void portChanged(
int port);
222 void serversChanged(
const QStringList& servers);
223 void userNameChanged(
const QString& name);
224 void nickNameChanged(
const QString& name);
225 void realNameChanged(
const QString& name);
226 void passwordChanged(
const QString& password);
227 void nickNamesChanged(
const QStringList& names);
228 void displayNameChanged(
const QString& name);
229 void userDataChanged(
const QVariantMap& data);
230 void reconnectDelayChanged(
int seconds);
231 void connectionCountChanged(
int count);
232 void enabledChanged(
bool enabled);
233 void secureChanged(
bool secure);
234 void saslMechanismChanged(
const QString& mechanism);
235 void ctcpRepliesChanged(
const QVariantMap& replies);
244 friend class IrcProtocolPrivate;
245 QScopedPointer<IrcConnectionPrivate> d_ptr;
249 Q_PRIVATE_SLOT(d_func(),
void _irc_connected())
250 Q_PRIVATE_SLOT(d_func(),
void _irc_disconnected())
251 Q_PRIVATE_SLOT(d_func(),
void _irc_error(QAbstractSocket::SocketError))
252 Q_PRIVATE_SLOT(d_func(),
void _irc_state(QAbstractSocket::SocketState))
253 Q_PRIVATE_SLOT(d_func(),
void _irc_sslErrors())
254 Q_PRIVATE_SLOT(d_func(),
void _irc_reconnect())
255 Q_PRIVATE_SLOT(d_func(),
void _irc_readData())
256 Q_PRIVATE_SLOT(d_func(),
void _irc_filterDestroyed(QObject*))
259 #ifndef QT_NO_DEBUG_STREAM
261 IRC_CORE_EXPORT QDebug operator<<(QDebug debug,
const IrcConnection* connection);
Represents an account notify message.
Definition: ircmessage.h:170
Represents an away message.
Definition: ircmessage.h:186
Represents a batch message.
Definition: ircmessage.h:206
Represents a capability message.
Definition: ircmessage.h:227
Provides the most common commands.
Definition: irccommand.h:45
Provides means to establish a connection to an IRC server.
Definition: ircconnection.h:49
Status
Definition: ircconnection.h:121
@ Connecting
The connection is being established.
Definition: ircconnection.h:124
@ Inactive
The connection is inactive.
Definition: ircconnection.h:122
@ Closed
The connection has been closed.
Definition: ircconnection.h:127
@ Connected
The connection has been established.
Definition: ircconnection.h:125
@ Closing
The connection is being closed.
Definition: ircconnection.h:126
@ Waiting
The connection is waiting for a reconnect.
Definition: ircconnection.h:123
void channelKeyRequired(const QString &channel, QString *key)
void messageReceived(IrcMessage *message)
void nickNameRequired(const QString &reserved, QString *alternate)
void socketStateChanged(QAbstractSocket::SocketState state)
void socketError(QAbstractSocket::SocketError error)
Represents an error message.
Definition: ircmessage.h:245
Represents a host change message.
Definition: ircmessage.h:261
Represents an invite message.
Definition: ircmessage.h:279
Represents a join message.
Definition: ircmessage.h:299
Represents a kick message.
Definition: ircmessage.h:319
The base class of all messages.
Definition: ircmessage.h:48
Represents a mode message.
Definition: ircmessage.h:339
Represents a message of the day.
Definition: ircmessage.h:368
Represents a names list message.
Definition: ircmessage.h:384
Provides network information and capability management.
Definition: ircnetwork.h:44
Represents a nick message.
Definition: ircmessage.h:402
Represents a notice message.
Definition: ircmessage.h:420
Represents a numeric message.
Definition: ircmessage.h:444
Represents a part message.
Definition: ircmessage.h:462
Represents a ping message.
Definition: ircmessage.h:480
Represents a pong message.
Definition: ircmessage.h:496
Represents a private message.
Definition: ircmessage.h:512
Implements the IRC protocol and provides means for implementing support for custom protocols.
Definition: ircprotocol.h:46
Represents a quit message.
Definition: ircmessage.h:538
Represents a topic message.
Definition: ircmessage.h:554
Represents a reply message to a WHO command.
Definition: ircmessage.h:630
Represents a reply message to a WHOIS command.
Definition: ircmessage.h:574
Represents a reply message to a WHOWAS command.
Definition: ircmessage.h:608