X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcorehighlightsettingspage.cpp;h=d4be7cf6ff5e04fcd844809c7f398c49ac18cf1f;hp=7bedc00d4f35fb5661ac49855b9aed02d112ab2f;hb=e7ca039bcfdef8e22946b4402643ce107e89709c;hpb=6a51298c1f18613e9b64ee746e7f846dfcd05290 diff --git a/src/qtui/settingspages/corehighlightsettingspage.cpp b/src/qtui/settingspages/corehighlightsettingspage.cpp index 7bedc00d..d4be7cf6 100644 --- a/src/qtui/settingspages/corehighlightsettingspage.cpp +++ b/src/qtui/settingspages/corehighlightsettingspage.cpp @@ -18,12 +18,12 @@ * 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) @@ -33,9 +33,12 @@ CoreHighlightSettingsPage::CoreHighlightSettingsPage(QWidget *parent) setupRuleTable(ui.highlightTable); setupRuleTable(ui.ignoredTable); - ui.highlightNicksComboBox->addItem(tr("All Nicks from Identity"), HighlightRuleManager::AllNicks); - ui.highlightNicksComboBox->addItem(tr("Current Nick"), HighlightRuleManager::CurrentNick); - ui.highlightNicksComboBox->addItem(tr("None"), HighlightRuleManager::NoNick); + ui.highlightNicksComboBox->addItem(tr("All Nicks from Identity"), QVariant(HighlightRuleManager::AllNicks)); + 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())); @@ -75,24 +78,35 @@ 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(); table->setShowGrid(false); - table->horizontalHeaderItem(RegExColumn)->setToolTip( + table->horizontalHeaderItem(CoreHighlightSettingsPage::RegExColumn)->setToolTip( tr("RegEx: This option determines if the highlight rule should be interpreted as a regular expression or just as a keyword.")); - table->horizontalHeaderItem(RegExColumn)->setWhatsThis( + table->horizontalHeaderItem(CoreHighlightSettingsPage::RegExColumn)->setWhatsThis( tr("RegEx: This option determines if the highlight rule should be interpreted as a regular expression or just as a keyword.")); - table->horizontalHeaderItem(CsColumn)->setToolTip( + table->horizontalHeaderItem(CoreHighlightSettingsPage::CsColumn)->setToolTip( tr("CS: This option determines if the highlight rule should be interpreted case sensitive.")); - table->horizontalHeaderItem(CsColumn)->setWhatsThis( + table->horizontalHeaderItem(CoreHighlightSettingsPage::CsColumn)->setWhatsThis( tr("CS: This option determines if the highlight rule should be interpreted case sensitive.")); - table->horizontalHeaderItem(ChanColumn)->setToolTip( + table->horizontalHeaderItem(CoreHighlightSettingsPage::ChanColumn)->setToolTip( tr("Channel: This regular expression determines for which channels the highlight rule works. Leave blank to match any channel. Put ! in the beginning to negate. Case insensitive.")); - table->horizontalHeaderItem(ChanColumn)->setWhatsThis( + table->horizontalHeaderItem(CoreHighlightSettingsPage::ChanColumn)->setWhatsThis( tr("Channel: This regular expression determines for which channels the highlight rule works. Leave blank to match any channel. Put ! in the beginning to negate. Case insensitive.")); #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) @@ -102,11 +116,11 @@ void CoreHighlightSettingsPage::setupRuleTable(QTableWidget *table) const table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::CsColumn, QHeaderView::ResizeToContents); table->horizontalHeader()->setResizeMode(CoreHighlightSettingsPage::ChanColumn, QHeaderView::ResizeToContents); #else - table->horizontalHeader()->setSectionResizeMode(EnableColumn, QHeaderView::ResizeToContents); - table->horizontalHeader()->setSectionResizeMode(NameColumn, QHeaderView::Stretch); - table->horizontalHeader()->setSectionResizeMode(RegExColumn, QHeaderView::ResizeToContents); - table->horizontalHeader()->setSectionResizeMode(CsColumn, QHeaderView::ResizeToContents); - table->horizontalHeader()->setSectionResizeMode(ChanColumn, QHeaderView::ResizeToContents); + 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::ChanColumn, QHeaderView::ResizeToContents); #endif } @@ -131,8 +145,9 @@ bool CoreHighlightSettingsPage::hasDefaults() const void CoreHighlightSettingsPage::defaults() { - ui.highlightNicksComboBox->setCurrentIndex(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(); emptyIgnoredTable(); @@ -292,7 +307,7 @@ 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->clear(); + ui.highlightTable->clearContents(); highlightList.clear(); } @@ -302,7 +317,7 @@ 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->clear(); + ui.ignoredTable->clearContents(); ignoredList.clear(); } @@ -317,6 +332,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 +370,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,12 +419,14 @@ 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); _initialized = true; + } else { + defaults(); } } @@ -437,9 +456,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()); @@ -450,4 +469,4 @@ void CoreHighlightSettingsPage::save() void CoreHighlightSettingsPage::widgetHasChanged() { setChangedState(true); -} \ No newline at end of file +}