Diffstat (limited to 'noncore/net/opieirc/ircchanneltab.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 77 |
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 | |||
5 | IRCChannelTab::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 | |||
30 | void 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 | |||
36 | IRCChannelTab::~IRCChannelTab() { | ||
37 | m_parentTab->removeChannelTab(this); | ||
38 | } | ||
39 | |||
40 | void IRCChannelTab::processCommand() { | ||
41 | if (m_field->text().length()>0) { | ||
42 | session()->sendMessage(m_channel, m_field->text()); | ||
43 | appendText("<<font color=\"#dd0000\">"+m_parentTab->server()->nick()+"</font>> "+m_field->text()+"<br>"); | ||
44 | m_field->clear(); | ||
45 | } | ||
46 | } | ||
47 | |||
48 | void 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 | |||
59 | QString IRCChannelTab::title() { | ||
60 | return m_channel->channelname(); | ||
61 | } | ||
62 | |||
63 | IRCSession *IRCChannelTab::session() { | ||
64 | return m_parentTab->session(); | ||
65 | } | ||
66 | |||
67 | void IRCChannelTab::remove() { | ||
68 | session()->part(m_channel); | ||
69 | } | ||
70 | |||
71 | IRCChannel *IRCChannelTab::channel() { | ||
72 | return m_channel; | ||
73 | } | ||
74 | |||
75 | IRCChannelList *IRCChannelTab::list() { | ||
76 | return m_list; | ||
77 | } | ||