From e312a8602ec798bf20bd7237f3ea835a94dace3b Mon Sep 17 00:00:00 2001 From: HanzZ Date: Thu, 24 Nov 2011 19:07:21 +0100 Subject: [PATCH] Works with libCommuni now (libircclient-qt renamed) --- CMakeLists.txt | 8 +- backends/CMakeLists.txt | 2 +- backends/libcommuni/CMakeLists.txt | 10 + .../ircnetworkplugin.cpp | 30 +- .../ircnetworkplugin.h | 0 .../{libircclient-qt => libcommuni}/main.cpp | 0 backends/libcommuni/session.cpp | 400 ++++++++++++++++++ backends/libcommuni/session.h | 103 +++++ .../singleircnetworkplugin.cpp | 29 +- .../singleircnetworkplugin.h | 0 backends/libircclient-qt/CMakeLists.txt | 10 - backends/libircclient-qt/session.cpp | 243 ----------- backends/libircclient-qt/session.h | 86 ---- cmake_modules/CommuniConfig.cmake | 10 + cmake_modules/IRCClientQtConfig.cmake | 10 - 15 files changed, 566 insertions(+), 375 deletions(-) create mode 100644 backends/libcommuni/CMakeLists.txt rename backends/{libircclient-qt => libcommuni}/ircnetworkplugin.cpp (79%) rename backends/{libircclient-qt => libcommuni}/ircnetworkplugin.h (100%) rename backends/{libircclient-qt => libcommuni}/main.cpp (100%) create mode 100644 backends/libcommuni/session.cpp create mode 100644 backends/libcommuni/session.h rename backends/{libircclient-qt => libcommuni}/singleircnetworkplugin.cpp (78%) rename backends/{libircclient-qt => libcommuni}/singleircnetworkplugin.h (100%) delete mode 100644 backends/libircclient-qt/CMakeLists.txt delete mode 100644 backends/libircclient-qt/session.cpp delete mode 100644 backends/libircclient-qt/session.h create mode 100644 cmake_modules/CommuniConfig.cmake delete mode 100644 cmake_modules/IRCClientQtConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index c43cdf7b..d7cb5928 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,8 +44,8 @@ message( STATUS "Found Boost: ${Boost_LIBRARIES}, ${Boost_INCLUDE_DIR}") set(Protobuf_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(Protobuf REQUIRED) -set(IRCClientQt_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") -find_package(IRCClientQt) +set(Communi_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") +find_package(Communi) set(log4cxx_DIR "${CMAKE_SOURCE_DIR}/cmake_modules") find_package(log4cxx) @@ -123,13 +123,13 @@ if (PROTOBUF_FOUND) endif() if(IRC_FOUND) - ADD_DEFINITIONS(-DIRC_SHARED) + ADD_DEFINITIONS(-DCOMMUNI_SHARED) message("IRC plugin : yes") include_directories(${QT_QTNETWORK_INCLUDE_DIR}) include_directories(${IRC_INCLUDE_DIR}) include(${QT_USE_FILE}) else() - message("IRC plugin : no (install libircclient-qt and libprotobuf-dev)") + message("IRC plugin : no (install libCommuni and libprotobuf-dev)") endif() message("Frotz plugin : yes") diff --git a/backends/CMakeLists.txt b/backends/CMakeLists.txt index 5a758c95..9ecb3b5c 100644 --- a/backends/CMakeLists.txt +++ b/backends/CMakeLists.txt @@ -4,7 +4,7 @@ if (PROTOBUF_FOUND) endif() if (IRC_FOUND) - ADD_SUBDIRECTORY(libircclient-qt) + ADD_SUBDIRECTORY(libcommuni) endif() if (NOT WIN32) diff --git a/backends/libcommuni/CMakeLists.txt b/backends/libcommuni/CMakeLists.txt new file mode 100644 index 00000000..a2a14730 --- /dev/null +++ b/backends/libcommuni/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 2.6) +FILE(GLOB SRC *.cpp) +FILE(GLOB HEADERS *.h) +QT4_WRAP_CPP(SRC ${HEADERS}) +ADD_EXECUTABLE(spectrum2_libcommuni_backend ${SRC}) + +target_link_libraries(spectrum2_libcommuni_backend ${IRC_LIBRARY} ${QT_LIBRARIES} transport-plugin transport pthread) + +INSTALL(TARGETS spectrum2_libcommuni_backend RUNTIME DESTINATION bin) + diff --git a/backends/libircclient-qt/ircnetworkplugin.cpp b/backends/libcommuni/ircnetworkplugin.cpp similarity index 79% rename from backends/libircclient-qt/ircnetworkplugin.cpp rename to backends/libcommuni/ircnetworkplugin.cpp index 2ebe91d9..d7c9ae9e 100644 --- a/backends/libircclient-qt/ircnetworkplugin.cpp +++ b/backends/libcommuni/ircnetworkplugin.cpp @@ -1,4 +1,6 @@ #include "ircnetworkplugin.h" +#include +#include IRCNetworkPlugin::IRCNetworkPlugin(Config *config, Swift::QtEventLoop *loop, const std::string &host, int port) { this->config = config; @@ -26,8 +28,10 @@ void IRCNetworkPlugin::handleLoginRequest(const std::string &user, const std::st if (CONFIG_BOOL(config, "service.server_mode")) { MyIrcSession *session = new MyIrcSession(user, this); std::string h = user.substr(0, user.find("@")); - session->setNick(QString::fromStdString(h.substr(0, h.find("%")))); - session->connectToServer(QString::fromStdString(h.substr(h.find("%") + 1)), 6667); + session->setNickName(QString::fromStdString(h.substr(0, h.find("%")))); + session->setHost(QString::fromStdString(h.substr(h.find("%") + 1))); + session->setPort(6667); + session->open(); std::cout << "CONNECTING IRC NETWORK " << h.substr(h.find("%") + 1) << "\n"; m_sessions[user] = session; } @@ -39,7 +43,7 @@ void IRCNetworkPlugin::handleLoginRequest(const std::string &user, const std::st void IRCNetworkPlugin::handleLogoutRequest(const std::string &user, const std::string &legacyName) { if (m_sessions[user] == NULL) return; - m_sessions[user]->disconnectFromServer(); + m_sessions[user]->close(); m_sessions[user]->deleteLater(); m_sessions.erase(user); } @@ -68,7 +72,7 @@ void IRCNetworkPlugin::handleMessageSendRequest(const std::string &user, const s } } std::cout << "MESSAGE " << u << " " << r << "\n"; - m_sessions[u]->message(QString::fromStdString(r), QString::fromStdString(message)); + m_sessions[u]->sendCommand(IrcCommand::createMessage(QString::fromStdString(r), QString::fromStdString(message))); std::cout << "SENT\n"; } @@ -85,8 +89,10 @@ void IRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, const std: if (room.find("@") != std::string::npos) { // suffix is %irc.freenode.net to let MyIrcSession return #room%irc.freenode.net MyIrcSession *session = new MyIrcSession(user, this, room.substr(room.find("@"))); - session->setNick(QString::fromStdString(nickname)); - session->connectToServer(QString::fromStdString(room.substr(room.find("@") + 1)), 6667); + session->setNickName(QString::fromStdString(nickname)); + session->setHost(QString::fromStdString(room.substr(room.find("@") + 1))); + session->setPort(6667); + session->open(); std::cout << "CONNECTING IRC NETWORK " << room.substr(room.find("@") + 1) << "\n"; std::cout << "SUFFIX " << room.substr(room.find("@")) << "\n"; m_sessions[u] = session; @@ -96,11 +102,11 @@ void IRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, const std: } } std::cout << "JOINING " << r << "\n"; - m_sessions[u]->addAutoJoinChannel(QString::fromStdString(r)); - m_sessions[u]->join(QString::fromStdString(r), QString::fromStdString(password)); + m_sessions[u]->addAutoJoinChannel(r); + m_sessions[u]->sendCommand(IrcCommand::createJoin(QString::fromStdString(r), QString::fromStdString(password))); m_sessions[u]->rooms += 1; // update nickname, because we have nickname per session, no nickname per room. - handleRoomNicknameChanged(user, r, m_sessions[u]->nick().toStdString()); + handleRoomNicknameChanged(user, r, m_sessions[u]->nickName().toStdString()); } void IRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std::string &room) { @@ -114,12 +120,12 @@ void IRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std if (m_sessions[u] == NULL) return; - m_sessions[u]->part(QString::fromStdString(r)); - m_sessions[u]->removeAutoJoinChannel(QString::fromStdString(r)); + m_sessions[u]->sendCommand(IrcCommand::createPart(QString::fromStdString(r))); + m_sessions[u]->removeAutoJoinChannel(r); m_sessions[u]->rooms -= 1; if (m_sessions[u]->rooms <= 0) { - m_sessions[u]->disconnectFromServer(); + m_sessions[u]->close(); m_sessions[u]->deleteLater(); m_sessions.erase(u); } diff --git a/backends/libircclient-qt/ircnetworkplugin.h b/backends/libcommuni/ircnetworkplugin.h similarity index 100% rename from backends/libircclient-qt/ircnetworkplugin.h rename to backends/libcommuni/ircnetworkplugin.h diff --git a/backends/libircclient-qt/main.cpp b/backends/libcommuni/main.cpp similarity index 100% rename from backends/libircclient-qt/main.cpp rename to backends/libcommuni/main.cpp diff --git a/backends/libcommuni/session.cpp b/backends/libcommuni/session.cpp new file mode 100644 index 00000000..bab60b4c --- /dev/null +++ b/backends/libcommuni/session.cpp @@ -0,0 +1,400 @@ +/* + * 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. + */ + +#include "session.h" +#include +#include +#include "Swiften/Elements/StatusShow.h" +#include +#include + +#include "log4cxx/logger.h" + +using namespace log4cxx; + +static LoggerPtr logger = log4cxx::Logger::getLogger("IRCSession"); + +MyIrcSession::MyIrcSession(const std::string &user, NetworkPlugin *np, const std::string &suffix, QObject* parent) : IrcSession(parent) +{ + this->np = np; + this->user = user; + this->suffix = suffix; + rooms = 0; + connect(this, SIGNAL(disconnected()), SLOT(on_disconnected())); + connect(this, SIGNAL(connected()), SLOT(on_connected())); + connect(this, SIGNAL(messageReceived(IrcMessage*)), this, SLOT(onMessageReceived(IrcMessage*))); +} + +void MyIrcSession::on_connected() { + if (suffix.empty()) { + np->handleConnected(user); + } + + for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { + sendCommand(IrcCommand::createJoin(QString::fromStdString(*it))); + } + + if (getIdentify().find(" ") != std::string::npos) { + std::string to = getIdentify().substr(0, getIdentify().find(" ")); + std::string what = getIdentify().substr(getIdentify().find(" ") + 1); + sendCommand(IrcCommand::createMessage(QString::fromStdString(to), QString::fromStdString(what))); + } +} + +void MyIrcSession::on_disconnected() { + if (suffix.empty()) + np->handleDisconnected(user, 0, ""); +} + +bool MyIrcSession::correctNickname(std::string &nickname) { + bool flags = 0; + switch(nickname.at(0)) { + case '@': nickname = nickname.substr(1); flags = 1; break; + case '+': nickname = nickname.substr(1); break; + default: break; + } + return flags; +} + +void MyIrcSession::on_joined(IrcMessage *message) { + IrcJoinMessage *m = (IrcJoinMessage *) message; + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + np->handleParticipantChanged(user, nickname, m->channel().toStdString() + suffix, (int) flags, pbnetwork::STATUS_ONLINE); + LOG4CXX_INFO(logger, user << ": Joined " << m->parameters()[0].toStdString()); +} + + +void MyIrcSession::on_parted(IrcMessage *message) { + IrcPartMessage *m = (IrcPartMessage *) message; + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + LOG4CXX_INFO(logger, user << ": " << nickname << " parted " << m->channel().toStdString() + suffix); + np->handleParticipantChanged(user, nickname, m->channel().toStdString() + suffix,(int) flags, pbnetwork::STATUS_NONE, m->reason().toStdString()); +} + +void MyIrcSession::on_quit(IrcMessage *message) { + IrcQuitMessage *m = (IrcQuitMessage *) message; + for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + LOG4CXX_INFO(logger, user << ": " << nickname << " quit " << (*it) + suffix); + np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_NONE, m->reason().toStdString()); + } +} + +void MyIrcSession::on_nickChanged(IrcMessage *message) { + IrcNickMessage *m = (IrcNickMessage *) message; + + for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { + std::string nickname = m->sender().name().toStdString(); + bool flags = m_modes[(*it) + nickname]; + LOG4CXX_INFO(logger, user << ": " << nickname << " changed nickname to " << m->nick().toStdString()); + np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_ONLINE, "", m->nick().toStdString()); + } +} + +void MyIrcSession::on_modeChanged(IrcMessage *message) { + IrcModeMessage *m = (IrcModeMessage *) message; + + // mode changed: "#testik" "HanzZ" "+o" "hanzz_k" + std::string nickname = m->argument().toStdString(); + std::string mode = m->mode().toStdString(); + if (nickname.empty()) + return; + LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode); + for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { + if (mode == "+o") { + m_modes[(*it) + nickname] = 1; + } + else { + m_modes[(*it) + nickname] = 0; + } + bool flags = m_modes[(*it) + nickname]; + np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_ONLINE, ""); + } +} + +void MyIrcSession::on_topicChanged(IrcMessage *message) { + IrcTopicMessage *m = (IrcTopicMessage *) message; + + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + + LOG4CXX_INFO(logger, user << ": " << nickname << " topic changed to " << m->topic().toStdString()); + np->handleSubject(user, m->channel().toStdString() + suffix, m->topic().toStdString(), nickname); +} + +void MyIrcSession::on_messageReceived(IrcMessage *message) { + IrcPrivateMessage *m = (IrcPrivateMessage *) message; + + std::string target = m->target().toStdString(); + LOG4CXX_INFO(logger, user << ": Message from " << target); + if (target.find("#") == 0) { + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + np->handleMessage(user, target + suffix, m->message().toStdString(), nickname); + } + else { + bool flags = 0; + std::string nickname = m->sender().name().toStdString(); + flags = correctNickname(nickname); + np->handleMessage(user, nickname, m->message().toStdString()); + } +} + +void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { + IrcNumericMessage *m = (IrcNumericMessage *) message; + switch (m->code()) { + case 332: + m_topicData = m->parameters().value(2).toStdString(); + break; + case 333: + np->handleSubject(user, m->parameters().value(1).toStdString() + suffix, m_topicData, m->parameters().value(2).toStdString()); + break; + case 353: + QString channel = m->parameters().value(2); + QStringList members = m->parameters().value(3).split(" "); + + for (int i = 0; i < members.size(); i++) { + bool flags = 0; + std::string nickname = members.at(i).toStdString(); + flags = correctNickname(nickname); + m_modes[channel.toStdString() + nickname] = flags; + np->handleParticipantChanged(user, nickname, channel.toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE); + } + break; + } + + //qDebug() << "numeric message received:" << receiver() << origin << code << params; +} + +void MyIrcSession::onMessageReceived(IrcMessage *message) { + LOG4CXX_INFO(logger, user << ": " << message->toString().toStdString()); + switch (message->type()) { + case IrcMessage::Join: + on_joined(message); + break; + case IrcMessage::Part: + on_parted(message); + break; + case IrcMessage::Quit: + on_quit(message); + break; + case IrcMessage::Nick: + on_nickChanged(message); + break; + case IrcMessage::Mode: + on_modeChanged(message); + break; + case IrcMessage::Topic: + on_topicChanged(message); + break; + case IrcMessage::Private: + on_messageReceived(message); + break; + case IrcMessage::Numeric: + on_numericMessageReceived(message); + break; + } +} + +//MyIrcBuffer::MyIrcBuffer(const QString& receiver, const std::string &user, NetworkPlugin *np, const std::string &suffix, Irc::Session* parent) +// : Irc::Buffer(receiver, parent) +//{ +// this->np = np; +// this->user = user; +// this->suffix = suffix; +// p = (MyIrcSession *) parent; +// connect(this, SIGNAL(receiverChanged(QString)), SLOT(on_receiverChanged(QString))); +// connect(this, SIGNAL(joined(QString)), SLOT(on_joined(QString))); +// connect(this, SIGNAL(parted(QString, QString)), SLOT(on_parted(QString, QString))); +// connect(this, SIGNAL(quit(QString, QString)), SLOT(on_quit(QString, QString))); +// connect(this, SIGNAL(nickChanged(QString, QString)), SLOT(on_nickChanged(QString, QString))); +// connect(this, SIGNAL(modeChanged(QString, QString, QString)), SLOT(on_modeChanged(QString, QString, QString))); +// connect(this, SIGNAL(topicChanged(QString, QString)), SLOT(on_topicChanged(QString, QString))); +// connect(this, SIGNAL(invited(QString, QString, QString)), SLOT(on_invited(QString, QString, QString))); +// connect(this, SIGNAL(kicked(QString, QString, QString)), SLOT(on_kicked(QString, QString, QString))); +// connect(this, SIGNAL(messageReceived(QString, QString, Irc::Buffer::MessageFlags)), +// SLOT(on_messageReceived(QString, QString, Irc::Buffer::MessageFlags))); +// connect(this, SIGNAL(noticeReceived(QString, QString, Irc::Buffer::MessageFlags)), +// SLOT(on_noticeReceived(QString, QString, Irc::Buffer::MessageFlags))); +// connect(this, SIGNAL(ctcpRequestReceived(QString, QString, Irc::Buffer::MessageFlags)), +// SLOT(on_ctcpRequestReceived(QString, QString, Irc::Buffer::MessageFlags))); +// connect(this, SIGNAL(ctcpReplyReceived(QString, QString, Irc::Buffer::MessageFlags)), +// SLOT(on_ctcpReplyReceived(QString, QString, Irc::Buffer::MessageFlags))); +// connect(this, SIGNAL(ctcpActionReceived(QString, QString, Irc::Buffer::MessageFlags)), +// SLOT(on_ctcpActionReceived(QString, QString, Irc::Buffer::MessageFlags))); +// connect(this, SIGNAL(numericMessageReceived(QString, uint, QStringList)), SLOT(on_numericMessageReceived(QString, uint, QStringList))); +// connect(this, SIGNAL(unknownMessageReceived(QString, QStringList)), SLOT(on_unknownMessageReceived(QString, QStringList))); +//} + +//void MyIrcBuffer::on_receiverChanged(const QString& receiver) +//{ +//// qDebug() << "receiver changed:" << receiver; +//} + +//bool MyIrcBuffer::correctNickname(std::string &nickname) { +// bool flags = 0; +// switch(nickname.at(0)) { +// case '@': nickname = nickname.substr(1); flags = 1; break; +// case '+': nickname = nickname.substr(1); break; +// default: break; +// } +// return flags; +//} + +//void MyIrcBuffer::on_joined(const QString& origin) { +// LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " joined " << receiver().toStdString() + suffix); +// bool flags = 0; +// std::string nickname = origin.toStdString(); +// flags = correctNickname(nickname); +// np->handleParticipantChanged(user, origin.toStdString(), receiver().toStdString() + suffix, (int) flags, pbnetwork::STATUS_ONLINE); +//} + +//void MyIrcBuffer::on_parted(const QString& origin, const QString& message) { +// LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " parted " << receiver().toStdString() + suffix); +// qDebug() << "parted:" << receiver() << origin << message; +// bool flags = 0; +// std::string nickname = origin.toStdString(); +// flags = correctNickname(nickname); +// np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_NONE, message.toStdString()); +//} + +//void MyIrcBuffer::on_quit(const QString& origin, const QString& message) { +// on_parted(origin, message); +//} + +//void MyIrcBuffer::on_nickChanged(const QString& origin, const QString& nick) { +// LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " changed nickname to " << nick.toStdString()); +// std::string nickname = origin.toStdString(); +// bool flags = p->m_modes[receiver().toStdString() + nickname]; +//// std::cout << receiver().toStdString() + nickname << " " << flags << "\n"; +// np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE, "", nick.toStdString()); +//} + +//void MyIrcBuffer::on_modeChanged(const QString& origin, const QString& mode, const QString& args) { +// // mode changed: "#testik" "HanzZ" "+o" "hanzz_k" +// std::string nickname = args.toStdString(); +// if (nickname.empty()) +// return; +// LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode.toStdString()); +// if (mode == "+o") { +// p->m_modes[receiver().toStdString() + nickname] = 1; +// } +// else { +// p->m_modes[receiver().toStdString() + nickname] = 0; +// } +// bool flags = p->m_modes[receiver().toStdString() + nickname]; +// np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE, ""); +//} + +//void MyIrcBuffer::on_topicChanged(const QString& origin, const QString& topic) { +// //topic changed: "#testik" "HanzZ" "test" +// LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " topic changed to " << topic.toStdString()); +// np->handleSubject(user, receiver().toStdString() + suffix, topic.toStdString(), origin.toStdString()); +//} + +//void MyIrcBuffer::on_invited(const QString& origin, const QString& receiver, const QString& channel) { +// qDebug() << "invited:" << Irc::Buffer::receiver() << origin << receiver << channel; +//} + +//void MyIrcBuffer::on_kicked(const QString& origin, const QString& nick, const QString& message) { +// qDebug() << "kicked:" << receiver() << origin << nick << message; +//} + +//void MyIrcBuffer::on_messageReceived(const QString& origin, const QString& message, Irc::Buffer::MessageFlags flags) { +// // qDebug() << "message received:" << receiver() << origin << message << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); + +// if (!receiver().startsWith("#") && (flags & Irc::Buffer::EchoFlag)) +// return; +// std::string r = receiver().toStdString(); +//// if (!suffix.empty()) { +//// r = receiver().replace('@', '%').toStdString(); +//// } +// LOG4CXX_INFO(logger, user << ": Message from " << r); +// if (r.find("#") == 0) { +// np->handleMessage(user, r + suffix, message.toStdString(), origin.toStdString()); +// } +// else { +// np->handleMessage(user, r + suffix, message.toStdString()); +// } +//} + +//void MyIrcBuffer::on_noticeReceived(const QString& origin, const QString& notice, Irc::Buffer::MessageFlags flags) +//{ +// qDebug() << "notice received:" << receiver() << origin << notice +// << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); +//} + +//void MyIrcBuffer::on_ctcpRequestReceived(const QString& origin, const QString& request, Irc::Buffer::MessageFlags flags) +//{ +// qDebug() << "ctcp request received:" << receiver() << origin << request +// << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); +//} + +//void MyIrcBuffer::on_ctcpReplyReceived(const QString& origin, const QString& reply, Irc::Buffer::MessageFlags flags) +//{ +// qDebug() << "ctcp reply received:" << receiver() << origin << reply +// << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); +//} + +//void MyIrcBuffer::on_ctcpActionReceived(const QString& origin, const QString& action, Irc::Buffer::MessageFlags flags) +//{ +// qDebug() << "ctcp action received:" << receiver() << origin << action +// << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); +//} + +//void MyIrcBuffer::on_numericMessageReceived(const QString& origin, uint code, const QStringList& params) +//{ +// switch (code) { +// case 251: +// if (suffix.empty()) { +// np->handleConnected(user); +// } +// if (p->getIdentify().find(" ") != std::string::npos) { +// std::string to = p->getIdentify().substr(0, p->getIdentify().find(" ")); +// std::string what = p->getIdentify().substr(p->getIdentify().find(" ") + 1); +// p->message(QString::fromStdString(to), QString::fromStdString(what)); +// } +// break; +// case 332: +// m_topicData = params.value(2).toStdString(); +// break; +// case 333: +// np->handleSubject(user, params.value(1).toStdString() + suffix, m_topicData, params.value(2).toStdString()); +// break; +// case 353: +// QString channel = params.value(2); +// QStringList members = params.value(3).split(" "); + +// for (int i = 0; i < members.size(); i++) { +// bool flags = 0; +// std::string nickname = members.at(i).toStdString(); +// flags = correctNickname(nickname); +// p->m_modes[channel.toStdString() + nickname] = flags; +// std::cout << channel.toStdString() + suffix << " " << flags << "\n"; +// np->handleParticipantChanged(user, nickname, channel.toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE); +// } +// break; +// } +// LOG4CXX_INFO(logger, user << ": Numeric message received " << receiver().toStdString() << " " << origin.toStdString() << " " << code); +// //qDebug() << "numeric message received:" << receiver() << origin << code << params; +//} + +//void MyIrcBuffer::on_unknownMessageReceived(const QString& origin, const QStringList& params) +//{ +// qDebug() << "unknown message received:" << receiver() << origin << params; +//} diff --git a/backends/libcommuni/session.h b/backends/libcommuni/session.h new file mode 100644 index 00000000..3589dcb4 --- /dev/null +++ b/backends/libcommuni/session.h @@ -0,0 +1,103 @@ +/* + * 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 + +using namespace Transport; + +class MyIrcSession : public IrcSession +{ + Q_OBJECT + +public: + 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 removeAutoJoinChannel(const std::string &channel) { + m_autoJoin.remove(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 onMessageReceived(IrcMessage* message); + +protected: + NetworkPlugin *np; + std::string user; + std::string m_identify; + std::list m_autoJoin; + std::string m_topicData; +}; + +//class MyIrcBuffer : public Irc::Buffer +//{ +// Q_OBJECT + +//public: +// MyIrcBuffer(const QString& receiver, const std::string &user, NetworkPlugin *np, const std::string &suffix, Irc::Session* parent); +// NetworkPlugin *np; +// std::string user; +// MyIrcSession *p; +// std::string m_topicData; +// std::string suffix; + +//protected Q_SLOTS: +// void on_receiverChanged(const QString& receiver); +// void on_joined(const QString& origin); +// void on_parted(const QString& origin, const QString& message); +// void on_quit(const QString& origin, const QString& message); +// void on_nickChanged(const QString& origin, const QString& nick); +// void on_modeChanged(const QString& origin, const QString& mode, const QString& args); +// void on_topicChanged(const QString& origin, const QString& topic); +// void on_invited(const QString& origin, const QString& receiver, const QString& channel); +// void on_kicked(const QString& origin, const QString& nick, const QString& message); +// void on_messageReceived(const QString& origin, const QString& message, Irc::Buffer::MessageFlags flags); +// void on_noticeReceived(const QString& origin, const QString& notice, Irc::Buffer::MessageFlags flags); +// void on_ctcpRequestReceived(const QString& origin, const QString& request, Irc::Buffer::MessageFlags flags); +// void on_ctcpReplyReceived(const QString& origin, const QString& reply, Irc::Buffer::MessageFlags flags); +// void on_ctcpActionReceived(const QString& origin, const QString& action, Irc::Buffer::MessageFlags flags); +// void on_numericMessageReceived(const QString& origin, uint code, const QStringList& params); +// void on_unknownMessageReceived(const QString& origin, const QStringList& params); + +// bool correctNickname(std::string &nickname); +//}; + +#endif // SESSION_H diff --git a/backends/libircclient-qt/singleircnetworkplugin.cpp b/backends/libcommuni/singleircnetworkplugin.cpp similarity index 78% rename from backends/libircclient-qt/singleircnetworkplugin.cpp rename to backends/libcommuni/singleircnetworkplugin.cpp index 657251ef..06bd378c 100644 --- a/backends/libircclient-qt/singleircnetworkplugin.cpp +++ b/backends/libcommuni/singleircnetworkplugin.cpp @@ -1,5 +1,7 @@ #include "singleircnetworkplugin.h" #include "log4cxx/logger.h" +#include +#include using namespace log4cxx; @@ -44,14 +46,19 @@ void SingleIRCNetworkPlugin::handleLoginRequest(const std::string &user, const s LOG4CXX_INFO(logger, user << ": Connecting " << m_server << " as " << legacyName); MyIrcSession *session = new MyIrcSession(user, this); - session->setNick(QString::fromStdString(legacyName)); - session->connectToServer(QString::fromStdString(m_server), 6667); + session->setUserName(QString::fromStdString(legacyName)); + session->setNickName(QString::fromStdString(legacyName)); + session->setRealName(QString::fromStdString(legacyName)); + session->setHost(QString::fromStdString(m_server)); + session->setPort(6667); std::string identify = m_identify; boost::replace_all(identify, "$password", password); boost::replace_all(identify, "$name", legacyName); session->setIdentify(identify); + session->open(); + m_sessions[user] = session; } @@ -62,7 +69,7 @@ void SingleIRCNetworkPlugin::handleLogoutRequest(const std::string &user, const } LOG4CXX_INFO(logger, user << ": Disconnecting."); - m_sessions[user]->disconnectFromServer(); + m_sessions[user]->close(); m_sessions[user]->deleteLater(); m_sessions.erase(user); } @@ -83,7 +90,11 @@ void SingleIRCNetworkPlugin::handleMessageSendRequest(const std::string &user, c } LOG4CXX_INFO(logger, user << ": Forwarding message to " << r); - m_sessions[user]->message(QString::fromStdString(r), QString::fromStdString(message)); + m_sessions[user]->sendCommand(IrcCommand::createMessage(QString::fromStdString(r), QString::fromStdString(message))); + + if (r.find("#") == 0) { + handleMessage(user, legacyName, message, m_sessions[user]->nickName().toStdString()); + } } void SingleIRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, const std::string &room, const std::string &nickname, const std::string &password) { @@ -93,12 +104,12 @@ void SingleIRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, cons } LOG4CXX_INFO(logger, user << ": Joining " << room); - m_sessions[user]->addAutoJoinChannel(QString::fromStdString(room)); - m_sessions[user]->join(QString::fromStdString(room), QString::fromStdString(password)); + m_sessions[user]->addAutoJoinChannel(room); + m_sessions[user]->sendCommand(IrcCommand::createJoin(QString::fromStdString(room), QString::fromStdString(password))); m_sessions[user]->rooms += 1; // update nickname, because we have nickname per session, no nickname per room. - handleRoomNicknameChanged(user, room, m_sessions[user]->nick().toStdString()); + handleRoomNicknameChanged(user, room, m_sessions[user]->userName().toStdString()); } void SingleIRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std::string &room) { @@ -111,7 +122,7 @@ void SingleIRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, con } LOG4CXX_INFO(logger, user << ": Leaving " << room); - m_sessions[u]->part(QString::fromStdString(r)); - m_sessions[u]->removeAutoJoinChannel(QString::fromStdString(r)); + m_sessions[u]->sendCommand(IrcCommand::createPart(QString::fromStdString(r))); + m_sessions[u]->removeAutoJoinChannel(r); m_sessions[u]->rooms -= 1; } diff --git a/backends/libircclient-qt/singleircnetworkplugin.h b/backends/libcommuni/singleircnetworkplugin.h similarity index 100% rename from backends/libircclient-qt/singleircnetworkplugin.h rename to backends/libcommuni/singleircnetworkplugin.h diff --git a/backends/libircclient-qt/CMakeLists.txt b/backends/libircclient-qt/CMakeLists.txt deleted file mode 100644 index 61cf35d9..00000000 --- a/backends/libircclient-qt/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -FILE(GLOB SRC *.cpp) -FILE(GLOB HEADERS *.h) -QT4_WRAP_CPP(SRC ${HEADERS}) -ADD_EXECUTABLE(spectrum2_libircclient-qt_backend ${SRC}) - -target_link_libraries(spectrum2_libircclient-qt_backend ${IRC_LIBRARY} ${QT_LIBRARIES} transport-plugin transport pthread) - -INSTALL(TARGETS spectrum2_libircclient-qt_backend RUNTIME DESTINATION bin) - diff --git a/backends/libircclient-qt/session.cpp b/backends/libircclient-qt/session.cpp deleted file mode 100644 index 2fcc81a9..00000000 --- a/backends/libircclient-qt/session.cpp +++ /dev/null @@ -1,243 +0,0 @@ -/* - * 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. - */ - -#include "session.h" -#include -#include -#include "Swiften/Elements/StatusShow.h" - -#include "log4cxx/logger.h" - -using namespace log4cxx; - -static LoggerPtr logger = log4cxx::Logger::getLogger("IRCSession"); - -MyIrcSession::MyIrcSession(const std::string &user, NetworkPlugin *np, const std::string &suffix, QObject* parent) : Irc::Session(parent) -{ - this->np = np; - this->user = user; - this->suffix = suffix; - rooms = 0; - connect(this, SIGNAL(disconnected()), SLOT(on_disconnected())); -} - -void MyIrcSession::on_connected(){ -// std::cout << "connected:\n"; -} - -void MyIrcSession::on_disconnected() -{ -// std::cout << "disconnected:\n"; - if (suffix.empty()) - np->handleDisconnected(user, 0, ""); -} - -void MyIrcSession::on_bufferAdded(Irc::Buffer* buffer) -{ -// qDebug() << "buffer added:" << buffer->receiver(); -} - -void MyIrcSession::on_bufferRemoved(Irc::Buffer* buffer) -{ -// qDebug() << "buffer removed:" << buffer->receiver(); -} - -Irc::Buffer* MyIrcSession::createBuffer(const QString& receiver) -{ - return new MyIrcBuffer(receiver, user, np, suffix, this); -} - -MyIrcBuffer::MyIrcBuffer(const QString& receiver, const std::string &user, NetworkPlugin *np, const std::string &suffix, Irc::Session* parent) - : Irc::Buffer(receiver, parent) -{ - this->np = np; - this->user = user; - this->suffix = suffix; - p = (MyIrcSession *) parent; - connect(this, SIGNAL(receiverChanged(QString)), SLOT(on_receiverChanged(QString))); - connect(this, SIGNAL(joined(QString)), SLOT(on_joined(QString))); - connect(this, SIGNAL(parted(QString, QString)), SLOT(on_parted(QString, QString))); - connect(this, SIGNAL(quit(QString, QString)), SLOT(on_quit(QString, QString))); - connect(this, SIGNAL(nickChanged(QString, QString)), SLOT(on_nickChanged(QString, QString))); - connect(this, SIGNAL(modeChanged(QString, QString, QString)), SLOT(on_modeChanged(QString, QString, QString))); - connect(this, SIGNAL(topicChanged(QString, QString)), SLOT(on_topicChanged(QString, QString))); - connect(this, SIGNAL(invited(QString, QString, QString)), SLOT(on_invited(QString, QString, QString))); - connect(this, SIGNAL(kicked(QString, QString, QString)), SLOT(on_kicked(QString, QString, QString))); - connect(this, SIGNAL(messageReceived(QString, QString, Irc::Buffer::MessageFlags)), - SLOT(on_messageReceived(QString, QString, Irc::Buffer::MessageFlags))); - connect(this, SIGNAL(noticeReceived(QString, QString, Irc::Buffer::MessageFlags)), - SLOT(on_noticeReceived(QString, QString, Irc::Buffer::MessageFlags))); - connect(this, SIGNAL(ctcpRequestReceived(QString, QString, Irc::Buffer::MessageFlags)), - SLOT(on_ctcpRequestReceived(QString, QString, Irc::Buffer::MessageFlags))); - connect(this, SIGNAL(ctcpReplyReceived(QString, QString, Irc::Buffer::MessageFlags)), - SLOT(on_ctcpReplyReceived(QString, QString, Irc::Buffer::MessageFlags))); - connect(this, SIGNAL(ctcpActionReceived(QString, QString, Irc::Buffer::MessageFlags)), - SLOT(on_ctcpActionReceived(QString, QString, Irc::Buffer::MessageFlags))); - connect(this, SIGNAL(numericMessageReceived(QString, uint, QStringList)), SLOT(on_numericMessageReceived(QString, uint, QStringList))); - connect(this, SIGNAL(unknownMessageReceived(QString, QStringList)), SLOT(on_unknownMessageReceived(QString, QStringList))); -} - -void MyIrcBuffer::on_receiverChanged(const QString& receiver) -{ -// qDebug() << "receiver changed:" << receiver; -} - -bool MyIrcBuffer::correctNickname(std::string &nickname) { - bool flags = 0; - switch(nickname.at(0)) { - case '@': nickname = nickname.substr(1); flags = 1; break; - case '+': nickname = nickname.substr(1); break; - default: break; - } - return flags; -} - -void MyIrcBuffer::on_joined(const QString& origin) { - LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " joined " << receiver().toStdString() + suffix); - bool flags = 0; - std::string nickname = origin.toStdString(); - flags = correctNickname(nickname); - np->handleParticipantChanged(user, origin.toStdString(), receiver().toStdString() + suffix, (int) flags, pbnetwork::STATUS_ONLINE); -} - -void MyIrcBuffer::on_parted(const QString& origin, const QString& message) { - LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " parted " << receiver().toStdString() + suffix); - qDebug() << "parted:" << receiver() << origin << message; - bool flags = 0; - std::string nickname = origin.toStdString(); - flags = correctNickname(nickname); - np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_NONE, message.toStdString()); -} - -void MyIrcBuffer::on_quit(const QString& origin, const QString& message) { - on_parted(origin, message); -} - -void MyIrcBuffer::on_nickChanged(const QString& origin, const QString& nick) { - LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " changed nickname to " << nick.toStdString()); - std::string nickname = origin.toStdString(); - bool flags = p->m_modes[receiver().toStdString() + nickname]; -// std::cout << receiver().toStdString() + nickname << " " << flags << "\n"; - np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE, "", nick.toStdString()); -} - -void MyIrcBuffer::on_modeChanged(const QString& origin, const QString& mode, const QString& args) { - // mode changed: "#testik" "HanzZ" "+o" "hanzz_k" - std::string nickname = args.toStdString(); - if (nickname.empty()) - return; - LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode.toStdString()); - if (mode == "+o") { - p->m_modes[receiver().toStdString() + nickname] = 1; - } - else { - p->m_modes[receiver().toStdString() + nickname] = 0; - } - bool flags = p->m_modes[receiver().toStdString() + nickname]; - np->handleParticipantChanged(user, nickname, receiver().toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE, ""); -} - -void MyIrcBuffer::on_topicChanged(const QString& origin, const QString& topic) { - //topic changed: "#testik" "HanzZ" "test" - LOG4CXX_INFO(logger, user << ": " << origin.toStdString() << " topic changed to " << topic.toStdString()); - np->handleSubject(user, receiver().toStdString() + suffix, topic.toStdString(), origin.toStdString()); -} - -void MyIrcBuffer::on_invited(const QString& origin, const QString& receiver, const QString& channel) { - qDebug() << "invited:" << Irc::Buffer::receiver() << origin << receiver << channel; -} - -void MyIrcBuffer::on_kicked(const QString& origin, const QString& nick, const QString& message) { - qDebug() << "kicked:" << receiver() << origin << nick << message; -} - -void MyIrcBuffer::on_messageReceived(const QString& origin, const QString& message, Irc::Buffer::MessageFlags flags) { - // qDebug() << "message received:" << receiver() << origin << message << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); - - if (!receiver().startsWith("#") && (flags & Irc::Buffer::EchoFlag)) - return; - std::string r = receiver().toStdString(); -// if (!suffix.empty()) { -// r = receiver().replace('@', '%').toStdString(); -// } - LOG4CXX_INFO(logger, user << ": Message from " << r); - if (r.find("#") == 0) { - np->handleMessage(user, r + suffix, message.toStdString(), origin.toStdString()); - } - else { - np->handleMessage(user, r + suffix, message.toStdString()); - } -} - -void MyIrcBuffer::on_noticeReceived(const QString& origin, const QString& notice, Irc::Buffer::MessageFlags flags) -{ - qDebug() << "notice received:" << receiver() << origin << notice - << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); -} - -void MyIrcBuffer::on_ctcpRequestReceived(const QString& origin, const QString& request, Irc::Buffer::MessageFlags flags) -{ - qDebug() << "ctcp request received:" << receiver() << origin << request - << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); -} - -void MyIrcBuffer::on_ctcpReplyReceived(const QString& origin, const QString& reply, Irc::Buffer::MessageFlags flags) -{ - qDebug() << "ctcp reply received:" << receiver() << origin << reply - << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); -} - -void MyIrcBuffer::on_ctcpActionReceived(const QString& origin, const QString& action, Irc::Buffer::MessageFlags flags) -{ - qDebug() << "ctcp action received:" << receiver() << origin << action - << (flags & Irc::Buffer::IdentifiedFlag ? "(identified!)" : "(not identified)"); -} - -void MyIrcBuffer::on_numericMessageReceived(const QString& origin, uint code, const QStringList& params) -{ - switch (code) { - case 251: - if (suffix.empty()) { - np->handleConnected(user); - } - if (p->getIdentify().find(" ") != std::string::npos) { - std::string to = p->getIdentify().substr(0, p->getIdentify().find(" ")); - std::string what = p->getIdentify().substr(p->getIdentify().find(" ") + 1); - p->message(QString::fromStdString(to), QString::fromStdString(what)); - } - break; - case 332: - m_topicData = params.value(2).toStdString(); - break; - case 333: - np->handleSubject(user, params.value(1).toStdString() + suffix, m_topicData, params.value(2).toStdString()); - break; - case 353: - QString channel = params.value(2); - QStringList members = params.value(3).split(" "); - - for (int i = 0; i < members.size(); i++) { - bool flags = 0; - std::string nickname = members.at(i).toStdString(); - flags = correctNickname(nickname); - p->m_modes[channel.toStdString() + nickname] = flags; - std::cout << channel.toStdString() + suffix << " " << flags << "\n"; - np->handleParticipantChanged(user, nickname, channel.toStdString() + suffix,(int) flags, pbnetwork::STATUS_ONLINE); - } - break; - } - LOG4CXX_INFO(logger, user << ": Numeric message received " << receiver().toStdString() << " " << origin.toStdString() << " " << code); - //qDebug() << "numeric message received:" << receiver() << origin << code << params; -} - -void MyIrcBuffer::on_unknownMessageReceived(const QString& origin, const QStringList& params) -{ - qDebug() << "unknown message received:" << receiver() << origin << params; -} diff --git a/backends/libircclient-qt/session.h b/backends/libircclient-qt/session.h deleted file mode 100644 index 1e1067ce..00000000 --- a/backends/libircclient-qt/session.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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 - -using namespace Transport; - -class MyIrcSession : public Irc::Session -{ - Q_OBJECT - -public: - MyIrcSession(const std::string &user, NetworkPlugin *np, const std::string &suffix = "", QObject* parent = 0); - std::map m_modes; - std::string suffix; - int rooms; - - void setIdentify(const std::string &identify) { - m_identify = identify; - } - - const std::string &getIdentify() { - return m_identify; - } - -protected Q_SLOTS: - void on_connected(); - void on_disconnected(); - - void on_bufferAdded(Irc::Buffer* buffer); - void on_bufferRemoved(Irc::Buffer* buffer); - -protected: - NetworkPlugin *np; - std::string user; - std::string m_identify; - - virtual Irc::Buffer* createBuffer(const QString& receiver); -}; - -class MyIrcBuffer : public Irc::Buffer -{ - Q_OBJECT - -public: - MyIrcBuffer(const QString& receiver, const std::string &user, NetworkPlugin *np, const std::string &suffix, Irc::Session* parent); - NetworkPlugin *np; - std::string user; - MyIrcSession *p; - std::string m_topicData; - std::string suffix; - -protected Q_SLOTS: - void on_receiverChanged(const QString& receiver); - void on_joined(const QString& origin); - void on_parted(const QString& origin, const QString& message); - void on_quit(const QString& origin, const QString& message); - void on_nickChanged(const QString& origin, const QString& nick); - void on_modeChanged(const QString& origin, const QString& mode, const QString& args); - void on_topicChanged(const QString& origin, const QString& topic); - void on_invited(const QString& origin, const QString& receiver, const QString& channel); - void on_kicked(const QString& origin, const QString& nick, const QString& message); - void on_messageReceived(const QString& origin, const QString& message, Irc::Buffer::MessageFlags flags); - void on_noticeReceived(const QString& origin, const QString& notice, Irc::Buffer::MessageFlags flags); - void on_ctcpRequestReceived(const QString& origin, const QString& request, Irc::Buffer::MessageFlags flags); - void on_ctcpReplyReceived(const QString& origin, const QString& reply, Irc::Buffer::MessageFlags flags); - void on_ctcpActionReceived(const QString& origin, const QString& action, Irc::Buffer::MessageFlags flags); - void on_numericMessageReceived(const QString& origin, uint code, const QStringList& params); - void on_unknownMessageReceived(const QString& origin, const QStringList& params); - - bool correctNickname(std::string &nickname); -}; - -#endif // SESSION_H diff --git a/cmake_modules/CommuniConfig.cmake b/cmake_modules/CommuniConfig.cmake new file mode 100644 index 00000000..7f803847 --- /dev/null +++ b/cmake_modules/CommuniConfig.cmake @@ -0,0 +1,10 @@ +FIND_LIBRARY(IRC_LIBRARY NAMES Communi) +FIND_PATH(IRC_INCLUDE_DIR NAMES "ircglobal.h" PATH_SUFFIXES Communi qt4/Communi ) + +# message( STATUS ${IRC_LIBRARY}) +if( IRC_LIBRARY AND IRC_INCLUDE_DIR ) + message( STATUS "Found libCommuni ${IRC_LIBRARY}, ${IRC_INCLUDE_DIR}") + set( IRC_FOUND 1 ) +else() + message( STATUS "Could NOT find libCommuni" ) +endif() diff --git a/cmake_modules/IRCClientQtConfig.cmake b/cmake_modules/IRCClientQtConfig.cmake deleted file mode 100644 index 58118610..00000000 --- a/cmake_modules/IRCClientQtConfig.cmake +++ /dev/null @@ -1,10 +0,0 @@ -FIND_LIBRARY(IRC_LIBRARY NAMES ircclient-qt) -FIND_PATH(IRC_INCLUDE_DIR NAMES "ircglobal.h" PATH_SUFFIXES ircclient-qt qt4/ircclient-qt ) - -# message( STATUS ${IRC_LIBRARY}) -if( IRC_LIBRARY AND IRC_INCLUDE_DIR ) - message( STATUS "Found libircclient-qt: ${IRC_LIBRARY}, ${IRC_INCLUDE_DIR}") - set( IRC_FOUND 1 ) -else() - message( STATUS "Could NOT find libircclient-qt" ) -endif()