ItemsList CreateContextMenuEntries() { var site = OnlineVideoSettings.Instance.SiteUtilsList[SiteName]; var ctxEntries = new ItemsList(); if (VideoInfo != null) { if (SiteUtilName != "DownloadedVideo" && (IsDetailsVideo || !(VideoInfo.HasDetails & site is Sites.IChoice))) { ctxEntries.Add( new ListItem(Consts.KEY_NAME, string.Format("{0} ({1})", Translation.Instance.Download, Translation.Instance.Concurrent)) { Command = new MethodDelegateCommand(() => DownloadConcurrent()) }); ctxEntries.Add( new ListItem(Consts.KEY_NAME, string.Format("{0} ({1})", Translation.Instance.Download, Translation.Instance.Queued)) { Command = new MethodDelegateCommand(() => DownloadQueued()) }); } foreach (var entry in site.GetContextMenuEntries(Category, VideoInfo)) { var entry_for_closure = entry; var item = new ListItem(Consts.KEY_NAME, entry.DisplayText); item.Command = new MethodDelegateCommand(() => HandleCustomContextMenuEntry(entry_for_closure)); ctxEntries.Add(item); } } return(ctxEntries); }
public LayoutTypeModel() { items = new ItemsList(); ListItem listItem = new ListItem(Consts.KEY_NAME, "List") { Command = new MethodDelegateCommand(() => UpdateLayout(LayoutType.List)) }; listItem.AdditionalProperties[KEY_LAYOUT_TYPE] = LayoutType.List; items.Add(listItem); ListItem gridItem = new ListItem(Consts.KEY_NAME, "Grid") { Command = new MethodDelegateCommand(() => UpdateLayout(LayoutType.Icons)) }; gridItem.AdditionalProperties[KEY_LAYOUT_TYPE] = LayoutType.Icons; items.Add(gridItem); ListItem coversItem = new ListItem(Consts.KEY_NAME, "Covers") { Command = new MethodDelegateCommand(() => UpdateLayout(LayoutType.Cover)) }; coversItem.AdditionalProperties[KEY_LAYOUT_TYPE] = LayoutType.Cover; items.Add(coversItem); }
protected ItemsList GetProgramsList(IChannel channel, DateTime referenceStart, DateTime referenceEnd) { ItemsList channelPrograms = new ItemsList(); if (_tvHandler.ProgramInfo.GetPrograms(channel, referenceStart, referenceEnd, out _programs)) { foreach (IProgram program in _programs) { // Use local variable, otherwise delegate argument is not fixed ProgramProperties programProperties = new ProgramProperties(GuideStartTime, GuideEndTime); IProgram currentProgram = program; programProperties.SetProgram(currentProgram); ProgramListItem item = new ProgramListItem(programProperties) { Command = new MethodDelegateCommand(() => ShowProgramActions(currentProgram)) }; item.AdditionalProperties["PROGRAM"] = currentProgram; channelPrograms.Add(item); } } else { channelPrograms.Add(NoProgramPlaceholder()); } return(channelPrograms); }
protected void Update() { ClearAll(); var contentDirectory = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (contentDirectory == null) { return; } ItemsList l1 = new ItemsList(); ItemsList l2 = new ItemsList(); ItemsList l3 = new ItemsList(); ItemsList l4 = new ItemsList(); var t1 = FillListAsync(contentDirectory, Consts.NECESSARY_MOVIES_MIAS, l1, item => new MovieItem(item)); var t2 = FillListAsync(contentDirectory, Consts.NECESSARY_EPISODE_MIAS, l2, item => new EpisodeItem(item)); var t3 = FillListAsync(contentDirectory, Consts.NECESSARY_IMAGE_MIAS, l3, item => new ImageItem(item)); var t4 = FillListAsync(contentDirectory, Consts.NECESSARY_AUDIO_MIAS, l4, item => new AudioItem(item)); Task.WaitAll(t1, t2, t3, t4); AllItems.Add(new TitledItem("[Media.MoviesMenuItem]", l1)); AllItems.Add(new TitledItem("[Media.SeriesMenuItem]", l2)); AllItems.Add(new TitledItem("[Media.ImagesMenuItem]", l3)); AllItems.Add(new TitledItem("[Media.AudioMenuItem]", l4)); AllItems.FireChange(); }
internal void InsertNewItemRow(DataGrid grdItems, dhSaleItem newItem) { ItemsList updatedList = new ItemsList(); var itemsSource = grdItems.ItemsSource as IEnumerable; int SerialCounter = 1; double total = 0; // add the total ammount total = total + Convert.ToDouble(newItem.FGrossAmount); if (null != itemsSource) { IEnumerable <DataGridRow> row = blUtil.GetDataGridRows(grdItems); //updatedList.Remove( /// go through each row in the datagrid foreach (DataGridRow r in row) { if (r != null) { dhSaleItem gridRowObject = (dhSaleItem)r.Item; gridRowObject.ISerialNumber = SerialCounter; SerialCounter = SerialCounter + 1; total = total + Convert.ToDouble(gridRowObject.FGrossAmount); updatedList.Add(gridRowObject); } } } newItem.ISerialNumber = SerialCounter; updatedList.Add(newItem); grdItems.ItemsSource = updatedList; }
ItemsList CreatePossibleValuesList() { var result = new ItemsList(); if (PropertyDescriptor.IsBool) { var item = new ListItem(Consts.KEY_NAME, new StringId("[System.Yes]")) { Selected = Value == true.ToString() }; item.AdditionalProperties.Add(KEY_VALUE, true.ToString()); result.Add(item); item = new ListItem(Consts.KEY_NAME, new StringId("[System.No]")) { Selected = Value == false.ToString() }; item.AdditionalProperties.Add(KEY_VALUE, false.ToString()); result.Add(item); } else if (PropertyDescriptor.IsEnum) { foreach (string e in PropertyDescriptor.GetEnumValues()) { var item = new ListItem(Consts.KEY_NAME, e) { Selected = Value == e }; item.AdditionalProperties.Add(KEY_VALUE, e); result.Add(item); } } return(result); }
protected void UpdateGroupingsList() { _groupingItemsList.Clear(); NavigationData navigationData = GetCurrentNavigationData(); ICollection <Sorting.Sorting> groupings = navigationData.AvailableGroupings; if (groupings == null) { return; } ListItem groupingItem = new ListItem(Consts.KEY_NAME, Consts.RES_NO_GROUPING) { Command = new MethodDelegateCommand(() => navigationData.CurrentGrouping = null), Selected = navigationData.CurrentGrouping == null }; groupingItem.AdditionalProperties[Consts.KEY_GROUPING] = null; _groupingItemsList.Add(groupingItem); foreach (Sorting.Sorting grouping in groupings.Where(g => g.IsAvailable(navigationData.CurrentScreenData))) { Sorting.Sorting groupingCopy = grouping; groupingItem = new ListItem(Consts.KEY_NAME, grouping.GroupByDisplayName) { Command = new MethodDelegateCommand(() => navigationData.CurrentGrouping = groupingCopy), Selected = navigationData.CurrentGrouping == groupingCopy }; groupingItem.AdditionalProperties[Consts.KEY_GROUPING] = groupingCopy; _groupingItemsList.Add(groupingItem); } _groupingItemsList.FireChange(); }
protected void CreatePositionedItems() { _positionedItems.Clear(); int x = 0; foreach (var menuItem in MenuItems) { object action; if (!menuItem.AdditionalProperties.TryGetValue(Consts.KEY_ITEM_ACTION, out action)) { continue; } WorkflowAction wfAction = action as WorkflowAction; if (wfAction == null) { continue; } // intercept the menu item commands, so we can set the item as LastSelectedItem // since the menu items are recreated when an sub screen is opened we have to check if the item is already intercepted each time if (!(menuItem.Command is MenuItemCommandInterceptor)) { menuItem.Command = new MenuItemCommandInterceptor(this, menuItem); } // Under "others" all items are places, that do not fit into any other category if (CurrentKey == MenuSettings.MENU_NAME_OTHERS) { bool found = _menuSettings.Settings.MenuItems.Keys.Any(key => _menuSettings.Settings.MenuItems[key].ContainsKey(wfAction.ActionId)); if (!found) { GridListItem gridItem = new GridListItem(menuItem) { GridColumn = x % MenuSettings.DEFAULT_NUM_COLS, GridRow = (x / MenuSettings.DEFAULT_NUM_COLS) * MenuSettings.DEFAULT_ROWSPAN_SMALL, GridRowSpan = MenuSettings.DEFAULT_ROWSPAN_SMALL, GridColumnSpan = MenuSettings.DEFAULT_COLSPAN_SMALL, }; _positionedItems.Add(gridItem); x += MenuSettings.DEFAULT_COLSPAN_SMALL; } } else { GridPosition gridPosition; if (Positions.TryGetValue(wfAction.ActionId, out gridPosition)) { GridListItem gridItem = new GridListItem(menuItem) { GridRow = gridPosition.Row, GridColumn = gridPosition.Column, GridRowSpan = gridPosition.RowSpan, GridColumnSpan = gridPosition.ColumnSpan, }; _positionedItems.Add(gridItem); } } } _positionedItems.FireChange(); }
protected void Update() { ClearAll(); var contentDirectory = ServiceRegistration.Get<IServerConnectionManager>().ContentDirectory; if (contentDirectory == null) { return; } ItemsList list = new ItemsList(); FillList(contentDirectory, Consts.NECESSARY_MOVIES_MIAS, list, item => new MovieItem(item)); AllItems.Add(new TitledItem("[Media.MoviesMenuItem]", list)); list = new ItemsList(); FillList(contentDirectory, Consts.NECESSARY_SERIES_MIAS, list, item => new SeriesItem(item)); AllItems.Add(new TitledItem("[Media.SeriesMenuItem]", list)); list = new ItemsList(); FillList(contentDirectory, Consts.NECESSARY_IMAGE_MIAS, list, item => new ImageItem(item)); AllItems.Add(new TitledItem("[Media.ImagesMenuItem]", list)); list = new ItemsList(); FillList(contentDirectory, Consts.NECESSARY_AUDIO_MIAS, list, item => new AudioItem(item)); AllItems.Add(new TitledItem("[Media.AudioMenuItem]", list)); AllItems.FireChange(); }
protected void UpdateSystemsList_NoLock() { lock (_syncObj) { _systemsList = new ItemsList(); if (_enableLocalShares) { ListItem localSystemItem = new ListItem(Consts.KEY_NAME, Consts.RES_SHARES_CONFIG_LOCAL_SHARE); localSystemItem.AdditionalProperties[Consts.KEY_SHARES_PROXY] = new LocalShares(); localSystemItem.SelectedProperty.Attach(OnSystemSelectionChanged); _systemsList.Add(localSystemItem); } if (_enableServerShares) { ListItem serverSystemItem = new ListItem(Consts.KEY_NAME, Consts.RES_SHARES_CONFIG_GLOBAL_SHARE); serverSystemItem.AdditionalProperties[Consts.KEY_SHARES_PROXY] = new ServerShares(); serverSystemItem.SelectedProperty.Attach(OnSystemSelectionChanged); _systemsList.Add(serverSystemItem); } if (_systemsList.Count > 0) { _systemsList[0].Selected = true; } } _systemsList.FireChange(); }
public void Filter(ItemsList filterList, ItemsList originalList, string search) { // Handle external filter if (string.IsNullOrEmpty(search)) { return; } // Handle given search as single key KeyPress(search[0]); // List will not be replaced, as the instance is already bound by screen, we only filter items. filterList.Clear(); foreach (NavigationItem item in originalList.OfType <NavigationItem>()) { var simpleTitle = item.SimpleTitle; // Filter if (_listFilterAction == FilterAction.StartsWith) { if (simpleTitle.ToLower().StartsWith(_listFilterString)) { filterList.Add(item); } } else { if (NumPadEncode(simpleTitle).Contains(_listFilterString)) { filterList.Add(item); } } } filterList.FireChange(); }
private void CreateRegularGroupItems() { var defaultMenuGroupId = _menuSettings.Settings.DefaultMenuGroupId; foreach (var group in _menuSettings.Settings.MainMenuGroupNames) { string groupId = group.Id.ToString(); bool isHome = groupId.Equals(MenuSettings.MENU_ID_HOME, StringComparison.CurrentCultureIgnoreCase); if (isHome && _menuSettings.Settings.DisableHomeTab) { continue; } string groupName = group.Name; var groupItem = new GroupMenuListItem(Consts.KEY_NAME, groupName); if (_menuSettings.Settings.DisableAutoSelection) { groupItem.Command = new MethodDelegateCommand(() => SetGroup(groupId)); } groupItem.AdditionalProperties["Id"] = groupId; groupItem.AdditionalProperties["Item"] = group; if (groupId == defaultMenuGroupId) { IsHome = isHome; groupItem.IsActive = true; groupItem.Selected = true; } _mainMenuGroupList.Add(groupItem); } }
protected void CheckResumeMenuInternal(MediaItem item) { IResumeState resumeState = null; IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>(); if (userProfileDataManagement.IsValidUser) { string resumeStateString; if (userProfileDataManagement.UserProfileDataManagement.GetUserMediaItemData(userProfileDataManagement.CurrentUser.ProfileId, item.MediaItemId, PlayerContext.KEY_RESUME_STATE, out resumeStateString)) { resumeState = ResumeStateBase.Deserialize(resumeStateString); } } if (resumeState == null) { // Asynchronously leave the current workflow state because we're called from a workflow model method IThreadPool threadPool = ServiceRegistration.Get <IThreadPool>(); threadPool.Add(() => { LeaveCheckResumePlaybackSingleItemState(); PlayItem(item); }); return; } _playMenuItems = new ItemsList(); ListItem resumeItem = new ListItem { Command = new MethodDelegateCommand(() => { LeaveCheckResumePlaybackSingleItemState(); PlayItem(item, resumeState); }) }; PositionResumeState positionResume = resumeState as PositionResumeState; if (positionResume != null) { string playbackResume = LocalizationHelper.Translate(Consts.RES_PLAYBACK_RESUME_TIME, positionResume.ResumePosition.ToString(@"hh\:mm\:ss")); resumeItem.SetLabel(Consts.KEY_NAME, playbackResume); } else { resumeItem.SetLabel(Consts.KEY_NAME, Consts.RES_PLAYBACK_RESUME); } _playMenuItems.Add(resumeItem); ListItem playItem = new ListItem(Consts.KEY_NAME, Consts.RES_PLAYBACK_FROMSTART) { Command = new MethodDelegateCommand(() => { LeaveCheckResumePlaybackSingleItemState(); PlayItem(item); }) }; _playMenuItems.Add(playItem); IScreenManager screenManager = ServiceRegistration.Get <IScreenManager>(); screenManager.ShowDialog(Consts.DIALOG_PLAY_MENU, (dialogName, dialogInstanceId) => LeaveCheckResumePlaybackSingleItemState()); }
public UserLanguageModel() { _isHomeServerConnectedProperty = new WProperty(typeof(bool), false); _isRestrictedToOwnProperty = new WProperty(typeof(bool), false); _isUserSelectedProperty = new WProperty(typeof(bool), false); List <CultureInfo> cultures = new List <CultureInfo>(CultureInfo.GetCultures(CultureTypes.SpecificCultures)); cultures.Sort(CompareByName); _langaugeList = new ItemsList(); ListItem item = new ListItem(); item.SetLabel(Consts.KEY_NAME, LocalizationHelper.CreateResourceString("[UserConfig.Default]")); item.AdditionalProperties[Consts.KEY_LANGUAGE] = ""; _langaugeList.Add(item); foreach (var ci in cultures) { item = new ListItem(); item.SetLabel(Consts.KEY_NAME, LocalizationHelper.CreateStaticString(ci.DisplayName)); item.AdditionalProperties[Consts.KEY_LANGUAGE] = ci; _langaugeList.Add(item); } UserProxy = new UserProxy(); }
protected void UpdateRepeatModes() { _repeatModeItems = new ItemsList(); ListItem noneItem = new ListItem(Consts.KEY_NAME, Consts.RES_REPEATMODE_NONE) { Command = new MethodDelegateCommand(() => SetRepeatMode(RepeatMode.None)) }; noneItem.AdditionalProperties[Consts.KEY_REPEATMODE] = RepeatMode.None; _repeatModeItems.Add(noneItem); ListItem allItem = new ListItem(Consts.KEY_NAME, Consts.RES_REPEATMODE_ALL) { Command = new MethodDelegateCommand(() => SetRepeatMode(RepeatMode.All)) }; allItem.AdditionalProperties[Consts.KEY_REPEATMODE] = RepeatMode.All; _repeatModeItems.Add(allItem); ListItem oneItem = new ListItem(Consts.KEY_NAME, Consts.RES_REPEATMODE_ONE) { Command = new MethodDelegateCommand(() => SetRepeatMode(RepeatMode.One)) }; oneItem.AdditionalProperties[Consts.KEY_REPEATMODE] = RepeatMode.One; _repeatModeItems.Add(oneItem); }
protected void CreatePositionedItems(ItemsList list, string currentKey, IDictionary <Guid, GridPosition> gridPositions) { list.Clear(); int x = 0; ItemsList menuItems = GetHomeMenuItems(); lock (menuItems.SyncRoot) { foreach (var menuItem in menuItems) { object action; if (!menuItem.AdditionalProperties.TryGetValue(Consts.KEY_ITEM_ACTION, out action)) { continue; } WorkflowAction wfAction = action as WorkflowAction; if (wfAction == null) { continue; } // Under "others" all items are places, that do not fit into any other category if (currentKey == MenuSettings.MENU_NAME_OTHERS) { bool found = IsManuallyPositioned(wfAction); if (!found) { GridListItem gridItem = new GridListItem(menuItem) { GridColumn = x % MenuSettings.DEFAULT_NUM_COLS, GridRow = x / MenuSettings.DEFAULT_NUM_COLS * MenuSettings.DEFAULT_ROWSPAN_SMALL, GridRowSpan = MenuSettings.DEFAULT_ROWSPAN_SMALL, GridColumnSpan = MenuSettings.DEFAULT_COLSPAN_SMALL, }; list.Add(gridItem); x += MenuSettings.DEFAULT_COLSPAN_SMALL; } } else { GridPosition gridPosition; if (gridPositions.TryGetValue(wfAction.ActionId, out gridPosition)) { GridListItem gridItem = new GridListItem(menuItem) { GridRow = gridPosition.Row, GridColumn = gridPosition.Column, GridRowSpan = gridPosition.RowSpan, GridColumnSpan = gridPosition.ColumnSpan, }; list.Add(gridItem); } } } } list.FireChange(); }
protected void CreateShareLocations() { _shareLocations = new ItemsList(); _localShareLocationItem = new ListItem(Consts.KEY_NAME, Consts.RES_LOCAL_SHARE_LOCATION); _serverShareLocationItem = new ListItem(Consts.KEY_NAME, Consts.RES_SERVER_SHARE_LOCATION); _shareLocations.Add(_localShareLocationItem); _shareLocations.Add(_serverShareLocationItem); // Initial selection will be filled by LoadSettings() }
protected void CreatePositionedItems() { _positionedItems.Clear(); int x = 0; ItemsList menuItems = MenuItems; lock (menuItems.SyncRoot) { foreach (var menuItem in menuItems) { object action; if (!menuItem.AdditionalProperties.TryGetValue(Consts.KEY_ITEM_ACTION, out action)) { continue; } WorkflowAction wfAction = action as WorkflowAction; if (wfAction == null) { continue; } // Under "others" all items are places, that do not fit into any other category if (CurrentKey == MenuSettings.MENU_NAME_OTHERS) { bool found = _menuSettings.MenuItems.Keys.Any(key => _menuSettings.MenuItems[key].ContainsKey(wfAction.ActionId)); if (!found) { GridListItem gridItem = new GridListItem(menuItem) { GridColumn = x % MenuSettings.DEFAULT_NUM_COLS, GridRow = (x / MenuSettings.DEFAULT_NUM_COLS) * MenuSettings.DEFAULT_ROWSPAN_SMALL, GridRowSpan = MenuSettings.DEFAULT_ROWSPAN_SMALL, GridColumnSpan = MenuSettings.DEFAULT_COLSPAN_SMALL, }; _positionedItems.Add(gridItem); x += MenuSettings.DEFAULT_COLSPAN_SMALL; } } else { GridPosition gridPosition; if (Positions.TryGetValue(wfAction.ActionId, out gridPosition)) { GridListItem gridItem = new GridListItem(menuItem) { GridRow = gridPosition.Row, GridColumn = gridPosition.Column, GridRowSpan = gridPosition.RowSpan, GridColumnSpan = gridPosition.ColumnSpan, }; _positionedItems.Add(gridItem); } } } } _positionedItems.FireChange(); }
protected internal async Task UpdateUserLists_NoLock(bool create, Guid?selectedUserId = null) { lock (_syncObj) { if (_updatingProperties) { return; } _updatingProperties = true; if (create) { _userList = new ItemsList(); } } try { IUserManagement userManagement = ServiceRegistration.Get <IUserManagement>(); if (userManagement == null || userManagement.UserProfileDataManagement == null) { return; } // add users to expose them var users = await userManagement.UserProfileDataManagement.GetProfilesAsync(); _userList.Clear(); ListItem item = new ListItem(); item.SetLabel(Consts.KEY_NAME, LocalizationHelper.Translate(Consts.RES_NOUSER)); item.AdditionalProperties[Consts.KEY_USER] = new UserProfile(Guid.Empty, LocalizationHelper.Translate(Consts.RES_NOUSER)); lock (_syncObj) _userList.Add(item); foreach (UserProfile user in users) { item = new ListItem(); item.SetLabel(Consts.KEY_NAME, user.Name); item.AdditionalProperties[Consts.KEY_USER] = user; lock (_syncObj) _userList.Add(item); } _userList.FireChange(); } catch (NotConnectedException) { throw; } catch (Exception e) { ServiceRegistration.Get <ILogger>().Warn("ClientConfigModel: Problems updating users", e); } finally { lock (_syncObj) _updatingProperties = false; } }
public void Add(ListItem item) { if (_items.Contains(item)) { return; } _items.Add(item); ResetActionItemProperties(_items); _items.FireChange(); UpdateOtherItems(); }
/// <summary> /// this will turn the _users list into the _usersExposed list /// </summary> private async Task RefreshUserList() { // clear the exposed users list _loginUserList.Clear(); _autoLoginUserList.Clear(); IUserManagement userManagement = ServiceRegistration.Get <IUserManagement>(); if (userManagement.UserProfileDataManagement == null) { return; } // Get our local client profile, it will be available for local login var localSystemGuid = Guid.Parse(ServiceRegistration.Get <ISettingsManager>().Load <SystemResolverSettings>().SystemId); UserProxy proxy; proxy = new UserProxy(); proxy.SetLabel(Consts.KEY_NAME, LocalizationHelper.Translate(Consts.RES_DISABLE)); proxy.SetUserProfile(new UserProfile(Guid.Empty, LocalizationHelper.Translate(Consts.RES_DISABLE))); proxy.Selected = UserSettingStorage.AutoLoginUser == Guid.Empty; proxy.SelectedProperty.Attach(OnAutoLoginUserSelectionChanged); _autoLoginUserList.Add(proxy); // add users to expose them var users = await userManagement.UserProfileDataManagement.GetProfilesAsync(); foreach (UserProfile user in users) { var isCurrentClient = user.ProfileId == localSystemGuid; if (user.ProfileType != UserProfileType.ClientProfile || isCurrentClient) { proxy = new UserProxy(); proxy.SetLabel(Consts.KEY_NAME, user.Name); proxy.SetUserProfile(user); if (UserSettingStorage.AutoLoginUser == user.ProfileId) { proxy.Selected = true; } proxy.SelectedProperty.Attach(OnAutoLoginUserSelectionChanged); _autoLoginUserList.Add(proxy); if (!isCurrentClient) { _loginUserList.Add(proxy); } } } // tell the skin that something might have changed _loginUserList.FireChange(); _autoLoginUserList.FireChange(); }
public ViewModeModel() { ViewSettings settings = ServiceRegistration.Get <ISettingsManager>().Load <ViewSettings>(); _layoutTypeProperty = new WProperty(typeof(LayoutType), settings.LayoutType); _layoutSizeProperty = new WProperty(typeof(LayoutSize), settings.LayoutSize); ListItem smallList = new ListItem(Consts.KEY_NAME, Consts.RES_SMALL_LIST) { Command = new MethodDelegateCommand(() => SetViewMode(LayoutType.ListLayout, LayoutSize.Small)), }; smallList.AdditionalProperties[Consts.KEY_LAYOUT_TYPE] = LayoutType.ListLayout; smallList.AdditionalProperties[Consts.KEY_LAYOUT_SIZE] = LayoutSize.Small; _viewModeItemsList.Add(smallList); ListItem mediumlList = new ListItem(Consts.KEY_NAME, Consts.RES_MEDIUM_LIST) { Command = new MethodDelegateCommand(() => SetViewMode(LayoutType.ListLayout, LayoutSize.Medium)) }; mediumlList.AdditionalProperties[Consts.KEY_LAYOUT_TYPE] = LayoutType.ListLayout; mediumlList.AdditionalProperties[Consts.KEY_LAYOUT_SIZE] = LayoutSize.Medium; _viewModeItemsList.Add(mediumlList); ListItem largeList = new ListItem(Consts.KEY_NAME, Consts.RES_LARGE_LIST) { Command = new MethodDelegateCommand(() => SetViewMode(LayoutType.ListLayout, LayoutSize.Large)) }; largeList.AdditionalProperties[Consts.KEY_LAYOUT_TYPE] = LayoutType.ListLayout; largeList.AdditionalProperties[Consts.KEY_LAYOUT_SIZE] = LayoutSize.Large; _viewModeItemsList.Add(largeList); ListItem largeGrid = new ListItem(Consts.KEY_NAME, Consts.RES_LARGE_GRID) { Command = new MethodDelegateCommand(() => SetViewMode(LayoutType.GridLayout, LayoutSize.Large)) }; largeGrid.AdditionalProperties[Consts.KEY_LAYOUT_TYPE] = LayoutType.GridLayout; largeGrid.AdditionalProperties[Consts.KEY_LAYOUT_SIZE] = LayoutSize.Large; _viewModeItemsList.Add(largeGrid); ListItem coverLarge = new ListItem(Consts.KEY_NAME, Consts.RES_LARGE_COVER) { Command = new MethodDelegateCommand(() => SetViewMode(LayoutType.CoverLayout, LayoutSize.Large)) }; coverLarge.AdditionalProperties[Consts.KEY_LAYOUT_TYPE] = LayoutType.CoverLayout; coverLarge.AdditionalProperties[Consts.KEY_LAYOUT_SIZE] = LayoutSize.Large; _viewModeItemsList.Add(coverLarge); }
protected void InitializeTree() { _tree = new ItemsList(); TreeItem item = new TreeItem("Name", "First item"); CreateChildren(item, 2, 3); _tree.Add(item); item = new TreeItem("Name", "Second item"); CreateChildren(item, 2, 4); _tree.Add(item); item = new TreeItem("Name", "Third item"); CreateChildren(item, 2, 5); _tree.Add(item); }
protected void UpdateDeviceList() { _deviceList.Clear(); MappableDeviceItem noDeviceItem = new MappableDeviceItem("[Emulators.LibRetro.InputDevice.None]", null); _deviceList.Add(noDeviceItem); foreach (IMappableDevice device in _deviceProxy.GetDevices(true)) { MappableDeviceItem deviceItem = new MappableDeviceItem(device.DeviceName, device); _deviceList.Add(deviceItem); } _deviceList.FireChange(); }
ItemsList CreateLanguagesList() { var items = new ItemsList(); var allItem = new ListItem(Consts.KEY_NAME, "[OnlineVideos.All]"); allItem.AdditionalProperties[Constants.KEY_VALUE] = null; items.Add(allItem); foreach (var lang in Sites.Updater.OnlineSites.Select(s => s.Language != null ? s.Language : "--").Distinct().Select(s => new { Code = s, Name = TranslationLoader.GetLocalizedLanguageName(s) }).OrderBy(s => s.Name)) { var langItem = new ListItem(Consts.KEY_NAME, lang.Name); langItem.AdditionalProperties[Constants.KEY_VALUE] = lang.Code; items.Add(langItem); } return(items); }
ItemsList CreateOwnersList() { var items = new ItemsList(); var allItem = new ListItem(Consts.KEY_NAME, "[OnlineVideos.All]"); allItem.AdditionalProperties[Constants.KEY_VALUE] = null; items.Add(allItem); foreach (var owner in Sites.Updater.OnlineSites.Select(s => s.Owner_FK != null ? s.Owner_FK.Substring(0, s.Owner_FK.IndexOf('@')) : "").Distinct().OrderBy(s => s)) { var ownerItem = new ListItem(Consts.KEY_NAME, owner); ownerItem.AdditionalProperties[Constants.KEY_VALUE] = owner; items.Add(ownerItem); } return(items); }
protected void AddScreen(WorkflowAction item, string prefix) { ListItem listItem = new ListItem(Consts.KEY_NAME, $"{LocalizationHelper.Translate(RES_SCREEN_TEXT)} \"{item.DisplayTitle}\"") { Command = new MethodDelegateCommand(() => ChooseKeyAction(prefix + item.Name)) }; listItem.SetLabel(KEY_KEYMAP, ""); listItem.SetLabel(KEY_KEYMAP_NAME, item.DisplayTitle); listItem.AdditionalProperties[KEY_KEYMAP_DATA] = prefix + item.Name; if (!_items.Any(i => string.Compare((string)i.AdditionalProperties[KEY_KEYMAP_DATA], (string)listItem.AdditionalProperties[KEY_KEYMAP_DATA], true) == 0)) { _items.Add(listItem); } }
protected virtual void ShowProgramActions(IProgram program) { if (program == null) { return; } ILocalization loc = ServiceRegistration.Get <ILocalization>(); ItemsList actions = new ItemsList(); // if program is over already, there is nothing to do. if (program.EndTime < DateTime.Now) { actions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.ProgramOver]"))); } else { // Check if program is currently running. bool isRunning = DateTime.Now >= program.StartTime && DateTime.Now <= program.EndTime; if (isRunning) { actions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchNow]")) { Command = new AsyncMethodDelegateCommand(() => TuneChannelByProgram(program)) }); } if (_tvHandler.ScheduleControl != null) { var result = _tvHandler.ScheduleControl.GetRecordingStatusAsync(program).Result; if (result.Success) { if (isRunning && result.Result != RecordingStatus.None) { actions.Add( new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchFromBeginning]")) { Command = new AsyncMethodDelegateCommand(() => _tvHandler.WatchRecordingFromBeginningAsync(program)) }); } AddRecordingOptions(actions, program, result.Result); } } } SlimTvExtScheduleModel.ShowDialog("[SlimTvClient.ChooseProgramAction]", actions); }
protected void UpdateShutdownItems() { ISettingsManager sm = ServiceRegistration.Get <ISettingsManager>(); List <SystemStateItem> systemStateItems = sm.Load <SystemStateDialogSettings>().ShutdownItemList; bool timerActive = false; Models.SleepTimerModel stm = ServiceRegistration.Get <IWorkflowManager>().GetModel(Consts.WF_STATE_ID_SLEEP_TIMER_MODEL) as Models.SleepTimerModel; if (stm != null && stm.IsSleepTimerActive == true) { timerActive = true; } _shutdownItems.Clear(); if (systemStateItems != null) { for (int i = 0; i < systemStateItems.Count; i++) { SystemStateItem systemStateItem = systemStateItems[i]; if (!systemStateItem.Enabled) { continue; } ListItem item = new ListItem(Consts.KEY_NAME, Consts.GetResourceIdentifierForMenuItem(systemStateItem.Action, timerActive)); item.Command = new MethodDelegateCommand(() => DoAction(systemStateItem.Action)); _shutdownItems.Add(item); } } _shutdownItems.FireChange(); }
private void FillProgramsList() { _programsList.Clear(); foreach (IProgram program in _programs) { // Use local variable, otherwise delegate argument is not fixed ProgramProperties programProperties = new ProgramProperties(); IProgram currentProgram = program; programProperties.SetProgram(currentProgram); ProgramListItem item = new ProgramListItem(programProperties) { Command = new MethodDelegateCommand(() => { var isSingle = programProperties.IsScheduled; var isSeries = programProperties.IsSeriesScheduled; if (isSingle || isSeries) { CancelSchedule(currentProgram); } else { RecordSeries(currentProgram); } }) }; item.AdditionalProperties["PROGRAM"] = currentProgram; item.Selected = _lastProgramId == program.ProgramId; // Restore focus _programsList.Add(item); } _programsList.FireChange(); }
protected async Task CheckEditionMenuInternal(MediaItem item) { bool hasEditions = item.Editions.Count > 1; if (!hasEditions) { // Asynchronously leave the current workflow state because we're called from a workflow model method //await Task.Yield(); await Task.Run(async() => { LeaveCheckEditionsState(); await CheckResumeMenuInternal(item, 0); }); return; } _playMenuItems = new ItemsList(); for (var editionIndex = 0; editionIndex < item.Editions.Count; editionIndex++) { var edition = item.Editions[editionIndex]; var label = edition.Name; var index = editionIndex; ListItem editionItem = new ListItem { Command = new AsyncMethodDelegateCommand(() => { return(CheckResumeMenuInternal(item, index)); }) }; editionItem.SetLabel(Consts.KEY_NAME, label); _playMenuItems.Add(editionItem); } IScreenManager screenManager = ServiceRegistration.Get <IScreenManager>(); screenManager.ShowDialog(Consts.DIALOG_PLAY_MENU, (dialogName, dialogInstanceId) => LeaveCheckEditionsState()); }
void showContext() { ItemsList items = new ItemsList(); items.Add(new ListItem(Consts.KEY_NAME, "[Emulators.Config.Edit]") { Command = new MethodDelegateCommand(() => ConfigureEmulatorModel.EditEmulator(emulator)) }); ListDialogModel.Instance().ShowDialog(emulator.Title, items); }
public PlatformSelectModel() { items = new ItemsList(); var platforms = Dropdowns.GetPlatformList(); for (int i = -1; i < platforms.Count; i++) { string platformName = i < 0 ? "" : platforms[i].Name; ListItem item = new ListItem(Consts.KEY_NAME, platformName) { Command = new MethodDelegateCommand(() => UpdatePlatform(platformName)) }; item.AdditionalProperties[KEY_PLATFORM] = platformName; items.Add(item); } }
ItemsList CreatePossibleValuesList() { var result = new ItemsList(); if (PropertyDescriptor.IsBool) { var item = new ListItem(Consts.KEY_NAME, new StringId("[System.Yes]")) { Selected = Value == true.ToString() }; item.AdditionalProperties.Add(KEY_VALUE, true.ToString()); result.Add(item); item = new ListItem(Consts.KEY_NAME, new StringId("[System.No]")) { Selected = Value == false.ToString() }; item.AdditionalProperties.Add(KEY_VALUE, false.ToString()); result.Add(item); } else if (PropertyDescriptor.IsEnum) { foreach (string e in PropertyDescriptor.GetEnumValues()) { var item = new ListItem(Consts.KEY_NAME, e) { Selected = Value == e }; item.AdditionalProperties.Add(KEY_VALUE, e); result.Add(item); } } return result; }
public ViewModeModel() { startupItems = new ItemsList(); var startupStates = StartupStateSetting.StartupStates; foreach (string key in startupStates.Keys) { StartupState state = startupStates[key]; if (state != StartupState.LASTUSED) { ListItem item = new ListItem(Consts.KEY_NAME, LocalizationHelper.CreateResourceString(key)) { Command = new MethodDelegateCommand(() => SetStartupState(state)) }; item.AdditionalProperties[KEY_STARTUP_STATE] = state; startupItems.Add(item); } } }
protected ItemsList GetItems() { var model = EmulatorsMainModel.Instance(); StartupState currentState = model.StartupState; bool showPC = Emulator.GetPC().Games.Count > 0; if (!showPC && currentState == StartupState.PCGAMES) currentState = StartupState.EMULATORS; ItemsList items = new ItemsList(); foreach (ListItem item in startupItems) { StartupState state; if (tryGetStartupState(item.AdditionalProperties, out state)) { if (state != StartupState.PCGAMES || showPC) { item.Selected = (StartupState)state == currentState; items.Add(item); } } } return items; }
protected void UpdateSharesList_NoLock(ItemsList list, List<Share> shareDescriptors, ShareOrigin origin, bool selectFirstItem) { list.Clear(); bool selectShare = selectFirstItem; shareDescriptors.Sort((a, b) => a.Name.CompareTo(b.Name)); foreach (Share share in shareDescriptors) { ListItem shareItem = new ListItem(Consts.KEY_NAME, share.Name); shareItem.AdditionalProperties[Consts.KEY_SHARE] = share; try { string path = origin == ShareOrigin.Local ? LocalShares.GetLocalResourcePathDisplayName(share.BaseResourcePath) : ServerShares.GetServerResourcePathDisplayName(share.BaseResourcePath); if (string.IsNullOrEmpty(path)) // Error case: The path is invalid path = LocalizationHelper.Translate(Consts.RES_INVALID_PATH, share.BaseResourcePath); shareItem.SetLabel(Consts.KEY_PATH, path); Guid? firstResourceProviderId = SharesProxy.GetBaseResourceProviderId(share.BaseResourcePath); if (firstResourceProviderId.HasValue) { ResourceProviderMetadata firstResourceProviderMetadata = origin == ShareOrigin.Local ? LocalShares.GetLocalResourceProviderMetadata(firstResourceProviderId.Value) : ServerShares.GetServerResourceProviderMetadata(firstResourceProviderId.Value); shareItem.AdditionalProperties[Consts.KEY_RESOURCE_PROVIDER_METADATA] = firstResourceProviderMetadata; } string categories = StringUtils.Join(", ", share.MediaCategories); shareItem.SetLabel(Consts.KEY_MEDIA_CATEGORIES, categories); Share shareCopy = share; shareItem.Command = new MethodDelegateCommand(() => ShowShareInfo(shareCopy, origin)); } catch (NotConnectedException) { throw; } catch (Exception e) { ServiceRegistration.Get<ILogger>().Warn("Problems building share item '{0}' (path '{1}')", e, share.Name, share.BaseResourcePath); } if (selectShare) { selectShare = false; shareItem.Selected = true; } shareItem.SelectedProperty.Attach(OnShareItemSelectionChanged); lock (_syncObj) list.Add(shareItem); } list.FireChange(); }
protected void AddResources(IEnumerable<ResourcePathMetadata> resources, ItemsList items) { List<ResourcePathMetadata> resourcesMetadata = new List<ResourcePathMetadata>(resources); resourcesMetadata.Sort((a, b) => a.ResourceName.CompareTo(b.ResourceName)); foreach (ResourcePathMetadata resourceMetadata in resourcesMetadata) { TreeItem directoryItem = new TreeItem(Consts.KEY_NAME, resourceMetadata.ResourceName); directoryItem.AdditionalProperties[Consts.KEY_RESOURCE_PATH] = resourceMetadata.ResourcePath; directoryItem.SetLabel(Consts.KEY_PATH, resourceMetadata.HumanReadablePath); if (ChoosenResourcePath == resourceMetadata.ResourcePath) directoryItem.Selected = true; directoryItem.SelectedProperty.Attach(OnTreePathSelectionChanged); directoryItem.AdditionalProperties[Consts.KEY_EXPANSION] = new ExpansionHelper(directoryItem, this); items.Add(directoryItem); } }
protected void ShowProgramActions(IProgram program) { if (program == null) return; ILocalization loc = ServiceRegistration.Get<ILocalization>(); _programActions = new ItemsList(); // if program is over already, there is nothing to do. if (program.EndTime < DateTime.Now) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.ProgramOver]"))); } else { // Check if program is currently running. bool isRunning = DateTime.Now >= program.StartTime && DateTime.Now <= program.EndTime; if (isRunning) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchNow]")) { Command = new MethodDelegateCommand(() => { IChannel channel; if (_tvHandler.ProgramInfo.GetChannel(program, out channel)) _tvHandler.StartTimeshift(PlayerContextIndex.PRIMARY, channel); }) }); } if (_tvHandler.ScheduleControl != null) { RecordingStatus recordingStatus; if (_tvHandler.ScheduleControl.GetRecordingStatus(program, out recordingStatus) && recordingStatus != RecordingStatus.None) { _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.DeleteSchedule]")) { Command = new MethodDelegateCommand(() => { if (_tvHandler.ScheduleControl.RemoveSchedule(program)) UpdateRecordingStatus(program, RecordingStatus.None); } ) }); } else { _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(isRunning ? "[SlimTvClient.RecordNow]" : "[SlimTvClient.CreateSchedule]")) { Command = new MethodDelegateCommand(() => { if (_tvHandler.ScheduleControl.CreateSchedule(program)) UpdateRecordingStatus(program, RecordingStatus.Scheduled); } ) }); } } } // Add list entries for extensions foreach (KeyValuePair<Guid, TvExtension> programExtension in _programExtensions) { TvExtension extension = programExtension.Value; // First check if this extension applies for the selected program if (!extension.Extension.IsAvailable(program)) continue; _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(extension.Caption)) { Command = new MethodDelegateCommand(() => extension.Extension.ProgramAction(program)) }); } IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); screenManager.ShowDialog(_programActionsDialogName); }
protected void UpdateSystemsList_NoLock() { lock (_syncObj) { _systemsList = new ItemsList(); if (_enableLocalShares) { ListItem localSystemItem = new ListItem(Consts.KEY_NAME, Consts.RES_SHARES_CONFIG_LOCAL_SHARE); localSystemItem.AdditionalProperties[Consts.KEY_SHARES_PROXY] = new LocalShares(); localSystemItem.SelectedProperty.Attach(OnSystemSelectionChanged); _systemsList.Add(localSystemItem); } if (_enableServerShares) { ListItem serverSystemItem = new ListItem(Consts.KEY_NAME, Consts.RES_SHARES_CONFIG_GLOBAL_SHARE); serverSystemItem.AdditionalProperties[Consts.KEY_SHARES_PROXY] = new ServerShares(); serverSystemItem.SelectedProperty.Attach(OnSystemSelectionChanged); _systemsList.Add(serverSystemItem); } if (_systemsList.Count > 0) _systemsList[0].Selected = true; } _systemsList.FireChange(); }
protected ItemsList GetProgramsList(IChannel channel, DateTime referenceStart, DateTime referenceEnd) { ItemsList channelPrograms = new ItemsList(); if (_tvHandler.ProgramInfo.GetPrograms(channel, referenceStart, referenceEnd, out _programs)) { foreach (IProgram program in _programs) { // Use local variable, otherwise delegate argument is not fixed ProgramProperties programProperties = new ProgramProperties(GuideStartTime, GuideEndTime); IProgram currentProgram = program; programProperties.SetProgram(currentProgram); ProgramListItem item = new ProgramListItem(programProperties) { Command = new MethodDelegateCommand(() => ShowProgramActions(currentProgram)) }; item.AdditionalProperties["PROGRAM"] = currentProgram; channelPrograms.Add(item); } } else channelPrograms.Add(NoProgramPlaceholder()); return channelPrograms; }
protected void UpdatePlayModes() { _playModeItems = new ItemsList(); ListItem continuousItem = new ListItem(Consts.KEY_NAME, Consts.RES_PLAYMODE_CONTINUOUS) { Command = new MethodDelegateCommand(() => SetPlayMode(PlayMode.Continuous)) }; continuousItem.AdditionalProperties[Consts.KEY_PLAYMODE] = PlayMode.Continuous; _playModeItems.Add(continuousItem); ListItem shuffleItem = new ListItem(Consts.KEY_NAME, Consts.RES_PLAYMODE_SHUFFLE) { Command = new MethodDelegateCommand(() => SetPlayMode(PlayMode.Shuffle)) }; shuffleItem.AdditionalProperties[Consts.KEY_PLAYMODE] = PlayMode.Shuffle; _playModeItems.Add(shuffleItem); }
protected void FillList(IContentDirectory contentDirectory, Guid[] necessaryMIAs, ItemsList list, MediaItemToListItemAction converterAction) { MediaItemQuery query = new MediaItemQuery(necessaryMIAs, null) { Limit = (uint)QueryLimit, // Last 5 imported items SortInformation = new List<SortInformation> { new SortInformation(ImporterAspect.ATTR_DATEADDED, SortDirection.Descending) } }; var items = contentDirectory.Search(query, false); list.Clear(); foreach (MediaItem mediaItem in items) { PlayableMediaItem listItem = converterAction(mediaItem); listItem.Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(listItem.MediaItem)); list.Add(listItem); } list.FireChange(); }
private static void CreateProgramListItem(IProgram program, ItemsList channelPrograms) { ProgramListItem item; if (program == null) item = GetNoProgramPlaceholder(); else { ProgramProperties programProperties = new ProgramProperties(); programProperties.SetProgram(program); item = new ProgramListItem(programProperties); } item.AdditionalProperties["PROGRAM"] = program; channelPrograms.Add(item); }
ItemsList CreateContextMenuEntries() { var site = OnlineVideoSettings.Instance.SiteUtilsList[SiteName]; var ctxEntries = new ItemsList(); if (VideoInfo != null) { if (SiteUtilName != "DownloadedVideo" && (IsDetailsVideo || !(VideoInfo.HasDetails & site is Sites.IChoice))) { ctxEntries.Add( new ListItem(Consts.KEY_NAME, string.Format("{0} ({1})", Translation.Instance.Download, Translation.Instance.Concurrent)) { Command = new MethodDelegateCommand(() => DownloadConcurrent()) }); ctxEntries.Add( new ListItem(Consts.KEY_NAME, string.Format("{0} ({1})", Translation.Instance.Download, Translation.Instance.Queued)) { Command = new MethodDelegateCommand(() => DownloadQueued()) }); } foreach (var entry in site.GetContextMenuEntries(Category, VideoInfo)) { var entry_for_closure = entry; var item = new ListItem(Consts.KEY_NAME, entry.DisplayText); item.Command = new MethodDelegateCommand(() => HandleCustomContextMenuEntry(entry_for_closure)); ctxEntries.Add(item); } } return ctxEntries; }
void HandleCustomContextMenuEntry(Sites.ContextMenuEntry entry) { ServiceRegistration.Get<IScreenManager>().CloseTopmostDialog(); switch (entry.Action) { case Sites.ContextMenuEntry.UIAction.Execute: ExecuteCustomContextMenuEntry(entry); break; case Sites.ContextMenuEntry.UIAction.GetText: //todo: show input dialog and execute when confirmed //entry.UserInputText = text; //ExecuteCustomContextMenuEntry(entry); break; case Sites.ContextMenuEntry.UIAction.PromptYesNo: var dialogHandleId = ServiceRegistration.Get<IDialogManager>().ShowDialog(entry.DisplayText, entry.PromptText, DialogType.YesNoDialog, false, DialogButtonType.No); var dialogCloseWatcher = new DialogCloseWatcher(this, dialogHandleId, (dialogResult) => { if (dialogResult == DialogResult.Yes) { ExecuteCustomContextMenuEntry(entry); } }); break; case Sites.ContextMenuEntry.UIAction.ShowList: var menuItems = new ItemsList(); foreach (var item in entry.SubEntries) { var listItem = new ListItem(Consts.KEY_NAME, item.DisplayText); listItem.AdditionalProperties.Add(Consts.KEY_MEDIA_ITEM, item); menuItems.Add(listItem); } ServiceRegistration.Get<IWorkflowManager>().NavigatePushTransient( WorkflowState.CreateTransientState("CustomContextItems", entry.DisplayText, true, "ovsDialogGenericItems", false, WorkflowType.Dialog), new NavigationContextConfig() { AdditionalContextVariables = new Dictionary<string, object> { { Constants.CONTEXT_VAR_ITEMS, menuItems }, { Constants.CONTEXT_VAR_COMMAND, new CommandContainer<ListItem>((li)=>HandleCustomContextMenuEntry(li.AdditionalProperties[Consts.KEY_MEDIA_ITEM] as Sites.ContextMenuEntry)) } } }); break; } }
public void ChoosePlaybackOptions(string defaultUrl, Action<string> resultHandler, bool skipDialog = false) { // with no options set, return the VideoUrl field if (VideoInfo.PlaybackOptions == null || VideoInfo.PlaybackOptions.Count == 0) resultHandler(defaultUrl); // with just one option set, resolve it and call handler else if (VideoInfo.PlaybackOptions.Count == 1) { BackgroundTask.Instance.Start<string>( () => { return VideoInfo.GetPlaybackOptionUrl(VideoInfo.PlaybackOptions.First().Key); }, (success, url) => { if (success) resultHandler(url); }, Translation.Instance.GettingPlaybackUrlsForVideo); } else { if (skipDialog) { var defaultOption = VideoInfo.PlaybackOptions.FirstOrDefault(p => p.Value == defaultUrl).Key; if (string.IsNullOrEmpty(defaultOption)) defaultOption = VideoInfo.PlaybackOptions.First().Key; BackgroundTask.Instance.Start<string>( () => { return VideoInfo.GetPlaybackOptionUrl(defaultOption); }, (success, url) => { if (success) resultHandler(url); }, Translation.Instance.GettingPlaybackUrlsForVideo); } else { var playbackOptionsItems = new ItemsList(); foreach (var item in VideoInfo.PlaybackOptions) { var listItem = new ListItem(Consts.KEY_NAME, item.Key); listItem.AdditionalProperties.Add(Constants.KEY_HANDLER, resultHandler); listItem.Selected = item.Value == defaultUrl; playbackOptionsItems.Add(listItem); } ServiceRegistration.Get<IWorkflowManager>().NavigatePushTransient( WorkflowState.CreateTransientState("PlaybackOptions", VideoInfo.Title, true, "ovsDialogGenericItems", false, WorkflowType.Dialog), new NavigationContextConfig() { AdditionalContextVariables = new Dictionary<string, object> { { Constants.CONTEXT_VAR_ITEMS, playbackOptionsItems }, { Constants.CONTEXT_VAR_COMMAND, new CommandContainer<ListItem>(SelectPlaybackOption) } } }); } } }
protected void UpdatePlaylists(ItemsList list, List<PlaylistBase> playlistsData, bool selectFirstItem) { list.Clear(); bool selectPlaylist = selectFirstItem; playlistsData.Sort((a, b) => a.Name.CompareTo(b.Name)); foreach (PlaylistBase playlistData in playlistsData) { AVType? avType = ConvertPlaylistTypeToAVType(playlistData.PlaylistType); if (!avType.HasValue) continue; ListItem playlistItem = new ListItem(Consts.KEY_NAME, playlistData.Name); playlistItem.AdditionalProperties[Consts.KEY_PLAYLIST_AV_TYPE] = avType.Value; playlistItem.AdditionalProperties[Consts.KEY_PLAYLIST_NUM_ITEMS] = playlistData.NumItems; playlistItem.AdditionalProperties[Consts.KEY_PLAYLIST_DATA] = playlistData; PlaylistBase plCopy = playlistData; playlistItem.Command = new MethodDelegateCommand(() => ShowPlaylistInfo(plCopy)); if (selectPlaylist) { selectPlaylist = false; playlistItem.Selected = true; } playlistItem.SelectedProperty.Attach(OnPlaylistItemSelectionChanged); lock (_syncObj) list.Add(playlistItem); } list.FireChange(); }
protected void ShowProgramActions(IProgram program) { if (program == null) return; ILocalization loc = ServiceRegistration.Get<ILocalization>(); _programActions = new ItemsList(); // if program is over already, there is nothing to do. if (program.EndTime < DateTime.Now) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.ProgramOver]"))); } else { // Check if program is currently running. bool isRunning = DateTime.Now >= program.StartTime && DateTime.Now <= program.EndTime; if (isRunning) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchNow]")) { Command = new MethodDelegateCommand(() => { IChannel channel; if (_tvHandler.ProgramInfo.GetChannel(program, out channel)) { IWorkflowManager workflowManager = ServiceRegistration.Get<IWorkflowManager>(); SlimTvClientModel model = workflowManager.GetModel(SlimTvClientModel.MODEL_ID) as SlimTvClientModel; if (model != null) { model.Tune(channel); // Always switch to fullscreen workflowManager.NavigatePush(Consts.WF_STATE_ID_FULLSCREEN_VIDEO); } } }) }); } if (_tvHandler.ScheduleControl != null) { RecordingStatus recordingStatus; if (_tvHandler.ScheduleControl.GetRecordingStatus(program, out recordingStatus) && recordingStatus != RecordingStatus.None) { if (isRunning) _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchFromBeginning]")) { Command = new MethodDelegateCommand(() => _tvHandler.WatchRecordingFromBeginning(program)) }); _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(isRunning ? "[SlimTvClient.StopCurrentRecording]" : "[SlimTvClient.DeleteSchedule]", program.Title)) { Command = new MethodDelegateCommand(() => { if (_tvHandler.ScheduleControl.RemoveScheduleForProgram(program, ScheduleRecordingType.Once)) UpdateRecordingStatus(program, RecordingStatus.None); } ) }); } else { _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(isRunning ? "[SlimTvClient.RecordNow]" : "[SlimTvClient.CreateSchedule]")) { Command = new MethodDelegateCommand(() => { ISchedule schedule; bool result; // "No Program" placeholder if (program.ProgramId == -1) result = _tvHandler.ScheduleControl.CreateScheduleByTime(new Channel { ChannelId = program.ChannelId }, program.StartTime, program.EndTime, out schedule); else result = _tvHandler.ScheduleControl.CreateSchedule(program, ScheduleRecordingType.Once, out schedule); if (result) UpdateRecordingStatus(program, RecordingStatus.Scheduled); } ) }); } } } // Add list entries for extensions foreach (KeyValuePair<Guid, TvExtension> programExtension in _programExtensions) { TvExtension extension = programExtension.Value; // First check if this extension applies for the selected program if (!extension.Extension.IsAvailable(program)) continue; _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(extension.Caption)) { Command = new MethodDelegateCommand(() => extension.Extension.ProgramAction(program)) }); } IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); screenManager.ShowDialog(_programActionsDialogName); }
protected void ShowProgramActions(IProgram program) { if (program == null) return; ILocalization loc = ServiceRegistration.Get<ILocalization>(); _programActions = new ItemsList(); // if program is over already, there is nothing to do. if (program.EndTime < DateTime.Now) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.ProgramOver]"))); } else { // Check if program is currently running. bool isRunning = DateTime.Now >= program.StartTime && DateTime.Now <= program.EndTime; if (isRunning) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchNow]")) { Command = new MethodDelegateCommand(() => { IChannel channel; if (_tvHandler.ProgramInfo.GetChannel(program, out channel)) _tvHandler.StartTimeshift(PlayerManagerConsts.PRIMARY_SLOT, channel); }) }); } if (_tvHandler.ScheduleControl != null) { RecordingStatus recordingStatus; if (_tvHandler.ScheduleControl.GetRecordingStatus(program, out recordingStatus) && recordingStatus != RecordingStatus.None) { _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.DeleteSchedule]")) { Command = new MethodDelegateCommand(() => { if (_tvHandler.ScheduleControl.RemoveSchedule(program)) UpdateRecordingStatus(program, RecordingStatus.None); } ) }); } else { _programActions.Add( new ListItem(Consts.KEY_NAME, loc.ToString(isRunning ? "[SlimTvClient.RecordNow]" : "[SlimTvClient.CreateSchedule]")) { Command = new MethodDelegateCommand(() => { if (_tvHandler.ScheduleControl.CreateSchedule(program)) UpdateRecordingStatus(program, RecordingStatus.Scheduled); } ) }); } } } IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); screenManager.ShowDialog(_programActionsDialogName); }
public static void ShowLoadThemeDialog() { IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); SkinManager skinManager = ServiceRegistration.Get<ISkinResourceManager>() as SkinManager; if (skinManager == null) return; string currentSkinName = screenManager.CurrentSkinResourceBundle.SkinName; Skin currentSkin; if (!skinManager.Skins.TryGetValue(currentSkinName, out currentSkin)) return; ItemsList themeItems = new ItemsList(); foreach (Theme theme in currentSkin.Themes.Values) { if (!theme.IsValid) continue; string themeName = theme.Name; ListItem themeItem = new ListItem(Consts.KEY_NAME, themeName) { Command = new MethodDelegateCommand(() => screenManager.SwitchSkinAndTheme(null, themeName)) }; themeItems.Add(themeItem); } ShowDialog(Consts.RES_LOAD_THEME_TITLE, themeItems); }
void contextCommandDelegate() { Importer importer = ServiceRegistration.Get<IEmulatorsService>().Importer; RomMatchStatus status = romMatch.Status; ItemsList items = new ItemsList(); if ((status == RomMatchStatus.Approved || status == RomMatchStatus.NeedsInput) && romMatch.PossibleGameDetails != null && romMatch.PossibleGameDetails.Count > 0) { items.Add(new ListItem(Consts.KEY_NAME, "[Emulators.Import.Approve]") { Command = new MethodDelegateCommand(() => { importer.Approve(romMatch); }) }); } items.Add(new ListItem(Consts.KEY_NAME, "[Emulators.Import.ManualSearch]") { Command = new MethodDelegateCommand(() => { TextInputModel.Instance().ShowDialog("[Emulators.Import.Search]", romMatch.Filename, "[Emulators.Import.Search]", t => { if (t != romMatch.SearchTitle) { romMatch.SearchTitle = t; importer.ReProcess(romMatch); } }); }) }); items.Add(new ListItem(Consts.KEY_NAME, "[Emulators.Import.AddAsBlankGame]") { Command = new MethodDelegateCommand(() => { importer.Ignore(romMatch); }) }); items.Add(new ListItem(Consts.KEY_NAME, "[Emulators.Import.Delete]") { Command = new MethodDelegateCommand(() => { Game game = romMatch.Game; foreach (GameDisc disc in game.Discs) EmulatorsCore.Options.AddIgnoreFile(disc.Path); game.Delete(); }) }); ListDialogModel.Instance().ShowDialog(romMatch.Filename, items); }
protected void FillChannelGroupList() { if (_channelGroups == null) return; _channelGroupList = new ItemsList(); for (int idx = 0; idx < _channelGroups.Count; idx++) { IChannelGroup group = _channelGroups[idx]; int selIdx = idx; ListItem channelGroupItem = new ListItem(UiComponents.Media.General.Consts.KEY_NAME, group.Name) { Command = new MethodDelegateCommand(() => SetGroup(selIdx)), Selected = selIdx == _webChannelGroupIndex }; _channelGroupList.Add(channelGroupItem); } _channelGroupList.FireChange(); }
public Guid ShowDialog(string headerText, string text, DialogType type, bool showCancelButton, DialogButtonType? focusedButton) { Guid dialogHandle = Guid.NewGuid(); ItemsList buttons = new ItemsList(); switch (type) { case DialogType.OkDialog: buttons.Add(CreateButtonListItem(OK_BUTTON_TEXT, dialogHandle, DialogResult.Ok, focusedButton == DialogButtonType.Ok || !showCancelButton)); break; case DialogType.YesNoDialog: buttons.Add(CreateButtonListItem(YES_BUTTON_TEXT, dialogHandle, DialogResult.Yes, focusedButton == DialogButtonType.Yes)); buttons.Add(CreateButtonListItem(NO_BUTTON_TEXT, dialogHandle, DialogResult.No, focusedButton == DialogButtonType.No)); break; default: throw new NotImplementedException(string.Format("DialogManager: DialogType {0} is not implemented yet", type)); } if (showCancelButton) buttons.Add(CreateButtonListItem(CANCEL_BUTTON_TEXT, dialogHandle, DialogResult.Cancel, focusedButton == DialogButtonType.Cancel)); IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); _dialogData = new GenericDialogData(headerText, text, buttons, dialogHandle); Guid? dialogInstanceId = screenManager.ShowDialog(GENERIC_DIALOG_SCREEN, OnDialogClosed); if (!dialogInstanceId.HasValue) throw new InvalidDataException("Generic dialog could not be shown"); _dialogData.DialogInstanceId = dialogInstanceId.Value; return dialogHandle; }
protected void ShowProgramActions(IProgram program) { if (program == null) return; ILocalization loc = ServiceRegistration.Get<ILocalization>(); _programActions = new ItemsList(); // if program is over already, there is nothing to do. if (program.EndTime < DateTime.Now) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.ProgramOver]"))); } else { // check if program is currently running. if (DateTime.Now >= program.StartTime && DateTime.Now <= program.EndTime) { _programActions.Add(new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.WatchNow]")) { Command = new MethodDelegateCommand(() => { IChannel channel; if (_tvHandler.ProgramInfo.GetChannel(program, out channel)) _tvHandler.StartTimeshift(PlayerManagerConsts.PRIMARY_SLOT, channel); }) }); } //TODO: define and implement recording info interfaces, add code again //if (program.IsRecording || program.IsRecordingOncePending || program.IsRecordingSeriesPending) //{ // _programActions.Add( // new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.DeleteSchedule]")) // { // Command = new MethodDelegateCommand(() => _tvServer.TvServer.CancelSchedule(programId)) // }); //} //else //{ // _programActions.Add( // new ListItem(Consts.KEY_NAME, loc.ToString("[SlimTvClient.CreateSchedule]")) // { // Command = new MethodDelegateCommand(() => // _tvServer.TvServer.AddSchedule(_channelID, program.Title, // program.StartTime, program.EndTime, 0)) // }); //} } IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); screenManager.ShowDialog(_programActionsDialogName); }
protected void UpdateSharesList_NoLock(bool create) { lock (_syncObj) if (create) _sharesList = new ItemsList(); else _sharesList.Clear(); try { IServerConnectionManager scm = ServiceRegistration.Get<IServerConnectionManager>(); IContentDirectory cd = scm.ContentDirectory; IServerController sc = scm.ServerController; if (cd == null || sc == null) return; IRemoteResourceInformationService rris = ServiceRegistration.Get<IRemoteResourceInformationService>(); ICollection<Share> allShares = cd.GetShares(null, SharesFilter.All); IDictionary<string, ICollection<Share>> systems2Shares = new Dictionary<string, ICollection<Share>>(); foreach (Share share in allShares) { ICollection<Share> systemShares; if (systems2Shares.TryGetValue(share.SystemId, out systemShares)) systemShares.Add(share); else systems2Shares[share.SystemId] = new List<Share> { share }; } ICollection<Guid> importingShares = cd.GetCurrentlyImportingShares() ?? new List<Guid>(); ICollection<string> onlineSystems = sc.GetConnectedClients(); onlineSystems = onlineSystems == null ? new List<string> { scm.HomeServerSystemId } : new List<string>(onlineSystems) { scm.HomeServerSystemId }; foreach (KeyValuePair<string, ICollection<Share>> system2Shares in systems2Shares) { string systemId = system2Shares.Key; ICollection<Share> systemShares = system2Shares.Value; string systemName; string hostName; if (systemId == scm.HomeServerSystemId) { systemName = scm.LastHomeServerName; hostName = scm.LastHomeServerSystem.HostName; } else { MPClientMetadata clientMetadata = ServerCommunicationHelper.GetClientMetadata(systemId); if (clientMetadata == null) { systemName = null; hostName = null; } else { systemName = clientMetadata.LastClientName; hostName = clientMetadata.LastSystem.HostName; } } ListItem systemSharesItem = new ListItem(Consts.KEY_NAME, systemName); systemSharesItem.AdditionalProperties[Consts.KEY_SYSTEM] = systemId; systemSharesItem.AdditionalProperties[Consts.KEY_HOSTNAME] = hostName; bool isConnected = onlineSystems.Contains(systemId); systemSharesItem.AdditionalProperties[Consts.KEY_IS_CONNECTED] = isConnected; ItemsList sharesItemsList = new ItemsList(); foreach (Share share in systemShares) { ListItem shareItem = new ListItem(Consts.KEY_NAME, share.Name); shareItem.AdditionalProperties[Consts.KEY_SHARE] = share; string resourcePathName; try { bool isFileSystemResource; bool isFile; string resourceName; DateTime lastChanged; long size; if (!rris.GetResourceInformation(share.SystemId, share.BaseResourcePath, out isFileSystemResource, out isFile, out resourcePathName, out resourceName, out lastChanged, out size)) // Error case: The path is invalid resourcePathName = LocalizationHelper.Translate(Consts.RES_INVALID_PATH, share.BaseResourcePath); } catch (Exception) // NotConnectedException when remote system is not connected at all, UPnPDisconnectedException when remote system gets disconnected during the call { resourcePathName = share.BaseResourcePath.ToString(); } shareItem.SetLabel(Consts.KEY_PATH, resourcePathName); string categories = StringUtils.Join(", ", share.MediaCategories); shareItem.SetLabel(Consts.KEY_MEDIA_CATEGORIES, categories); UpdateShareImportState_NoLock(shareItem, importingShares.Contains(share.ShareId)); Share shareCopy = share; shareItem.Command = new MethodDelegateCommand(() => ReImportShare(shareCopy)); shareItem.AdditionalProperties[Consts.KEY_REIMPORT_ENABLED] = isConnected; sharesItemsList.Add(shareItem); } systemSharesItem.AdditionalProperties[Consts.KEY_SYSTEM_SHARES] = sharesItemsList; lock (_syncObj) _sharesList.Add(systemSharesItem); } } finally { _sharesList.FireChange(); } }
public static void ShowLoadSkinDialog() { IScreenManager screenManager = ServiceRegistration.Get<IScreenManager>(); SkinManager skinManager = ServiceRegistration.Get<ISkinResourceManager>() as SkinManager; if (skinManager == null) return; ItemsList skinItems = new ItemsList(); foreach (Skin skin in skinManager.Skins.Values) { if (!skin.IsValid) continue; string skinName = skin.Name; ListItem skinItem = new ListItem(Consts.KEY_NAME, skinName) { Command = new MethodDelegateCommand(() => screenManager.SwitchSkinAndTheme(skinName, null)) }; skinItems.Add(skinItem); } ShowDialog(Consts.RES_LOAD_SKIN_TITLE, skinItems); }
/// <summary> /// Adds all supported settings in the specified <paramref name="sectionOrGroupNode"/> to the specified /// <paramref name="settingsList"/>. For each setting, a <see cref="ListItem"/> will be created /// with the setting text as name and a command which triggers the method <see cref="ShowConfigItem"/> /// with the according setting location. /// </summary> /// <param name="sectionOrGroupNode">Section or group node, whose contained settings should be added.</param> /// <param name="settingsList">List where the extracted settings will be added to.</param> protected void AddConfigSettings(IConfigurationNode sectionOrGroupNode, ItemsList settingsList) { foreach (IConfigurationNode childNode in sectionOrGroupNode.ChildNodes) { if (childNode.ConfigObj is ConfigSetting) { ConfigSetting setting = (ConfigSetting) childNode.ConfigObj; if (!setting.Visible || !IsSettingSupported(setting)) continue; string location = childNode.Location; ListItem item = new ListItem(KEY_NAME, setting.SettingMetadata.Text) { Command = new MethodDelegateCommand(() => ShowConfigItem(location)) }; item.SetLabel(KEY_HELPTEXT, setting.SettingMetadata.HelpText); item.Enabled = setting.Enabled; TrackItemVisibleEnabledProperty(setting.VisibleProperty); TrackItemVisibleEnabledProperty(setting.EnabledProperty); settingsList.Add(item); } if (childNode.ConfigObj is ConfigGroup) AddConfigSettings(childNode, settingsList); } }