Loading...
Searching...
No Matches
ml::ToggleGroup Class Reference

A vertical group of toggle switches. More...

#include <Malena/Graphics/Controls/ToggleGroup.h>

Inheritance diagram for ml::ToggleGroup:
[legend]

Public Types

using Flag = ToggleGroupManifest::Flag
using State = ToggleGroupManifest::State

Public Member Functions

 ToggleGroup ()
 ToggleGroup (const ToggleGroup &)=delete
 ~ToggleGroup ()
void add (ButtonToggle &toggle, const std::string &key)
void add (PillToggle &toggle, const std::string &key)
void add (SegmentToggle &toggle, const std::string &key)
ButtonToggleaddButtonToggle (const std::string &label, const std::string &key, bool on=false)
 Create and add a new ButtonToggle.
SegmentToggleaddSegmentToggle (const std::string &offLabel, const std::string &onLabel, const std::string &key, bool on=false)
 Create and add a new SegmentToggle.
PillToggleaddToggle (const std::string &label, const std::string &key, bool on=false)
 Create and add a new PillToggle with a right label.
void applySettingsToAll (const ButtonSettings &s)
void applySettingsToAll (const PillSettings &s)
void applySettingsToAll (const SegmentSettings &s)
void applyStyleToAll (const ButtonStyle &s)
void applyStyleToAll (const PillStyle &s)
void applyStyleToAll (const SegmentStyle &s)
void applyThemeToAll (const ButtonTheme &t)
void applyThemeToAll (const PillTheme &t)
void applyThemeToAll (const SegmentTheme &t)
void clearToggles ()
sf::FloatRect getGlobalBounds () const override
std::vector< std::string > getOnKeys () const
sf::Vector2f getPosition () const override
bool isOn (const std::string &key) const
void onAnyToggled (std::function< void(const std::string &, bool)> callback)
ToggleGroupoperator= (const ToggleGroup &)=delete
void setAllOff ()
void setAllOn ()
void setCharacterSize (unsigned int size)
 Set character size on the default pill theme and all owned pills.
void setDefaultSettings (const ButtonSettings &s)
void setDefaultSettings (const PillSettings &s)
 Set the default settings applied to new owned PillToggles.
void setDefaultSettings (const SegmentSettings &s)
void setDefaultStyle (const ButtonStyle &s)
void setDefaultStyle (const PillStyle &s)
 Set default settings and theme together.
void setDefaultStyle (const SegmentStyle &s)
void setDefaultTheme (const ButtonTheme &t)
void setDefaultTheme (const PillTheme &t)
 Set the default theme applied to new owned PillToggles.
void setDefaultTheme (const SegmentTheme &t)
void setFont (const sf::Font &&)=delete
void setFont (const sf::Font &font)
 Set font on the default pill theme and all owned pills.
void setOn (const std::string &key, bool on)
void setPosition (const sf::Vector2f &position) override
void setSpacing (float spacing)

Protected Member Functions

void draw (sf::RenderTarget &target, sf::RenderStates states) const override

Detailed Description

A vertical group of toggle switches.

Lays out multiple toggles vertically with consistent spacing. Supports PillToggle, SegmentToggle, and ButtonToggle items. All toggles are independent — multiple can be on simultaneously.

Toggles created via addToggle() inherit the group's default style for that type. Set defaults before adding, or call applySettingsToAll() / applyThemeToAll() / applyStyleToAll() to update existing toggles.

ml::ToggleGroup settings;
settings.setPosition({200.f, 100.f});
settings.addToggle("Dark mode", "dark_mode", true);
settings.addToggle("Subtitles", "subtitles");
settings.addToggle("Fullscreen", "fullscreen");
settings.onAnyToggled([](const std::string& key, bool on){
std::cout << key << ": " << on << "\n";
});
addComponent(settings);
A vertical group of toggle switches.
Definition ToggleGroup.h:61
void onAnyToggled(std::function< void(const std::string &, bool)> callback)
void setPosition(const sf::Vector2f &position) override
PillToggle & addToggle(const std::string &label, const std::string &key, bool on=false)
Create and add a new PillToggle with a right label.
See also
PillToggle, SegmentToggle, ButtonToggle, PillStyle

Definition at line 60 of file ToggleGroup.h.

Member Typedef Documentation

◆ Flag

Definition at line 63 of file ToggleGroup.h.

◆ State

Constructor & Destructor Documentation

◆ ToggleGroup() [1/2]

ml::ToggleGroup::ToggleGroup ( )
explicit

◆ ~ToggleGroup()

ml::ToggleGroup::~ToggleGroup ( )

◆ ToggleGroup() [2/2]

ml::ToggleGroup::ToggleGroup ( const ToggleGroup & )
delete

Member Function Documentation

◆ add() [1/3]

void ml::ToggleGroup::add ( ButtonToggle & toggle,
const std::string & key )

◆ add() [2/3]

void ml::ToggleGroup::add ( PillToggle & toggle,
const std::string & key )

◆ add() [3/3]

void ml::ToggleGroup::add ( SegmentToggle & toggle,
const std::string & key )

