| Summary: | konversation hangs on command /list | ||
|---|---|---|---|
| Product: | [Applications] konversation | Reporter: | Jos van den Oever <jos> |
| Component: | general | Assignee: | Konversation Bugs <konversation-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented 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();
|