2019-12-21 18:40:17 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
2020-01-05 02:33:03 -05:00
|
|
|
#include <stdint.h>
|
2020-06-06 02:25:10 -04:00
|
|
|
#include "PLErrorCodes.h"
|
2020-01-05 02:33:03 -05:00
|
|
|
|
2020-01-02 01:32:00 -05:00
|
|
|
template<class T>
|
|
|
|
|
class THandle;
|
|
|
|
|
|
2020-01-05 02:33:03 -05:00
|
|
|
class PLPasStr;
|
2019-12-24 18:39:30 -05:00
|
|
|
struct IGpDisplayDriver;
|
2019-12-24 02:35:24 -05:00
|
|
|
struct Menu;
|
2019-12-21 18:40:17 -05:00
|
|
|
|
|
|
|
|
namespace PortabilityLayer
|
|
|
|
|
{
|
2019-12-24 18:39:30 -05:00
|
|
|
struct Vec2i;
|
|
|
|
|
|
2019-12-21 18:40:17 -05:00
|
|
|
class MenuManager
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-12-24 02:35:24 -05:00
|
|
|
virtual void Init() = 0;
|
|
|
|
|
virtual void Shutdown() = 0;
|
|
|
|
|
|
2020-01-02 01:32:00 -05:00
|
|
|
virtual THandle<Menu> DeserializeMenu(const void *resData) const = 0;
|
|
|
|
|
virtual THandle<Menu> GetMenuByID(int id) const = 0;
|
|
|
|
|
|
2020-06-06 02:25:10 -04:00
|
|
|
virtual PLError_t AppendMenuItem(const THandle<Menu> &menu, int8_t iconResID, uint8_t key, uint8_t submenuID, uint8_t textStyle, bool enabled, bool checked, const PLPasStr &text) const = 0;
|
|
|
|
|
|
2020-01-02 01:32:00 -05:00
|
|
|
virtual void InsertMenuBefore(const THandle<Menu> &insertingMenu, const THandle<Menu> &existingMenu) = 0;
|
|
|
|
|
virtual void InsertMenuAfter(const THandle<Menu> &insertingMenu, const THandle<Menu> &existingMenu) = 0;
|
|
|
|
|
virtual void InsertMenuAtEnd(const THandle<Menu> &insertingMenu) = 0;
|
|
|
|
|
virtual void InsertMenuAtBeginning(const THandle<Menu> &insertingMenu) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void RemoveMenu(const THandle<Menu> &menu) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void SetMenuEnabled(const THandle<Menu> &menuHandle, bool enabled) = 0;
|
|
|
|
|
virtual void SetItemEnabled(const THandle<Menu> &menu, unsigned int index, bool enabled) = 0;
|
|
|
|
|
virtual void SetItemChecked(const THandle<Menu> &menu, unsigned int index, bool checked) = 0;
|
2020-01-05 02:33:03 -05:00
|
|
|
virtual bool SetItemText(const THandle<Menu> &menu, unsigned int index, const PLPasStr &str) = 0;
|
2019-12-21 18:40:17 -05:00
|
|
|
|
2020-02-23 20:21:04 -05:00
|
|
|
virtual bool GetMenuEnabled(const THandle<Menu> &menuHandle) const = 0;
|
|
|
|
|
virtual bool GetItemEnabled(const THandle<Menu> &menu, unsigned int index) const = 0;
|
|
|
|
|
virtual bool GetItemChecked(const THandle<Menu> &menu, unsigned int index) const = 0;
|
|
|
|
|
virtual PLPasStr GetItemText(const THandle<Menu> &menu, unsigned int index) const = 0;
|
|
|
|
|
|
2019-12-24 18:39:30 -05:00
|
|
|
virtual bool IsPointInMenuBar(const Vec2i &point) const = 0;
|
2020-04-05 18:30:04 -04:00
|
|
|
virtual uint16_t GetMenuBarHeight() const = 0;
|
2019-12-24 18:39:30 -05:00
|
|
|
|
2020-02-16 20:55:47 -05:00
|
|
|
virtual bool FindMenuShortcut(uint16_t &menuID, uint16_t &itemID, uint8_t shortcutChar) = 0;
|
2019-12-24 18:39:30 -05:00
|
|
|
virtual void MenuSelect(const Vec2i &initialPoint, int16_t *outMenu, uint16_t *outItem) = 0;
|
2020-03-01 17:01:35 -05:00
|
|
|
virtual void PopupMenuSelect(const THandle<Menu> &menu, const Vec2i &popupMenuPos, const Vec2i &initialPoint, size_t initialItem, uint16_t *outItem) = 0;
|
2019-12-24 18:39:30 -05:00
|
|
|
|
2019-12-24 02:35:24 -05:00
|
|
|
virtual void DrawMenuBar() = 0;
|
2019-12-27 00:30:31 -05:00
|
|
|
virtual void SetMenuVisible(bool isVisible) = 0;
|
2019-12-24 02:35:24 -05:00
|
|
|
|
|
|
|
|
virtual void RenderFrame(IGpDisplayDriver *displayDriver) = 0;
|
|
|
|
|
|
2020-10-20 23:43:02 -04:00
|
|
|
virtual void SetMenuTouchScreenStyle(bool isTouchScreenStyle) = 0;
|
|
|
|
|
virtual bool IsMenuTouchScreenStyle() const = 0;
|
|
|
|
|
|
2019-12-21 18:40:17 -05:00
|
|
|
static MenuManager *GetInstance();
|
|
|
|
|
};
|
|
|
|
|
}
|