Files
@ 150afaed9002
Branch filter:
Location: libtransport.git/backends/libcommuni/session.h - annotation
150afaed9002
3.0 KiB
text/plain
Removed m_modes and m_away and introduced IRCBuddy in communi backend
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 1c5504d7c60b 1c5504d7c60b e312a8602ec7 e312a8602ec7 e312a8602ec7 0e56fb848472 0e56fb848472 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 1c5504d7c60b 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 150afaed9002 1c5504d7c60b 150afaed9002 1c5504d7c60b 0e56fb848472 e312a8602ec7 e312a8602ec7 e312a8602ec7 1c5504d7c60b 1c5504d7c60b e312a8602ec7 e312a8602ec7 e312a8602ec7 1c5504d7c60b e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 150afaed9002 150afaed9002 150afaed9002 150afaed9002 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 0e56fb848472 e312a8602ec7 e312a8602ec7 e312a8602ec7 e312a8602ec7 0e56fb848472 e312a8602ec7 e312a8602ec7 1c5504d7c60b e312a8602ec7 9e84e718548d 3201977efb6a 3201977efb6a 150afaed9002 e312a8602ec7 e312a8602ec7 e312a8602ec7 | /*
* 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 <IrcSession>
#include <transport/networkplugin.h>
#include "Swiften/Swiften.h"
#include <boost/smart_ptr/make_shared.hpp>
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;
};
class IRCBuddy {
public:
IRCBuddy(bool op = false, bool away = false) : m_op(op), m_away(away) {};
void setOp(bool op) { m_op = op; }
bool isOp() { return m_op; }
void setAway(bool away) { m_away = away; }
bool isAway() { return m_away; }
private:
bool m_op;
bool m_away;
};
typedef std::map<std::string, boost::shared_ptr<AutoJoinChannel> > AutoJoinMap;
typedef std::map<std::string, std::map<std::string, IRCBuddy> > IRCBuddyMap;
MyIrcSession(const std::string &user, IRCNetworkPlugin *np, const std::string &suffix = "", QObject* parent = 0);
std::string suffix;
int rooms;
void addAutoJoinChannel(const std::string &channel, const std::string &password) {
m_autoJoin[channel] = boost::make_shared<AutoJoinChannel>(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;
}
IRCBuddy &getIRCBuddy(const std::string &channel, const std::string &name) {
return m_buddies[channel][name];
}
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<std::string> m_rooms;
std::list<std::string> m_names;
IRCBuddyMap m_buddies;
};
#endif // SESSION_H
|