public int Search(string searchValue, bool includeSubs, bool unwatchedOnly, int rating, int ratingFactor)
        {
            if (searchValue == null)
            {
                searchValue = "";
            }
            var searchText = (searchValue != "" ? "Items containing: '" + searchValue + "' " : "All Items ")
                             + (unwatchedOnly ? "Unwatched and " : "and ") + "Rated " + Ratings.ToString(rating)
                             + (ratingFactor > 0 ? " and below..." : " and above...");

            Async.Queue("Search", () =>
            {
                Application.CurrentInstance.ProgressBox(string.Format("Searching {0} for {1} ", Name == "Default" ? "Library" : Name, searchText));
                searchValue = searchValue.ToLower();
                IEnumerable <BaseItem> results = includeSubs ?
                                                 this.folder.RecursiveChildren.Distinct(i => i.Id).Where(i => MatchesCriteria(i, searchValue, unwatchedOnly, rating, ratingFactor)).ToList() :
                                                 this.folder.Children.Distinct(i => i.Id).Where(i => MatchesCriteria(i, searchValue, unwatchedOnly, rating, ratingFactor)).ToList();

                Application.CurrentInstance.ShowMessage = false;

                if (results.Any())
                {
                    Microsoft.MediaCenter.UI.Application.DeferredInvoke(_ => Application.CurrentInstance.Navigate(ItemFactory.Instance.Create(new SearchResultFolder(GroupResults(results.ToList()))
                    {
                        Name = this.Name + " - Search Results (" + searchValue + (unwatchedOnly ? "/unwatched" : "")
                               + (rating > 0 ? "/" + Ratings.ToString(rating) + (ratingFactor > 0 ? "-" : "+") : "") + ")"
                    })));
                }
                else
                {
                    Application.CurrentInstance.Information.AddInformationString("No Search Results Found");
                }
            });

            return(0);
        }