/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2019 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. *
***************************************************************************/
+#include "corehighlightsettingspage.h"
+
#include <QHeaderView>
#include <QMessageBox>
#include <QTableWidget>
#include "client.h"
-#include "corehighlightsettingspage.h"
#include "icon.h"
#include "qtui.h"
+#include "util.h"
-CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent)
+CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget* parent)
: SettingsPage(tr("Interface"),
// In Monolithic mode, local highlights are replaced by remote highlights
- Quassel::runMode() == Quassel::Monolithic ?
- tr("Highlights") : tr("Remote Highlights"),
+ Quassel::runMode() == Quassel::Monolithic ? tr("Highlights") : tr("Remote Highlights"),
parent)
{
ui.setupUi(this);
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)));
+ coreConnectionStateChanged(Client::isConnected()); // need a core connection!
+ 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)),
+ selectOverload<int>(&QComboBox::currentIndexChanged),
this,
- SLOT(highlightNicksChanged(int)));
-
- connect(ui.highlightNicksComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
- connect(ui.nicksCaseSensitive, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ &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 * )),
- this,
- SLOT(highlightTableChanged(QTableWidgetItem * )));
+ connect(ui.highlightTable, &QTableWidget::itemChanged, this, &CoreHighlightSettingsPage::highlightTableChanged);
- connect(ui.ignoredTable,
- SIGNAL(itemChanged(QTableWidgetItem * )),
- this,
- SLOT(ignoredTableChanged(QTableWidgetItem * )));
+ connect(ui.ignoredTable, &QTableWidget::itemChanged, this, &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));
if (Quassel::runMode() == Quassel::Monolithic) {
// We're running in Monolithic mode, local highlights are considered legacy
ui.highlightImport->setText(tr("Import Legacy"));
- ui.highlightImport->setToolTip(tr("Import highlight rules configured in <i>%1</i>.")
- .arg(tr("Legacy Highlights").replace(" ", " ")));
+ ui.highlightImport->setToolTip(
+ tr("Import highlight rules configured in <i>%1</i>.").arg(tr("Legacy Highlights").replace(" ", " ")));
// Re-use translations of "Legacy Highlights" as this is a word-for-word reference, forcing
// all spaces to be non-breaking
- } else {
+ }
+ else {
// We're running in client/split mode, local highlights are distinguished from remote
ui.highlightImport->setText(tr("Import Local"));
- ui.highlightImport->setToolTip(tr("Import highlight rules configured in <i>%1</i>.")
- .arg(tr("Local Highlights").replace(" ", " ")));
+ ui.highlightImport->setToolTip(
+ tr("Import highlight rules configured in <i>%1</i>.").arg(tr("Local Highlights").replace(" ", " ")));
// Re-use translations of "Local Highlights" as this is a word-for-word reference, forcing
// all spaces to be non-breaking
}
}
-
void CoreHighlightSettingsPage::coreConnectionStateChanged(bool state)
{
updateCoreSupportStatus(state);
setEnabled(state);
if (state) {
load();
- } else {
+ }
+ else {
revert();
}
}
-
-void CoreHighlightSettingsPage::setupRuleTable(QTableWidget *table) const
+void CoreHighlightSettingsPage::setupRuleTable(QTableWidget* table) const
{
table->verticalHeader()->hide();
table->setShowGrid(false);
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
}
-
QString CoreHighlightSettingsPage::getTableTooltip(column tableColumn) const
{
switch (tableColumn) {
"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> "
}
}
-
-void CoreHighlightSettingsPage::setupTableTooltips(QWidget *enableWidget, QWidget *nameWidget,
- QWidget *regExWidget, QWidget *csWidget,
- QWidget *senderWidget, QWidget *chanWidget) const
+void CoreHighlightSettingsPage::setupTableTooltips(
+ QWidget* enableWidget, QWidget* nameWidget, QWidget* regExWidget, QWidget* csWidget, QWidget* senderWidget, QWidget* chanWidget) const
{
// Make sure everything's valid
Q_ASSERT(enableWidget);
chanWidget->setWhatsThis(chanWidget->toolTip());
}
-
-void CoreHighlightSettingsPage::setupTableTooltips(QTableWidgetItem *enableWidget,
- QTableWidgetItem *nameWidget,
- QTableWidgetItem *regExWidget,
- QTableWidgetItem *csWidget,
- QTableWidgetItem *senderWidget,
- QTableWidgetItem *chanWidget) const
+void CoreHighlightSettingsPage::setupTableTooltips(QTableWidgetItem* enableWidget,
+ QTableWidgetItem* nameWidget,
+ QTableWidgetItem* regExWidget,
+ QTableWidgetItem* csWidget,
+ QTableWidgetItem* senderWidget,
+ QTableWidgetItem* chanWidget) const
{
// Make sure everything's valid
Q_ASSERT(enableWidget);
chanWidget->setWhatsThis(chanWidget->toolTip());
}
-
void CoreHighlightSettingsPage::updateCoreSupportStatus(bool state)
{
// Assume connected state as enforced by the settings page UI
// warning. Don't show the warning needlessly when disconnected.
ui.highlightsConfigWidget->setEnabled(true);
ui.coreUnsupportedWidget->setVisible(false);
- } else {
+ }
+ else {
// Core does not support highlights, show warning and disable highlight configuration
ui.highlightsConfigWidget->setEnabled(false);
ui.coreUnsupportedWidget->setVisible(true);
}
}
-
void CoreHighlightSettingsPage::clientConnected()
{
- connect(Client::highlightRuleManager(), SIGNAL(updated()), SLOT(revert()));
+ connect(Client::highlightRuleManager(), &SyncableObject::updated, this, &CoreHighlightSettingsPage::revert);
}
-
void CoreHighlightSettingsPage::revert()
{
if (!hasChanged())
load();
}
-
bool CoreHighlightSettingsPage::hasDefaults() const
{
return true;
}
-
void CoreHighlightSettingsPage::defaults()
{
int highlightNickType = HighlightRuleManager::HighlightNickType::CurrentNick;
widgetHasChanged();
}
-
-void CoreHighlightSettingsPage::addNewHighlightRow(bool enable, int id, const QString &name, bool regex, bool cs,
- const QString &sender, const QString &chanName, bool self)
+void CoreHighlightSettingsPage::addNewHighlightRow(
+ bool enable, int id, const QString& name, bool regex, bool cs, const QString& sender, const QString& chanName, bool self)
{
ui.highlightTable->setRowCount(ui.highlightTable->rowCount() + 1);
id = nextId();
}
- auto *nameItem = new QTableWidgetItem(name);
+ auto* nameItem = new QTableWidgetItem(name);
- auto *regexItem = new QTableWidgetItem("");
+ auto* regexItem = new QTableWidgetItem("");
if (regex)
regexItem->setCheckState(Qt::Checked);
else
regexItem->setCheckState(Qt::Unchecked);
regexItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *csItem = new QTableWidgetItem("");
+ auto* csItem = new QTableWidgetItem("");
if (cs)
csItem->setCheckState(Qt::Checked);
else
csItem->setCheckState(Qt::Unchecked);
csItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *enableItem = new QTableWidgetItem("");
+ auto* enableItem = new QTableWidgetItem("");
if (enable)
enableItem->setCheckState(Qt::Checked);
else
enableItem->setCheckState(Qt::Unchecked);
enableItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *senderItem = new QTableWidgetItem(sender);
+ auto* senderItem = new QTableWidgetItem(sender);
- auto *chanNameItem = new QTableWidgetItem(chanName);
+ auto* chanNameItem = new QTableWidgetItem(chanName);
setupTableTooltips(enableItem, nameItem, regexItem, csItem, senderItem, chanNameItem);
highlightList << HighlightRuleManager::HighlightRule(id, name, regex, cs, enable, false, sender, chanName);
}
-
-void CoreHighlightSettingsPage::addNewIgnoredRow(bool enable, int id, const QString &name, bool regex, bool cs,
- const QString &sender, const QString &chanName, bool self)
+void CoreHighlightSettingsPage::addNewIgnoredRow(
+ bool enable, int id, const QString& name, bool regex, bool cs, const QString& sender, const QString& chanName, bool self)
{
ui.ignoredTable->setRowCount(ui.ignoredTable->rowCount() + 1);
id = nextId();
}
- auto *nameItem = new QTableWidgetItem(name);
+ auto* nameItem = new QTableWidgetItem(name);
- auto *regexItem = new QTableWidgetItem("");
+ auto* regexItem = new QTableWidgetItem("");
if (regex)
regexItem->setCheckState(Qt::Checked);
else
regexItem->setCheckState(Qt::Unchecked);
regexItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *csItem = new QTableWidgetItem("");
+ auto* csItem = new QTableWidgetItem("");
if (cs)
csItem->setCheckState(Qt::Checked);
else
csItem->setCheckState(Qt::Unchecked);
csItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *enableItem = new QTableWidgetItem("");
+ auto* enableItem = new QTableWidgetItem("");
if (enable)
enableItem->setCheckState(Qt::Checked);
else
enableItem->setCheckState(Qt::Unchecked);
enableItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- auto *chanNameItem = new QTableWidgetItem(chanName);
+ auto* chanNameItem = new QTableWidgetItem(chanName);
- auto *senderItem = new QTableWidgetItem(sender);
+ auto* senderItem = new QTableWidgetItem(sender);
setupTableTooltips(enableItem, nameItem, regexItem, csItem, senderItem, chanNameItem);
ignoredList << HighlightRuleManager::HighlightRule(id, name, regex, cs, enable, true, sender, chanName);
}
-
void CoreHighlightSettingsPage::removeSelectedHighlightRows()
{
QList<int> selectedRows;
- QList<QTableWidgetItem *> selectedItemList = ui.highlightTable->selectedItems();
+ QList<QTableWidgetItem*> selectedItemList = ui.highlightTable->selectedItems();
for (auto selectedItem : selectedItemList) {
selectedRows.append(selectedItem->row());
}
- qSort(selectedRows.begin(), selectedRows.end(), qGreater<int>());
+ std::sort(selectedRows.begin(), selectedRows.end(), std::greater<>());
int lastRow = -1;
for (auto row : selectedRows) {
if (row != lastRow) {
}
}
-
void CoreHighlightSettingsPage::removeSelectedIgnoredRows()
{
QList<int> selectedRows;
- QList<QTableWidgetItem *> selectedItemList = ui.ignoredTable->selectedItems();
+ QList<QTableWidgetItem*> selectedItemList = ui.ignoredTable->selectedItems();
for (auto selectedItem : selectedItemList) {
selectedRows.append(selectedItem->row());
}
- qSort(selectedRows.begin(), selectedRows.end(), qGreater<int>());
+ std::sort(selectedRows.begin(), selectedRows.end(), std::greater<>());
int lastRow = -1;
for (auto row : selectedRows) {
if (row != lastRow) {
}
}
-
void CoreHighlightSettingsPage::highlightNicksChanged(const int index)
{
// Only allow toggling "Case sensitive" when a nickname will be highlighted
ui.nicksCaseSensitive->setEnabled(highlightNickType != HighlightRuleManager::NoNick);
}
-
-void CoreHighlightSettingsPage::selectHighlightRow(QTableWidgetItem *item)
+void CoreHighlightSettingsPage::selectHighlightRow(QTableWidgetItem* item)
{
int row = item->row();
bool selected = item->isSelected();
- ui.highlightTable
- ->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, CoreHighlightSettingsPage::ColumnCount - 1),
- selected);
+ ui.highlightTable->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, CoreHighlightSettingsPage::ColumnCount - 1), selected);
}
-
-void CoreHighlightSettingsPage::selectIgnoredRow(QTableWidgetItem *item)
+void CoreHighlightSettingsPage::selectIgnoredRow(QTableWidgetItem* item)
{
int row = item->row();
bool selected = item->isSelected();
- ui.ignoredTable
- ->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, CoreHighlightSettingsPage::ColumnCount - 1),
- selected);
+ ui.ignoredTable->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, CoreHighlightSettingsPage::ColumnCount - 1), selected);
}
-
void CoreHighlightSettingsPage::emptyHighlightTable()
{
// ui.highlight and highlightList should have the same size, but just to make sure.
highlightList.clear();
}
-
void CoreHighlightSettingsPage::emptyIgnoredTable()
{
// ui.highlight and highlightList should have the same size, but just to make sure.
ignoredList.clear();
}
-
-void CoreHighlightSettingsPage::highlightTableChanged(QTableWidgetItem *item)
+void CoreHighlightSettingsPage::highlightTableChanged(QTableWidgetItem* item)
{
if (item->row() + 1 > highlightList.size())
return;
auto highlightRule = highlightList.value(item->row());
-
switch (item->column()) {
- case CoreHighlightSettingsPage::EnableColumn:
- highlightRule.isEnabled = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::NameColumn:
- highlightRule.name = item->text();
- break;
- case CoreHighlightSettingsPage::RegExColumn:
- highlightRule.isRegEx = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::CsColumn:
- highlightRule.isCaseSensitive = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::SenderColumn:
- if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
- item->setText("");
- highlightRule.sender = item->text();
- break;
- case CoreHighlightSettingsPage::ChanColumn:
- if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
- item->setText("");
- highlightRule.chanName = item->text();
- break;
+ case CoreHighlightSettingsPage::EnableColumn:
+ highlightRule.setIsEnabled(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::NameColumn:
+ highlightRule.setContents(item->text());
+ break;
+ case CoreHighlightSettingsPage::RegExColumn:
+ highlightRule.setIsRegEx(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::CsColumn:
+ highlightRule.setIsCaseSensitive(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::SenderColumn:
+ if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
+ item->setText("");
+ highlightRule.setSender(item->text());
+ break;
+ case CoreHighlightSettingsPage::ChanColumn:
+ if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
+ item->setText("");
+ highlightRule.setChanName(item->text());
+ break;
}
highlightList[item->row()] = highlightRule;
emit widgetHasChanged();
}
-
-void CoreHighlightSettingsPage::ignoredTableChanged(QTableWidgetItem *item)
+void CoreHighlightSettingsPage::ignoredTableChanged(QTableWidgetItem* item)
{
if (item->row() + 1 > ignoredList.size())
return;
auto ignoredRule = ignoredList.value(item->row());
-
switch (item->column()) {
- case CoreHighlightSettingsPage::EnableColumn:
- ignoredRule.isEnabled = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::NameColumn:
- ignoredRule.name = item->text();
- break;
- case CoreHighlightSettingsPage::RegExColumn:
- ignoredRule.isRegEx = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::CsColumn:
- ignoredRule.isCaseSensitive = (item->checkState() == Qt::Checked);
- break;
- case CoreHighlightSettingsPage::SenderColumn:
- if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
- item->setText("");
- ignoredRule.sender = item->text();
- break;
- case CoreHighlightSettingsPage::ChanColumn:
- if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
- item->setText("");
- ignoredRule.chanName = item->text();
- break;
+ case CoreHighlightSettingsPage::EnableColumn:
+ ignoredRule.setIsEnabled(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::NameColumn:
+ ignoredRule.setContents(item->text());
+ break;
+ case CoreHighlightSettingsPage::RegExColumn:
+ ignoredRule.setIsRegEx(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::CsColumn:
+ ignoredRule.setIsCaseSensitive(item->checkState() == Qt::Checked);
+ break;
+ case CoreHighlightSettingsPage::SenderColumn:
+ if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
+ item->setText("");
+ ignoredRule.setSender(item->text());
+ break;
+ case CoreHighlightSettingsPage::ChanColumn:
+ if (!item->text().isEmpty() && item->text().trimmed().isEmpty())
+ item->setText("");
+ ignoredRule.setChanName(item->text());
+ break;
}
ignoredList[item->row()] = ignoredRule;
emit widgetHasChanged();
}
-
void CoreHighlightSettingsPage::load()
{
emptyHighlightTable();
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);
+ for (auto& rule : ruleManager->highlightRuleList()) {
+ 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());
}
}
setChangedState(false);
_initialized = true;
- } else {
+ }
+ else {
defaults();
}
}
-
void CoreHighlightSettingsPage::save()
{
if (!hasChanged())
clonedManager.fromVariantMap(ruleManager->toVariantMap());
clonedManager.clear();
- for (auto &rule : highlightList) {
- clonedManager.addHighlightRule(rule.id, rule.name, rule.isRegEx, rule.isCaseSensitive, rule.isEnabled, false,
- rule.sender, rule.chanName);
+ for (auto& rule : highlightList) {
+ 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);
+ for (auto& rule : ignoredList) {
+ 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>();
load();
}
-
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;
}
return max + 1;
}
-
void CoreHighlightSettingsPage::widgetHasChanged()
{
setChangedState(true);
}
-
void CoreHighlightSettingsPage::on_coreUnsupportedDetails_clicked()
{
// Re-use translations of "Local Highlights" as this is a word-for-word reference, forcing all
// spaces to non-breaking
const QString localHighlightsName = tr("Local Highlights").replace(" ", " ");
- const QString remoteHighlightsMsgText =
- QString("<p><b>%1</b></p></br><p>%2</p></br><p>%3</p>"
- ).arg(tr("Your Quassel core is too old to support remote highlights"),
- tr("You need a Quassel core v0.13.0 or newer to configure remote "
- "highlights."),
- tr("You can still configure highlights for this device only in "
- "<i>%1</i>.").arg(localHighlightsName));
-
- QMessageBox::warning(this,
- tr("Remote Highlights unsupported"),
- remoteHighlightsMsgText);
-}
+ const QString remoteHighlightsMsgText = QString("<p><b>%1</b></p></br><p>%2</p></br><p>%3</p>")
+ .arg(tr("Your Quassel core is too old to support remote highlights"),
+ tr("You need a Quassel core v0.13.0 or newer to configure remote "
+ "highlights."),
+ tr("You can still configure highlights for this device only in "
+ "<i>%1</i>.")
+ .arg(localHighlightsName));
+ QMessageBox::warning(this, tr("Remote Highlights unsupported"), remoteHighlightsMsgText);
+}
void CoreHighlightSettingsPage::importRules()
{
QString localHighlightsName;
if (Quassel::runMode() == Quassel::Monolithic) {
localHighlightsName = tr("Legacy Highlights").replace(" ", " ");
- } else {
+ }
+ else {
localHighlightsName = tr("Local Highlights").replace(" ", " ");
}
if (localHighlightList.count() == 0) {
// No highlight rules exist to import, do nothing
- QMessageBox::information(this,
- tr("No highlights to import"),
- tr("No highlight rules in <i>%1</i>."
- ).arg(localHighlightsName));
+ QMessageBox::information(this, tr("No highlights to import"), tr("No highlight rules in <i>%1</i>.").arg(localHighlightsName));
return;
}
int ret = QMessageBox::question(this,
tr("Import highlights?"),
- tr("Import all highlight rules from <i>%1</i>?"
- ).arg(localHighlightsName),
- QMessageBox::Yes|QMessageBox::No,
+ tr("Import all highlight rules from <i>%1</i>?").arg(localHighlightsName),
+ QMessageBox::Yes | QMessageBox::No,
QMessageBox::No);
if (ret != QMessageBox::Yes) {
auto clonedManager = HighlightRuleManager();
clonedManager.fromVariantMap(Client::highlightRuleManager()->toVariantMap());
- for (const auto &variant : notificationSettings.highlightList()) {
+ for (const auto& variant : notificationSettings.highlightList()) {
auto highlightRule = variant.toMap();
- clonedManager.addHighlightRule(
- clonedManager.nextId(),
- highlightRule["Name"].toString(),
- highlightRule["RegEx"].toBool(),
- highlightRule["CS"].toBool(),
- highlightRule["Enable"].toBool(),
- false,
- "",
- highlightRule["Channel"].toString()
- );
+ clonedManager.addHighlightRule(clonedManager.nextId(),
+ highlightRule["Name"].toString(),
+ highlightRule["RegEx"].toBool(),
+ highlightRule["CS"].toBool(),
+ highlightRule["Enable"].toBool(),
+ false,
+ "",
+ highlightRule["Channel"].toString());
}
Client::highlightRuleManager()->requestUpdate(clonedManager.toVariantMap());
// Give a heads-up that all succeeded
QMessageBox::information(this,
tr("Imported highlights"),
- tr("%1 highlight rules successfully imported."
- ).arg(QString::number(localHighlightList.count())));
+ tr("%1 highlight rules successfully imported.").arg(QString::number(localHighlightList.count())));
}
-
bool CoreHighlightSettingsPage::isSelectable() const
{
return Client::isConnected();