From a0953ef6758f17e96813a9c03d304aadd2eefacc Mon Sep 17 00:00:00 2001
From: Xeross <xeross@theelitist.net>
Date: Sun, 7 Aug 2011 21:37:06 +0200
Subject: [PATCH] Add channel modes to title

---
 src/client/networkmodel.cpp |    4 ++++
 src/client/networkmodel.h   |    3 ++-
 src/qtui/titlesetter.cpp    |   10 ++++++++++
 3 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp
index c25fda6..1fd92f2 100644
--- a/src/client/networkmodel.cpp
+++ b/src/client/networkmodel.cpp
@@ -562,6 +562,10 @@ void ChannelBufferItem::ircChannelParted() {
   removeAllChilds();
 }
 
+IrcChannel *ChannelBufferItem::getChannel() {
+    return _ircChannel;
+}
+
 void ChannelBufferItem::join(const QList<IrcUser *> &ircUsers) {
   addUsersToCategory(ircUsers);
   emit dataChanged(2);
diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h
index daf8243..4bfe33c 100644
--- a/src/client/networkmodel.h
+++ b/src/client/networkmodel.h
@@ -188,6 +188,7 @@ public:
   virtual inline int nickCount() const { return (bool)_ircChannel ? _ircChannel->ircUsers().count() : 0; }
 
   void attachIrcChannel(IrcChannel *ircChannel);
+  IrcChannel *getChannel();
 
 public slots:
   void join(const QList<IrcUser *> &ircUsers);
@@ -327,6 +328,7 @@ public:
   inline QList<BufferId> allBufferIds() const { return _bufferItemCache.keys(); }
   QList<BufferId> allBufferIdsSorted() const;
   void sortBufferIds(QList<BufferId> &bufferIds) const;
+  BufferItem *findBufferItem(BufferId bufferId) const;
 
 public slots:
   void bufferUpdated(BufferInfo bufferInfo);
@@ -354,7 +356,6 @@ private:
   NetworkItem *findNetworkItem(NetworkId networkId) const;
   NetworkItem *networkItem(NetworkId networkId);
   inline BufferItem *findBufferItem(const BufferInfo &bufferInfo) const { return findBufferItem(bufferInfo.bufferId()); }
-  BufferItem *findBufferItem(BufferId bufferId) const;
   BufferItem *bufferItem(const BufferInfo &bufferInfo);
 
   void updateBufferActivity(BufferItem *bufferItem, const Message &msg);
diff --git a/src/qtui/titlesetter.cpp b/src/qtui/titlesetter.cpp
index 297b4ce..9334455 100644
--- a/src/qtui/titlesetter.cpp
+++ b/src/qtui/titlesetter.cpp
@@ -51,6 +51,16 @@ void TitleSetter::changeWindowTitle(const QModelIndex &index) {
   QString title;
   if(Client::networkModel()->bufferType(id) == BufferInfo::StatusBuffer)
     title = index.data().toString();
+  else if(Client::networkModel()->bufferType(id) == BufferInfo::ChannelBuffer)
+  {
+    BufferItem *item = Client::networkModel()->findBufferItem(id);
+    ChannelBufferItem *channelItem = static_cast<ChannelBufferItem *>(item);
+    IrcChannel *channel = channelItem->getChannel();
+    if(!channel)
+        title = QString("%1 (%2)").arg(index.data().toString(), Client::networkModel()->networkName(id));
+    else
+        title = QString("%1 (%2) (%3)").arg(index.data().toString(), Client::networkModel()->networkName(id), channel->channelModeString().trimmed());
+  }
   else
     title = QString("%1 (%2)").arg(index.data().toString(), Client::networkModel()->networkName(id));
   QString newTitle = QString("%1 - %2").arg("Quassel IRC").arg(title);
-- 
1.7.4.4

