summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/selsoft.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/selsoft.h')
-rw-r--r--src/frontend/mame/ui/selsoft.h59
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 */