Skip to content

Commit

Permalink
DolphinQt: Add Show/Hide All options to gamelist region menu
Browse files Browse the repository at this point in the history
  • Loading branch information
Dentomologist committed Oct 30, 2020
1 parent f665dda commit 7877d81
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions Source/Core/DolphinQt/MenuBar.cpp
Expand Up @@ -695,20 +695,29 @@ void MenuBar::AddShowRegionsMenu(QMenu* view_menu)
{tr("Show World"), &SConfig::GetInstance().m_ListWorld},
{tr("Show Unknown"), &SConfig::GetInstance().m_ListUnknown}};

QActionGroup* region_group = new QActionGroup(this);
QMenu* region_menu = view_menu->addMenu(tr("Show Regions"));
region_group->setExclusive(false);
QMenu* const region_menu = view_menu->addMenu(tr("Show Regions"));
const QAction* const show_all_regions = region_menu->addAction(tr("Show All"));
const QAction* const hide_all_regions = region_menu->addAction(tr("Hide All"));
region_menu->addSeparator();

for (const auto& key : region_map.keys())
{
bool* config = region_map[key];
QAction* action = region_group->addAction(region_menu->addAction(key));
action->setCheckable(true);
action->setChecked(*config);
connect(action, &QAction::toggled, [this, config, key](bool value) {
*config = value;
emit GameListRegionVisibilityToggled(key, value);
});
bool* const config = region_map[key];
QAction* const menu_item = region_menu->addAction(key);
menu_item->setCheckable(true);
menu_item->setChecked(*config);

const auto SetVisibility = [this, config, key, menu_item](bool visibility) {
menu_item->setChecked(visibility);
*config = visibility;
emit GameListRegionVisibilityToggled(key, visibility);
};
const auto SetVisible = std::bind(SetVisibility, true);
const auto SetHidden = std::bind(SetVisibility, false);

connect(menu_item, &QAction::toggled, SetVisibility);
connect(show_all_regions, &QAction::triggered, menu_item, SetVisible);
connect(hide_all_regions, &QAction::triggered, menu_item, SetHidden);
}
}

Expand Down

0 comments on commit 7877d81

Please sign in to comment.