diff options
Diffstat (limited to 'src/frontend/mame/ui/datmenu.h')
-rw-r--r-- | src/frontend/mame/ui/datmenu.h | 57 |
1 files changed, 35 insertions, 22 deletions
diff --git a/src/frontend/mame/ui/datmenu.h b/src/frontend/mame/ui/datmenu.h index 3dc60b16c93..a55f659a84d 100644 --- a/src/frontend/mame/ui/datmenu.h +++ b/src/frontend/mame/ui/datmenu.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Maurizio Petrarota +// copyright-holders:Maurizio Petrarota, Vas Crabb /*************************************************************************** ui/datmenu.h @@ -14,13 +14,18 @@ #pragma once -#include "ui/menu.h" +#include "ui/text.h" +#include "ui/textbox.h" +#include <optional> #include <string> +#include <utility> #include <vector> struct ui_software_info; +struct ui_system_info; + namespace ui { @@ -28,40 +33,48 @@ namespace ui { // class dats menu //------------------------------------------------- -class menu_dats_view : public menu +class menu_dats_view : public menu_textbox { public: - menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info *swinfo, const game_driver *driver = nullptr); - menu_dats_view(mame_ui_manager &mui, render_container &container, const game_driver *driver = nullptr); + menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info &swinfo); + menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_system_info *system = nullptr); virtual ~menu_dats_view() override; -protected: - virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; + static void add_info_text(text_layout &layout, std::string_view text, rgb_t color, float size = 1.0f); -private: - // draw dats menu - virtual void draw(uint32_t flags) override; +protected: + virtual void recompute_metrics(uint32_t width, uint32_t height, float aspect) override; + virtual void custom_render(uint32_t flags, void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) override; + virtual std::tuple<int, bool, bool> custom_pointer_updated(bool changed, ui_event const &uievt) override; - virtual void populate(float &customtop, float &custombottom) override; - virtual void handle() override; + virtual void populate_text(std::optional<text_layout> &layout, float &width, int &lines) override; - int m_actual; - const game_driver *m_driver; - const ui_software_info *m_swinfo; - std::string m_list, m_short, m_long, m_parent; - void get_data(); - void get_data_sw(); - bool m_issoft; +private: struct list_items { - list_items(std::string l, int i, std::string rev) { label = l; option = i; revision = rev; } + list_items(std::string &&l, int i, std::string &&rev) : label(std::move(l)), revision(std::move(rev)), option(i), bounds(1.0F, 0.0F) { } + std::string label; - int option; std::string revision; + int option; + + std::pair<float, float> bounds; }; + + virtual void populate() override; + virtual bool handle(event const *ev) override; + + ui_system_info const *const m_system; + ui_software_info const *const m_swinfo; + bool const m_issoft; + int m_current_tab; + std::string m_list, m_short, m_long, m_parent; std::vector<list_items> m_items_list; + + std::pair<float, float> m_tab_line; + int m_clicked_tab; }; } // namespace ui -#endif /* MAME_FRONTEND_UI_DATMENU_H */ +#endif // MAME_FRONTEND_UI_DATMENU_H |