diff --git a/backends/libcommuni/session.h b/backends/libcommuni/session.h index 8b31da583794a078829fc3175203323a64eede98..bff2aee4c2559489b173fc08efc917cf42418013 100644 --- a/backends/libcommuni/session.h +++ b/backends/libcommuni/session.h @@ -13,6 +13,8 @@ #include #include +#include "Swiften/Swiften.h" +#include using namespace Transport; @@ -21,17 +23,31 @@ 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, NetworkPlugin *np, const std::string &suffix = "", QObject* parent = 0); std::map m_modes; std::string suffix; int rooms; - void addAutoJoinChannel(const std::string &channel) { - m_autoJoin.push_back(channel); + 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.remove(channel); + m_autoJoin.erase(channel); } void setIdentify(const std::string &identify) { @@ -63,7 +79,7 @@ protected: NetworkPlugin *np; std::string user; std::string m_identify; - std::list m_autoJoin; + AutoJoinMap m_autoJoin; std::string m_topicData; bool m_connected; };