using Ryujinx.HLE.HOS.Applets;
using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types;
namespace Ryujinx.HLE.UI
{
public interface IHostUIHandler
{
///
/// Displays an Input Dialog box to the user and blocks until text is entered.
///
/// Text that the user entered. Set to `null` on internal errors
/// True when OK is pressed, False otherwise. Also returns True on internal errors
bool DisplayInputDialog(SoftwareKeyboardUIArgs args, out string userText);
///
/// Displays a Message Dialog box to the user and blocks until it is closed.
///
/// True when OK is pressed, False otherwise.
bool DisplayMessageDialog(string title, string message);
///
/// Displays a Message Dialog box specific to Controller Applet and blocks until it is closed.
///
/// True when OK is pressed, False otherwise.
bool DisplayMessageDialog(ControllerAppletUIArgs args);
///
/// Tell the UI that we need to transisition to another program.
///
/// The device instance.
/// The program kind.
/// The value associated to the .
void ExecuteProgram(Switch device, ProgramSpecifyKind kind, ulong value);
/// Displays a Message Dialog box specific to Error Applet and blocks until it is closed.
///
/// False when OK is pressed, True when another button (Details) is pressed.
bool DisplayErrorAppletDialog(string title, string message, string[] buttonsText);
///
/// Creates a handler to process keyboard inputs into text strings.
///
/// An instance of the text handler.
IDynamicTextInputHandler CreateDynamicTextInputHandler();
///
/// Gets fonts and colors used by the host.
///
IHostUITheme HostUITheme { get; }
}
}