Cleanupination/Prettyfication/Refactorination of the BufferModel
[quassel.git] / src / qtui / bufferview.cpp
index b5460db..e06ef72 100644 (file)
@@ -18,7 +18,9 @@
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
+#include "client.h"
 #include "bufferview.h"
+#include "buffertreemodel.h"
 
 /*****************************************
 * The TreeView showing the Buffers
@@ -42,45 +44,29 @@ void BufferView::init() {
   
   setSortingEnabled(true);
   sortByColumn(0, Qt::AscendingOrder);
-  
-  connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
-          model(), SLOT(changeCurrent(const QModelIndex &, const QModelIndex &)));
-  
-  connect(this, SIGNAL(doubleClicked(const QModelIndex &)),
-          model(), SLOT(doubleClickReceived(const QModelIndex &)));
-  
-  connect(model(), SIGNAL(selectionChanged(const QModelIndex &)),
-          this, SLOT(select(const QModelIndex &)));
-  
-  connect(this, SIGNAL(selectionChanged(const QModelIndex &, QItemSelectionModel::SelectionFlags)),
-          selectionModel(), SLOT(select(const QModelIndex &, QItemSelectionModel::SelectionFlags)));
-
+  connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(joinChannel(QModelIndex)));
 }
 
-void BufferView::setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QStringList nets) {
+void BufferView::setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QList<uint> nets) {
   BufferViewFilter *filter = new BufferViewFilter(model, mode, nets);
   setModel(filter);
-  connect(this, SIGNAL(eventDropped(QDropEvent *)), filter, SLOT(dropEvent(QDropEvent *)));
   connect(this, SIGNAL(removeBuffer(const QModelIndex &)), filter, SLOT(removeBuffer(const QModelIndex &)));
 }
 
 void BufferView::setModel(QAbstractItemModel *model) {
+  delete selectionModel();
   QTreeView::setModel(model);
   init();
+  
 }
 
-void BufferView::select(const QModelIndex &current) {
-  emit selectionChanged(current, QItemSelectionModel::ClearAndSelect);
-}
+void BufferView::joinChannel(const QModelIndex &index) {
+  Buffer::Type bufferType = (Buffer::Type)index.data(BufferTreeModel::BufferTypeRole).toInt();
 
-void BufferView::dropEvent(QDropEvent *event) {
-  if(event->source() != this) {
-    // another view(?) or widget is the source. maybe it's a drag 'n drop 
-    // view customization -> we tell our friend the filter:
-    emit eventDropped(event);
-  }
-  // in the case that the filter did not accept the event or if it's a merge
-  QTreeView::dropEvent(event);    
+  if(bufferType != Buffer::ChannelType)
+    return;
+  
+  Client::fakeInput(index.data(BufferTreeModel::BufferUidRole).toUInt(), QString("/JOIN %1").arg(index.sibling(index.row(), 0).data().toString()));
 }
 
 void BufferView::keyPressEvent(QKeyEvent *event) {