using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.UI.App.Common; using System; using System.Linq; namespace Ryujinx.Ava.UI.Controls { public partial class ApplicationListView : UserControl { public static readonly RoutedEvent ApplicationOpenedEvent = RoutedEvent.Register(nameof(ApplicationOpened), RoutingStrategies.Bubble); public event EventHandler ApplicationOpened { add { AddHandler(ApplicationOpenedEvent, value); } remove { RemoveHandler(ApplicationOpenedEvent, value); } } public ApplicationListView() { InitializeComponent(); } public void GameList_DoubleTapped(object sender, TappedEventArgs args) { if (sender is ListBox listBox) { if (listBox.SelectedItem is ApplicationData selected) { RaiseEvent(new ApplicationOpenedEventArgs(selected, ApplicationOpenedEvent)); } } } private void SearchBox_OnKeyUp(object sender, KeyEventArgs args) { if (DataContext is MainWindowViewModel model) { model.SearchText = (sender as TextBox)?.Text; } } private async void IdString_OnClick(object sender, RoutedEventArgs e) { if (DataContext is not MainWindowViewModel mwvm) return; if (sender is not Button { Content: TextBlock idText }) return; if (!App.IsClipboardAvailable(out var clipboard)) return; var appData = mwvm.Applications.FirstOrDefault(it => it.IdString == idText.Text); if (appData is null) return; await clipboard.SetTextAsync(appData.IdString); NotificationHelper.ShowInformation( "Copied Title ID", $"{appData.Name} ({appData.IdString})"); } } }