diff options
author | 2017-08-18 18:26:26 +1000 | |
---|---|---|
committer | 2017-08-18 18:26:26 +1000 | |
commit | 73107179b5ca721336688d2a867a0be91279c7b7 (patch) | |
tree | 0b5b1ab73f7d416643357d0fe9bc8644751073b7 /src/frontend/mame/ui/utils.h | |
parent | 3f39b31287504d2a8b935290bf735be286f9d8b5 (diff) |
clean up some of the UI filter stuff, show list descriptions rather than names when choosing list to filter on (nw)
Diffstat (limited to 'src/frontend/mame/ui/utils.h')
-rw-r--r-- | src/frontend/mame/ui/utils.h | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/src/frontend/mame/ui/utils.h b/src/frontend/mame/ui/utils.h index 4aa9b9ef9aa..9d52f8acf8c 100644 --- a/src/frontend/mame/ui/utils.h +++ b/src/frontend/mame/ui/utils.h @@ -79,7 +79,36 @@ struct ui_software_info namespace ui { -struct s_filter; // FIXME: this is declared in custmenu.h, it shouldn't be +class software_filter_data +{ +public: + std::vector<std::string> const ®ions() const { return m_regions; } + std::vector<std::string> const &publishers() const { return m_publishers; } + std::vector<std::string> const &years() const { return m_years; } + std::vector<std::string> const &device_types() const { return m_device_types; } + std::vector<std::string> const &list_names() const { return m_list_names; } + std::vector<std::string> const &list_descriptions() const { return m_list_descriptions; } + + // adding entries + void add_region(std::string const &longname); + void add_publisher(std::string const &publisher); + void add_year(std::string const &year); + void add_device_type(std::string const &device_type); + void add_list(std::string const &name, std::string const &description); + void finalise(); + + // use heuristics to extract meaningful parts from software list fields + static std::string extract_region(std::string const &longname); + static std::string extract_publisher(std::string const &publisher); + +private: + std::vector<std::string> m_regions; + std::vector<std::string> m_publishers; + std::vector<std::string> m_years; + std::vector<std::string> m_device_types; + std::vector<std::string> m_list_names, m_list_descriptions; +}; + template <class Impl, typename Entry> class filter_base @@ -200,8 +229,8 @@ public: virtual type get_type() const = 0; virtual std::string adorned_display_name(type n) const = 0; - static ptr create(type n, s_filter const &data) { return create(n, data, nullptr, nullptr, 0); } - static ptr create(emu_file &file, s_filter const &data) { return create(file, data, 0); } + static ptr create(type n, software_filter_data const &data) { return create(n, data, nullptr, nullptr, 0); } + static ptr create(emu_file &file, software_filter_data const &data) { return create(file, data, 0); } static char const *config_name(type n); static char const *display_name(type n); @@ -211,8 +240,8 @@ public: protected: software_filter(); - static ptr create(type n, s_filter const &data, char const *value, emu_file *file, unsigned indent); - static ptr create(emu_file &file, s_filter const &data, unsigned indent); + static ptr create(type n, software_filter_data const &data, char const *value, emu_file *file, unsigned indent); + static ptr create(emu_file &file, software_filter_data const &data, unsigned indent); }; DECLARE_ENUM_INCDEC_OPERATORS(software_filter::type) |