23 #include "ircdelayedoperationignore.h"
25 #include "irc/configuration/chatnetworkscfg.h"
26 #include "irc/entities/ircnetworkentity.h"
27 #include "irc/entities/ircuserprefix.h"
28 #include "irc/ircnetworkadapter.h"
29 #include "irc/ircnetworkconnectioninfo.h"
30 #include "irc/ircresponseparser.h"
31 #include "patternlist.h"
32 #include <QInputDialog>
34 DClass<IRCDelayedOperationIgnore>
37 bool showPatternPopup;
40 QWidget *parentWidget;
42 QString cleanNickname()
const
47 QString networkDescription()
const
60 d->showPatternPopup =
false;
62 d->nickname = nickname;
63 d->parentWidget = parent;
64 this->connect(d->network->responseParser(),
65 SIGNAL(whoIsUser(QString,QString,QString,QString)),
66 SLOT(onWhoIsUser(QString,QString,QString)));
69 IRCDelayedOperationIgnore::~IRCDelayedOperationIgnore()
73 void IRCDelayedOperationIgnore::start()
75 d->network->sendMessage(QString(
"/whois %1").arg(d->cleanNickname()));
78 void IRCDelayedOperationIgnore::onWhoIsUser(
const QString &nickname,
const QString &user,
79 const QString &hostName)
81 QString ignorePattern =
"*!*@" + hostName;
82 if (d->showPatternPopup)
84 QString label = tr(
"Ignore user %1 (username=%2) on network %3:").arg(
85 nickname, user, d->networkDescription());
86 ignorePattern = QInputDialog::getText(d->parentWidget, tr(
"IRC - Ignore user"),
87 label, QLineEdit::Normal, ignorePattern);
89 if (!ignorePattern.trimmed().isEmpty())
94 patterns << QRegExp(ignorePattern, Qt::CaseInsensitive, QRegExp::Wildcard);
95 network.setIgnoredUsers(patterns);
97 d->network->setNetworkEntity(network);
104 d->showPatternPopup = b;