qa: Resolve Qt deprecation warnings - default-construct QFlags
[quassel.git] / src / qtui / nicklistwidget.cpp
index dace390..aae3288 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2018 by the Quassel Project                        *
+ *   Copyright (C) 2005-2020 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "nicklistwidget.h"
 
-#include "nickview.h"
+#include <QAbstractButton>
+#include <QAction>
+#include <QDebug>
+#include <QEvent>
+
+#include "buffermodel.h"
 #include "client.h"
 #include "networkmodel.h"
-#include "buffermodel.h"
+#include "nickview.h"
 #include "nickviewfilter.h"
 #include "qtuisettings.h"
 
-#include <QAction>
-#include <QDebug>
-#include <QEvent>
-#include <QAbstractButton>
-
-NickListWidget::NickListWidget(QWidget *parent)
+NickListWidget::NickListWidget(QWidget* parent)
     : AbstractItemView(parent)
 {
     ui.setupUi(this);
 }
 
-
-QDockWidget *NickListWidget::dock() const
+QDockWidget* NickListWidget::dock() const
 {
-    QDockWidget *dock = qobject_cast<QDockWidget *>(parent());
+    auto* dock = qobject_cast<QDockWidget*>(parent());
     if (dock)
         return dock;
     else
-        return 0;
+        return nullptr;
 }
 
-
-void NickListWidget::hideEvent(QHideEvent *event)
+void NickListWidget::hideEvent(QHideEvent* event)
 {
     emit nickSelectionChanged(QModelIndexList());
     AbstractItemView::hideEvent(event);
 }
 
-
-void NickListWidget::showEvent(QShowEvent *event)
+void NickListWidget::showEvent(QShowEvent* event)
 {
-    NickView *view = qobject_cast<NickView *>(ui.stackedWidget->currentWidget());
+    auto* view = qobject_cast<NickView*>(ui.stackedWidget->currentWidget());
     if (view)
         emit nickSelectionChanged(view->selectedIndexes());
 
     AbstractItemView::showEvent(event);
 }
 
