-void TabCompleter::buildCompletionList() {
- completionList.clear();
- // this is the first time tab is pressed -> build up the completion list and it's iterator
- QModelIndex currentIndex = Client::bufferModel()->currentIndex();
- if(!currentIndex.data(NetworkModel::BufferIdRole).isValid()) {
- nextCompletion = completionList.begin();
- return;
- }
-
- NetworkId networkId = currentIndex.data(NetworkModel::NetworkIdRole).value<NetworkId>();
- QString channelName = currentIndex.sibling(currentIndex.row(), 0).data().toString();
-
- const Network *network = Client::network(networkId);
- if(!network)
- return;
-
- IrcChannel *channel = network->ircChannel(channelName);
- if(!channel)
- return;
-
- // FIXME commented for debugging
- /*
- disconnect(this, SLOT(ircUserJoinedOrParted(IrcUser *)));
- connect(channel, SIGNAL(ircUserJoined(IrcUser *)),
- this, SLOT(ircUserJoinedOrParted(IrcUser *)));
- connect(channel, SIGNAL(ircUserParted(IrcUser *)),
- this, SLOT(ircUserJoinedOrParted(IrcUser *)));
- */
-
- QString tabAbbrev = inputLine->text().left(inputLine->cursorPosition()).section(' ',-1,-1);
- QRegExp regex(QString("^[^a-zA-Z]*").append(tabAbbrev), Qt::CaseInsensitive);
- QMap<QString, QString> sortMap;
-
- foreach(IrcUser *ircUser, channel->ircUsers()) {
- if(regex.indexIn(ircUser->nick()) > -1) {
- sortMap[ircUser->nick().toLower()] = ircUser->nick();
- }
- }
- foreach (QString str, sortMap)
- completionList << str;