X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fnicklistwidget.cpp;h=7d683e6a1854f37913ed3e1bf01faf06ee3c45e4;hp=5f8d7a814357136c3794bd9468a062ecc4225bcd;hb=900cce213a6ed000b7131a05a0dec7d04b35b023;hpb=f8ac74fd09451dcb61f34730f5f605f0fadbb9e8 diff --git a/src/qtui/nicklistwidget.cpp b/src/qtui/nicklistwidget.cpp index 5f8d7a81..7d683e6a 100644 --- a/src/qtui/nicklistwidget.cpp +++ b/src/qtui/nicklistwidget.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -41,11 +41,11 @@ NickListWidget::NickListWidget(QWidget *parent) QDockWidget *NickListWidget::dock() const { - QDockWidget *dock = qobject_cast(parent()); + auto *dock = qobject_cast(parent()); if (dock) return dock; else - return 0; + return nullptr; } @@ -58,7 +58,7 @@ void NickListWidget::hideEvent(QHideEvent *event) void NickListWidget::showEvent(QShowEvent *event) { - NickView *view = qobject_cast(ui.stackedWidget->currentWidget()); + auto *view = qobject_cast(ui.stackedWidget->currentWidget()); if (view) emit nickSelectionChanged(view->selectedIndexes()); @@ -84,6 +84,19 @@ void NickListWidget::showWidget(bool visible) } } +void NickListWidget::setVisible(bool visible) +{ + QWidget::setVisible(visible); + QDockWidget *dock_ = dock(); + if (!dock_) + return; + + if (visible) + dock_->show(); + else + dock_->close(); +} + void NickListWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { @@ -122,22 +135,22 @@ void NickListWidget::currentChanged(const QModelIndex ¤t, const QModelInde } else { view = new NickView(this); - NickViewFilter *filter = new NickViewFilter(newBufferId, Client::networkModel()); + auto *filter = new NickViewFilter(newBufferId, Client::networkModel()); view->setModel(filter); QModelIndex source_current = Client::bufferModel()->mapToSource(current); view->setRootIndex(filter->mapFromSource(source_current)); nickViews[newBufferId] = view; ui.stackedWidget->addWidget(view); ui.stackedWidget->setCurrentWidget(view); - connect(view, SIGNAL(selectionUpdated()), SLOT(nickSelectionChanged())); + connect(view, &NickView::selectionUpdated, this, &NickListWidget::onNickSelectionChanged); } emit nickSelectionChanged(view->selectedIndexes()); } -void NickListWidget::nickSelectionChanged() +void NickListWidget::onNickSelectionChanged() { - NickView *view = qobject_cast(sender()); + auto *view = qobject_cast(sender()); Q_ASSERT(view); if (view != ui.stackedWidget->currentWidget()) { qDebug() << "Nick selection of hidden view changed!"; @@ -161,9 +174,9 @@ void NickListWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start, iter = nickViews.erase(iter); ui.stackedWidget->removeWidget(nickView); QAbstractItemModel *model = nickView->model(); - nickView->setModel(0); - if (QSortFilterProxyModel *filter = qobject_cast(model)) - filter->setSourceModel(0); + nickView->setModel(nullptr); + if (auto *filter = qobject_cast(model)) + filter->setSourceModel(nullptr); model->deleteLater(); nickView->deleteLater(); } @@ -190,9 +203,9 @@ void NickListWidget::removeBuffer(BufferId bufferId) NickView *view = nickViews.take(bufferId); ui.stackedWidget->removeWidget(view); QAbstractItemModel *model = view->model(); - view->setModel(0); - if (QSortFilterProxyModel *filter = qobject_cast(model)) - filter->setSourceModel(0); + view->setModel(nullptr); + if (auto *filter = qobject_cast(model)) + filter->setSourceModel(nullptr); model->deleteLater(); view->deleteLater(); } @@ -202,7 +215,7 @@ QSize NickListWidget::sizeHint() const { QWidget *currentWidget = ui.stackedWidget->currentWidget(); if (!currentWidget || currentWidget == ui.emptyPage) - return QSize(100, height()); + return {100, height()}; else return currentWidget->sizeHint(); } @@ -228,6 +241,14 @@ NickListDock::NickListDock(const QString &title, QWidget *parent) // } } +void NickListDock::setLocked(bool locked) { + if (locked) { + setFeatures(nullptr); + } + else { + setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); + } +} // NickListDock::~NickListDock() { // QtUiSettings().setValue("ShowNickList", toggleViewAction()->isChecked());