-
 void NickListWidget::showWidget(bool visible)
 {
     if (!selectionModel())
@@ -73,7 +69,7 @@ void NickListWidget::showWidget(bool visible)
 
     QModelIndex currentIndex = selectionModel()->currentIndex();
     if (currentIndex.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer) {
-        QDockWidget *dock_ = dock();
+        QDockWidgetdock_ = dock();
         if (!dock_)
             return;
 
@@ -87,7 +83,7 @@ void NickListWidget::showWidget(bool visible)
 void NickListWidget::setVisible(bool visible)
 {
     QWidget::setVisible(visible);
-    QDockWidget *dock_ = dock();
+    QDockWidgetdock_ = dock();
     if (!dock_)
         return;
 
@@ -97,8 +93,7 @@ void NickListWidget::setVisible(bool visible)
         dock_->close();
 }
 
-
-void NickListWidget::currentChanged(const QModelIndex &current, const QModelIndex &previous)
+void NickListWidget::currentChanged(const QModelIndex& current, const QModelIndex& previous)
 {
     BufferInfo::Type bufferType = (BufferInfo::Type)current.data(NetworkModel::BufferTypeRole).toInt();
     BufferId newBufferId = current.data(NetworkModel::BufferIdRole).value<BufferId>();
@@ -111,46 +106,45 @@ void NickListWidget::currentChanged(const QModelIndex &current, const QModelInde
     }
 
     // See NickListDock::NickListDock() below
-//   if(bufferType != BufferInfo::ChannelBuffer) {
-//     ui.stackedWidget->setCurrentWidget(ui.emptyPage);
-//     QDockWidget *dock_ = dock();
-//     if(dock_) {
-//       dock_->close();
-//     }
-//     return;
-//   } else {
-//     QDockWidget *dock_ = dock();
-//     if(dock_ && dock_->toggleViewAction()->isChecked()) {
-//       dock_->show();
-//     }
-//   }
+    //   if(bufferType != BufferInfo::ChannelBuffer) {
+    //     ui.stackedWidget->setCurrentWidget(ui.emptyPage);
+    //     QDockWidget *dock_ = dock();
+    //     if(dock_) {
+    //       dock_->close();
+    //     }
+    //     return;
+    //   } else {
+    //     QDockWidget *dock_ = dock();
+    //     if(dock_ && dock_->toggleViewAction()->isChecked()) {
+    //       dock_->show();
+    //     }
+    //   }
 
     if (newBufferId == oldBufferId)
         return;
 
-    NickView *view;
+    NickViewview;
     if (nickViews.contains(newBufferId)) {
         view = nickViews.value(newBufferId);
         ui.stackedWidget->setCurrentWidget(view);
     }
     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<NickView *>(sender());
+    auto* view = qobject_cast<NickView*>(sender());
     Q_ASSERT(view);
     if (view != ui.stackedWidget->currentWidget()) {
         qDebug() << "Nick selection of hidden view changed!";
@@ -159,32 +153,35 @@ void NickListWidget::nickSelectionChanged()
     emit nickSelectionChanged(view->selectedIndexes());
 }
 
-
-void NickListWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
+void NickListWidget::rowsAboutToBeRemoved(const QModelIndex& parent, int start, int end)
 {
     Q_ASSERT(model());
     if (!parent.isValid()) {
         // ok this means that whole networks are about to be removed
         // we can't determine which buffers are affect, so we hope that all nets are removed
         // this is the most common case (for example disconnecting from the core or terminating the clint)
-        NickView *nickView;
-        QHash<BufferId, NickView *>::iterator iter = nickViews.begin();
+        NickViewnickView;
+        QHash<BufferId, NickView*>::iterator iter = nickViews.begin();
         while (iter != nickViews.end()) {
             nickView = *iter;
             iter = nickViews.erase(iter);
             ui.stackedWidget->removeWidget(nickView);
-            QAbstractItemModel *model = nickView->model();
-            nickView->setModel(0);
-            if (QSortFilterProxyModel *filter = qobject_cast<QSortFilterProxyModel *>(model))
-                filter->setSourceModel(0);
+            QAbstractItemModelmodel = nickView->model();
+            nickView->setModel(nullptr);
+            if (auto* filter = qobject_cast<QSortFilterProxyModel*>(model))
+                filter->setSourceModel(nullptr);
             model->deleteLater();
             nickView->deleteLater();
         }
     }
     else {
         // check if there are explicitly buffers removed
+        // Make sure model is valid first
+        if (!parent.model()) {
+            return;
+        }
         for (int i = start; i <= end; i++) {
-            QVariant variant = parent.child(i, 0).data(NetworkModel::BufferIdRole);
+            QVariant variant = parent.model()->index(i, 0, parent).data(NetworkModel::BufferIdRole);
             if (!variant.isValid())
                 continue;
 
@@ -194,56 +191,54 @@ void NickListWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start,
     }
 }
 
-
 void NickListWidget::removeBuffer(BufferId bufferId)
 {
     if (!nickViews.contains(bufferId))
         return;
 
-    NickView *view = nickViews.take(bufferId);
+    NickViewview = nickViews.take(bufferId);
     ui.stackedWidget->removeWidget(view);
-    QAbstractItemModel *model = view->model();
-    view->setModel(0);
-    if (QSortFilterProxyModel *filter = qobject_cast<QSortFilterProxyModel *>(model))
-        filter->setSourceModel(0);
+    QAbstractItemModelmodel = view->model();
+    view->setModel(nullptr);
+    if (auto* filter = qobject_cast<QSortFilterProxyModel*>(model))
+        filter->setSourceModel(nullptr);
     model->deleteLater();
     view->deleteLater();
 }
 
-
 QSize NickListWidget::sizeHint() const
 {
-    QWidget *currentWidget = ui.stackedWidget->currentWidget();
+    QWidgetcurrentWidget = ui.stackedWidget->currentWidget();
     if (!currentWidget || currentWidget == ui.emptyPage)
-        return QSize(100, height());
+        return {100, height()};
     else
         return currentWidget->sizeHint();
 }
 
-
 // ==============================
 //  NickList Dock
 // ==============================
-NickListDock::NickListDock(const QString &title, QWidget *parent)
+NickListDock::NickListDock(const QString& title, QWidget* parent)
     : QDockWidget(title, parent)
 {
     // THIS STUFF IS NEEDED FOR NICKLIST AUTOHIDE...
     // AS THIS BRINGS LOTS OF FUCKUPS WITH IT IT'S DEACTIVATED FOR NOW...
 
-//   QAction *toggleView = toggleViewAction();
-//   disconnect(toggleView, SIGNAL(triggered(bool)), this, 0);
-//   toggleView->setChecked(QtUiSettings().value("ShowNickList", QVariant(true)).toBool());
+    //   QAction *toggleView = toggleViewAction();
+    //   disconnect(toggleView, SIGNAL(triggered(bool)), this, 0);
+    //   toggleView->setChecked(QtUiSettings().value("ShowNickList", QVariant(true)).toBool());
 
-//   // reconnecting the closebuttons clicked signal to the action
-//   foreach(QAbstractButton *button, findChildren<QAbstractButton *>()) {
-//     if(disconnect(button, SIGNAL(clicked()), this, SLOT(close())))
-//       connect(button, SIGNAL(clicked()), toggleView, SLOT(trigger()));
-//   }
+    //   // reconnecting the closebuttons clicked signal to the action
+    //   foreach(QAbstractButton *button, findChildren<QAbstractButton *>()) {
+    //     if(disconnect(button, SIGNAL(clicked()), this, SLOT(close())))
+    //       connect(button, SIGNAL(clicked()), toggleView, SLOT(trigger()));
+    //   }
 }
 
-void NickListDock::setLocked(bool locked) {
+void NickListDock::setLocked(bool locked)
+{
     if (locked) {
-        setFeatures(0);
+        setFeatures({});
     }
     else {
         setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);