diff options
Diffstat (limited to 'src/frontend/mame/ui/selsoft.h')
-rw-r--r-- | src/frontend/mame/ui/selsoft.h | 59 |
1 files changed, 19 insertions, 40 deletions
diff --git a/src/frontend/mame/ui/selsoft.h b/src/frontend/mame/ui/selsoft.h index 1bfdd9c1e48..e65a5ddc61f 100644 --- a/src/frontend/mame/ui/selsoft.h +++ b/src/frontend/mame/ui/selsoft.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Maurizio Petrarota, Vas Crabb +// copyright-holders:Maurizio Petrarota /*************************************************************************** ui/selsoft.h @@ -15,10 +15,6 @@ #include "ui/selmenu.h" #include "ui/utils.h" -#include <map> -#include <string> -#include <vector> - namespace ui { @@ -26,34 +22,25 @@ namespace ui { class menu_select_software : public menu_select_launch { public: - menu_select_software(mame_ui_manager &mui, render_container &container, game_driver const &driver); + menu_select_software(mame_ui_manager &mui, render_container &container, const game_driver *driver); virtual ~menu_select_software() override; private: - using filter_map = std::map<software_filter::type, software_filter::ptr>; - using icon_cache = texture_lru<ui_software_info const *>; - - struct search_item - { - search_item(ui_software_info const &s); - search_item(search_item const &) = default; - search_item(search_item &&) = default; - search_item &operator=(search_item const &) = default; - search_item &operator=(search_item &&) = default; - void set_penalty(std::u32string const &search); - - std::reference_wrapper<ui_software_info const> software; - std::u32string ucs_shortname; - std::u32string ucs_longname; - double penalty; - }; + enum { VISIBLE_GAMES_IN_SEARCH = 200 }; + + typedef std::map<software_filter::type, software_filter::ptr> filter_map; + + const game_driver *m_driver; + bool m_has_empty_start; + software_filter_data m_filter_data; + filter_map m_filters; + software_filter::type m_filter_type; virtual void populate(float &customtop, float &custombottom) override; virtual void handle() override; - // drawing + // draw left panel virtual float draw_left_panel(float x1, float y1, float x2, float y2) override; - virtual render_texture *get_icon_texture(int linenum, void *selectedref) override; // get selected software and/or driver virtual void get_selection(ui_software_info const *&software, game_driver const *&driver) const override; @@ -69,28 +56,20 @@ private: // toolbar virtual void inkey_export() override { throw false; } + ui_software_info *m_searchlist[VISIBLE_GAMES_IN_SEARCH + 1]; + std::vector<ui_software_info *> m_displaylist, m_tmp, m_sortedlist; + std::vector<ui_software_info> m_swinfo; + void build_software_list(); - void find_matches(); + void find_matches(const char *str, int count); void load_sw_custom_filters(); // handlers void inkey_select(const event *menu_event); - virtual void general_info(const game_driver *driver, std::string &buffer) override { } - - std::map<std::string, std::string> m_icon_paths; - icon_cache m_icons; - game_driver const &m_driver; - bool m_has_empty_start; - software_filter_data m_filter_data; - filter_map m_filters; - software_filter::type m_filter_type; - - std::vector<ui_software_info> m_swinfo; - std::vector<search_item> m_searchlist; - std::vector<std::reference_wrapper<ui_software_info const> > m_displaylist; + virtual void general_info(const game_driver *driver, std::string &buffer) override {} }; } // namespace ui -#endif // MAME_FRONTEND_UI_SELSOFT_H +#endif /* MAME_FRONTEND_UI_SELSOFT_H */ |