The complete source code of IdealIRC
http://www.idealirc.org/
92 lines
3.8 KiB
92 lines
3.8 KiB
#ifndef IRC_H
|
|
#define IRC_H
|
|
|
|
#include "IRCClient/IRCBase.h"
|
|
#include <QStringList>
|
|
#include <QObject>
|
|
|
|
class IRCMemberEntry;
|
|
class MdiManager;
|
|
class IWinStatus;
|
|
|
|
class IRC : public QObject,
|
|
public IRCBase
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit IRC(IWinStatus& status);
|
|
|
|
void disconnectForExit(const QString& quitMessage);
|
|
IWinStatus& getStatus() { return m_status; }
|
|
|
|
void setIgnoreVerbosity(const QStringList& commandsAndNumerics);
|
|
void unsetIgnoreVerbosity(const QStringList& commandsAndNumerics);
|
|
|
|
void expectDisconnect()
|
|
{
|
|
/*
|
|
m_expectDisconnect = true;
|
|
expectDisconnectTimer.singleShot(10000, [this]{
|
|
m_expectDisconnect = false;
|
|
});
|
|
*/
|
|
}
|
|
|
|
void dontExpectDisconnect()
|
|
{
|
|
/*
|
|
m_expectDisconnect = false;
|
|
expectDisconnectTimer.stop();
|
|
*/
|
|
}
|
|
|
|
signals:
|
|
void readyForExit();
|
|
void disconnected();
|
|
void connected();
|
|
|
|
void memberListReloaded(const QString& channel);
|
|
void memberListClearedForAll();
|
|
void memberAdded(const QString& channel, const IRCMemberEntry& entry);
|
|
void memberChanged(const QString& nickname, const IRCMemberEntry& entry);
|
|
void memberRemoved(const QString& channel, const IRCMemberEntry& entry);
|
|
|
|
private:
|
|
bool m_disconnectForExit{ false };
|
|
IWinStatus& m_status;
|
|
int m_id; //! Used mainly for scripts
|
|
|
|
QStringList m_ignoreVerbosity; //! Used to mute certain message types from the server
|
|
bool ignoreVerbosity(const std::string& cmd);
|
|
|
|
void rejoinChannels();
|
|
|
|
void onRegistered() override;
|
|
void onConnected() override;
|
|
void onDisconnected() override;
|
|
void onConnectionError(IRCError e) override;
|
|
void onMsgNick(const IRCPrefix& sender, const std::string& newNickname, const std::vector<std::string>& channelsAffected) override;
|
|
void onMsgMode(const IRCPrefix& sender, const std::string& target, const std::string& modes, const std::vector<std::string>& args) override;
|
|
void onMsgQuit(const IRCPrefix& sender, const std::string& message, const std::vector<std::string>& channelsAffected) override;
|
|
void onMsgJoin(const IRCPrefix& sender, const std::string& target) override;
|
|
void onMsgPart(const IRCPrefix& sender, const std::string& target, const std::string& message) override;
|
|
void onMsgTopic(const IRCPrefix& sender, const std::string& target, const std::string& topic) override;
|
|
void onMsgInvite(const IRCPrefix& sender, const std::string& target) override;
|
|
void onMsgKick(const IRCPrefix& sender, const std::string& target, const std::string& who, const std::string& reason) override;
|
|
void onMsgPrivmsg(const IRCPrefix& sender, const std::string& target, const std::string& message) override;
|
|
void onMsgNotice(const IRCPrefix& sender, const std::string& target, const std::string& message) override;
|
|
void onMsgKill(const IRCPrefix& sender, const std::string& reason) override;
|
|
void onMsgPing(const std::string& message) override;
|
|
void onMsgPong(const std::string& message) override;
|
|
void onMsgError(const std::string& message) override;
|
|
void onMsgWallops(const IRCPrefix& sender, const std::string& message) override;
|
|
void onMsgNumeric(const IRCPrefix& sender, const std::string& num, const std::vector<std::string>& args, const std::string& message) override;
|
|
void onMsgCTCPRequest(const IRCPrefix& sender, const std::string& target, const std::string& command, const std::string& message) override;
|
|
void onMsgCTCPResponse(const IRCPrefix& sender, const std::string& target, const std::string& command, const std::string& message) override;
|
|
void onMsgDCCRequest(std::shared_ptr<DCC> dcc, const IRCPrefix& sender, const std::string& target, const std::string& type, const std::string& message) override;
|
|
void v3onMsgAway(const IRCPrefix& sender, const std::string& message, const std::vector<std::string>& channelsAffected) override;
|
|
void v3onMsgJoin(const IRCPrefix& sender, const std::string& channel, const std::string& useraccount, const std::string& realname) override;
|
|
};
|
|
|
|
#endif // IRC_H
|
|
|