/* * Copyright (C) 2008-2009 J-P Nurmi jpnurmi@gmail.com * * This example is free, and not covered by LGPL license. There is no * restriction applied to their modification, redistribution, using and so on. * You can study them, modify them, use them in your own program - either * completely or partially. By using it you may give me some credits in your * program, but you don't have to. */ #ifndef SESSION_H #define SESSION_H #include #include #include "Swiften/Swiften.h" #include using namespace Transport; class IRCNetworkPlugin; class MyIrcSession : public IrcSession { Q_OBJECT public: class AutoJoinChannel { public: AutoJoinChannel(const std::string &channel = "", const std::string &password = "") : m_channel(channel), m_password(password) {} virtual ~AutoJoinChannel() {} const std::string &getChannel() { return m_channel; } const std::string &getPassword() { return m_password; } private: std::string m_channel; std::string m_password; }; typedef std::map > AutoJoinMap; MyIrcSession(const std::string &user, IRCNetworkPlugin *np, const std::string &suffix = "", QObject* parent = 0); std::map m_modes; std::map m_away; std::string suffix; int rooms; void addAutoJoinChannel(const std::string &channel, const std::string &password) { m_autoJoin[channel] = boost::make_shared(channel, password); } void removeAutoJoinChannel(const std::string &channel) { m_autoJoin.erase(channel); } void setIdentify(const std::string &identify) { m_identify = identify; } const std::string &getIdentify() { return m_identify; } bool correctNickname(std::string &nickname); void on_joined(IrcMessage *message); void on_parted(IrcMessage *message); void on_quit(IrcMessage *message); void on_nickChanged(IrcMessage *message); void on_modeChanged(IrcMessage *message); void on_topicChanged(IrcMessage *message); void on_messageReceived(IrcMessage *message); void on_numericMessageReceived(IrcMessage *message); protected Q_SLOTS: void on_connected(); void on_disconnected(); void on_socketError(QAbstractSocket::SocketError error); void onMessageReceived(IrcMessage* message); protected: IRCNetworkPlugin *np; std::string user; std::string m_identify; AutoJoinMap m_autoJoin; std::string m_topicData; bool m_connected; std::list m_rooms; std::list m_names; }; #endif // SESSION_H