Index: src/irc/query.cpp =================================================================== --- src/irc/query.cpp (revision 921669) +++ src/irc/query.cpp (working copy) @@ -82,21 +82,35 @@ // link "Whois", "Ignore" ... menu items into ircview popup KMenu* popup=textView->getPopup(); popup->addSeparator(); - popup->insertItem(i18n("&Whois"),Konversation::Whois); - popup->insertItem(i18n("&Version"),Konversation::Version); - popup->insertItem(i18n("&Ping"),Konversation::Ping); + KAction *whoisAction = new KAction(i18n("&Whois"), popup); + connect(whoisAction, SIGNAL(triggered(bool)), this, SLOT(slotWhoIs())); + KAction *versionAction = new KAction(i18n("&Version"), popup); + connect(versionAction, SIGNAL(triggered(bool)), this, SLOT(slotVersion())); + KAction *pingAction = new KAction(i18n("&Ping"), popup); + connect(pingAction, SIGNAL(triggered(bool)), this, SLOT(slotPing())); + + popup->addAction(whoisAction); + popup->addAction(versionAction); + popup->addAction(pingAction); popup->addSeparator(); - popup->insertItem(i18n("Ignore"), Konversation::IgnoreNick); - popup->insertItem(i18n("Unignore"), Konversation::UnignoreNick); + KAction *ignoreAction = new KAction(i18n("Ignore"), popup); + connect(ignoreAction, SIGNAL(triggered(bool)), this, SLOT(slotIgnore())); + KAction *unIgnoreAction = new KAction(i18n("Unignore"), popup); + connect(unIgnoreAction, SIGNAL(triggered(bool)), this, SLOT(slotUnIgnore())); + + popup->setItemVisible(Konversation::IgnoreNick, false); popup->setItemVisible(Konversation::UnignoreNick, false); if (KAuthorized::authorizeKAction("allow_downloading")) - popup->insertItem(SmallIcon("2rightarrow"),i18n("Send &File..."),Konversation::DccSend); + { + KAction *dccAction = new KAction(KIcon("2rightarrow"),i18n("Send &File..."), popup); + connect(dccAction, SIGNAL(triggered(bool)), this, SLOT(slotDcc())); + } + KAction *watchAction = new KAction(i18n("Add to Watched Nicks"), popup); + connect(watchAction, SIGNAL(triggered(bool)), this, SLOT(slotWatch())); - popup->insertItem(i18n("Add to Watched Nicks"), Konversation::AddNotify); - // This box holds the input line KHBox* inputBox=new KHBox(this); inputBox->setObjectName("input_log_box"); @@ -693,4 +707,70 @@ } } +void Query::slotWhoIs() +{ + sendQueryText(Preferences::self()->commandChar() + "WHOIS " + name + ' ' + name); +} +void Query::slotVersion() +{ + sendQueryText(Preferences::self()->commandChar() + "CTCP " + name + " VERSION"); +} + +void Query::slotPing() +{ + sendQueryText(Preferences::self()->commandChar() + "CTCP " + name + " PING"); +} + +void Query::slotIgnore() +{ + if (KMessageBox::warningContinueCancel( + this, + i18n("Do you want to ignore %1?",name), + i18n("Ignore"), + KGuiItem(i18n("Ignore")), + KStandardGuiItem::cancel(), + "IgnoreNick") + == KMessageBox::Continue) + { + sendQueryText(Preferences::self()->commandChar()+"IGNORE -ALL "+name); + + int rc = KMessageBox::questionYesNo(this, + i18n("Do you want to close this query after ignoring this nickname?"), + i18n("Close This Query"), + KGuiItem(i18n("Close")), + KGuiItem(i18n("Keep Open")), + "CloseQueryAfterIgnore"); + if (rc == KMessageBox::Yes && m_server) + QTimer::singleShot(0, this, SLOT(closeWithoutAsking())); + } +} + +void Query::slotUnIgnore() +{ + if (KMessageBox::warningContinueCancel( + this, + i18n("Do you want to stop ignoring %1?", name), + i18n("Unignore"), + KGuiItem(i18n("Unignore")), + KStandardGuiItem::cancel(), + "UnignoreNick") == KMessageBox::Continue) + { + sendQueryText(Preferences::self()->commandChar()+"UNIGNORE "+name); + } +} + +void Query::slotDcc() +{ + sendQueryText(Preferences::self()->commandChar()+"DCC SEND "+name); +} + +void Query::slotWatch() +{ + if (m_server->getServerGroup()) + { + if (!Preferences::isNotify(m_server->getServerGroup()->id(), name)) + Preferences::addNotify(m_server->getServerGroup()->id(),name); + } +} + // #include "./irc/query.moc" Index: src/irc/query.h =================================================================== --- src/irc/query.h (revision 921669) +++ src/irc/query.h (working copy) @@ -95,6 +95,13 @@ void nickInfoChanged(); void closeWithoutAsking(); virtual void serverOnline(bool online); + void slotWhoIs(); + void slotVersion(); + void slotPing(); + void slotIgnore(); + void slotUnIgnore(); + void slotDcc(); + void slotWatch(); protected: void setName(const QString& newName);