summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/ircservertab.cpp2
-rw-r--r--noncore/net/opieirc/ircsession.cpp3
-rw-r--r--noncore/net/opieirc/ircsession.h3
3 files changed, 5 insertions, 3 deletions
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp
index bddc37e..62a06e8 100644
--- a/noncore/net/opieirc/ircservertab.cpp
+++ b/noncore/net/opieirc/ircservertab.cpp
@@ -1,145 +1,145 @@
1#include <qtextstream.h> 1#include <qtextstream.h>
2#include <qwhatsthis.h> 2#include <qwhatsthis.h>
3 3
4#include "ircservertab.h" 4#include "ircservertab.h"
5#include "ircmessageparser.h" 5#include "ircmessageparser.h"
6#include "ircchannelperson.h" 6#include "ircchannelperson.h"
7 7
8 8
9bool IRCServerTab::containsPing( const QString& text, IRCServerTab* tab ) { 9bool IRCServerTab::containsPing( const QString& text, IRCServerTab* tab ) {
10 return (text.contains(IRCMessageParser::tr("Received a CTCP PING from "))) || 10 return (text.contains(IRCMessageParser::tr("Received a CTCP PING from "))) ||
11 (text.find("ping") != -1 && text.find( tab->server()->nick() != -1)); 11 (text.find("ping") != -1 && text.find( tab->server()->nick() != -1));
12} 12}
13 13
14 14
15IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) { 15IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) {
16 m_server = server; 16 m_server = server;
17 m_session = new IRCSession(&m_server); 17 m_session = new IRCSession(this, &m_server);
18 m_mainWindow = mainWindow; 18 m_mainWindow = mainWindow;
19 m_close = FALSE; 19 m_close = FALSE;
20 m_lines = 0; 20 m_lines = 0;
21 m_description->setText(tr("Connecting to")+" <b>" + server.hostname() + ":" + QString::number(server.port()) + "</b>"); 21 m_description->setText(tr("Connecting to")+" <b>" + server.hostname() + ":" + QString::number(server.port()) + "</b>");
22 m_textview = new QTextView(this); 22 m_textview = new QTextView(this);
23 m_textview->setHScrollBarMode(QScrollView::AlwaysOff); 23 m_textview->setHScrollBarMode(QScrollView::AlwaysOff);
24 m_textview->setVScrollBarMode(QScrollView::AlwaysOn); 24 m_textview->setVScrollBarMode(QScrollView::AlwaysOn);
25 m_textview->setTextFormat(RichText); 25 m_textview->setTextFormat(RichText);
26 QWhatsThis::add(m_textview, tr("Server messages")); 26 QWhatsThis::add(m_textview, tr("Server messages"));
27 m_layout->add(m_textview); 27 m_layout->add(m_textview);
28 m_field = new IRCHistoryLineEdit(this); 28 m_field = new IRCHistoryLineEdit(this);
29 connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); 29 connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab()));
30 connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); 30 connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab()));
31 connect(m_field, SIGNAL(closeTab()), this, SIGNAL(closeTab())); 31 connect(m_field, SIGNAL(closeTab()), this, SIGNAL(closeTab()));
32 connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); 32 connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus()));
33 33
34 QWhatsThis::add(m_field, tr("Type commands here. A list of available commands can be found inside the OpieIRC help")); 34 QWhatsThis::add(m_field, tr("Type commands here. A list of available commands can be found inside the OpieIRC help"));
35 m_layout->add(m_field); 35 m_layout->add(m_field);
36 connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); 36 connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand()));
37 connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput))); 37 connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput)));
38 connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling())); 38 connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling()));
39 connect(m_session, SIGNAL(updateChannels()), this, SLOT(slotUpdateChannels())); 39 connect(m_session, SIGNAL(updateChannels()), this, SLOT(slotUpdateChannels()));
40 settingsChanged(); 40 settingsChanged();
41 41
42 m_field->setFocus(); 42 m_field->setFocus();
43 m_field->setActiveWindow(); 43 m_field->setActiveWindow();
44 44
45} 45}
46 46
47void IRCServerTab::scrolling(){ 47void IRCServerTab::scrolling(){
48 m_textview->ensureVisible(0, m_textview->contentsHeight()); 48 m_textview->ensureVisible(0, m_textview->contentsHeight());
49} 49}
50 50
51 51
52void IRCServerTab::appendText(QString text) { 52void IRCServerTab::appendText(QString text) {
53 /* not using append because it creates layout problems */ 53 /* not using append because it creates layout problems */
54 QString txt = m_textview->text() + IRCTab::appendTimestamp( text ); 54 QString txt = m_textview->text() + IRCTab::appendTimestamp( text );
55 55
56 56
57 57
58 if (m_maxLines > 0 && m_lines >= m_maxLines) { 58 if (m_maxLines > 0 && m_lines >= m_maxLines) {
59 int firstBreak = txt.find('\n'); 59 int firstBreak = txt.find('\n');
60 if (firstBreak != -1) { 60 if (firstBreak != -1) {
61 txt = "<qt bgcolor=\"" + m_backgroundColor + "\"/>" + txt.right(txt.length() - (firstBreak + 1)); 61 txt = "<qt bgcolor=\"" + m_backgroundColor + "\"/>" + txt.right(txt.length() - (firstBreak + 1));
62 } 62 }
63 } else { 63 } else {
64 m_lines++; 64 m_lines++;
65 } 65 }
66 m_textview->setText(txt); 66 m_textview->setText(txt);
67 m_textview->ensureVisible(0, m_textview->contentsHeight()); 67 m_textview->ensureVisible(0, m_textview->contentsHeight());
68 emit changed(this); 68 emit changed(this);
69} 69}
70 70
71IRCServerTab::~IRCServerTab() { 71IRCServerTab::~IRCServerTab() {
72 delete m_session; 72 delete m_session;
73} 73}
74 74
75void IRCServerTab::removeChannelTab(IRCChannelTab *tab) { 75void IRCServerTab::removeChannelTab(IRCChannelTab *tab) {
76 m_channelTabs.remove(tab); 76 m_channelTabs.remove(tab);
77} 77}
78 78
79void IRCServerTab::removeQueryTab(IRCQueryTab *tab) { 79void IRCServerTab::removeQueryTab(IRCQueryTab *tab) {
80 m_queryTabs.remove(tab); 80 m_queryTabs.remove(tab);
81} 81}
82 82
83void IRCServerTab::addQueryTab(IRCQueryTab *tab) { 83void IRCServerTab::addQueryTab(IRCQueryTab *tab) {
84 m_queryTabs.append(tab); 84 m_queryTabs.append(tab);
85} 85}
86 86
87QString IRCServerTab::title() { 87QString IRCServerTab::title() {
88 return "Server"; 88 return "Server";
89} 89}
90 90
91IRCSession *IRCServerTab::session() { 91IRCSession *IRCServerTab::session() {
92 return m_session; 92 return m_session;
93} 93}
94/* 94/*
95QString *IRCServerTab::mynick() { 95QString *IRCServerTab::mynick() {
96 return (*m_server->nick()); 96 return (*m_server->nick());
97} */ 97} */
98 98
99IRCServer *IRCServerTab::server() { 99IRCServer *IRCServerTab::server() {
100 return &m_server; 100 return &m_server;
101} 101}
102 102
103void IRCServerTab::settingsChanged() { 103void IRCServerTab::settingsChanged() {
104 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); 104 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>");
105 m_lines = 0; 105 m_lines = 0;
106} 106}
107 107
108void IRCServerTab::executeCommand(IRCTab *tab, QString line) { 108void IRCServerTab::executeCommand(IRCTab *tab, QString line) {
109 QTextIStream stream(&line); 109 QTextIStream stream(&line);
110 QString command; 110 QString command;
111 stream >> command; 111 stream >> command;
112 command = command.upper().right(command.length()-1); 112 command = command.upper().right(command.length()-1);
113 113
114 //JOIN 114 //JOIN
115 if (command == "JOIN" || command == "J") { 115 if (command == "JOIN" || command == "J") {
116 QString channel; 116 QString channel;
117 stream >> channel; 117 stream >> channel;
118 /* According to RFC 1459 */ 118 /* According to RFC 1459 */
119 if (channel.length() > 0 && channel.length() < 200 && 119 if (channel.length() > 0 && channel.length() < 200 &&
120 channel.find(",") == -1 && channel.find("") == -1) { 120 channel.find(",") == -1 && channel.find("") == -1) {
121 121
122 if (!channel.startsWith("#") && !channel.startsWith("&")) { 122 if (!channel.startsWith("#") && !channel.startsWith("&")) {
123 channel = channel.prepend("#"); 123 channel = channel.prepend("#");
124 } 124 }
125 m_session->join(channel); 125 m_session->join(channel);
126 } else { 126 } else {
127 tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); 127 tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>");
128 } 128 }
129 } 129 }
130 130
131 //KICK 131 //KICK
132 else if (command == "KICK"){ 132 else if (command == "KICK"){
133 QString nickname; 133 QString nickname;
134 stream >> nickname; 134 stream >> nickname;
135 if (nickname.length() > 0) { 135 if (nickname.length() > 0) {
136 if (line.length() > 7 + nickname.length()) { 136 if (line.length() > 7 + nickname.length()) {
137 QString text = line.right(line.length()-nickname.length()-7); 137 QString text = line.right(line.length()-nickname.length()-7);
138 IRCPerson person; 138 IRCPerson person;
139 person.setNick(nickname); 139 person.setNick(nickname);
140 m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); 140 m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text);
141 } else { 141 } else {
142 IRCPerson person; 142 IRCPerson person;
143 person.setNick(nickname); 143 person.setNick(nickname);
144 m_session->kick(((IRCChannelTab *)tab)->channel(), &person); 144 m_session->kick(((IRCChannelTab *)tab)->channel(), &person);
145 } 145 }
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp
index 80a327a..fd8ba72 100644
--- a/noncore/net/opieirc/ircsession.cpp
+++ b/noncore/net/opieirc/ircsession.cpp
@@ -1,138 +1,139 @@
1 1
2#include "ircsession.h" 2#include "ircsession.h"
3#include "ircmessageparser.h" 3#include "ircmessageparser.h"
4#include "ircchannelperson.h" 4#include "ircchannelperson.h"
5#include "ircversion.h" 5#include "ircversion.h"
6 6
7IRCSession::IRCSession(IRCServer *server) { 7IRCSession::IRCSession(QWidget *parent, IRCServer *server) {
8 m_server = server; 8 m_server = server;
9 m_connection = new IRCConnection(m_server); 9 m_connection = new IRCConnection(m_server);
10 m_parser = new IRCMessageParser(this); 10 m_parser = new IRCMessageParser(this);
11 m_parent = parent;
11 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*))); 12 connect(m_connection, SIGNAL(messageArrived(IRCMessage*)), this, SLOT(handleMessage(IRCMessage*)));
12 connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); 13 connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput)));
13 connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); 14 connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput)));
14} 15}
15 16
16IRCSession::~IRCSession() { 17IRCSession::~IRCSession() {
17 /* We want this to get deleted automatically */ 18 /* We want this to get deleted automatically */
18 m_channels.setAutoDelete(TRUE); 19 m_channels.setAutoDelete(TRUE);
19 m_people.setAutoDelete(TRUE); 20 m_people.setAutoDelete(TRUE);
20 21
21 delete m_parser; 22 delete m_parser;
22 delete m_connection; 23 delete m_connection;
23} 24}
24 25
25void IRCSession::beginSession() { 26void IRCSession::beginSession() {
26 m_connection->doConnect(); 27 m_connection->doConnect();
27} 28}
28 29
29void IRCSession::join(QString channelname) { 30void IRCSession::join(QString channelname) {
30 m_connection->sendLine("JOIN " + channelname); 31 m_connection->sendLine("JOIN " + channelname);
31} 32}
32 33
33void IRCSession::quit(){ 34void IRCSession::quit(){
34 m_connection->sendLine("QUIT :[OI] I'm too good to need a reason"); 35 m_connection->sendLine("QUIT :[OI] I'm too good to need a reason");
35} 36}
36 37
37void IRCSession::quit(QString message){ 38void IRCSession::quit(QString message){
38 m_connection->sendLine("QUIT :" + message); 39 m_connection->sendLine("QUIT :" + message);
39} 40}
40 41
41void IRCSession::topic(IRCChannel *channel, QString message){ 42void IRCSession::topic(IRCChannel *channel, QString message){
42 m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message); 43 m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message);
43} 44}
44 45
45void IRCSession::mode(IRCChannel *channel, QString message){ 46void IRCSession::mode(IRCChannel *channel, QString message){
46 m_connection->sendLine("MODE " + channel->channelname() + " " + message); 47 m_connection->sendLine("MODE " + channel->channelname() + " " + message);
47} 48}
48 49
49void IRCSession::mode(IRCPerson *person, QString message){ 50void IRCSession::mode(IRCPerson *person, QString message){
50 m_connection->sendLine("MODE " + person->nick() + " " + message); 51 m_connection->sendLine("MODE " + person->nick() + " " + message);
51} 52}
52 53
53void IRCSession::mode(QString message){ 54void IRCSession::mode(QString message){
54 m_connection->sendLine("MODE " + message); 55 m_connection->sendLine("MODE " + message);
55} 56}
56 57
57void IRCSession::raw(QString message){ 58void IRCSession::raw(QString message){
58 m_connection->sendLine(message); 59 m_connection->sendLine(message);
59} 60}
60 61
61void IRCSession::kick(IRCChannel *channel, IRCPerson *person) { 62void IRCSession::kick(IRCChannel *channel, IRCPerson *person) {
62 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason"); 63 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason");
63} 64}
64 65
65void IRCSession::op(IRCChannel *channel, IRCPerson *person) { 66void IRCSession::op(IRCChannel *channel, IRCPerson *person) {
66 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick()); 67 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick());
67} 68}
68 69
69void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) { 70void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) {
70 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message); 71 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message);
71} 72}
72 73
73void IRCSession::sendMessage(IRCPerson *person, QString message) { 74void IRCSession::sendMessage(IRCPerson *person, QString message) {
74 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); 75 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message);
75} 76}
76 77
77void IRCSession::sendMessage(IRCChannel *channel, QString message) { 78void IRCSession::sendMessage(IRCChannel *channel, QString message) {
78 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); 79 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message);
79} 80}
80 81
81void IRCSession::sendAction(IRCChannel *channel, QString message) { 82void IRCSession::sendAction(IRCChannel *channel, QString message) {
82 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); 83 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001");
83} 84}
84 85
85void IRCSession::sendAction(IRCPerson *person, QString message) { 86void IRCSession::sendAction(IRCPerson *person, QString message) {
86 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); 87 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001");
87} 88}
88 89
89bool IRCSession::isSessionActive() { 90bool IRCSession::isSessionActive() {
90 return m_connection->isConnected(); 91 return m_connection->isConnected();
91} 92}
92 93
93bool IRCSession::isLoggedIn() { 94bool IRCSession::isLoggedIn() {
94 return m_connection->isLoggedIn(); 95 return m_connection->isLoggedIn();
95} 96}
96 97
97void IRCSession::endSession() { 98void IRCSession::endSession() {
98 if (m_connection->isLoggedIn()) 99 if (m_connection->isLoggedIn())
99 quit(APP_VERSION); 100 quit(APP_VERSION);
100 else 101 else
101 m_connection->close(); 102 m_connection->close();
102} 103}
103 104
104void IRCSession::part(IRCChannel *channel) { 105void IRCSession::part(IRCChannel *channel) {
105 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); 106 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION);
106} 107}
107 108
108void IRCSession::setValidUsermodes(const QString &modes) { 109void IRCSession::setValidUsermodes(const QString &modes) {
109 m_validUsermodes = modes; 110 m_validUsermodes = modes;
110} 111}
111 112
112void IRCSession::setValidChannelmodes(const QString &modes) { 113void IRCSession::setValidChannelmodes(const QString &modes) {
113 m_validChannelmodes = modes; 114 m_validChannelmodes = modes;
114} 115}
115 116
116void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) { 117void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) {
117 QList<IRCChannel> channels; 118 QList<IRCChannel> channels;
118 IRCOutput output; 119 IRCOutput output;
119 120
120 if (oldNickname == m_server->nick()) { 121 if (oldNickname == m_server->nick()) {
121 m_server->setNick(newNickname); 122 m_server->setNick(newNickname);
122 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname)); 123 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname));
123 channels = m_channels; 124 channels = m_channels;
124 } 125 }
125 126
126 else { 127 else {
127 IRCPerson *person = getPerson(oldNickname); 128 IRCPerson *person = getPerson(oldNickname);
128 129
129 if(!person) { 130 if(!person) {
130 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); 131 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person")));
131 return; 132 return;
132 } 133 }
133 134
134 getChannelsByPerson(person, channels); 135 getChannelsByPerson(person, channels);
135 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname)); 136 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname));
136 } 137 }
137 138
138 QListIterator<IRCChannel> it(channels); 139 QListIterator<IRCChannel> it(channels);
diff --git a/noncore/net/opieirc/ircsession.h b/noncore/net/opieirc/ircsession.h
index 3859b68..7c91893 100644
--- a/noncore/net/opieirc/ircsession.h
+++ b/noncore/net/opieirc/ircsession.h
@@ -1,95 +1,96 @@
1/* 1/*
2 OpieIRC - An embedded IRC client 2 OpieIRC - An embedded IRC client
3 Copyright (C) 2002 Wenzel Jakob 3 Copyright (C) 2002 Wenzel Jakob
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18
19*/ 19*/
20 20
21#ifndef __IRCSESSION_H 21#ifndef __IRCSESSION_H
22#define __IRCSESSION_H 22#define __IRCSESSION_H
23 23
24#include <qstring.h> 24#include <qstring.h>
25#include <qlist.h> 25#include <qlist.h>
26#include "ircserver.h" 26#include "ircserver.h"
27#include "ircconnection.h" 27#include "ircconnection.h"
28#include "ircmessage.h" 28#include "ircmessage.h"
29#include "ircchannel.h" 29#include "ircchannel.h"
30#include "ircoutput.h" 30#include "ircoutput.h"
31 31
32class IRCMessageParser; 32class IRCMessageParser;
33 33
34/* The IRCSession stores all information relating to the connection 34/* The IRCSession stores all information relating to the connection
35 to one IRC server. IRCSession makes it possible to run multiple 35 to one IRC server. IRCSession makes it possible to run multiple
36 IRC server connections from within the same program */ 36 IRC server connections from within the same program */
37 37
38class IRCSession : public QObject { 38class IRCSession : public QObject {
39friend class IRCMessageParser; 39friend class IRCMessageParser;
40 Q_OBJECT 40 Q_OBJECT
41public: 41public:
42 IRCSession(IRCServer *server); 42 IRCSession(QWidget *parent, IRCServer *server);
43 ~IRCSession(); 43 ~IRCSession();
44 44
45 void join(QString channel); 45 void join(QString channel);
46 void quit(QString message); 46 void quit(QString message);
47 void quit(); 47 void quit();
48 void raw(QString message); 48 void raw(QString message);
49 void topic(IRCChannel *channel, QString message); 49 void topic(IRCChannel *channel, QString message);
50 void mode(IRCChannel *channel, QString message); 50 void mode(IRCChannel *channel, QString message);
51 void mode(IRCPerson *person, QString message); 51 void mode(IRCPerson *person, QString message);
52 void mode(QString message); 52 void mode(QString message);
53 void part(IRCChannel *channel); 53 void part(IRCChannel *channel);
54 void op(IRCChannel *channel, IRCPerson *person); 54 void op(IRCChannel *channel, IRCPerson *person);
55 void kick(IRCChannel *channel, IRCPerson *person); 55 void kick(IRCChannel *channel, IRCPerson *person);
56 void kick(IRCChannel *channel, IRCPerson *person, QString message); 56 void kick(IRCChannel *channel, IRCPerson *person, QString message);
57 void beginSession(); 57 void beginSession();
58 bool isSessionActive(); 58 bool isSessionActive();
59 void endSession(); 59 void endSession();
60 bool isLoggedIn(); 60 bool isLoggedIn();
61 void sendMessage(IRCPerson *person, QString message); 61 void sendMessage(IRCPerson *person, QString message);
62 void sendMessage(IRCChannel *channel, QString message); 62 void sendMessage(IRCChannel *channel, QString message);
63 void sendAction(IRCPerson *person, QString message); 63 void sendAction(IRCPerson *person, QString message);
64 void sendAction(IRCChannel *channel, QString message); 64 void sendAction(IRCChannel *channel, QString message);
65 void updateNickname(const QString &oldNickname, const QString &newNickname); 65 void updateNickname(const QString &oldNickname, const QString &newNickname);
66 void setValidUsermodes(const QString &modes); 66 void setValidUsermodes(const QString &modes);
67 void setValidChannelmodes(const QString &modes); 67 void setValidChannelmodes(const QString &modes);
68 void whois(const QString &nickname); 68 void whois(const QString &nickname);
69 void sendCTCPPing(const QString &nickname); 69 void sendCTCPPing(const QString &nickname);
70 void sendCTCPRequest(const QString &nickname, const QString &type, const QString &args); 70 void sendCTCPRequest(const QString &nickname, const QString &type, const QString &args);
71 void sendCTCPReply(const QString &nickname, const QString &type, const QString &args); 71 void sendCTCPReply(const QString &nickname, const QString &type, const QString &args);
72 IRCChannel *getChannel(QString channelname); 72 IRCChannel *getChannel(QString channelname);
73 IRCPerson *getPerson(QString nickname); 73 IRCPerson *getPerson(QString nickname);
74protected: 74protected:
75 void addPerson(IRCPerson *person); 75 void addPerson(IRCPerson *person);
76 void addChannel(IRCChannel *channel); 76 void addChannel(IRCChannel *channel);
77 void removeChannel(IRCChannel *channel); 77 void removeChannel(IRCChannel *channel);
78 void removePerson(IRCPerson *person); 78 void removePerson(IRCPerson *person);
79 void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels); 79 void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels);
80protected slots: 80protected slots:
81 void handleMessage(IRCMessage *message); 81 void handleMessage(IRCMessage *message);
82signals: 82signals:
83 void outputReady(IRCOutput output); 83 void outputReady(IRCOutput output);
84 void updateChannels(); 84 void updateChannels();
85protected: 85protected:
86 IRCServer *m_server; 86 IRCServer *m_server;
87 IRCConnection *m_connection; 87 IRCConnection *m_connection;
88 IRCMessageParser *m_parser; 88 IRCMessageParser *m_parser;
89 QList<IRCChannel> m_channels; 89 QList<IRCChannel> m_channels;
90 QList<IRCPerson> m_people; 90 QList<IRCPerson> m_people;
91 QString m_validUsermodes; 91 QString m_validUsermodes;
92 QString m_validChannelmodes; 92 QString m_validChannelmodes;
93 QWidget *m_parent;
93}; 94};
94 95
95#endif /* __IRCSESSION_H */ 96#endif /* __IRCSESSION_H */