Diffstat (limited to 'noncore/net/opieirc/ircchanneltab.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index c96a365..754442a 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp @@ -35,18 +35,30 @@ void IRCChannelTab::appendText(QString text) { IRCChannelTab::~IRCChannelTab() { m_parentTab->removeChannelTab(this); } void IRCChannelTab::processCommand() { - if (m_field->text().length()>0) { + QString text = m_field->text(); + if (text.length()>0) { + if (session()->isSessionActive()) { + if (text.startsWith("/") && !text.startsWith("//")) { + /* Command mode */ + m_parentTab->executeCommand(this, text);; + } else { + if (session()->isSessionActive()) { session()->sendMessage(m_channel, m_field->text()); appendText("<<font color=\"#dd0000\">"+m_parentTab->server()->nick()+"</font>> "+m_field->text()+"<br>"); - m_field->clear(); } } + } else { + appendText("<font color=\"#ff0000\">"+tr("Disconnected")+"</font><br>"); + } + } + m_field->clear(); +} void IRCChannelTab::toggleList() { if (m_listVisible) { m_list->setMaximumWidth(0); m_listButton->setText("<"); } else { @@ -62,13 +74,17 @@ QString IRCChannelTab::title() { IRCSession *IRCChannelTab::session() { return m_parentTab->session(); } void IRCChannelTab::remove() { + if (session()->isSessionActive()) { session()->part(m_channel); + } else { + m_mainWindow->killTab(this); + } } IRCChannel *IRCChannelTab::channel() { return m_channel; } |