1 /*************************************************************************** 2 * Copyright (C) 2005-2020 by the Quassel Project * 3 * devel@quassel-irc.org * 4 * * 5 * This program is free software; you can redistribute it and/or modify * 6 * it under the terms of the GNU General Public License as published by * 7 * the Free Software Foundation; either version 2 of the License, or * 8 * (at your option) version 3. * 9 * * 10 * This program is distributed in the hope that it will be useful, * 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 * GNU General Public License for more details. * 14 * * 15 * You should have received a copy of the GNU General Public License * 16 * along with this program; if not, write to the * 17 * Free Software Foundation, Inc., * 18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 19 ***************************************************************************/ 20 21 #ifndef _HIGHLIGHTSETTINGSPAGE_H_ 22 #define _HIGHLIGHTSETTINGSPAGE_H_ 23 24 #include <QTableWidgetItem> 25 #include <QVariantList> 26 27 #include "settingspage.h" 28 29 #include "ui_highlightsettingspage.h" 30 31 class HighlightSettingsPage : public SettingsPage 32 { 33 Q_OBJECT 34 35 public: 36 HighlightSettingsPage(QWidget* parent = nullptr); 37 38 bool hasDefaults() const override; 39 40 public slots: 41 void save() override; 42 void load() override; 43 void defaults() override; 44 45 private slots: 46 void widgetHasChanged(); 47 void addNewRow(QString name = tr("highlight rule"), 48 bool regex = false, 49 bool cs = false, 50 bool enable = true, 51 QString chanName = "", 52 bool self = false); 53 void removeSelectedRows(); 54 void selectRow(QTableWidgetItem* item); 55 void tableChanged(QTableWidgetItem* item); 56 57 /** 58 * Event handler for Local Highlights Details button 59 */ 60 void on_localHighlightsDetails_clicked(); 61 62 private: 63 Ui::HighlightSettingsPage ui; 64 QVariantList highlightList; 65 // QVariant -> QHash<QString, QVariant>: 66 // regex: bool 67 // name: QString 68 // enable: bool 69 enum column 70 { 71 EnableColumn = 0, 72 NameColumn = 1, 73 RegExColumn = 2, 74 CsColumn = 3, 75 ChanColumn = 4, 76 ColumnCount = 5 77 }; 78 79 void emptyTable(); 80 81 bool testHasChanged(); 82 }; 83 84 #endif 85