more ui refactoring
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Michele Scandura 2021-09-15 11:51:59 +01:00
parent 09c32c605e
commit 9033151006
6 changed files with 375 additions and 166 deletions

View file

@ -0,0 +1,158 @@
using Exceptionless;
using Myra.Graphics2D.Brushes;
using Myra.Graphics2D.UI;
using System;
using System.Threading.Tasks;
using TinyMessenger;
namespace Sledgemapper.UI
{
public partial class CampaignList
{
private readonly CommunicationManager CommunicationManager;
private readonly Window Window;
private readonly TinyMessengerHub Messenger;
private Settings _settings;
public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings)
{
BuildUI();
CommunicationManager = communicationManager;
Window = window;
Messenger = messenger;
_settings = settings;
BtnNewCampaign.Click += (s, e) =>
{
window.Close();
OnMenuCampaignNew(s, e);
};
BtnLoadCampaign.Click += (s, e) =>
{
if (campaignSelected)
{
campaignSelected = false;
window.Close();
}
};
BtnCancelCampaign.Click += (s, e) =>
{
Window.Close();
};
}
private void OnMenuCampaignNew(object sender, EventArgs e)
{
if (sender is MenuItem && !((MenuItem)sender).Enabled)
{
return;
}
Window window = new()
{
Title = "New campaign"
};
var content = new CampaignWindow();
//content.BtnNewCampaign.Text = "N";
content.BtnNewCampaign.Click += OnButtonNewCampaignClicked;
window.Content = content;
window.ShowModal(Desktop);
content.TxtCampaign.SetKeyboardFocus();
}
private bool campaignSelected;
private void OnCampaignSelected(object sender, EventArgs e)
{
var item = sender as UI.ListItem;
var localContent = item.GetParentContentInWindow<Widget>();
State.Instance.CampaignName = item.ItemName.Text;
var list = item.Parent as Myra.Graphics2D.UI.Grid;
for (var i = 0; i < list.ChildrenCount; i++)
{
var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem;
currentItem.Background = new SolidBrush("#D9D9D9FF");
}
item.Background = new SolidBrush(_settings.OverlayTintColor);
campaignSelected = true;
}
private async void OnButtonNewCampaignClicked(object sender, EventArgs e)
{
var localContent = ((TextButton)sender).GetParentContentInWindow<CampaignWindow>();// localWindow.Content as PlayerWindow;
var isValid = localContent.Content.TxtCampaign.ValidateTextbox();
if (!isValid)
{
return;
}
//if (CommunicationManager.Connection.State != HubConnectionState.Connected)
//{
// lblConnectionStatus.Text = "Connecting";
// await CommunicationManager.Connection.StartAsync();
// UpdateConnectionState(CommunicationManager.Connection);
//}
var successful = false;
try
{
await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text);
//if (result)
//{
// CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text;
// CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded;
// CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted;
// CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded;
// CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted;
//}
//successful = result;
//var result2 = await CommunicationManager.Connection?.InvokeAsync<Session>("JoinSession", localContent.TxtSession.Text);
//CommunicationManager.SessionData.SessionId = result2.SessionId;
//CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text;
}
catch (Exception ex)
{
ExceptionlessClient.Default.SubmitException(ex);
}
//if (successful)
//{
// //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text;
// //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map;
// //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays;
// //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls;
// //lblSessionName.Text = CommunicationManager.SessionData.SessionName;
// //MenuConnectSync.Enabled = true;
// //MenuConnectUpload.Enabled = true;
// localWindow.Close();
//}
localContent.Window.Close();
}
public async Task LoadCampaigns()
{
var campaigns = await CommunicationManager.Api.GetCampaigns();
foreach (var campaign in campaigns)
{
var item = new UI.ListItem();
item.ItemName.Text = campaign.Name;
item.TouchUp += OnCampaignSelected;
StackCampaignsList.AddChild(item);
}
}
}
}