X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcorehighlightsettingspage.cpp;h=242c3181d8ad370499aeb14124131c72563b83c6;hp=debf0c13df436a06dcb73b0f96d63175aee28f6b;hb=106526817f753cdd680c783fc58968d5111d16eb;hpb=60ae6c56db55ea84c59ad1e589a0ff54abc057e1 diff --git a/src/qtui/settingspages/corehighlightsettingspage.cpp b/src/qtui/settingspages/corehighlightsettingspage.cpp index debf0c13..242c3181 100644 --- a/src/qtui/settingspages/corehighlightsettingspage.cpp +++ b/src/qtui/settingspages/corehighlightsettingspage.cpp @@ -18,15 +18,15 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include #include -#include +#include "client.h" #include "corehighlightsettingspage.h" #include "qtui.h" -#include "client.h" CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent) - : SettingsPage(tr("Interface"), tr("Core-Side Highlights"), parent) + : SettingsPage(tr("Interface"), tr("Remote Highlights"), parent) { ui.setupUi(this); @@ -37,8 +37,12 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent) 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))); + 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.ignoredAdd, SIGNAL(clicked(bool)), this, SLOT(addNewIgnoredRow())); connect(ui.ignoredRemove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedIgnoredRows())); @@ -75,6 +79,17 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent) connect(Client::instance(), SIGNAL(connected()), this, SLOT(clientConnected())); } + +void CoreHighlightSettingsPage::coreConnectionStateChanged(bool state) +{ + setEnabled(state); + if (state) { + load(); + } else { + revert(); + } +} + void CoreHighlightSettingsPage::setupRuleTable(QTableWidget *table) const { table->verticalHeader()->hide(); @@ -131,7 +146,8 @@ bool CoreHighlightSettingsPage::hasDefaults() const void CoreHighlightSettingsPage::defaults() { - int defaultIndex = ui.highlightNicksComboBox->findData(QVariant(HighlightRuleManager::HighlightNickType::CurrentNick)); + int highlightNickType = HighlightRuleManager::HighlightNickType::CurrentNick; + int defaultIndex = ui.highlightNicksComboBox->findData(QVariant(highlightNickType)); ui.highlightNicksComboBox->setCurrentIndex(defaultIndex); ui.nicksCaseSensitive->setChecked(false); emptyHighlightTable(); @@ -292,7 +308,9 @@ void CoreHighlightSettingsPage::emptyHighlightTable() if (ui.highlightTable->rowCount() != highlightList.size()) { qDebug() << "something is wrong: ui.highlight and highlightList don't have the same size!"; } - ui.highlightTable->clearContents(); + while (ui.highlightTable->rowCount()) { + ui.highlightTable->removeRow(0); + } highlightList.clear(); } @@ -302,7 +320,9 @@ void CoreHighlightSettingsPage::emptyIgnoredTable() if (ui.ignoredTable->rowCount() != ignoredList.size()) { qDebug() << "something is wrong: ui.highlight and highlightList don't have the same size!"; } - ui.ignoredTable->clearContents(); + while (ui.ignoredTable->rowCount()) { + ui.ignoredTable->removeRow(0); + } ignoredList.clear(); } @@ -317,6 +337,7 @@ void CoreHighlightSettingsPage::highlightTableChanged(QTableWidgetItem *item) switch (item->column()) { case CoreHighlightSettingsPage::EnableColumn: highlightRule.isEnabled = (item->checkState() == Qt::Checked); + break; case CoreHighlightSettingsPage::NameColumn: if (item->text() == "") item->setText(tr("this shouldn't be empty")); @@ -354,6 +375,7 @@ void CoreHighlightSettingsPage::ignoredTableChanged(QTableWidgetItem *item) switch (item->column()) { case CoreHighlightSettingsPage::EnableColumn: ignoredRule.isEnabled = (item->checkState() == Qt::Checked); + break; case CoreHighlightSettingsPage::NameColumn: if (item->text() == "") item->setText(tr("this shouldn't be empty")); @@ -402,8 +424,8 @@ void CoreHighlightSettingsPage::load() } } - ui.highlightNicksComboBox - ->setCurrentIndex(ui.highlightNicksComboBox->findData(QVariant(ruleManager->highlightNick()))); + int highlightNickType = ruleManager->highlightNick(); + ui.highlightNicksComboBox->setCurrentIndex(ui.highlightNicksComboBox->findData(QVariant(highlightNickType))); ui.nicksCaseSensitive->setChecked(ruleManager->nicksCaseSensitive()); setChangedState(false); @@ -439,9 +461,9 @@ void CoreHighlightSettingsPage::save() rule.sender, rule.chanName); } - auto highlightNickType = ui.highlightNicksComboBox->currentData().value(); + auto highlightNickType = ui.highlightNicksComboBox->itemData(ui.highlightNicksComboBox->currentIndex()).value(); - clonedManager.setHighlightNick(highlightNickType); + clonedManager.setHighlightNick(HighlightRuleManager::HighlightNickType(highlightNickType)); clonedManager.setNicksCaseSensitive(ui.nicksCaseSensitive->isChecked()); ruleManager->requestUpdate(clonedManager.toVariantMap()); @@ -452,4 +474,33 @@ void CoreHighlightSettingsPage::save() void CoreHighlightSettingsPage::widgetHasChanged() { setChangedState(true); -} \ No newline at end of file +} + +void CoreHighlightSettingsPage::importRules() { + NotificationSettings notificationSettings; + + auto clonedManager = HighlightRuleManager(); + clonedManager.fromVariantMap(Client::highlightRuleManager()->toVariantMap()); + + for (const auto &variant : notificationSettings.highlightList()) { + auto highlightRule = variant.toMap(); + + clonedManager.addHighlightRule( + highlightRule["Name"].toString(), + highlightRule["RegEx"].toBool(), + highlightRule["CS"].toBool(), + highlightRule["Enable"].toBool(), + false, + "", + highlightRule["Channel"].toString() + ); + } + + Client::highlightRuleManager()->requestUpdate(clonedManager.toVariantMap()); + setChangedState(false); + load(); +} + +bool CoreHighlightSettingsPage::isSelectable() const { + return Client::isConnected() && Client::isCoreFeatureEnabled(Quassel::Feature::CoreSideHighlights); +}