This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

157 lines
4.4 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Contains the CMessageDialog declaration
//
// $NoKeywords: $
//=============================================================================//
#ifndef MESSAGEDIALOG_H
#define MESSAGEDIALOG_H
#ifdef _WIN32
#pragma once
#endif
// styles
#define MD_WARNING 0x0001
#define MD_ERROR 0x0002
// button configurations
#define MD_OK 0x0004 // 1 button - OK
#define MD_CANCEL 0x0008 // 1 button - CANCEL
#define MD_OKCANCEL 0x0010 // 2 buttons - OK and CANCEL
#define MD_YESNO 0x0020 // 2 buttons - YES and NO
// behavior
#define MD_SIMPLEFRAME 0x0100 // legacy corners
#define MD_COMMANDAFTERCLOSE \
0x0200 // send command at dialog termination (i.e. after fade)
#define MD_RESTRICTPAINT \
0x0400 // only paint this dialog (hide any other ui elements)
#define MD_COMMANDONFORCECLOSE \
0x0800 // send command when the dialog is closed assuming A input
// dialog type
enum EDialogType {
MD_SAVE_BEFORE_QUIT,
MD_QUIT_CONFIRMATION,
MD_QUIT_CONFIRMATION_TF,
MD_KICK_CONFIRMATION,
MD_CLIENT_KICKED,
MD_LOST_HOST,
MD_LOST_SERVER,
MD_SEARCHING_FOR_GAMES,
MD_CREATING_GAME,
MD_MODIFYING_SESSION,
MD_SESSION_SEARCH_FAILED,
MD_SESSION_CREATE_FAILED,
MD_SESSION_CONNECTING,
MD_SESSION_CONNECT_NOTAVAILABLE,
MD_SESSION_CONNECT_SESSIONFULL,
MD_SESSION_CONNECT_FAILED,
MD_EXIT_SESSION_CONFIRMATION,
MD_STORAGE_DEVICES_NEEDED,
MD_STORAGE_DEVICES_CHANGED,
MD_STORAGE_DEVICES_TOO_FULL,
MD_NOT_ONLINE_ENABLED,
MD_NOT_ONLINE_SIGNEDIN,
MD_DEFAULT_CONTROLS_CONFIRM,
MD_AUTOSAVE_EXPLANATION,
MD_COMMENTARY_EXPLANATION,
MD_COMMENTARY_EXPLANATION_MULTI,
MD_COMMENTARY_CHAPTER_UNLOCK_EXPLANATION,
MD_SAVE_BEFORE_LANGUAGE_CHANGE,
MD_SAVE_BEFORE_NEW_GAME,
MD_SAVE_BEFORE_LOAD,
MD_DELETE_SAVE_CONFIRM,
MD_SAVE_OVERWRITE,
MD_SAVING_WARNING,
MD_SAVE_COMPLETE,
MD_STANDARD_SAMPLE,
MD_WARNING_SAMPLE,
MD_ERROR_SAMPLE,
MD_PROMPT_SIGNIN,
MD_PROMPT_SIGNIN_REQUIRED,
MD_PROMPT_STORAGE_DEVICE,
MD_PROMPT_STORAGE_DEVICE_REQUIRED,
MD_DISCONNECT_CONFIRMATION,
MD_DISCONNECT_CONFIRMATION_HOST,
MD_LOAD_FAILED_WARNING,
MD_OPTION_CHANGE_FROM_X360_DASHBOARD,
MD_STORAGE_DEVICES_CORRUPT,
MD_CHECKING_STORAGE_DEVICE
};
#include "vgui_controls/AnimatingImagePanel.h"
#include "vgui_controls/Frame.h"
#include "vgui_controls/ImagePanel.h"
#include "vgui_controls/Label.h"
//-----------------------------------------------------------------------------
// Purpose: Simple modal dialog box for Xbox 360 warnings and messages
//-----------------------------------------------------------------------------
class CMessageDialog : public vgui::Frame {
DECLARE_CLASS_SIMPLE(CMessageDialog, vgui::Frame);
public:
CMessageDialog(vgui::Panel *parent, const uint nType, const char *pTitle,
const char *pMsg, const char *pCmdA, const char *pCmdB,
vgui::Panel *pParent, bool bShowActivity);
~CMessageDialog();
enum {
BTN_INVALID = -1,
BTN_B,
BTN_A,
MAX_BUTTONS,
};
struct ButtonLabel_s {
vgui::Label *pIcon;
vgui::Label *pText;
int nWide;
bool bCreated;
};
virtual void OnKeyCodePressed(vgui::ButtonCode_t code);
virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
virtual void ApplySettings(KeyValues *inResourceData);
virtual void PaintBackground();
uint GetType(void);
void SetControlSettingsKeys(KeyValues *pKeys);
private:
void CreateButtonLabel(ButtonLabel_s *pButton, const char *pIcon,
const char *pText);
void DoCommand(int button);
vgui::Panel *m_pCreator;
vgui::Label *m_pTitle;
vgui::Label *m_pMsg;
vgui::ImagePanel *m_pBackground;
vgui::AnimatingImagePanel *m_pAnimatingPanel;
vgui::HFont m_hButtonFont;
vgui::HFont m_hTextFont;
uint m_nType;
Color m_ButtonTextColor;
int m_ButtonPressed;
KeyValues *m_pControlSettings;
int m_FooterTall;
int m_ButtonMargin;
Color m_clrNotSimpleBG;
Color m_clrNotSimpleBGBlack;
int m_ButtonIconLabelSpace;
int m_ActivityIndent;
bool m_bShowActivity; // should we show an animating image panel?
ButtonLabel_s m_Buttons[MAX_BUTTONS];
char *m_pCommands[MAX_BUTTONS];
};
#endif // MESSAGEDIALOG_H