Project

General

Profile

modeprefix.patch

kode54, 02/05/2011 05:39 AM

View differences:

src/uisupport/uistyle.cpp
19 19
 ***************************************************************************/
20 20
#include <QApplication>
21 21

  
22
#include "client.h"
22 23
#include "buffersettings.h"
23 24
#include "iconloader.h"
24 25
#include "qssparser.h"
......
687 688
  return timestamp().toLocalTime().toString(UiStyle::timestampFormatString());
688 689
}
689 690

  
691
static QMap<char, QString> defaultSenderPrefixes() {
692
  QMap<char, QString> map;
693
  map.insert( 'q', "~" );
694
  map.insert( 'a', "&" );
695
  map.insert( 'o', "@" );
696
  map.insert( 'h', "%" );
697
  map.insert( 'v', "+" );
698
  return map;
699
}
700

  
701
static const QMap<char, QString> senderPrefixes = defaultSenderPrefixes();
702

  
690 703
QString UiStyle::StyledMessage::plainSender() const {
691 704
  switch(type()) {
692 705
    case Message::Plain:
......
698 711
}
699 712

  
700 713
QString UiStyle::StyledMessage::decoratedSender() const {
714
  QString sender = plainSender();
715
  if (sender.length() && bufferInfo().type() & BufferInfo::ChannelBuffer) {
716
    const Network *net = Client::network(bufferInfo().networkId());
717
    if (net) {
718
      IrcChannel *channel = net->ircChannel(bufferInfo().bufferName());
719
      if (channel) {
720
        QString modes = channel->userModes(sender);
721
        if (modes.length() > 0) {
722
          const char mode = modes.at(0).toAscii();
723
          if (senderPrefixes.contains(mode)) {
724
            sender = senderPrefixes[mode] + sender;
725
          }
726
        }
727
      }
728
    }
729
  }
701 730
  switch(type()) {
702 731
    case Message::Plain:
703
      return tr("<%1>").arg(plainSender()); break;
732
      return tr("<%1>").arg(sender); break;
704 733
    case Message::Notice:
705
      return tr("[%1]").arg(plainSender()); break;
734
      return tr("[%1]").arg(sender); break;
706 735
    case Message::Action:
707 736
      return tr("-*-"); break;
708 737
    case Message::Nick:
......
736 765
    case Message::Invite:
737 766
      return tr("->"); break;
738 767
    default:
739
      return tr("%1").arg(plainSender());
768
      return tr("%1").arg(sender);
740 769
  }
741 770
}
742 771

  
743
-