X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcorehighlightsettingspage.h;h=0d9150da464bed00d2aeaddb6fa7fd90ef67c249;hb=b40672ab5c48b577b31371c159e60d330fdd7ce5;hp=2820850aca4b15e970d2ae6748047b030ef36c47;hpb=ebe14ade2f3496aefc8926ce704a161c4451fedd;p=quassel.git diff --git a/src/qtui/settingspages/corehighlightsettingspage.h b/src/qtui/settingspages/corehighlightsettingspage.h index 2820850a..0d9150da 100644 --- a/src/qtui/settingspages/corehighlightsettingspage.h +++ b/src/qtui/settingspages/corehighlightsettingspage.h @@ -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 * @@ -18,59 +18,127 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _COREHIGHLIGHTSETTINGSPAGE_H_ -#define _COREHIGHLIGHTSETTINGSPAGE_H_ +#pragma once #include #include -#include -#include +#include "highlightrulemanager.h" #include "settingspage.h" -#include "ui_highlightsettingspage.h" + +#include "ui_corehighlightsettingspage.h" class CoreHighlightSettingsPage : public SettingsPage { Q_OBJECT public: - CoreHighlightSettingsPage(QWidget *parent = 0); + explicit CoreHighlightSettingsPage(QWidget *parent = nullptr); + + bool hasDefaults() const override; - bool hasDefaults() const; + bool isSelectable() const override; public slots: - void save(); - void load(); - void defaults(); + void save() override; + void load() override; + void defaults() override; void revert(); void clientConnected(); private slots: + void coreConnectionStateChanged(bool state); void widgetHasChanged(); - void addNewRow(const QString &name = tr("highlight rule"), bool regex = false, bool cs = false, bool enable = true, - bool inverse = false, const QString &sender = "", const QString &chanName = "", bool self = false); - void removeSelectedRows(); - void selectRow(QTableWidgetItem *item); - void tableChanged(QTableWidgetItem *item); + 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, 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 { - NameColumn = 0, - RegExColumn = 1, - CsColumn = 2, - EnableColumn = 3, - InverseColumn = 4, - SenderColumn = 5, - ChanColumn = 6, - ColumnCount = 7 + EnableColumn = 0, + NameColumn = 1, + RegExColumn = 2, + CsColumn = 3, + SenderColumn = 4, + ChanColumn = 5, + ColumnCount = 6 }; - void emptyTable(); + void emptyHighlightTable(); + void emptyIgnoredTable(); - bool _initialized; -}; + void setupRuleTable(QTableWidget *highlightTable) const; + + /** + * Get tooltip for the specified rule table column + * + * @param tableColumn Column to retrieve tooltip + * @return Translated tooltip for the specified column + */ + QString getTableTooltip(column tableColumn) const; + + /** + * Setup tooltips and "What's this?" prompts for table entries + * + * @param enableWidget Enabled checkbox + * @param nameWidget Rule name + * @param regExWidget RegEx enabled + * @param csWidget Case-sensitive + * @param senderWidget Sender name + * @param chanWidget Channel name + */ + void setupTableTooltips(QWidget *enableWidget, QWidget *nameWidget, QWidget *regExWidget, + QWidget *csWidget, QWidget *senderWidget, QWidget *chanWidget) const; + + /** + * Setup tooltips and "What's this?" prompts for table entries + * + * @param enableWidget Enabled checkbox + * @param nameWidget Rule name + * @param regExWidget RegEx enabled + * @param csWidget Case-sensitive + * @param senderWidget Sender name + * @param chanWidget Channel name + */ + void setupTableTooltips(QTableWidgetItem *enableWidget, QTableWidgetItem *nameWidget, + QTableWidgetItem *regExWidget, QTableWidgetItem *csWidget, + QTableWidgetItem *senderWidget, QTableWidgetItem *chanWidget) const; + /** 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); -#endif + int nextId(); + + bool _initialized; +};