Determine operator enum instead of comparing with magic numbers

This commit is contained in:
kleinfreund 2018-02-12 19:43:17 +01:00 committed by John Maguire
parent 37262434b7
commit 2555595ce0
1 changed files with 15 additions and 10 deletions

View File

@ -149,6 +149,9 @@ void SearchTermWidget::FieldChanged(int index) {
// Show the correct value editor // Show the correct value editor
QWidget* page = nullptr; QWidget* page = nullptr;
SearchTerm::Operator op = static_cast<SearchTerm::Operator>(
ui_->op->itemData(ui_->op->currentIndex()).toInt()
);
switch (type) { switch (type) {
case SearchTerm::Type_Time: case SearchTerm::Type_Time:
page = ui_->page_time; page = ui_->page_time;
@ -163,7 +166,7 @@ void SearchTermWidget::FieldChanged(int index) {
page = ui_->page_rating; page = ui_->page_rating;
break; break;
case SearchTerm::Type_Text: case SearchTerm::Type_Text:
if (ui_->op->currentIndex() == 4 || ui_->op->currentIndex() == 5) { if (op == SearchTerm::Op_Empty || op == SearchTerm::Op_NotEmpty) {
page = ui_->page_empty; page = ui_->page_empty;
} else { } else {
page = ui_->page_text; page = ui_->page_text;
@ -193,27 +196,29 @@ void SearchTermWidget::FieldChanged(int index) {
} }
void SearchTermWidget::OpChanged(int index) { void SearchTermWidget::OpChanged(int index) {
// Determine the currently selected operator
SearchTerm::Operator op = static_cast<SearchTerm::Operator>(
// This uses the operatorss index in the combobox to get its enum value
ui_->op->itemData(ui_->op->currentIndex()).toInt()
);
// We need to change the page only in the following case
if ((ui_->value_stack->currentWidget() == ui_->page_text) || if ((ui_->value_stack->currentWidget() == ui_->page_text) ||
(ui_->value_stack->currentWidget() == ui_->page_empty)) { (ui_->value_stack->currentWidget() == ui_->page_empty)) {
QWidget* page = nullptr; QWidget* page = nullptr;
// This assumes the operators always appear in the same order. if (op == SearchTerm::Op_Empty || op == SearchTerm::Op_NotEmpty) {
// Needs a better way for checking which is the current operator.
if (index == 4 || index == 5) {
page = ui_->page_empty; page = ui_->page_empty;
} else { } else {
page = ui_->page_text; page = ui_->page_text;
} }
ui_->value_stack->setCurrentWidget(page); ui_->value_stack->setCurrentWidget(page);
} } else if ((ui_->value_stack->currentWidget() == ui_->page_date) ||
// We need to change the page only in the following case
else if ((ui_->value_stack->currentWidget() == ui_->page_date) ||
(ui_->value_stack->currentWidget() == ui_->page_date_numeric) || (ui_->value_stack->currentWidget() == ui_->page_date_numeric) ||
(ui_->value_stack->currentWidget() == ui_->page_date_relative)) { (ui_->value_stack->currentWidget() == ui_->page_date_relative)) {
QWidget* page = nullptr; QWidget* page = nullptr;
if (index == 4 || index == 5) { if (op == SearchTerm::Op_NumericDate || op == SearchTerm::Op_NumericDateNot) {
page = ui_->page_date_numeric; page = ui_->page_date_numeric;
} else if (index == 6) { } else if (op == SearchTerm::Op_RelativeDate) {
page = ui_->page_date_relative; page = ui_->page_date_relative;
} else { } else {
page = ui_->page_date; page = ui_->page_date;