* Handle the badge configuration drop down selection. * @param feature Feature being used. * @param columns Maximum column number permitted. * @param result Selected dropdown item value. * @param click_result Dropdown click result. * @return true iff the caller should reinitialise their widgets. */
| 463 | * @return true iff the caller should reinitialise their widgets. |
| 464 | */ |
| 465 | bool HandleBadgeConfigurationDropDownClick(GrfSpecFeature feature, uint columns, int result, int click_result, BadgeFilterChoices &choices) |
| 466 | { |
| 467 | if (result == INT_MAX) { |
| 468 | ResetBadgeClassConfiguration(feature); |
| 469 | return true; |
| 470 | } |
| 471 | |
| 472 | Badge *class_badge = GetClassBadge(static_cast<BadgeClassID>(result)); |
| 473 | if (class_badge == nullptr) return false; |
| 474 | |
| 475 | switch (click_result) { |
| 476 | case BADGE_CLICK_MOVE_DOWN: // Move down button. |
| 477 | BadgeClassMoveNext(feature, *class_badge, columns); |
| 478 | break; |
| 479 | case BADGE_CLICK_MOVE_UP: // Move up button. |
| 480 | BadgeClassMovePrevious(feature, *class_badge); |
| 481 | break; |
| 482 | case BADGE_CLICK_TOGGLE_ICON: |
| 483 | case BADGE_CLICK_TOGGLE_FILTER: |
| 484 | BadgeClassToggleVisibility(feature, *class_badge, click_result, choices); |
| 485 | break; |
| 486 | default: |
| 487 | break; |
| 488 | } |
| 489 | |
| 490 | return true; |
| 491 | } |
| 492 | |
| 493 | NWidgetBadgeFilter::NWidgetBadgeFilter(Colours colour, WidgetID index, GrfSpecFeature feature, BadgeClassID badge_class) |
| 494 | : NWidgetLeaf(WWT_DROPDOWN, colour, index, WidgetData{ .string = STR_JUST_STRING }, STR_NULL) |
no test coverage detected