public IEnumerable <ISearchItem <string> > GetItems()
 {
     GameActions.Clear();
     if (SearchPlugin.Instance.Settings.EnableExternalGameActions)
     {
         foreach (var item in QuickSearchSDK.gameActions)
         {
             var extracted = GetAssemblyName(item.Key);
             var assembly  = extracted.Item1;
             var name      = extracted.Item2;
             if (SearchPlugin.Instance.Settings.EnabledAssemblies[assembly].Actions)
             {
                 GameActions.Add(new GameAction()
                 {
                     Name = name, Action = item.Value
                 });
             }
         }
     }
     return(SearchPlugin.Instance.PlayniteApi.Database.Games
            .Where(g => filter.Eval(g))
            .OrderBy(g => g.Name)
            .Select(g =>
     {
         var item = new GameSearchItem(g);
         if (SearchPlugin.Instance.Settings.EnableExternalGameActions)
         {
             foreach (var action in GameActions)
             {
                 item.Actions.Add(action);
             }
         }
         return item;
     }));
 }
        public IEnumerable <ISearchItem <string> > GetItems()
        {
            GameActions.Clear();
            if (SearchPlugin.Instance.Settings.EnableExternalGameActions)
            {
                foreach (var item in QuickSearchSDK.gameActions)
                {
                    var extracted = GetAssemblyName(item.Key);
                    var assembly  = extracted.Item1;
                    var name      = extracted.Item2;
                    if (SearchPlugin.Instance.Settings.EnabledAssemblies[assembly].Actions)
                    {
                        GameActions.Add(new GameAction()
                        {
                            Name = name, Action = item.Value
                        });
                    }
                }
            }

            var items = SearchPlugin.Instance.PlayniteApi.Database.Games.Where(g => !g.Hidden || !SearchPlugin.Instance.Settings.IgnoreHiddenGames).Select(g =>
            {
                var item = new GameSearchItem(g);
                if (SearchPlugin.Instance.Settings.EnableExternalGameActions)
                {
                    foreach (var action in GameActions)
                    {
                        item.Actions.Add(action);
                    }
                }
                return(item);
            }).Concat(new ISearchItem <string>[] {
                new CommandItem(Application.Current.FindResource("LOCQuickFilterFavorites") as string,
                                new SubItemsAction()
                {
                    CloseAfterExecute = false, Name = ResourceProvider.GetString("LOC_QS_ShowAction"), SubItemSource = new FavoritesSource()
                },
                                "Favorites")
                {
                    IconChar = QuickSearch.IconChars.Star
                },
                new CommandItem(Application.Current.FindResource("LOCQuickFilterRecentlyPlayed") as string,
                                new SubItemsAction()
                {
                    CloseAfterExecute = false, Name = ResourceProvider.GetString("LOC_QS_ShowAction"), SubItemSource = new RecentlyPlayedSource()
                },
                                "Recently Played")
                {
                    IconChar = '\uEEDC'
                }
            });

            if (SearchPlugin.Instance.Settings.EnableFilterSubSources)
            {
                items = items.Concat(GetFilterItems(new GameFilter()));
            }
            return(items);
        }