상속: MediaPortal.UI.Presentation.DataObjects.ListItem
        void GetFilteredAndSortedSites()
        {
            SitesList.Clear();

            var localSitesDic  = OnlineVideoSettings.Instance.SiteSettingsList.ToDictionary(s => s.Name, s => s);
            var onlyLocalSites = OnlineVideoSettings.Instance.SiteSettingsList.ToDictionary(s => s.Name, s => s);
            List <OnlineVideosWebservice.Site> filteredsortedSites = new List <OnlineVideos.OnlineVideosWebservice.Site>(Sites.Updater.OnlineSites);

            filteredsortedSites.ForEach(os => { if (localSitesDic.ContainsKey(os.Name))
                                                {
                                                    onlyLocalSites.Remove(os.Name);
                                                }
                                        });
            filteredsortedSites.AddRange(onlyLocalSites.Select(ls => new OnlineVideosWebservice.Site()
            {
                Name = ls.Value.Name, IsAdult = ls.Value.ConfirmAge, Description = ls.Value.Description, Language = ls.Value.Language, LastUpdated = ls.Value.LastUpdated
            }));
            filteredsortedSites = filteredsortedSites.FindAll(SitePassesFilter);
            filteredsortedSites.Sort(CompareSiteForSort);

            foreach (OnlineVideosWebservice.Site site in filteredsortedSites)
            {
                if (!site.IsAdult || !OnlineVideoSettings.Instance.UseAgeConfirmation || OnlineVideoSettings.Instance.AgeConfirmed)
                {
                    SiteSettings localSite = null;
                    localSitesDic.TryGetValue(site.Name, out localSite);
                    var loListItem = new OnlineSiteViewModel(site, localSite);
                    SitesList.Add(loListItem);
                }
            }

            SitesList.FireChange();
        }
        ItemsList GetUserReports(OnlineSiteViewModel item)
        {
            var items = new ItemsList();

            OnlineVideosWebservice.OnlineVideosService ws = new OnlineVideosWebservice.OnlineVideosService();
            var reports = ws.GetReports(item.Site.Name);

            foreach (var report in reports.OrderByDescending(r => r.Date))
            {
                items.Add(new ReportViewModel(report));
            }
            return(items);
        }
 public void ShowSiteOptions(OnlineSiteViewModel item)
 {
     ServiceRegistration.Get <IWorkflowManager>().NavigatePushTransient(
         WorkflowState.CreateTransientState("OnlineSiteOptions", item.Site.Name, true, "ovsDialogGenericItems", false, WorkflowType.Dialog),
         new NavigationContextConfig()
     {
         AdditionalContextVariables = new Dictionary <string, object>
         {
             { Constants.CONTEXT_VAR_ITEMS, GetSiteOptions(item) },
             { Constants.CONTEXT_VAR_COMMAND, new CommandContainer <ListItem>(ExecuteSiteOption) }
         }
     });
 }
        ItemsList GetSiteOptions(OnlineSiteViewModel item)
        {
            var items = new ItemsList();

            if (item.LocalSite == null && item.Site.State != OnlineVideosWebservice.SiteState.Broken)
            {
                var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.AddToMySites]");
                option.AdditionalProperties[Constants.KEY_VALUE] = "AddToMySites";
                items.Add(option);
            }
            else
            {
                if ((item.Site.LastUpdated - item.LocalSite.LastUpdated).TotalMinutes > 2 && item.Site.State != OnlineVideosWebservice.SiteState.Broken)
                {
                    var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.UpdateMySite]");
                    option.AdditionalProperties[Constants.KEY_VALUE] = "UpdateMySite";
                    items.Add(option);
                }
                var optionR = new ListItem(Consts.KEY_NAME, "[OnlineVideos.RemoveFromMySites]");
                optionR.AdditionalProperties[Constants.KEY_VALUE] = "RemoveFromMySites";
                items.Add(optionR);
            }

            if (!string.IsNullOrEmpty(item.Site.Owner_FK) && item.LocalSite != null) // !only local && ! only global
            {
                var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.ShowReports]");
                option.AdditionalProperties[Constants.KEY_VALUE] = "ShowReports";
                items.Add(option);

                if (item.Site.State != OnlineVideosWebservice.SiteState.Broken)
                {
                    var optionR = new ListItem(Consts.KEY_NAME, "[OnlineVideos.ReportBroken]");
                    optionR.AdditionalProperties[Constants.KEY_VALUE] = "ReportBroken";
                    items.Add(optionR);
                }
            }

            foreach (var anOption in items)
            {
                anOption.AdditionalProperties.Add(Consts.KEY_MEDIA_ITEM, item);
            }

            return(items);
        }
        public void ShowSiteOptions(OnlineSiteViewModel item)
        {
            ServiceRegistration.Get<IWorkflowManager>().NavigatePushTransient(
                WorkflowState.CreateTransientState("OnlineSiteOptions", item.Site.Name, true, "ovsDialogGenericItems", false, WorkflowType.Dialog),
                new NavigationContextConfig()
                {
                    AdditionalContextVariables = new Dictionary<string, object>
					{
						{ Constants.CONTEXT_VAR_ITEMS, GetSiteOptions(item) },
						{ Constants.CONTEXT_VAR_COMMAND, new CommandContainer<ListItem>(ExecuteSiteOption) }
					}
                });
        }
        ItemsList GetUserReports(OnlineSiteViewModel item)
        {
            var items = new ItemsList();

            OnlineVideosWebservice.OnlineVideosService ws = new OnlineVideosWebservice.OnlineVideosService();
            var reports = ws.GetReports(item.Site.Name);
            foreach (var report in reports.OrderByDescending(r => r.Date))
            {
                items.Add(new ReportViewModel(report));
            }
            return items;
        }
        ItemsList GetSiteOptions(OnlineSiteViewModel item)
        {
            var items = new ItemsList();

            if (item.LocalSite == null && item.Site.State != OnlineVideosWebservice.SiteState.Broken)
            {
                var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.AddToMySites]");
                option.AdditionalProperties[Constants.KEY_VALUE] = "AddToMySites";
                items.Add(option);
            }
            else
            {
                if ((item.Site.LastUpdated - item.LocalSite.LastUpdated).TotalMinutes > 2 && item.Site.State != OnlineVideosWebservice.SiteState.Broken)
                {
                    var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.UpdateMySite]");
                    option.AdditionalProperties[Constants.KEY_VALUE] = "UpdateMySite";
                    items.Add(option);
                }
                var optionR = new ListItem(Consts.KEY_NAME, "[OnlineVideos.RemoveFromMySites]");
                optionR.AdditionalProperties[Constants.KEY_VALUE] = "RemoveFromMySites";
                items.Add(optionR);
            }

            if (!string.IsNullOrEmpty(item.Site.Owner_FK) && item.LocalSite != null) // !only local && ! only global
            {
                var option = new ListItem(Consts.KEY_NAME, "[OnlineVideos.ShowReports]");
                option.AdditionalProperties[Constants.KEY_VALUE] = "ShowReports";
                items.Add(option);

                if (item.Site.State != OnlineVideosWebservice.SiteState.Broken)
                {
                    var optionR = new ListItem(Consts.KEY_NAME, "[OnlineVideos.ReportBroken]");
                    optionR.AdditionalProperties[Constants.KEY_VALUE] = "ReportBroken";
                    items.Add(optionR);
                }
            }

            foreach (var anOption in items)
                anOption.AdditionalProperties.Add(Consts.KEY_MEDIA_ITEM, item);

            return items;
        }
        void GetFilteredAndSortedSites()
        {
            SitesList.Clear();

            var localSitesDic = OnlineVideoSettings.Instance.SiteSettingsList.ToDictionary(s => s.Name, s => s);
            var onlyLocalSites = OnlineVideoSettings.Instance.SiteSettingsList.ToDictionary(s => s.Name, s => s);
            List<OnlineVideosWebservice.Site> filteredsortedSites = new List<OnlineVideos.OnlineVideosWebservice.Site>(Sites.Updater.OnlineSites);
            filteredsortedSites.ForEach(os => { if (localSitesDic.ContainsKey(os.Name)) onlyLocalSites.Remove(os.Name); });
            filteredsortedSites.AddRange(onlyLocalSites.Select(ls => new OnlineVideosWebservice.Site() { Name = ls.Value.Name, IsAdult = ls.Value.ConfirmAge, Description = ls.Value.Description, Language = ls.Value.Language, LastUpdated = ls.Value.LastUpdated }));
            filteredsortedSites = filteredsortedSites.FindAll(SitePassesFilter);
            filteredsortedSites.Sort(CompareSiteForSort);

            foreach (OnlineVideosWebservice.Site site in filteredsortedSites)
            {
                if (!site.IsAdult || !OnlineVideoSettings.Instance.UseAgeConfirmation || OnlineVideoSettings.Instance.AgeConfirmed)
                {
                    SiteSettings localSite = null;
                    localSitesDic.TryGetValue(site.Name, out localSite);
                    var loListItem = new OnlineSiteViewModel(site, localSite);
                    SitesList.Add(loListItem);
                }
            }

            SitesList.FireChange();
        }