_selectionModelSynchronizer(this)
{
setSourceModel(parent);
+ if(QCoreApplication::instance()->arguments().contains("--debugbufferswitches")) {
+ connect(_selectionModelSynchronizer.selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
+ this, SLOT(debug_currentChanged(const QModelIndex &, const QModelIndex &)));
+ }
}
bool BufferModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const {
}
void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
- _selectionModelSynchronizer.selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
- _selectionModelSynchronizer.selectionModel()->select(newCurrent, QItemSelectionModel::Current);
+ _selectionModelSynchronizer.selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::Current);
+ _selectionModelSynchronizer.selectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
void BufferModel::debug_currentChanged(QModelIndex current, QModelIndex previous) {
- qDebug() << "New current:" << current << "(previous:" << previous << ")";
-}
-
-void BufferModel::debug_selectionChanged(QItemSelection current , QItemSelection previous) {
- qDebug() << "new selection:" << current << "(previoius:" << previous << ")";
+ Q_UNUSED(previous);
+ qDebug() << "Switched current Buffer: " << current << current.data().toString() << "Buffer:" << current.data(NetworkModel::BufferIdRole).value<BufferId>();
}
private slots:
void debug_currentChanged(QModelIndex current, QModelIndex previous);
- void debug_selectionChanged(QItemSelection current , QItemSelection previous);
private:
SelectionModelSynchronizer _selectionModelSynchronizer;
return QVariant();
AbstractTreeItem *item = static_cast<AbstractTreeItem *>(index.internalPointer());
- if(role == Qt::DisplayRole && !item->data(index.column(), role).isValid()) {
- qDebug() << item->data(0, role) << item->columnCount();
- }
return item->data(index.column(), role);
}
#include "bufferview.h"
+#include "buffermodel.h"
#include "bufferviewfilter.h"
#include "buffersyncer.h"
#include "client.h"
+#include "mappedselectionmodel.h"
#include "network.h"
#include "networkmodel.h"
void BufferView::setModel(QAbstractItemModel *model) {
delete selectionModel();
+ if(QTreeView::model()) {
+ disconnect(QTreeView::model(), SIGNAL(layoutChanged()), this, SLOT(updateSelection()));
+ }
+
QTreeView::setModel(model);
init();
- if(!model)
- return;
-
// remove old Actions
QList<QAction *> oldactions = header()->actions();
foreach(QAction *action, oldactions) {
action->deleteLater();
}
+ if(!model)
+ return;
+
+ connect(model, SIGNAL(layoutChanged()), this, SLOT(updateSelection()));
+
QString sectionName;
QAction *showSection;
for(int i = 1; i < model->columnCount(); i++) {
// ensure that newly inserted network nodes are expanded per default
void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) {
QTreeView::rowsInserted(parent, start, end);
- if(model()->rowCount(parent) == 1 && parent.data(NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType
- && (Global::SPUTDEV || parent.data(NetworkModel::ItemActiveRole) == true)) {
+ if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType)
+ return;
+
+ if(model()->rowCount(parent) == 1 && parent.data(NetworkModel::ItemActiveRole) == true) {
// without updating the parent the expand will have no effect... Qt Bug?
update(parent);
expand(parent);
}
}
+void BufferView::updateSelection() {
+ MappedSelectionModel *mappedSelectionModel = qobject_cast<MappedSelectionModel *>(selectionModel());
+ if(!config())
+ return;
+
+ mappedSelectionModel->mappedSetCurrentIndex(Client::bufferModel()->standardSelectionModel()->currentIndex(), QItemSelectionModel::Current);
+ mappedSelectionModel->mappedSelect(Client::bufferModel()->standardSelectionModel()->selection(), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+}
+
void BufferView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) {
QTreeView::dataChanged(topLeft, bottomRight);
void setConfig(BufferViewConfig *config);
inline BufferViewConfig *config() { return _config; }
-
+
public slots:
void setRootIndexForNetworkId(const NetworkId &networkId);
virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
virtual void wheelEvent(QWheelEvent *);
virtual QSize sizeHint() const;
+ virtual void focusInEvent(QFocusEvent *event) { QAbstractScrollArea::focusInEvent(event); }
private slots:
void joinChannel(const QModelIndex &index);
void toggleHeader(bool checked);
void showContextMenu(const QPoint &);
+ void updateSelection();
private:
QPointer<BufferViewConfig> _config;
{ using namespace Global;
quasselVersion = "0.2.0-beta1-pre";
- quasselDate = "2008-04-16";
- quasselBuild = 756;
+ quasselDate = "2008-04-18";
+ quasselBuild = 777;
//! Minimum client build number the core needs
clientBuildNeeded = 731;