Summary: | konversation hangs on command /list | ||
---|---|---|---|
Product: | [Applications] konversation | Reporter: | Jos van den Oever <jos> |
Component: | general | Assignee: | Konversation Developers <konversation-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version First Reported In: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Jos van den Oever
2005-08-21 19:34:51 UTC
because the list is displayed unfiltered and causes the cpu to go 100% and the ui to become unusable for a long time (> 5 minutes on my machine) SVN commit 451824 by psn: * Make /list open the channel list panel * Fix notice to handle IDENTIFY-MSG correctly BUG:111234 M +5 -0 channellistpanel.cpp M +5 -3 channellistpanel.h M +5 -0 inputfilter.cpp M +24 -9 konversationmainwindow.cpp M +1 -1 konversationmainwindow.h M +14 -0 outputfilter.cpp M +3 -1 server.cpp M +2 -1 server.h --- trunk/extragear/network/konversation/src/channellistpanel.cpp #451823:451824 @@ -509,4 +509,9 @@ emit updateInfo(info); } +void ChannelListPanel::setFilter(const QString& filter) +{ + filterInput->setText(filter); +} + #include "channellistpanel.moc" --- trunk/extragear/network/konversation/src/channellistpanel.h #451823:451824 @@ -33,14 +33,14 @@ { Q_OBJECT - public: + public: ChannelListPanel(QWidget* parent); ~ChannelListPanel(); virtual bool closeYourself(); virtual void emitUpdateInfo(); - signals: + signals: void refreshChannelList(); void joinChannel(const QString& channelName); void adjustMinValue(int num); @@ -52,9 +52,11 @@ void addToChannelList(const QString& channel,int users,const QString& topic); virtual void appendInputText(const QString&); + void setFilter(const QString& filter); + void applyFilterClicked(); + protected slots: - void applyFilterClicked(); void refreshList(); void updateDisplay(); // will be called by a timer to update regularly void saveList(); --- trunk/extragear/network/konversation/src/inputfilter.cpp #451823:451824 @@ -372,6 +372,11 @@ { if(!isIgnore(prefix,Ignore::Notice)) { + if(server->identifyMsg()) + { + trailing = trailing.mid(1); + } + // Channel notice? if(isAChannel(parameterList[0])) { --- trunk/extragear/network/konversation/src/konversationmainwindow.cpp #451823:451824 @@ -657,28 +657,43 @@ konsolePanel->deleteLater(); } -void KonversationMainWindow::openChannelList() +void KonversationMainWindow::openChannelList(const QString& filter, bool getList) { if(frontServer) { - ChannelListPanel* panel=frontServer->getChannelListPanel(); + ChannelListPanel* panel = frontServer->getChannelListPanel(); + if(panel) { getViewContainer()->showPage(panel); } else { - int ret = KMessageBox::warningContinueCancel(this,i18n("Using this function may result in a lot " - "of network traffic. If your connection is not fast " - "enough, it is possible that your client will be " - "disconnected by the server."), i18n("Channel List Warning"), - KStdGuiItem::cont(), "ChannelListWarning"); + int ret = KMessageBox::Continue; - if(ret == KMessageBox::Continue) + if(filter.isEmpty()) { - frontServer->addChannelListPanel(); + ret = KMessageBox::warningContinueCancel(this,i18n("Using this function may result in a lot " + "of network traffic. If your connection is not fast " + "enough, it is possible that your client will be " + "disconnected by the server."), i18n("Channel List Warning"), + KStdGuiItem::cont(), "ChannelListWarning"); } + + if(ret != KMessageBox::Continue) + { + return; + } + + panel = frontServer->addChannelListPanel(); } + + panel->setFilter(filter); + + if(getList) + { + panel->applyFilterClicked(); + } } else { --- trunk/extragear/network/konversation/src/konversationmainwindow.h #451823:451824 @@ -115,6 +115,7 @@ void addUrlCatcher(); void addDccChat(const QString& myNick,const QString& nick,const QString& numericalIp,const QStringList& arguments,bool listen); void insertRememberLine(); + void openChannelList(const QString& filter = QString::null, bool getList = false); void resetLag(); void updateLag(Server* lagServer,int msec); @@ -140,7 +141,6 @@ void openPreferences(); void openKeyBindings(); void openQuickConnectDialog(); - void openChannelList(); void openNotify(); void openLogfile(); void openNicksOnlinePanel(); --- trunk/extragear/network/konversation/src/outputfilter.cpp #451823:451824 @@ -1,3 +1,5 @@ +// -*- mode: c++; c-file-style: "bsd"; c-basic-offset: 4; tabs-width: 4; indent-tabs-mode: nil -*- + /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -177,6 +179,7 @@ else if(command == "ignore") result = parseIgnore(parameter); else if(command == "quote") result = parseQuote(parameter); else if(command == "say") result = parseSay(parameter); + else if(command == "list") result = parseList(parameter); else if(command == "names") result = parseNames(parameter); else if(command == "raw") result = parseRaw(parameter); @@ -1455,6 +1458,17 @@ return result; } + OutputFilterResult OutputFilter::parseList(const QString& parameter) + { + OutputFilterResult result; + + m_server->getMainWindow()->openChannelList(parameter, true); + + return result; + } } #include "outputfilter.moc" + +// kate: space-indent on; tab-width 4; indent-width 4; mixed-indent off; replace-tabs on; +// vim: set et sw=4 ts=4 cino=l1,cs,U1: --- trunk/extragear/network/konversation/src/server.cpp #451823:451824 @@ -3035,7 +3035,7 @@ } } -void Server::addChannelListPanel() +ChannelListPanel* Server::addChannelListPanel() { if(!channelListPanel) { @@ -3045,6 +3045,8 @@ connect(channelListPanel, SIGNAL(joinChannel(const QString&)), this, SLOT(sendJoinCommand(const QString&))); connect(this, SIGNAL(serverOnline(bool)), channelListPanel, SLOT(serverOnline(bool))); } + + return channelListPanel; } void Server::addToChannelList(const QString& channel, int users, const QString& topic) --- trunk/extragear/network/konversation/src/server.h #451823:451824 @@ -343,6 +343,8 @@ bool identifyMsg() const { return m_identifyMsg; } + ChannelListPanel* addChannelListPanel(); + signals: void nicknameChanged(const QString&); void serverLag(Server* server,int msec); /// will be connected to KonversationMainWindow::updateLag() @@ -416,7 +418,6 @@ void requestUserhost(const QString& nicks); void addRawLog(bool show); void closeRawLog(); - void addChannelListPanel(); void addToChannelList(const QString& channel, int users, const QString& topic); void closeChannelListPanel(); void updateChannelQuickButtons(); |