The complete source code of IdealIRC http://www.idealirc.org/
 
 
 
 
idealirc/IRC.h

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