as a result of semi boredom and since it bugged me for quite a while:
[quassel.git] / src / uisupport / bufferview.cpp
index e362da5..2b2f00d 100644 (file)
@@ -21,7 +21,7 @@
 #include "client.h"
 #include "buffer.h"
 #include "bufferview.h"
-#include "buffertreemodel.h"
+#include "networkmodel.h"
 
 /*****************************************
 * The TreeView showing the Buffers
 // Please be carefull when reimplementing methods which are used to inform the view about changes to the data
 // to be on the safe side: call QTreeView's method aswell
 BufferView::BufferView(QWidget *parent) : QTreeView(parent) {
+  // dirty fast hack:
+  header()->setContextMenuPolicy(Qt::ActionsContextMenu);
+
+  QAction *showBufferAct = new QAction(tr("Buffer"), header());
+  showBufferAct->setCheckable(true);
+  showBufferAct->setChecked(true);
+  showBufferAct->setProperty("column", 0);
+  connect(showBufferAct, SIGNAL(toggled(bool)), this, SLOT(toggleHeader(bool)));
+  header()->addAction(showBufferAct);
+  
+  QAction *showTopicAct = new QAction(tr("Topic"), header());
+  showTopicAct->setCheckable(true);
+  showTopicAct->setChecked(true);
+  showTopicAct->setProperty("column", 1);
+  connect(showTopicAct, SIGNAL(toggled(bool)), this, SLOT(toggleHeader(bool)));
+  header()->addAction(showTopicAct);
+    
+  QAction *showNickAct = new QAction(tr("Nick Count"), header());
+  showNickAct->setCheckable(true);
+  showNickAct->setChecked(true);
+  showNickAct->setProperty("column", 2);
+  connect(showNickAct, SIGNAL(toggled(bool)), this, SLOT(toggleHeader(bool)));
+  header()->addAction(showNickAct);
+  
 }
 
 void BufferView::init() {
@@ -64,12 +88,12 @@ void BufferView::setModel(QAbstractItemModel *model) {
 }
 
 void BufferView::joinChannel(const QModelIndex &index) {
-  Buffer::Type bufferType = (Buffer::Type)index.data(BufferTreeModel::BufferTypeRole).toInt();
+  Buffer::Type bufferType = (Buffer::Type)index.data(NetworkModel::BufferTypeRole).toInt();
 
   if(bufferType != Buffer::ChannelType)
     return;
   
-  Client::fakeInput(index.data(BufferTreeModel::BufferUidRole).toUInt(), QString("/JOIN %1").arg(index.sibling(index.row(), 0).data().toString()));
+  Client::fakeInput(index.data(NetworkModel::BufferUidRole).toUInt(), QString("/JOIN %1").arg(index.sibling(index.row(), 0).data().toString()));
 }
 
 void BufferView::keyPressEvent(QKeyEvent *event) {
@@ -92,3 +116,8 @@ void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) {
     expand(parent);
   }
 }
+
+void BufferView::toggleHeader(bool checked) {
+  QAction *action = qobject_cast<QAction *>(sender());
+  header()->setSectionHidden((action->property("column")).toInt(), not checked);
+}