Rework sync protocol for highlight rules
[quassel.git] / src / qtui / settingspages / corehighlightsettingspage.h
index 9ef0bc2..d4682ec 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2016 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  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef _COREHIGHLIGHTSETTINGSPAGE_H_
-#define _COREHIGHLIGHTSETTINGSPAGE_H_
+#pragma once
 
 #include <QVariantList>
 #include <QTableWidgetItem>
-#include <highlightrulemanager.h>
-#include <ui_corehighlightsettingspage.h>
 
+#include "highlightrulemanager.h"
 #include "settingspage.h"
-#include "ui_highlightsettingspage.h"
+
+#include "ui_corehighlightsettingspage.h"
 
 class CoreHighlightSettingsPage : public SettingsPage
 {
@@ -38,6 +37,8 @@ public:
 
     bool hasDefaults() const override;
 
+    bool isSelectable() const override;
+
 public slots:
     void save() override;
     void load() override;
@@ -46,23 +47,38 @@ public slots:
     void clientConnected();
 
 private slots:
+    void coreConnectionStateChanged(bool state);
     void widgetHasChanged();
-    void addNewHighlightRow(bool enable = true, const QString &name = tr("highlight rule"), bool regex = false,
+    void addNewHighlightRow(bool enable = true, int id = -1, const QString &name = tr("highlight rule"), bool regex = false,
                             bool cs = false, const QString &sender = "", const QString &chanName = "",
                             bool self = false);
-    void addNewIgnoredRow(bool enable = true, const QString &name = tr("highlight rule"), bool regex = false,
+    void addNewIgnoredRow(bool enable = true, int id = -1, const QString &name = tr("highlight rule"), bool regex = false,
                           bool cs = false, const QString &sender = "", const QString &chanName = "", bool self = false);
     void removeSelectedHighlightRows();
     void removeSelectedIgnoredRows();
+    void highlightNicksChanged(int index);
     void selectHighlightRow(QTableWidgetItem *item);
     void selectIgnoredRow(QTableWidgetItem *item);
     void highlightTableChanged(QTableWidgetItem *item);
     void ignoredTableChanged(QTableWidgetItem *item);
 
+    /** Import local Highlight rules into the Core Highlight rules
+     *
+     * Iterates through all local highlight rules, converting each into core-side highlight rules.
+     */
+    void importRules();
+
+    /**
+     * Event handler for core unspported Details button
+     */
+    void on_coreUnsupportedDetails_clicked();
+
 private:
     Ui::CoreHighlightSettingsPage ui;
+
     HighlightRuleManager::HighlightRuleList highlightList;
     HighlightRuleManager::HighlightRuleList ignoredList;
+
     enum column {
         EnableColumn = 0,
         NameColumn = 1,
@@ -78,8 +94,16 @@ private:
 
     void setupRuleTable(QTableWidget *highlightTable) const;
 
-    bool _initialized;
-};
+    /** Update the UI to show core support for highlights
+     *
+     * Shows or hides the UI warnings around core-side highlights according to core connection and
+     * core feature support.
+     *
+     * @param state  True if connected to core, otherwise false
+     */
+    void updateCoreSupportStatus(bool state);
 
+    int nextId();
 
-#endif
+    bool _initialized;
+};