}
void MainWin::setupToolBars() {
+ connect(_bufferWidget, SIGNAL(currentChanged(QModelIndex)),
+ QtUi::toolBarActionProvider(), SLOT(currentBufferChanged(QModelIndex)));
+ connect(_nickListWidget, SIGNAL(nickSelectionChanged(QModelIndexList)),
+ QtUi::toolBarActionProvider(), SLOT(nickSelectionChanged(QModelIndexList)));
+
_networkToolBar = addToolBar("Network");
_networkToolBar->setObjectName("NetworkToolBar");
QtUi::toolBarActionProvider()->addActions(_networkToolBar, ToolBarActionProvider::NetworkToolBar);
return 0;
}
+void NickListWidget::hideEvent(QHideEvent *event) {
+ emit nickSelectionChanged(QModelIndexList());
+ AbstractItemView::hideEvent(event);
+}
+
+void NickListWidget::showEvent(QShowEvent *event) {
+ NickView *view = qobject_cast<NickView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ emit nickSelectionChanged(view->selectedIndexes());
+
+ AbstractItemView::showEvent(event);
+}
+
void NickListWidget::showWidget(bool visible) {
if(!selectionModel())
return;
if(bufferType != BufferInfo::ChannelBuffer) {
ui.stackedWidget->setCurrentWidget(ui.emptyPage);
+ emit nickSelectionChanged(QModelIndexList());
return;
}
if(newBufferId == oldBufferId)
return;
+ NickView *view;
if(nickViews.contains(newBufferId)) {
- ui.stackedWidget->setCurrentWidget(nickViews.value(newBufferId));
+ view = nickViews.value(newBufferId);
+ ui.stackedWidget->setCurrentWidget(view);
} else {
- NickView *view = new NickView(this);
+ view = new NickView(this);
NickViewFilter *filter = new NickViewFilter(newBufferId, Client::networkModel());
view->setModel(filter);
QModelIndex source_current = Client::bufferModel()->mapToSource(current);
nickViews[newBufferId] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
+ connect(view, SIGNAL(selectionUpdated()), SLOT(nickSelectionChanged()));
+ }
+ emit nickSelectionChanged(view->selectedIndexes());
+}
+
+void NickListWidget::nickSelectionChanged() {
+ NickView *view = qobject_cast<NickView *>(sender());
+ Q_ASSERT(view);
+ if(view != ui.stackedWidget->currentWidget()) {
+ qDebug() << "Nick selection of hidden view changed!";
+ return;
}
+ emit nickSelectionChanged(view->selectedIndexes());
}
void NickListWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) {
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _NICKLISTWIDGET_H_
-#define _NICKLISTWIDGET_H_
+#ifndef NICKLISTWIDGET_H_
+#define NICKLISTWIDGET_H_
#include "ui_nicklistwidget.h"
#include "abstractitemview.h"
public slots:
void showWidget(bool visible);
+signals:
+ void nickSelectionChanged(const QModelIndexList &);
+
protected:
virtual QSize sizeHint() const;
+ virtual void hideEvent(QHideEvent *);
+ virtual void showEvent(QShowEvent *);
protected slots:
virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous);
private slots:
void removeBuffer(BufferId bufferId);
-
+ void nickSelectionChanged();
+
private:
Ui::NickListWidget ui;
QHash<BufferId, NickView *> nickViews;
if(newBufferId != oldBufferId) {
setCurrentBuffer(newBufferId);
emit currentChanged(newBufferId);
+ emit currentChanged(current);
}
}
signals:
void currentChanged(BufferId);
+ void currentChanged(const QModelIndex &);
protected:
//! Create an AbstractChatView for the given BufferId and add it to the UI if necessary
QModelIndexList indexList = QTreeView::selectedIndexes();
// make sure the item we clicked on is first
- Q_ASSERT(indexList.contains(currentIndex()));
- indexList.removeAll(currentIndex());
- indexList.prepend(currentIndex());
+ if(indexList.contains(currentIndex())) {
+ indexList.removeAll(currentIndex());
+ indexList.prepend(currentIndex());
+ }
return indexList;
}
void selectionUpdated();
private:
-
+ friend class NickListWidget; // needs selectedIndexes()
};
// ******************************