X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fbufferview.cpp;h=4ad1138eaf3cea587b0729c5f0860106e1bbb997;hp=17f637b57602d29f10a5c1d5cb38f4b911a258cc;hb=a76b7bf7206e939b1503910825a3225119c89e8b;hpb=9fd4619e9aca7d53d7c5df156a0b25956a1bf682 diff --git a/src/qtui/bufferview.cpp b/src/qtui/bufferview.cpp index 17f637b5..4ad1138e 100644 --- a/src/qtui/bufferview.cpp +++ b/src/qtui/bufferview.cpp @@ -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 @@ -43,18 +45,7 @@ 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) { @@ -65,12 +56,10 @@ void BufferView::setFilteredModel(QAbstractItemModel *model, BufferViewFilter::M } void BufferView::setModel(QAbstractItemModel *model) { + delete selectionModel(); QTreeView::setModel(model); init(); -} - -void BufferView::select(const QModelIndex ¤t) { - emit selectionChanged(current, QItemSelectionModel::ClearAndSelect); + } void BufferView::dropEvent(QDropEvent *event) { @@ -83,6 +72,15 @@ void BufferView::dropEvent(QDropEvent *event) { QTreeView::dropEvent(event); } +void BufferView::joinChannel(const QModelIndex &index) { + Buffer::Type bufferType = (Buffer::Type)index.data(BufferTreeModel::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())); +} + void BufferView::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { event->accept(); @@ -96,7 +94,10 @@ void BufferView::keyPressEvent(QKeyEvent *event) { // ensure that newly inserted network nodes are expanded per default void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) { - if(parent == QModelIndex()) - setExpanded(model()->index(start, 0, parent), true); QTreeView::rowsInserted(parent, start, end); + if(model()->rowCount(parent) == 1 && parent != QModelIndex()) { + // without updating the parent the expand will have no effect... Qt Bug? + update(parent); + expand(parent); + } }