X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=ef1d927d66d3137d008591e9b3ea5c77532b7a09;hp=ecaf7e948f2f971429b8c4f1718b882794453dbe;hb=79d9606c41f65c25df54758e064697208895d402;hpb=32bd64194bedc5c184717ece765922a826bebfd3 diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index ecaf7e94..ef1d927d 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2010 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -65,11 +65,14 @@ void BufferView::init() { hideColumn(1); hideColumn(2); setIndentation(10); + expandAll(); header()->hide(); // nobody seems to use this anyway - setAnimated(true); + // breaks with Qt 4.8 + if(QString("4.8.0") > qVersion()) // FIXME breaks with Qt versions >= 4.10! + setAnimated(true); // FIXME This is to workaround bug #663 setUniformRowHeights(true); @@ -246,8 +249,8 @@ void BufferView::dropEvent(QDropEvent *event) { return QTreeView::dropEvent(event); int res = QMessageBox::question(0, tr("Merge buffers permanently?"), - tr("Do you want to merge the buffer \"%1\" permanently into buffer \"%2\"?\n This cannot be reversed!").arg(Client::networkModel()->bufferName(bufferId2)).arg(Client::networkModel()->bufferName(bufferId1)), - QMessageBox::Yes|QMessageBox::No, QMessageBox::No); + tr("Do you want to merge the buffer \"%1\" permanently into buffer \"%2\"?\n This cannot be reversed!").arg(Client::networkModel()->bufferName(bufferId2)).arg(Client::networkModel()->bufferName(bufferId1)), + QMessageBox::Yes|QMessageBox::No, QMessageBox::No); if(res == QMessageBox::Yes) { Client::mergeBuffersPermanently(bufferId1, bufferId2); } @@ -408,7 +411,7 @@ void BufferView::addFilterActions(QMenu *contextMenu, const QModelIndex &index) if(!filterActions.isEmpty()) { contextMenu->addSeparator(); foreach(QAction *action, filterActions) { - contextMenu->addAction(action); + contextMenu->addAction(action); } } } @@ -428,31 +431,41 @@ void BufferView::menuActionTriggered(QAction *result) { } } -void BufferView::wheelEvent(QWheelEvent* event) { - if(ItemViewSettings().mouseWheelChangesBuffer() == (bool)(event->modifiers() & Qt::AltModifier)) - return QTreeView::wheelEvent(event); +void BufferView::nextBuffer() { + changeBuffer(Forward); +} - int rowDelta = ( event->delta() > 0 ) ? -1 : 1; +void BufferView::previousBuffer() { + changeBuffer(Backward); +} + +void BufferView::changeBuffer(Direction direction) { QModelIndex currentIndex = selectionModel()->currentIndex(); QModelIndex resultingIndex; - if( model()->hasIndex( currentIndex.row() + rowDelta, currentIndex.column(), currentIndex.parent() ) ) - { - resultingIndex = currentIndex.sibling( currentIndex.row() + rowDelta, currentIndex.column() ); - } - else //if we scroll into a the parent node... - { - QModelIndex parent = currentIndex.parent(); - QModelIndex aunt = parent.sibling( parent.row() + rowDelta, parent.column() ); - if( rowDelta == -1 ) - resultingIndex = aunt.child( model()->rowCount( aunt ) - 1, 0 ); - else - resultingIndex = aunt.child( 0, 0 ); - if( !resultingIndex.isValid() ) - return; - } + if(model()->hasIndex( currentIndex.row() + direction, currentIndex.column(), currentIndex.parent())) + resultingIndex = currentIndex.sibling(currentIndex.row() + direction, currentIndex.column()); + + else { + //if we scroll into a the parent node... + QModelIndex parent = currentIndex.parent(); + QModelIndex aunt = parent.sibling(parent.row() + direction, parent.column()); + if(direction == Backward) + resultingIndex = aunt.child(model()->rowCount(aunt) - 1, 0); + else + resultingIndex = aunt.child(0, 0); + if(!resultingIndex.isValid()) + return; + } selectionModel()->setCurrentIndex( resultingIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows ); selectionModel()->select( resultingIndex, QItemSelectionModel::ClearAndSelect ); +} + +void BufferView::wheelEvent(QWheelEvent* event) { + if(ItemViewSettings().mouseWheelChangesBuffer() == (bool)(event->modifiers() & Qt::AltModifier)) + return QTreeView::wheelEvent(event); + int rowDelta = ( event->delta() > 0 ) ? -1 : 1; + changeBuffer((Direction)rowDelta); } QSize BufferView::sizeHint() const { @@ -528,16 +541,36 @@ bool BufferViewDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, c // BufferView Dock // ============================== BufferViewDock::BufferViewDock(BufferViewConfig *config, QWidget *parent) - : QDockWidget(config->bufferViewName(), parent) + : QDockWidget(parent), + _active(false), + _title(config->bufferViewName()) { setObjectName("BufferViewDock-" + QString::number(config->bufferViewId())); toggleViewAction()->setData(config->bufferViewId()); setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea); connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(bufferViewRenamed(const QString &))); + updateTitle(); +} + +void BufferViewDock::updateTitle() { + QString title = _title; + if(isActive()) + title.prepend(QString::fromUtf8("• ")); + setWindowTitle(title); +} + +void BufferViewDock::setActive(bool active) { + if(active != isActive()) { + _active = active; + updateTitle(); + if(active) + raise(); // for tabbed docks + } } void BufferViewDock::bufferViewRenamed(const QString &newName) { - setWindowTitle(newName); + _title = newName; + updateTitle(); toggleViewAction()->setText(newName); }