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

A grid of captioned image thumbnails from which exactly one is selectable — a Zoom-style "what do you want to share?" picker. More...

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

Inheritance diagram for ml::ThumbnailPicker:
[legend]

Public Types

using Flag = ThumbnailPickerManifest::Flag

Public Member Functions

 ThumbnailPicker (const sf::Font &font=FontManager<>::getDefault())
 ThumbnailPicker (const ThumbnailPicker &)=delete
void addThumbnail (const sf::Image &image, const std::string &caption)
void clear ()
int count () const
sf::FloatRect getGlobalBounds () const override
sf::Vector2f getPosition () const override
int getSelectedIndex () const
void onSelectionChanged (std::function< void(int)> cb)
ThumbnailPickeroperator= (const ThumbnailPicker &)=delete
void setActive (bool active)
void setColumns (int columns)
void setPosition (const sf::Vector2f &position) override
void setSelectedIndex (int index)
void setTileSize (float w, float h)

Protected Member Functions

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

Detailed Description

A grid of captioned image thumbnails from which exactly one is selectable — a Zoom-style "what do you want to share?" picker.

Self-contained: it owns each thumbnail's sf::Texture, lays the tiles out in a grid, draws them with a caption and a highlight on the selected tile, and resolves clicks itself by hit-testing the tile rectangles against the mouse (the same approach Modal uses), so it needs no child components.

Designed to be handed to a Modal as its content (it is window-centred and drawn by the modal). Call setActive(true) while the modal is up so clicks are interpreted, and read getSelectedIndex() on confirm.

Usage

picker.addThumbnail(displayImage, "Display 1 (1920x1080, main)");
picker.addThumbnail(windowImage, "Keynote — Lecture 3");
picker.onSelectionChanged([](int i){ });
modal.setContent(picker);
A grid of captioned image thumbnails from which exactly one is selectable — a Zoom-style "what do you...
void addThumbnail(const sf::Image &image, const std::string &caption)
void onSelectionChanged(std::function< void(int)> cb)

Definition at line 52 of file ThumbnailPicker.h.

Member Typedef Documentation

◆ Flag

Constructor & Destructor Documentation

◆ ThumbnailPicker() [1/2]

ml::ThumbnailPicker::ThumbnailPicker ( const sf::Font & font = FontManager<>::getDefault())
explicit

◆ ThumbnailPicker() [2/2]

ml::ThumbnailPicker::ThumbnailPicker ( const ThumbnailPicker & )
delete

Member Function Documentation

◆ addThumbnail()

void ml::ThumbnailPicker::addThumbnail ( const sf::Image & image,
const std::string & caption )

◆ clear()

void ml::ThumbnailPicker::clear ( )

◆ count()

int ml::ThumbnailPicker::count ( ) const
nodiscard

◆ draw()

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

◆ getGlobalBounds()

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

◆ getPosition()

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

◆ getSelectedIndex()

int ml::ThumbnailPicker::getSelectedIndex ( ) const
nodiscard

◆ onSelectionChanged()

void ml::ThumbnailPicker::onSelectionChanged ( std::function< void(int)> cb)

◆ operator=()

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

◆ setActive()

void ml::ThumbnailPicker::setActive ( bool active)

While active the picker hit-tests clicks; set false when not shown.

◆ setColumns()

void ml::ThumbnailPicker::setColumns ( int columns)

◆ setPosition()

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

◆ setSelectedIndex()

void ml::ThumbnailPicker::setSelectedIndex ( int index)

◆ setTileSize()

void ml::ThumbnailPicker::setTileSize ( float w,
float h )

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