74 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|