#include "network.h"
#include "ircchannel.h"
#include "ircuser.h"
+#include "uisettings.h"
+
+#include <QRegExp>
TabCompleter::TabCompleter(InputLine *inputLine_)
: QObject(inputLine_),
enabled(false),
nickSuffix(": ")
{
+ inputLine->installEventFilter(this);
}
void TabCompleter::buildCompletionList() {
completionList.clear();
QString tabAbbrev = inputLine->text().left(inputLine->cursorPosition()).section(' ',-1,-1);
completionList.clear();
+ QRegExp regex(QString("^[^a-zA-Z]*").append(tabAbbrev), Qt::CaseInsensitive);
+ QMap<QString, QString> sortMap;
+
foreach(IrcUser *ircUser, channel->ircUsers()) {
- if(ircUser->nick().toLower().startsWith(tabAbbrev.toLower())) {
- completionList << ircUser->nick();
+ if(regex.indexIn(ircUser->nick()) > -1) {
+ sortMap[ircUser->nick().toLower()] = ircUser->nick();
}
}
- completionList.sort();
+ foreach (QString str, sortMap)
+ completionList << str;
+
nextCompletion = completionList.begin();
lastCompletionLength = tabAbbrev.length();
}
}
void TabCompleter::complete() {
+ UiSettings uiSettings;
+ nickSuffix = uiSettings.value("CompletionSuffix", QString(": ")).toString();
+
if(!enabled) {
buildCompletionList();
enabled = true;