X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fhighlightsettingspage.cpp;h=77aa29723d7dbc9c4221c6626803680c1f35a585;hp=09887ba7a3de53297891340b06340c0458d1b73b;hb=01ed2953cbad3f2de3df262dc1601e82d903b4a8;hpb=7a814314a9bb879f3af6148ce74f31d6427650db diff --git a/src/qtui/settingspages/highlightsettingspage.cpp b/src/qtui/settingspages/highlightsettingspage.cpp index 09887ba7..77aa2972 100644 --- a/src/qtui/settingspages/highlightsettingspage.cpp +++ b/src/qtui/settingspages/highlightsettingspage.cpp @@ -31,18 +31,27 @@ HighlightSettingsPage::HighlightSettingsPage(QWidget *parent) ui.setupUi(this); ui.highlightTable->verticalHeader()->hide(); ui.highlightTable->setShowGrid(false); - ui.highlightTable->setColumnWidth( 0, 50 ); - ui.highlightTable->setColumnWidth( 2, 50 ); - ui.highlightTable->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed); - ui.highlightTable->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch); - ui.highlightTable->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed); + + ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::RegExColumn)->setToolTip("RegEx: This option determines if the highlight rule should be interpreted as a regular expression or just as a keyword."); + ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::RegExColumn)->setWhatsThis("RegEx: This option determines if the highlight rule should be interpreted as a regular expression or just as a keyword."); + + ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::CsColumn)->setToolTip("CS: This option determines if the highlight rule should be interpreted case sensitive."); + ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::CsColumn)->setWhatsThis("CS: This option determines if the highlight rule should be interpreted case sensitive."); + + ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::NameColumn, QHeaderView::Stretch); + ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::RegExColumn, QHeaderView::ResizeToContents); + ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::CsColumn, QHeaderView::ResizeToContents); + ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::EnableColumn, QHeaderView::ResizeToContents); connect(ui.add, SIGNAL(clicked(bool)), this, SLOT(addNewRow())); connect(ui.remove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedRows())); //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(selectRow(QTableWidgetItem *))); + connect(ui.highlightAllNicks, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.highlightCurrentNick, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.highlightNoNick, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.nicksCaseSensitive, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.add, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); connect(ui.remove, SIGNAL(clicked()), this, SLOT(widgetHasChanged())); connect(ui.highlightTable, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(tableChanged(QTableWidgetItem *))); @@ -54,20 +63,31 @@ bool HighlightSettingsPage::hasDefaults() const { void HighlightSettingsPage::defaults() { ui.highlightCurrentNick->setChecked(true); + ui.nicksCaseSensitive->setChecked(false); emptyTable(); widgetHasChanged(); } -void HighlightSettingsPage::addNewRow(bool regex, QString name, bool enable) { +void HighlightSettingsPage::addNewRow(QString name, bool regex, bool cs, bool enable) { ui.highlightTable->setRowCount(ui.highlightTable->rowCount()+1); + + QTableWidgetItem *nameItem = new QTableWidgetItem(name); + QTableWidgetItem *regexItem = new QTableWidgetItem(""); if(regex) regexItem->setCheckState(Qt::Checked); else regexItem->setCheckState(Qt::Unchecked); regexItem->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable); - QTableWidgetItem *nameItem = new QTableWidgetItem(name); + + QTableWidgetItem *csItem = new QTableWidgetItem(""); + if(cs) + csItem->setCheckState(Qt::Checked); + else + csItem->setCheckState(Qt::Unchecked); + csItem->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable); + QTableWidgetItem *enableItem = new QTableWidgetItem(""); if(enable) enableItem->setCheckState(Qt::Checked); @@ -76,14 +96,16 @@ void HighlightSettingsPage::addNewRow(bool regex, QString name, bool enable) { enableItem->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable); int lastRow = ui.highlightTable->rowCount()-1; - ui.highlightTable->setItem(lastRow, 0, regexItem); - ui.highlightTable->setItem(lastRow, 1, nameItem); - ui.highlightTable->setItem(lastRow, 2, enableItem); + ui.highlightTable->setItem(lastRow, HighlightSettingsPage::NameColumn, nameItem); + ui.highlightTable->setItem(lastRow, HighlightSettingsPage::RegExColumn, regexItem); + ui.highlightTable->setItem(lastRow, HighlightSettingsPage::CsColumn, csItem); + ui.highlightTable->setItem(lastRow, HighlightSettingsPage::EnableColumn, enableItem); QVariantMap highlightRule; - highlightRule["regex"] = regex; - highlightRule["name"] = name; - highlightRule["enable"] = enable; + highlightRule["Name"] = name; + highlightRule["RegEx"] = regex; + highlightRule["CS"] = cs; + highlightRule["Enable"] = enable; highlightList.append(highlightRule); } @@ -108,7 +130,7 @@ void HighlightSettingsPage::removeSelectedRows() { void HighlightSettingsPage::selectRow(QTableWidgetItem *item) { int row = item->row(); bool selected = item->isSelected(); - ui.highlightTable->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, 2), selected); + ui.highlightTable->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, HighlightSettingsPage::ColumnCount-1), selected); } void HighlightSettingsPage::emptyTable() { @@ -125,23 +147,26 @@ void HighlightSettingsPage::emptyTable() { } void HighlightSettingsPage::tableChanged(QTableWidgetItem *item) { - if(item->row()+1 > highlightList.size()) + if(item->row()+1 > highlightList.size()) return; QVariantMap highlightRule = highlightList.value(item->row()).toMap(); switch(item->column()) { - case 0: - highlightRule["regex"] = (item->checkState() == Qt::Checked); - break; - case 1: - if(item->text() == "") + case HighlightSettingsPage::NameColumn: + if(item->text() == "") item->setText(tr("this shouldn't be empty")); - highlightRule["name"] = item->text(); + highlightRule["Name"] = item->text(); break; - case 2: - highlightRule["enable"] = (item->checkState() == Qt::Checked); + case HighlightSettingsPage::RegExColumn: + highlightRule["RegEx"] = (item->checkState() == Qt::Checked); + break; + case HighlightSettingsPage::CsColumn: + highlightRule["CS"] = (item->checkState() == Qt::Checked); + break; + case HighlightSettingsPage::EnableColumn: + highlightRule["Enable"] = (item->checkState() == Qt::Checked); break; } highlightList[item->row()] = highlightRule; @@ -155,14 +180,27 @@ void HighlightSettingsPage::load() { foreach(QVariant highlight, notificationSettings.highlightList()) { QVariantMap highlightRule = highlight.toMap(); - bool regex = highlightRule["regex"].toBool(); - QString name = highlightRule["name"].toString(); - bool enable = highlightRule["enable"].toBool(); + QString name = highlightRule["Name"].toString(); + bool regex = highlightRule["RegEx"].toBool(); + bool cs = highlightRule["CS"].toBool(); + bool enable = highlightRule["Enable"].toBool(); - addNewRow(regex, name, enable); + addNewRow(name, regex, cs, enable); } - ui.highlightCurrentNick->setChecked(notificationSettings.highlightCurrentNick()); + switch(notificationSettings.highlightNick()) + { + case NotificationSettings::NoNick: + ui.highlightNoNick->setChecked(true); + break; + case NotificationSettings::CurrentNick: + ui.highlightCurrentNick->setChecked(true); + break; + case NotificationSettings::AllNicks: + ui.highlightAllNicks->setChecked(true); + break; + } + ui.nicksCaseSensitive->setChecked(notificationSettings.nicksCaseSensitive()); setChangedState(false); } @@ -170,7 +208,17 @@ void HighlightSettingsPage::load() { void HighlightSettingsPage::save() { NotificationSettings notificationSettings; notificationSettings.setHighlightList(highlightList); - notificationSettings.setHighlightCurrentNick(ui.highlightCurrentNick->isChecked()); + + NotificationSettings::HighlightNickType highlightNickType; + if(ui.highlightNoNick->isChecked()) + highlightNickType = NotificationSettings::NoNick; + if(ui.highlightCurrentNick->isChecked()) + highlightNickType = NotificationSettings::CurrentNick; + if(ui.highlightAllNicks->isChecked()) + highlightNickType = NotificationSettings::AllNicks; + + notificationSettings.setHighlightNick(highlightNickType); + notificationSettings.setNicksCaseSensitive(ui.nicksCaseSensitive->isChecked()); load(); setChangedState(false); @@ -184,12 +232,18 @@ void HighlightSettingsPage::widgetHasChanged() { bool HighlightSettingsPage::testHasChanged() { NotificationSettings notificationSettings; - if(notificationSettings.highlightCurrentNick() != ui.highlightCurrentNick->isChecked()) return true; - if(notificationSettings.highlightList() != highlightList) return true; - - return true; -} - + NotificationSettings::HighlightNickType highlightNickType; + if(ui.highlightNoNick->isChecked()) + highlightNickType = NotificationSettings::NoNick; + if(ui.highlightCurrentNick->isChecked()) + highlightNickType = NotificationSettings::CurrentNick; + if(ui.highlightAllNicks->isChecked()) + highlightNickType = NotificationSettings::AllNicks; + if(notificationSettings.highlightNick() != highlightNickType) return true; + if(notificationSettings.nicksCaseSensitive() != ui.nicksCaseSensitive->isChecked()) return true; + if(notificationSettings.highlightList() != highlightList) return true; + return false; +}