Disable the highlights page when not connected
[quassel.git] / src / qtui / settingspages / corehighlightsettingspage.cpp
index cdb5088..d4be7cf 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QHeaderView>
 #include <QTableWidget>
-#include <QtWidgets/QHeaderView>
 
+#include "client.h"
 #include "corehighlightsettingspage.h"
 #include "qtui.h"
-#include "client.h"
 
 CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
     : SettingsPage(tr("Interface"), tr("Core-Side Highlights"), parent)
@@ -37,6 +37,9 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
     ui.highlightNicksComboBox->addItem(tr("Current Nick"), QVariant(HighlightRuleManager::CurrentNick));
     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(ui.highlightAdd, SIGNAL(clicked(bool)), this, SLOT(addNewHighlightRow()));
     connect(ui.highlightRemove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedHighlightRows()));
 
@@ -75,6 +78,17 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
 
     connect(Client::instance(), SIGNAL(connected()), this, SLOT(clientConnected()));
 }
+
+void CoreHighlightSettingsPage::coreConnectionStateChanged(bool state)
+{
+    setEnabled(state);
+    if (state) {
+        load();
+    } else {
+        revert();
+    }
+}
+
 void CoreHighlightSettingsPage::setupRuleTable(QTableWidget *table) const
 {
     table->verticalHeader()->hide();
@@ -318,6 +332,7 @@ void CoreHighlightSettingsPage::highlightTableChanged(QTableWidgetItem *item)
     switch (item->column()) {
         case CoreHighlightSettingsPage::EnableColumn:
             highlightRule.isEnabled = (item->checkState() == Qt::Checked);
+            break;
         case CoreHighlightSettingsPage::NameColumn:
             if (item->text() == "")
                 item->setText(tr("this shouldn't be empty"));
@@ -355,6 +370,7 @@ void CoreHighlightSettingsPage::ignoredTableChanged(QTableWidgetItem *item)
     switch (item->column()) {
         case CoreHighlightSettingsPage::EnableColumn:
             ignoredRule.isEnabled = (item->checkState() == Qt::Checked);
+            break;
         case CoreHighlightSettingsPage::NameColumn:
             if (item->text() == "")
                 item->setText(tr("this shouldn't be empty"));
@@ -440,7 +456,7 @@ void CoreHighlightSettingsPage::save()
                                        rule.sender, rule.chanName);
     }
 
-    auto highlightNickType = ui.highlightNicksComboBox->currentData().value<int>();
+    auto highlightNickType = ui.highlightNicksComboBox->itemData(ui.highlightNicksComboBox->currentIndex()).value<int>();
 
     clonedManager.setHighlightNick(HighlightRuleManager::HighlightNickType(highlightNickType));
     clonedManager.setNicksCaseSensitive(ui.nicksCaseSensitive->isChecked());
@@ -453,4 +469,4 @@ void CoreHighlightSettingsPage::save()
 void CoreHighlightSettingsPage::widgetHasChanged()
 {
     setChangedState(true);
-}
\ No newline at end of file
+}