overlays: Allow home menu 'entries' to support different alignment options
This commit is contained in:
@@ -5,7 +5,7 @@ namespace rsx
|
|||||||
{
|
{
|
||||||
namespace overlays
|
namespace overlays
|
||||||
{
|
{
|
||||||
home_menu_entry::home_menu_entry(home_menu::fa_icon icon, const std::string& text, u16 width)
|
home_menu_entry::home_menu_entry(home_menu::fa_icon icon, const std::string& text, u16 width, text_align alignment)
|
||||||
{
|
{
|
||||||
auto text_stack = std::make_unique<vertical_layout>();
|
auto text_stack = std::make_unique<vertical_layout>();
|
||||||
auto padding = std::make_unique<spacer>();
|
auto padding = std::make_unique<spacer>();
|
||||||
@@ -15,7 +15,7 @@ namespace rsx
|
|||||||
title->set_size(width, menu_entry_height);
|
title->set_size(width, menu_entry_height);
|
||||||
title->set_font("Arial", 14);
|
title->set_font("Arial", 14);
|
||||||
title->set_wrap_text(true);
|
title->set_wrap_text(true);
|
||||||
title->align_text(text_align::center);
|
title->align_text(alignment);
|
||||||
|
|
||||||
// Make back color transparent for text
|
// Make back color transparent for text
|
||||||
title->back_color.a = 0.f;
|
title->back_color.a = 0.f;
|
||||||
@@ -42,6 +42,8 @@ namespace rsx
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto image_size_with_padding = icon_view->w + 16;
|
const auto image_size_with_padding = icon_view->w + 16;
|
||||||
|
if (alignment == text_align::center)
|
||||||
|
{
|
||||||
if (width > image_size_with_padding)
|
if (width > image_size_with_padding)
|
||||||
{
|
{
|
||||||
auto text = text_stack->m_items.back().get();
|
auto text = text_stack->m_items.back().get();
|
||||||
@@ -53,6 +55,20 @@ namespace rsx
|
|||||||
// For autosized containers, just set the initial size, let the packing grow it automatically
|
// For autosized containers, just set the initial size, let the packing grow it automatically
|
||||||
this->set_size(offset, menu_entry_height);
|
this->set_size(offset, menu_entry_height);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (alignment == text_align::right)
|
||||||
|
{
|
||||||
|
auto text = text_stack->m_items.back().get();
|
||||||
|
static_cast<label*>(text)->auto_resize(false, width - image_size_with_padding);
|
||||||
|
|
||||||
|
if (const u16 combined_w = (text->w + image_size_with_padding); combined_w < width)
|
||||||
|
{
|
||||||
|
// Insert a spacer
|
||||||
|
std::unique_ptr<overlay_element> spacer_element = std::make_unique<spacer>();
|
||||||
|
spacer_element->set_size(combined_w, icon_view->h);
|
||||||
|
add_element(spacer_element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
add_element(icon_view);
|
add_element(icon_view);
|
||||||
add_element(text_stack);
|
add_element(text_stack);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace rsx
|
|||||||
struct home_menu_entry : horizontal_layout
|
struct home_menu_entry : horizontal_layout
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
home_menu_entry(home_menu::fa_icon icon, const std::string& text, u16 width);
|
home_menu_entry(home_menu::fa_icon icon, const std::string& text, u16 width, text_align alignment = text_align::center);
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T, typename C>
|
template <typename T, typename C>
|
||||||
|
|||||||
Reference in New Issue
Block a user