X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fignorelistsettingspage.cpp;h=3af493095a9a1db8ec5c765feb51431f226009ec;hp=d37ae94c6ebc1fa2fc96e749eadc7200ef0e53a0;hb=6eefdfc697067d184a589fc8a231b16316c09106;hpb=4a5065255e652dd0c301bac0db41b7afb777ef49 diff --git a/src/qtui/settingspages/ignorelistsettingspage.cpp b/src/qtui/settingspages/ignorelistsettingspage.cpp index d37ae94c..3af49309 100644 --- a/src/qtui/settingspages/ignorelistsettingspage.cpp +++ b/src/qtui/settingspages/ignorelistsettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 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 * @@ -28,16 +28,19 @@ #include #include #include -#include "iconloader.h" + +#include "expressionmatch.h" +#include "icon.h" +#include "util.h" IgnoreListSettingsPage::IgnoreListSettingsPage(QWidget *parent) : SettingsPage(tr("IRC"), tr("Ignore List"), parent) { ui.setupUi(this); _delegate = new IgnoreListDelegate(ui.ignoreListView); - ui.newIgnoreRuleButton->setIcon(SmallIcon("list-add")); - ui.deleteIgnoreRuleButton->setIcon(SmallIcon("edit-delete")); - ui.editIgnoreRuleButton->setIcon(SmallIcon("configure")); + ui.newIgnoreRuleButton->setIcon(icon::get("list-add")); + ui.deleteIgnoreRuleButton->setIcon(icon::get("edit-delete")); + ui.editIgnoreRuleButton->setIcon(icon::get("configure")); ui.ignoreListView->setSelectionBehavior(QAbstractItemView::SelectRows); ui.ignoreListView->setSelectionMode(QAbstractItemView::SingleSelection); @@ -55,12 +58,12 @@ IgnoreListSettingsPage::IgnoreListSettingsPage(QWidget *parent) ui.ignoreListView->viewport()->setAttribute(Qt::WA_Hover); ui.ignoreListView->viewport()->setMouseTracking(true); - connect(ui.ignoreListView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(selectionChanged(const QItemSelection &, const QItemSelection &))); - connect(ui.newIgnoreRuleButton, SIGNAL(clicked()), this, SLOT(newIgnoreRule())); - connect(ui.deleteIgnoreRuleButton, SIGNAL(clicked()), this, SLOT(deleteSelectedIgnoreRule())); - connect(ui.editIgnoreRuleButton, SIGNAL(clicked()), this, SLOT(editSelectedIgnoreRule())); - connect(&_ignoreListModel, SIGNAL(configChanged(bool)), this, SLOT(setChangedState(bool))); - connect(&_ignoreListModel, SIGNAL(modelReady(bool)), this, SLOT(enableDialog(bool))); + connect(ui.ignoreListView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &IgnoreListSettingsPage::selectionChanged); + connect(ui.newIgnoreRuleButton, &QAbstractButton::clicked, this, [this]() { newIgnoreRule(); }); + connect(ui.deleteIgnoreRuleButton, &QAbstractButton::clicked, this, &IgnoreListSettingsPage::deleteSelectedIgnoreRule); + connect(ui.editIgnoreRuleButton, &QAbstractButton::clicked, this, &IgnoreListSettingsPage::editSelectedIgnoreRule); + connect(&_ignoreListModel, &IgnoreListModel::configChanged, this, &IgnoreListSettingsPage::setChangedState); + connect(&_ignoreListModel, &IgnoreListModel::modelReady, this, &IgnoreListSettingsPage::enableDialog); enableDialog(_ignoreListModel.isReady()); } @@ -74,7 +77,7 @@ IgnoreListSettingsPage::~IgnoreListSettingsPage() void IgnoreListSettingsPage::load() { - if (_ignoreListModel.configChanged()) + if (_ignoreListModel.hasConfigChanged()) _ignoreListModel.revert(); ui.ignoreListView->selectionModel()->reset(); ui.editIgnoreRuleButton->setEnabled(false); @@ -89,7 +92,7 @@ void IgnoreListSettingsPage::defaults() void IgnoreListSettingsPage::save() { - if (_ignoreListModel.configChanged()) { + if (_ignoreListModel.hasConfigChanged()) { _ignoreListModel.commit(); } ui.ignoreListView->selectionModel()->reset(); @@ -121,29 +124,29 @@ void IgnoreListSettingsPage::deleteSelectedIgnoreRule() } -void IgnoreListSettingsPage::newIgnoreRule(QString rule) +void IgnoreListSettingsPage::newIgnoreRule(const QString &rule) { IgnoreListManager::IgnoreListItem newItem = IgnoreListManager::IgnoreListItem(); - newItem.strictness = IgnoreListManager::SoftStrictness; - newItem.scope = IgnoreListManager::GlobalScope; - newItem.isRegEx = false; - newItem.isActive = true; + newItem.setStrictness(IgnoreListManager::SoftStrictness); + newItem.setScope(IgnoreListManager::GlobalScope); + newItem.setIsRegEx(false); + newItem.setIsEnabled(true); bool enableOkButton = false; if (!rule.isEmpty()) { // we're called from contextmenu - newItem.ignoreRule = rule; + newItem.setContents(rule); enableOkButton = true; } - IgnoreListEditDlg *dlg = new IgnoreListEditDlg(newItem, this, enableOkButton); + auto *dlg = new IgnoreListEditDlg(newItem, this, enableOkButton); dlg->enableOkButton(enableOkButton); while (dlg->exec() == QDialog::Accepted) { if (!_ignoreListModel.newIgnoreRule(dlg->ignoreListItem())) { if (QMessageBox::warning(this, tr("Rule already exists"), tr("There is already a rule\n\"%1\"\nPlease choose another rule.") - .arg(dlg->ignoreListItem().ignoreRule), + .arg(dlg->ignoreListItem().contents()), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok) == QMessageBox::Cancel) break; @@ -249,24 +252,24 @@ IgnoreListEditDlg::IgnoreListEditDlg(const IgnoreListManager::IgnoreListItem &it ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); - ui.ignoreRuleLineEdit->setText(item.ignoreRule); + ui.ignoreRuleLineEdit->setText(item.contents()); - if (item.type == IgnoreListManager::MessageIgnore) + if (item.type() == IgnoreListManager::MessageIgnore) ui.messageTypeButton->setChecked(true); - else if (item.type == IgnoreListManager::CtcpIgnore) + else if (item.type() == IgnoreListManager::CtcpIgnore) ui.ctcpTypeButton->setChecked(true); else ui.senderTypeButton->setChecked(true); - ui.isRegExCheckBox->setChecked(item.isRegEx); - ui.isActiveCheckBox->setChecked(item.isActive); + ui.isRegExCheckBox->setChecked(item.isRegEx()); + ui.isActiveCheckBox->setChecked(item.isEnabled()); - if (item.strictness == IgnoreListManager::HardStrictness) + if (item.strictness() == IgnoreListManager::HardStrictness) ui.permanentStrictnessButton->setChecked(true); else ui.dynamicStrictnessButton->setChecked(true); - switch (item.scope) { + switch (item.scope()) { case IgnoreListManager::NetworkScope: ui.networkScopeButton->setChecked(true); ui.scopeRuleTextEdit->setEnabled(true); @@ -280,20 +283,20 @@ IgnoreListEditDlg::IgnoreListEditDlg(const IgnoreListManager::IgnoreListItem &it ui.scopeRuleTextEdit->setEnabled(false); } - if (item.scope == IgnoreListManager::GlobalScope) + if (item.scope() == IgnoreListManager::GlobalScope) ui.scopeRuleTextEdit->clear(); else - ui.scopeRuleTextEdit->setPlainText(item.scopeRule); + ui.scopeRuleTextEdit->setPlainText(item.scopeRule()); - connect(ui.ignoreRuleLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(widgetHasChanged())); - connect(ui.scopeRuleTextEdit, SIGNAL(textChanged()), this, SLOT(widgetHasChanged())); - connect(&_typeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(widgetHasChanged())); - connect(&_strictnessButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(widgetHasChanged())); - connect(&_scopeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(widgetHasChanged())); - connect(ui.isRegExCheckBox, SIGNAL(stateChanged(int)), this, SLOT(widgetHasChanged())); - connect(ui.isActiveCheckBox, SIGNAL(stateChanged(int)), this, SLOT(widgetHasChanged())); + connect(ui.ignoreRuleLineEdit, &QLineEdit::textChanged, this, &IgnoreListEditDlg::widgetHasChanged); + connect(ui.scopeRuleTextEdit, &QPlainTextEdit::textChanged, this, &IgnoreListEditDlg::widgetHasChanged); + connect(&_typeButtonGroup, selectOverload(&QButtonGroup::buttonClicked), this, &IgnoreListEditDlg::widgetHasChanged); + connect(&_strictnessButtonGroup, selectOverload(&QButtonGroup::buttonClicked), this, &IgnoreListEditDlg::widgetHasChanged); + connect(&_scopeButtonGroup, selectOverload(&QButtonGroup::buttonClicked), this, &IgnoreListEditDlg::widgetHasChanged); + connect(ui.isRegExCheckBox, &QCheckBox::stateChanged, this, &IgnoreListEditDlg::widgetHasChanged); + connect(ui.isActiveCheckBox, &QCheckBox::stateChanged, this, &IgnoreListEditDlg::widgetHasChanged); - connect(ui.buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(aboutToAccept())); + connect(ui.buttonBox->button(QDialogButtonBox::Ok), &QAbstractButton::clicked, this, &IgnoreListEditDlg::aboutToAccept); widgetHasChanged(); } @@ -301,49 +304,45 @@ IgnoreListEditDlg::IgnoreListEditDlg(const IgnoreListManager::IgnoreListItem &it void IgnoreListEditDlg::widgetHasChanged() { if (ui.messageTypeButton->isChecked()) - _clonedIgnoreListItem.type = IgnoreListManager::MessageIgnore; + _clonedIgnoreListItem.setType(IgnoreListManager::MessageIgnore); else if (ui.ctcpTypeButton->isChecked()) - _clonedIgnoreListItem.type = IgnoreListManager::CtcpIgnore; + _clonedIgnoreListItem.setType(IgnoreListManager::CtcpIgnore); else - _clonedIgnoreListItem.type = IgnoreListManager::SenderIgnore; + _clonedIgnoreListItem.setType(IgnoreListManager::SenderIgnore); if (ui.permanentStrictnessButton->isChecked()) - _clonedIgnoreListItem.strictness = IgnoreListManager::HardStrictness; + _clonedIgnoreListItem.setStrictness(IgnoreListManager::HardStrictness); else - _clonedIgnoreListItem.strictness = IgnoreListManager::SoftStrictness; + _clonedIgnoreListItem.setStrictness(IgnoreListManager::SoftStrictness); if (ui.networkScopeButton->isChecked()) { - _clonedIgnoreListItem.scope = IgnoreListManager::NetworkScope; + _clonedIgnoreListItem.setScope(IgnoreListManager::NetworkScope); ui.scopeRuleTextEdit->setEnabled(true); } else if (ui.channelScopeButton->isChecked()) { - _clonedIgnoreListItem.scope = IgnoreListManager::ChannelScope; + _clonedIgnoreListItem.setScope(IgnoreListManager::ChannelScope); ui.scopeRuleTextEdit->setEnabled(true); } else { - _clonedIgnoreListItem.scope = IgnoreListManager::GlobalScope; + _clonedIgnoreListItem.setScope(IgnoreListManager::GlobalScope); ui.scopeRuleTextEdit->setEnabled(false); } - if (_clonedIgnoreListItem.scope == IgnoreListManager::GlobalScope) { - _clonedIgnoreListItem.scopeRule = QString(); + if (_clonedIgnoreListItem.scope() == IgnoreListManager::GlobalScope) { + _clonedIgnoreListItem.setScopeRule(QString()); } else { - QStringList text = ui.scopeRuleTextEdit->toPlainText().split(";", QString::SkipEmptyParts); - QStringList::iterator it = text.begin(); - while (it != text.end()) { - *it = it->trimmed(); - ++it; - } - - _clonedIgnoreListItem.scopeRule = text.join("; "); + // Trim the resulting MultiWildcard expression + _clonedIgnoreListItem.setScopeRule( + ExpressionMatch::trimMultiWildcardWhitespace( + ui.scopeRuleTextEdit->toPlainText())); } - _clonedIgnoreListItem.ignoreRule = ui.ignoreRuleLineEdit->text(); - _clonedIgnoreListItem.isRegEx = ui.isRegExCheckBox->isChecked(); - _clonedIgnoreListItem.isActive = ui.isActiveCheckBox->isChecked(); + _clonedIgnoreListItem.setContents(ui.ignoreRuleLineEdit->text()); + _clonedIgnoreListItem.setIsRegEx(ui.isRegExCheckBox->isChecked()); + _clonedIgnoreListItem.setIsEnabled(ui.isActiveCheckBox->isChecked()); - if (!_clonedIgnoreListItem.ignoreRule.isEmpty() && _clonedIgnoreListItem != _ignoreListItem) + if (!_clonedIgnoreListItem.contents().isEmpty() && _clonedIgnoreListItem != _ignoreListItem) _hasChanged = true; else _hasChanged = false;