Diffstat (limited to 'noncore/net/opieirc/ircchanneltab.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index 4a35929..3272a8a 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp @@ -1,72 +1,75 @@ #include <qpe/resource.h> #include <qwhatsthis.h> #include <qhbox.h> #include <qdict.h> #include "ircchanneltab.h" #include "ircservertab.h" #include "ircmessageparser.h" +#include <opie2/odebug.h> QDict<QString> IRCChannelTab::m_queuedMessages (17); IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainWindow *mainWindow, QWidget *parent, const char *name, WFlags f) : IRCTab(parent, name, f) { m_mainWindow = mainWindow; m_parentTab = parentTab; m_channel = channel; m_description->setText(tr("Talking on channel") + " <b>" + channel->channelname() + "</b>"); QHBox *hbox = new QHBox(this); m_textview = new QTextView(hbox); m_textview->setHScrollBarMode(QScrollView::AlwaysOff); m_textview->setVScrollBarMode(QScrollView::AlwaysOn); m_listVisible = TRUE; m_listButton = new QPushButton(">", m_textview); m_listButton->setFlat( true ); m_textview->setCornerWidget(m_listButton); m_textview->setTextFormat(RichText); QWhatsThis::add(m_textview, tr("Channel discussion")); connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList())); m_list = new IRCChannelList(m_channel, hbox); m_list->update(); m_list->setMaximumWidth(LISTWIDTH); m_field = new IRCHistoryLineEdit(this); connect(m_field, SIGNAL(nextTab()), this, SIGNAL(nextTab())); connect(m_field, SIGNAL(prevTab()), this, SIGNAL(prevTab())); connect(m_field, SIGNAL(closeTab()), this, SLOT(remove())); connect(this, SIGNAL(editFocus()), m_field, SLOT(setEditFocus())); QWhatsThis::add(m_field, tr("Type your message here to participate in the channel discussion")); m_popup = new QPopupMenu(m_list); m_lines = 0; /* Required so that embedded-style "right" clicks work */ QPEApplication::setStylusOperation(m_list->viewport(), QPEApplication::RightOnHold); connect(m_list, SIGNAL(mouseButtonPressed(int,QListBoxItem*,const QPoint&)), this, SLOT(mouseButtonPressed(int,QListBoxItem*,const QPoint&))); /* Construct the popup menu */ - QPopupMenu *ctcpMenu = new QPopupMenu(m_list); + //QPopupMenu *ctcpMenu = new QPopupMenu(m_list); m_popup->insertItem(Resource::loadPixmap("opieirc/query"), tr("Query"), this, SLOT(popupQuery())); - ctcpMenu->insertItem(Resource::loadPixmap("opieirc/ping"), tr("Ping"), this, SLOT(popupPing())); - ctcpMenu->insertItem(Resource::loadPixmap("opieirc/version"), tr("Version"), this, SLOT(popupVersion())); - ctcpMenu->insertItem(Resource::loadPixmap("opieirc/whois"), tr("Whois"), this, SLOT(popupWhois())); + m_popup->insertSeparator(); + m_popup->insertItem(Resource::loadPixmap("opieirc/ping"), tr("Ping"), this, SLOT(popupPing())); + m_popup->insertItem(Resource::loadPixmap("opieirc/version"), tr("Version"), this, SLOT(popupVersion())); + m_popup->insertItem(Resource::loadPixmap("opieirc/whois"), tr("Whois"), this, SLOT(popupWhois())); + //m_popup->insertItem(ctcpMenu, "CTCP"); connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling())); m_layout->add(hbox); hbox->show(); m_layout->add(m_field); m_field->setFocus(); m_field->setActiveWindow(); connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); connect(m_list, SIGNAL(doubleClicked ( QListBoxItem * ) ), this, SLOT(popupQuery( QListBoxItem * ) )); settingsChanged(); if(m_queuedMessages[m_channel->channelname()]) { appendText(*m_queuedMessages[m_channel->channelname()]); delete m_queuedMessages[m_channel->channelname()]; m_queuedMessages.remove(m_channel->channelname()); } } void IRCChannelTab::scrolling(){ m_textview->ensureVisible(0, m_textview->contentsHeight()); } void IRCChannelTab::appendText(QString text) { /* not using append because it creates layout problems */ @@ -145,55 +148,60 @@ void IRCChannelTab::mouseButtonPressed(int mouse, QListBoxItem *, const QPoint & break; }; } void IRCChannelTab::popupQuery( QListBoxItem *item) { if (item) { IRCPerson *person = session()->getPerson(item->text()); if (person) { IRCQueryTab *tab = m_parentTab->getTabForQuery(person); if (!tab) { tab = new IRCQueryTab(person, m_parentTab, m_mainWindow, (QWidget *)parent()); m_parentTab->addQueryTab(tab); m_mainWindow->addTab(tab); } } } } void IRCChannelTab::popupQuery() { if ( m_list->currentItem() != -1 ) popupQuery( m_list->item(m_list->currentItem())); } void IRCChannelTab::popupPing() { - //HAHA, no wonder these don't work + if(m_list->currentItem() != -1) + m_parentTab->session()->sendCTCPPing(m_list->text(m_list->currentItem())); } void IRCChannelTab::popupVersion() { + if(m_list->currentItem() != -1) + m_parentTab->session()->sendCTCPRequest(m_list->text(m_list->currentItem()), "VERSION", ""); } void IRCChannelTab::popupWhois() { + if(m_list->currentItem() != -1) + m_parentTab->session()->whois(m_list->text(m_list->currentItem())); } QString IRCChannelTab::title() { return m_channel->channelname(); } IRCSession *IRCChannelTab::session() { return m_parentTab->session(); } void IRCChannelTab::remove() { if (session()->isSessionActive()) { session()->part(m_channel); } else { m_mainWindow->killTab(this); } } void IRCChannelTab::enqueue(const QString &channel, const QString &message) { if (m_queuedMessages.count() == (m_queuedMessages.size() - 1) ) /* 17 messages max */ return; m_queuedMessages.insert(channel, new QString(message)); } |