Files
pico-launcher/arm9/source/romBrowser/views/IconButtonView.cpp
2025-11-25 17:41:31 +01:00

99 lines
2.3 KiB
C++

#include "common.h"
#include "gui/input/InputProvider.h"
#include "IconButtonView.h"
bool IconButtonView::HandleInput(const InputProvider& inputProvider, FocusManager& focusManager)
{
if (inputProvider.Triggered(InputKey::A))
{
if (_action)
_action(this, _actionArg);
return true;
}
return View::HandleInput(inputProvider, focusManager);
}
bool IconButtonView::IsCircleBackgroundVisible() const
{
switch (_type)
{
case Type::Standard:
{
return false;
}
case Type::Filled:
case Type::Tonal:
{
return true;
}
default:
{
// shouldn't happen
return false;
}
}
}
md::sys::color IconButtonView::GetCircleBackgroundColor() const
{
switch (_type)
{
case Type::Standard:
{
return _backgroundColor;
}
case Type::Filled:
{
if (_state == State::ToggleUnselected)
return md::sys::color::surfaceContainerHighest;
else
return md::sys::color::primary;
}
case Type::Tonal:
{
if (_state == State::ToggleUnselected)
return md::sys::color::surfaceContainerHighest;
else
return md::sys::color::secondaryContainer;
}
default:
{
// shouldn't happen
return md::sys::color::onSurfaceVariant;
}
}
}
md::sys::color IconButtonView::GetForegroundColor() const
{
switch (_type)
{
case Type::Standard:
{
if (_state == State::ToggleSelected)
return md::sys::color::primary;
else
return md::sys::color::onSurfaceVariant;
}
case Type::Filled:
{
if (_state == State::ToggleUnselected)
return md::sys::color::primary;
else
return md::sys::color::onPrimary;
}
case Type::Tonal:
{
if (_state == State::ToggleUnselected)
return md::sys::color::onSurfaceVariant;
else
return md::sys::color::onSecondaryContainer;
}
default:
{
// shouldn't happen
return md::sys::color::onSurfaceVariant;
}
}
}