modernize: Replace most remaining old-style connects by PMF ones
[quassel.git] / src / qtui / settingspages / corehighlightsettingspage.cpp
index 9ddb434..4395724 100644 (file)
@@ -26,6 +26,7 @@
 #include "corehighlightsettingspage.h"
 #include "icon.h"
 #include "qtui.h"
+#include "util.h"
 
 CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
     : SettingsPage(tr("Interface"),
@@ -44,51 +45,41 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
     ui.highlightNicksComboBox->addItem(tr("None"), QVariant(HighlightRuleManager::NoNick));
 
     coreConnectionStateChanged(Client::isConnected()); // need a core connection!
-    connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool)));
+    connect(Client::instance(), &Client::coreConnectionStateChanged, this, &CoreHighlightSettingsPage::coreConnectionStateChanged);
 
-    connect(ui.highlightAdd, SIGNAL(clicked(bool)), this, SLOT(addNewHighlightRow()));
-    connect(ui.highlightRemove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedHighlightRows()));
-    connect(ui.highlightImport, SIGNAL(clicked(bool)), this, SLOT(importRules()));
+    connect(ui.highlightAdd, &QAbstractButton::clicked, this, [this]() { addNewHighlightRow(); });
+    connect(ui.highlightRemove, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::removeSelectedHighlightRows);
+    connect(ui.highlightImport, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::importRules);
 
-    connect(ui.ignoredAdd, SIGNAL(clicked(bool)), this, SLOT(addNewIgnoredRow()));
-    connect(ui.ignoredRemove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedIgnoredRows()));
+    connect(ui.ignoredAdd, &QAbstractButton::clicked, this, [this]() { addNewIgnoredRow(); });
+    connect(ui.ignoredRemove, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::removeSelectedIgnoredRows);
 
     // TODO: search for a better signal (one that emits everytime a selection has been changed for one item)
-    connect(ui.highlightTable,
-            SIGNAL(itemClicked(QTableWidgetItem * )),
-            this,
-            SLOT(selectHighlightRow(QTableWidgetItem * )));
-    connect(ui.ignoredTable,
-            SIGNAL(itemClicked(QTableWidgetItem * )),
-            this,
-            SLOT(selectIgnoredRow(QTableWidgetItem * )));
+    connect(ui.highlightTable, &QTableWidget::itemClicked, this, &CoreHighlightSettingsPage::selectHighlightRow);
+    connect(ui.ignoredTable, &QTableWidget::itemClicked, this, &CoreHighlightSettingsPage::selectIgnoredRow);
 
     // Update the "Case sensitive" checkbox
-    connect(ui.highlightNicksComboBox,
-            SIGNAL(currentIndexChanged(int)),
-            this,
-            SLOT(highlightNicksChanged(int)));
-
-    connect(ui.highlightNicksComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
-    connect(ui.nicksCaseSensitive, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+    connect(ui.highlightNicksComboBox, selectOverload<int>(&QComboBox::currentIndexChanged), this, &CoreHighlightSettingsPage::highlightNicksChanged);
+    connect(ui.highlightNicksComboBox, selectOverload<int>(&QComboBox::currentIndexChanged), this, &CoreHighlightSettingsPage::widgetHasChanged);
+    connect(ui.nicksCaseSensitive, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::widgetHasChanged);
 
-    connect(ui.highlightAdd, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
-    connect(ui.highlightRemove, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
+    connect(ui.highlightAdd, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::widgetHasChanged);
+    connect(ui.highlightRemove, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::widgetHasChanged);
 
-    connect(ui.ignoredAdd, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
-    connect(ui.ignoredRemove, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
+    connect(ui.ignoredAdd, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::widgetHasChanged);
+    connect(ui.ignoredRemove, &QAbstractButton::clicked, this, &CoreHighlightSettingsPage::widgetHasChanged);
 
     connect(ui.highlightTable,
-            SIGNAL(itemChanged(QTableWidgetItem * )),
+            &QTableWidget::itemChanged,
             this,
-            SLOT(highlightTableChanged(QTableWidgetItem * )));
+            &CoreHighlightSettingsPage::highlightTableChanged);
 
     connect(ui.ignoredTable,
-            SIGNAL(itemChanged(QTableWidgetItem * )),
+            &QTableWidget::itemChanged,
             this,
-            SLOT(ignoredTableChanged(QTableWidgetItem * )));
+            &CoreHighlightSettingsPage::ignoredTableChanged);
 
-    connect(Client::instance(), SIGNAL(connected()), this, SLOT(clientConnected()));
+    connect(Client::instance(), &Client::connected, this, &CoreHighlightSettingsPage::clientConnected);
 
     // Warning icon
     ui.coreUnsupportedIcon->setPixmap(icon::get("dialog-warning").pixmap(16));
@@ -136,21 +127,12 @@ void CoreHighlightSettingsPage::setupRuleTable(QTableWidget *table) const
                        table->horizontalHeaderItem(CoreHighlightSettingsPage::SenderColumn),
                        table->horizontalHeaderItem(CoreHighlightSettingsPage::ChanColumn));
 
-#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::EnableColumn, QHeaderView::ResizeToContents);
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::NameColumn, QHeaderView::Stretch);
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::RegExColumn, QHeaderView::ResizeToContents);
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::CsColumn, QHeaderView::ResizeToContents);
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::SenderColumn, QHeaderView::ResizeToContents);
-    table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::ChanColumn, QHeaderView::ResizeToContents);
-#else
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::EnableColumn, QHeaderView::ResizeToContents);
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::NameColumn, QHeaderView::Stretch);
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::RegExColumn, QHeaderView::ResizeToContents);
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::CsColumn, QHeaderView::ResizeToContents);
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::SenderColumn, QHeaderView::ResizeToContents);
     table->horizontalHeader()->setSectionResizeMode(CoreHighlightSettingsPage::ChanColumn, QHeaderView::ResizeToContents);
-#endif
 }
 
 
@@ -161,7 +143,7 @@ QString CoreHighlightSettingsPage::getTableTooltip(column tableColumn) const
         return tr("Enable/disable this rule");
 
     case CoreHighlightSettingsPage::NameColumn:
-        return tr("Phrase to match");
+        return tr("Phrase to match, leave blank to match any message");
 
     case CoreHighlightSettingsPage::RegExColumn:
         return tr("<b>RegEx</b>: This option determines if the highlight rule, <i>Sender</i>, and "
@@ -187,8 +169,8 @@ QString CoreHighlightSettingsPage::getTableTooltip(column tableColumn) const
                   "any nickname starting with <i>Announce</i></p>");
 
     case CoreHighlightSettingsPage::ChanColumn:
-        return tr("<p><b>Channel</b>: Semicolon separated list of channel names, leave blank to "
-                  "match any name.</p>"
+        return tr("<p><b>Channel</b>: Semicolon separated list of channel/query names, leave blank "
+                  "to match any name.</p>"
                   "<p><i>Example:</i><br />"
                   "<i>#quassel*; #foobar; !#quasseldroid</i><br />"
                   "would match on <i>#foobar</i> and any channel starting with <i>#quassel</i> "
@@ -306,7 +288,7 @@ void CoreHighlightSettingsPage::updateCoreSupportStatus(bool state)
 
 void CoreHighlightSettingsPage::clientConnected()
 {
-    connect(Client::highlightRuleManager(), SIGNAL(updated()), SLOT(revert()));
+    connect(Client::highlightRuleManager(), &SyncableObject::updated, this, &CoreHighlightSettingsPage::revert);
 }
 
 
@@ -547,28 +529,26 @@ void CoreHighlightSettingsPage::highlightTableChanged(QTableWidgetItem *item)
 
     switch (item->column()) {
         case CoreHighlightSettingsPage::EnableColumn:
-            highlightRule.isEnabled = (item->checkState() == Qt::Checked);
+            highlightRule.setIsEnabled(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::NameColumn:
-            if (item->text() == "")
-                item->setText(tr("this shouldn't be empty"));
-            highlightRule.name = item->text();
+            highlightRule.setContents(item->text());
             break;
         case CoreHighlightSettingsPage::RegExColumn:
-            highlightRule.isRegEx = (item->checkState() == Qt::Checked);
+            highlightRule.setIsRegEx(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::CsColumn:
-            highlightRule.isCaseSensitive = (item->checkState() == Qt::Checked);
+            highlightRule.setIsCaseSensitive(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::SenderColumn:
             if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
                 item->setText("");
-            highlightRule.sender = item->text();
+            highlightRule.setSender(item->text());
             break;
         case CoreHighlightSettingsPage::ChanColumn:
             if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
                 item->setText("");
-            highlightRule.chanName = item->text();
+            highlightRule.setChanName(item->text());
             break;
     }
     highlightList[item->row()] = highlightRule;
@@ -586,28 +566,26 @@ void CoreHighlightSettingsPage::ignoredTableChanged(QTableWidgetItem *item)
 
     switch (item->column()) {
         case CoreHighlightSettingsPage::EnableColumn:
-            ignoredRule.isEnabled = (item->checkState() == Qt::Checked);
+            ignoredRule.setIsEnabled(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::NameColumn:
-            if (item->text() == "")
-                item->setText(tr("this shouldn't be empty"));
-            ignoredRule.name = item->text();
+            ignoredRule.setContents(item->text());
             break;
         case CoreHighlightSettingsPage::RegExColumn:
-            ignoredRule.isRegEx = (item->checkState() == Qt::Checked);
+            ignoredRule.setIsRegEx(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::CsColumn:
-            ignoredRule.isCaseSensitive = (item->checkState() == Qt::Checked);
+            ignoredRule.setIsCaseSensitive(item->checkState() == Qt::Checked);
             break;
         case CoreHighlightSettingsPage::SenderColumn:
             if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
                 item->setText("");
-            ignoredRule.sender = item->text();
+            ignoredRule.setSender(item->text());
             break;
         case CoreHighlightSettingsPage::ChanColumn:
             if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
                 item->setText("");
-            ignoredRule.chanName = item->text();
+            ignoredRule.setChanName(item->text());
             break;
     }
     ignoredList[item->row()] = ignoredRule;
@@ -623,18 +601,13 @@ void CoreHighlightSettingsPage::load()
     auto ruleManager = Client::highlightRuleManager();
     if (ruleManager) {
         for (auto &rule : ruleManager->highlightRuleList()) {
-            if (rule.isInverse) {
-                addNewIgnoredRow(rule.isEnabled,
-                                 rule.id,
-                                 rule.name,
-                                 rule.isRegEx,
-                                 rule.isCaseSensitive,
-                                 rule.sender,
-                                 rule.chanName);
+            if (rule.isInverse()) {
+                addNewIgnoredRow(rule.isEnabled(), rule.id(), rule.contents(), rule.isRegEx(),
+                                 rule.isCaseSensitive(), rule.sender(), rule.chanName());
             }
             else {
-                addNewHighlightRow(rule.isEnabled, rule.id, rule.name, rule.isRegEx, rule.isCaseSensitive, rule.sender,
-                                   rule.chanName);
+                addNewHighlightRow(rule.isEnabled(), rule.id(), rule.contents(), rule.isRegEx(),
+                                   rule.isCaseSensitive(), rule.sender(), rule.chanName());
             }
         }
 
@@ -669,13 +642,15 @@ void CoreHighlightSettingsPage::save()
     clonedManager.clear();
 
     for (auto &rule : highlightList) {
-        clonedManager.addHighlightRule(rule.id, rule.name, rule.isRegEx, rule.isCaseSensitive, rule.isEnabled, false,
-                                       rule.sender, rule.chanName);
+        clonedManager.addHighlightRule(rule.id(), rule.contents(), rule.isRegEx(),
+                                       rule.isCaseSensitive(), rule.isEnabled(), false,
+                                       rule.sender(), rule.chanName());
     }
 
     for (auto &rule : ignoredList) {
-        clonedManager.addHighlightRule(rule.id, rule.name, rule.isRegEx, rule.isCaseSensitive, rule.isEnabled, true,
-                                       rule.sender, rule.chanName);
+        clonedManager.addHighlightRule(rule.id(), rule.contents(), rule.isRegEx(),
+                                       rule.isCaseSensitive (), rule.isEnabled(), true,
+                                       rule.sender(), rule.chanName());
     }
 
     auto highlightNickType = ui.highlightNicksComboBox->itemData(ui.highlightNicksComboBox->currentIndex()).value<int>();
@@ -693,13 +668,13 @@ int CoreHighlightSettingsPage::nextId()
 {
     int max = 0;
     for (int i = 0; i < highlightList.count(); i++) {
-        int id = highlightList[i].id;
+        int id = highlightList[i].id();
         if (id > max) {
             max = id;
         }
     }
     for (int i = 0; i < ignoredList.count(); i++) {
-        int id = ignoredList[i].id;
+        int id = ignoredList[i].id();
         if (id > max) {
             max = id;
         }