Project

General

Profile

0001-Implemented-names-command-as-in-Irssi.patch

hades, 01/15/2009 09:56 PM

View differences:

src/core/userinputhandler.cpp
346 346
  emit putCmd("TOPIC", params);
347 347
}
348 348

  
349
void UserInputHandler::handleNames(const BufferInfo &bufferInfo, const QString &msg) {
350
  if(bufferInfo.bufferName().isEmpty() || bufferInfo.type() != BufferInfo::ChannelBuffer) return;
351

  
352
  IrcChannel *chan = network()->ircChannel(bufferInfo.bufferName());
353
  QList< QString > words;
354
  int maxlength = 1;
355
  foreach(IrcUser* u, chan->ircUsers())
356
  {
357
    QString word = QString("%1%2").arg(chan->userModes(u).replace('o','@').replace('v','+').replace('h','%'), 1).arg(u->nick());
358

  
359
    if(word.length() > maxlength)
360
      maxlength = word.length();
361

  
362
    words << word;
363
  }
364

  
365
  const static int cols = 4;      // FIXME: probably an option.
366
  int pos = 1;
367
  QString buffer;
368
  foreach(QString word, words)
369
  {
370
    buffer += QString("[%1]").arg(word, -maxlength);
371
    if(++pos % cols == 0)
372
    {
373
      emit displayMsg(Message::Server, bufferInfo.type(), bufferInfo.bufferName(), buffer);
374
      buffer.clear();
375
    }
376
  }
377

  
378
  if(!buffer.isEmpty())
379
    emit displayMsg(Message::Server, bufferInfo.type(), bufferInfo.bufferName(), buffer);
380
}
381

  
349 382
void UserInputHandler::handleVoice(const BufferInfo &bufferInfo, const QString &msg) {
350 383
  QStringList nicks = msg.split(' ', QString::SkipEmptyParts);
351 384
  QString m = "+"; for(int i = 0; i < nicks.count(); i++) m += 'v';
src/core/userinputhandler.h
48 48
  void handleMe(const BufferInfo &bufferInfo, const QString &text);
49 49
  void handleMode(const BufferInfo &bufferInfo, const QString &text);
50 50
  void handleMsg(const BufferInfo &bufferInfo, const QString &text);
51
  void handleNames(const BufferInfo &bufferInfo, const QString &text);
51 52
  void handleNick(const BufferInfo &bufferInfo, const QString &text);
52 53
  void handleNotice(const BufferInfo &bufferInfo, const QString &text);
53 54
  void handleOper(const BufferInfo &bufferInfo, const QString &text);
54
-