Files
ytLlive/SocialsDialog.xaml.cs

74 lines
2.4 KiB
C#

using System.Windows;
using System.Windows.Input;
using ytLive.Helpers;
using ytLive.ViewModels;
namespace ytLive;
public partial class SocialsDialog : Window
{
private readonly SocialsDialogViewModel _viewModel;
public SocialsDialog(SocialsDialogViewModel viewModel)
{
AppLog.Write("SocialsDialog ctor: before InitializeComponent");
InitializeComponent();
AppLog.Write("SocialsDialog ctor: after InitializeComponent");
DataContext = viewModel;
_viewModel = viewModel;
viewModel.SaveRequested += () => DialogResult = true;
viewModel.CancelRequested += () => DialogResult = false;
Closing += (_, _) => _viewModel.AbortPending();
}
private void SignInButton_Click(object sender, RoutedEventArgs e)
=> _viewModel.SignInCommand.Execute(null);
private void SlotAdd_Click(object sender, RoutedEventArgs e)
{
if (sender is FrameworkElement { Tag: int index })
_viewModel.StartEdit(index);
}
private void SlotEdit_Click(object sender, RoutedEventArgs e)
{
if (sender is FrameworkElement { Tag: int index })
_viewModel.StartEdit(index);
}
private async void SlotDelete_Click(object sender, RoutedEventArgs e)
{
if (sender is not FrameworkElement { Tag: int index } element) return;
var slot = element.DataContext as SocialSlotViewModel;
var confirm = index == 0
? "Remove your YouTube channel from the bar and sign out of ytLlive?"
: slot is { IsFilled: true }
? $"Remove {slot.Handle}?"
: "Remove this social?";
if (MessageBox.Show(confirm, "Remove Social", MessageBoxButton.YesNo, MessageBoxImage.Question)
== MessageBoxResult.Yes)
await _viewModel.DeleteSlotAsync(index);
}
private void SocialEdit_KeyDown(object sender, KeyEventArgs e)
{
if (sender is not FrameworkElement { DataContext: SocialSlotViewModel slot }) return;
if (e.Key == Key.Enter)
{
_viewModel.ConfirmEdit(slot.Index);
}
else if (e.Key == Key.Escape)
{
slot.IsEditing = false;
slot.Error = null;
}
}
private void SocialEdit_LostFocus(object sender, RoutedEventArgs e)
{
if (sender is FrameworkElement { DataContext: SocialSlotViewModel slot })
_viewModel.ConfirmEdit(slot.Index);
}
}