summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc/ircchanneltab.cpp
Unidiff
Diffstat (limited to 'noncore/net/opieirc/ircchanneltab.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/ircchanneltab.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp
new file mode 100644
index 0000000..c96a365
--- a/dev/null
+++ b/noncore/net/opieirc/ircchanneltab.cpp
@@ -0,0 +1,77 @@
1#include <qhbox.h>
2#include "ircchanneltab.h"
3#include "ircservertab.h"
4
5IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) {
6 m_mainWindow = mainWindow;
7 m_parentTab = parentTab;
8 m_channel = channel;
9 m_description->setText(tr("Talking on channel") + " <b>" + channel->channelname() + "</b>");
10 QHBox *hbox = new QHBox(this);
11 m_textview = new QTextView(hbox);
12 m_textview->setHScrollBarMode(QScrollView::AlwaysOff);
13 m_textview->setVScrollBarMode(QScrollView::AlwaysOn);
14 m_listVisible = TRUE;
15 m_listButton = new QPushButton(">", m_textview);
16 m_textview->setCornerWidget(m_listButton);
17 connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList()));
18 m_list = new IRCChannelList(m_channel, hbox);
19 m_list->update();
20 m_list->setMaximumWidth(LISTWIDTH);
21 m_field = new QLineEdit(this);
22 m_layout->add(hbox);
23 hbox->show();
24 m_layout->add(m_field);
25 m_field->setFocus();
26 connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand()));
27
28}
29
30void IRCChannelTab::appendText(QString text) {
31 /* not using append because it creates layout problems */
32 m_textview->setText(m_textview->text() + text);
33 m_textview->ensureVisible(0, m_textview->contentsHeight());
34}
35
36IRCChannelTab::~IRCChannelTab() {
37 m_parentTab->removeChannelTab(this);
38}
39
40void IRCChannelTab::processCommand() {
41 if (m_field->text().length()>0) {
42 session()->sendMessage(m_channel, m_field->text());
43 appendText("&lt;<font color=\"#dd0000\">"+m_parentTab->server()->nick()+"</font>&gt; "+m_field->text()+"<br>");
44 m_field->clear();
45 }
46}
47
48void IRCChannelTab::toggleList() {
49 if (m_listVisible) {
50 m_list->setMaximumWidth(0);
51 m_listButton->setText("<");
52 } else {
53 m_list->setMaximumWidth(LISTWIDTH);
54 m_listButton->setText(">");
55 }
56 m_listVisible = !m_listVisible;
57}
58
59QString IRCChannelTab::title() {
60 return m_channel->channelname();
61}
62
63IRCSession *IRCChannelTab::session() {
64 return m_parentTab->session();
65}
66
67void IRCChannelTab::remove() {
68 session()->part(m_channel);
69}
70
71IRCChannel *IRCChannelTab::channel() {
72 return m_channel;
73}
74
75IRCChannelList *IRCChannelTab::list() {
76 return m_list;
77}