Files
Aerofoil/PortabilityLayer/DialogManager.h
2020-06-06 02:25:10 -04:00

42 lines
1.0 KiB
C++

#pragma once
#include <stdint.h>
struct Dialog;
struct DialogTextSubstitutions;
struct Rect;
struct Window;
struct TimeTaggedVOSEvent;
class PLPasStr;
namespace PortabilityLayer
{
class DialogImpl;
class Widget;
class DialogManager
{
public:
virtual Dialog *LoadDialog(int16_t resID, Window *behindWindow, const DialogTextSubstitutions *substitutions) = 0;
virtual Dialog *LoadDialogFromTemplate(int16_t templateResID, const Rect &rect, bool visible, bool hasCloseBox, uint32_t referenceConstant, uint16_t positionSpec, Window *behindWindow, const PLPasStr &title, const DialogTextSubstitutions *substitutions) = 0;
virtual int16_t DisplayAlert(int16_t alertResID, const DialogTextSubstitutions *substitutions) = 0;
virtual void PositionWindow(Window *window, const Rect &rect) const = 0;
static DialogManager *GetInstance();
};
class DialogItem final
{
public:
explicit DialogItem(Widget *widget);
~DialogItem();
Widget *GetWidget() const;
private:
friend class DialogImpl;
Widget *m_widget;
};
}