◆ addButtonToggle()

ButtonToggle & ml::ToggleGroup::addButtonToggle ( const std::string & label,
const std::string & key,
bool on = false )

Create and add a new ButtonToggle.

Returns
Reference to the created toggle.

◆ addSegmentToggle()

SegmentToggle & ml::ToggleGroup::addSegmentToggle ( const std::string & offLabel,
const std::string & onLabel,
const std::string & key,
bool on = false )

Create and add a new SegmentToggle.

Returns
Reference to the created toggle.

◆ addToggle()

PillToggle & ml::ToggleGroup::addToggle ( const std::string & label,
const std::string & key,
bool on = false )

Create and add a new PillToggle with a right label.

Inherits the current default PillSettings and PillTheme.

Returns
Reference to the created toggle for further customisation.

◆ applySettingsToAll() [1/3]

void ml::ToggleGroup::applySettingsToAll ( const ButtonSettings & s)

◆ applySettingsToAll() [2/3]

void ml::ToggleGroup::applySettingsToAll ( const PillSettings & s)

◆ applySettingsToAll() [3/3]

void ml::ToggleGroup::applySettingsToAll ( const SegmentSettings & s)

◆ applyStyleToAll() [1/3]

void ml::ToggleGroup::applyStyleToAll ( const ButtonStyle & s)

◆ applyStyleToAll() [2/3]

void ml::ToggleGroup::applyStyleToAll ( const PillStyle & s)

◆ applyStyleToAll() [3/3]

void ml::ToggleGroup::applyStyleToAll ( const SegmentStyle & s)

◆ applyThemeToAll() [1/3]

void ml::ToggleGroup::applyThemeToAll ( const ButtonTheme & t)

◆ applyThemeToAll() [2/3]

void ml::ToggleGroup::applyThemeToAll ( const PillTheme & t)

◆ applyThemeToAll() [3/3]

void ml::ToggleGroup::applyThemeToAll ( const SegmentTheme & t)

◆ clearToggles()

void ml::ToggleGroup::clearToggles ( )

◆ draw()

void ml::ToggleGroup::draw ( sf::RenderTarget & target,
sf::RenderStates states ) const
overrideprotected

◆ getGlobalBounds()

sf::FloatRect ml::ToggleGroup::getGlobalBounds ( ) const
override

◆ getOnKeys()

std::vector< std::string > ml::ToggleGroup::getOnKeys ( ) const
nodiscard

◆ getPosition()

sf::Vector2f ml::ToggleGroup::getPosition ( ) const
override

◆ isOn()

bool ml::ToggleGroup::isOn ( const std::string & key) const
nodiscard

◆ onAnyToggled()

void ml::ToggleGroup::onAnyToggled ( std::function< void(const std::string &, bool)> callback)

◆ operator=()

ToggleGroup & ml::ToggleGroup::operator= ( const ToggleGroup & )
delete

◆ setAllOff()

void ml::ToggleGroup::setAllOff ( )

◆ setAllOn()

void ml::ToggleGroup::setAllOn ( )

◆ setCharacterSize()

void ml::ToggleGroup::setCharacterSize ( unsigned int size)

Set character size on the default pill theme and all owned pills.

◆ setDefaultSettings() [1/3]

void ml::ToggleGroup::setDefaultSettings ( const ButtonSettings & s)

◆ setDefaultSettings() [2/3]

void ml::ToggleGroup::setDefaultSettings ( const PillSettings & s)

Set the default settings applied to new owned PillToggles.

◆ setDefaultSettings() [3/3]

void ml::ToggleGroup::setDefaultSettings ( const SegmentSettings & s)

◆ setDefaultStyle() [1/3]

void ml::ToggleGroup::setDefaultStyle ( const ButtonStyle & s)

◆ setDefaultStyle() [2/3]

void ml::ToggleGroup::setDefaultStyle ( const PillStyle & s)

Set default settings and theme together.

◆ setDefaultStyle() [3/3]

void ml::ToggleGroup::setDefaultStyle ( const SegmentStyle & s)

◆ setDefaultTheme() [1/3]

void ml::ToggleGroup::setDefaultTheme ( const ButtonTheme & t)

◆ setDefaultTheme() [2/3]

void ml::ToggleGroup::setDefaultTheme ( const PillTheme & t)

Set the default theme applied to new owned PillToggles.

◆ setDefaultTheme() [3/3]

void ml::ToggleGroup::setDefaultTheme ( const SegmentTheme & t)

◆ setFont() [1/2]

void ml::ToggleGroup::setFont ( const sf::Font && )
delete

◆ setFont() [2/2]

void ml::ToggleGroup::setFont ( const sf::Font & font)

Set font on the default pill theme and all owned pills.

◆ setOn()

void ml::ToggleGroup::setOn ( const std::string & key,
bool on )

◆ setPosition()

void ml::ToggleGroup::setPosition ( const sf::Vector2f & position)
override

◆ setSpacing()

void ml::ToggleGroup::setSpacing ( float spacing)

The documentation for this class was generated from the following file: