Files
EstusShots-Net/EstusShots.Gtk/Pages/PlayersPage.cs
2020-03-01 23:37:43 +01:00

67 lines
2.1 KiB
C#

using System;
using System.Threading.Tasks;
using EstusShots.Gtk.Dialogs;
using EstusShots.Shared.Dto;
using EstusShots.Shared.Models.Parameters;
using Gtk;
using UI = Gtk.Builder.ObjectAttribute;
namespace EstusShots.Gtk
{
internal partial class MainWindow
{
[UI] public readonly Box PlayersPage = null;
[UI] public readonly Overlay PlayersOverlay = null;
[UI] public readonly TreeView PlayersTreeView = null;
[UI] public readonly Button NewPlayerButton = null;
[UI] public readonly Box PlayerEditorContainer = null;
private void InitPlayersPage()
{
NewPlayerButton.Clicked += NewPlayerButtonOnClicked;
}
// Events
private void NewPlayerButtonOnClicked(object sender, EventArgs e)
{
var dialog = new PlayerEditor(this, new Player());
dialog.OnDialogClosed += PlayerEditorClosed;
}
private async void PlayerEditorClosed(object o, DialogClosedEventArgs args)
{
if (!args.Ok || !(args.Model is Player player)) return;
var res = await Task.Factory.StartNew(()
=> Client.Players.SavePlayer(new SavePlayerParameter(player)).Result);
if (!res.OperationResult.Success)
{
Info($"Unable to save: {res.OperationResult.ShortMessage}");
ErrorDialog.Show(res.OperationResult);
return;
}
// ReloadPlayers();
}
// Private Methods
private async void ReloadPlayers()
{
var res = await Task.Factory.StartNew(()
=> Client.Players.GetPlayers(new GetPlayersParameter()).Result);
if (!res.OperationResult.Success)
{
InfoLabel.Text = $"Refresh failed: {res.OperationResult.ShortMessage}";
ErrorDialog.Show(res.OperationResult);
return;
}
// TODO
// SeasonsControl.Items = res.Data.Seasons;
// SeasonsControl.DataBind();
// Info("Player list refreshed");
}
}
}