/// <summary>予約一覧からのジャンプ先を番組表タブから探す</summary> public bool SearchJumpTargetProgram(SearchItem trg, bool dryrun = false) { try { if (trg == null) { return(false); } var data = (AutoAddTargetData)trg.ReserveInfo ?? trg.EventInfo; if (data == null) { return(false); } if (Tabs.Any() == false)//dryrun以外でここに来るときは本当にタブが無い { var infoList = Settings.Instance.UseCustomEpgView == false? CommonManager.CreateDefaultTabInfo() : Settings.Instance.CustomEpgTabList.ToList(); return(infoList.Where(info => info.IsVisible == true) .SelectMany(info => info.ViewServiceList).Contains(data.Create64Key())); } var tab = Tabs.OrderBy(tb => tb.IsSelected ? 0 : 1).FirstOrDefault(tb => { bool ret = tb.Info.ViewServiceList.Contains(data.Create64Key()); if (ret == true && tb.view != null && tb.IsEpgLoaded == true) { return(tb.view.IsEnabledJumpTab(trg)); } return(ret); }); if (tab != null && dryrun == false) { tab.IsSelected = true; } return(tab != null); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } return(false); }
/// <summary>予約一覧からのジャンプ先を番組表タブから探す</summary> public bool SearchJumpTargetProgram(SearchItem trg, bool dryrun = false) { try { if (trg == null) { return(false); } var data = (AutoAddTargetData)trg.ReserveInfo ?? trg.EventInfo; if (data == null || data.PgStartTime == DateTime.MaxValue) { return(false); } var tabs = Tabs.Where(t => t.Info.JumpTarget).OrderBy(tb => !tb.IsSelected).ToList(); if (tabs.Any() == false)//dryrun以外でここに来るときは本当にタブが無い { var infoList = Settings.Instance.UseCustomEpgView == false? CommonManager.CreateDefaultTabInfo() : Settings.Instance.CustomEpgTabList.ToList(); return(infoList.Where(info => info.IsVisible && info.JumpTarget) .SelectMany(info => CommonManager.Instance.DB.ExpandSpecialKey(info.ViewServiceList)).Contains(data.Create64Key())); } //表示されてるものがなければキーを持っているタブを当たる var tab = tabs.FirstOrDefault(tb => tb.view != null && tb.IsEpgLoaded && tb.view.IsEnabledJumpTab(trg)) ?? tabs.FirstOrDefault(tb => tb.HasKey(data.Create64Key())); if (tab != null && dryrun == false) { tab.IsSelected = true; } return(tab != null); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } return(false); }
/// <summary>タブ生成</summary> private bool CreateTabItem() { try { tabInfo = Settings.Instance.UseCustomEpgView == false? CommonManager.CreateDefaultTabInfo() : Settings.Instance.CustomEpgTabList.ToList(); //とりあえず同じIDを探して表示してみる(中身は別物になってるかもしれないが、とりあえず表示を試みる)。 //標準・カスタム切り替えの際は、標準番組表が負のIDを与えられているので、このコードは走らない。 foreach (CustomEpgTabInfo info in tabInfo.Where(info => info.IsVisible == true)) { tabControl.Items.Add(new EpgTabItem(info, oldID, info.Uid == oldID ? oldState : null)); } if (tabControl.SelectedIndex == -1) { tabControl.SelectedIndex = 0; } } catch (Exception ex) { CommonUtil.DispatcherMsgBoxShow(ex.Message + "\r\n" + ex.StackTrace); } oldID = null; return(true); }
private void CreateTabItem() { OnCreateTab = true;//タブの初期選択対策。挙動が以前と変わってるような‥ try { tabInfo = Settings.Instance.UseCustomEpgView == false? CommonManager.CreateDefaultTabInfo() : Settings.Instance.CustomEpgTabList.ToList(); //以前表示していた番組表があればそれを表示する。 //標準・カスタム切り替えの際は、標準番組表が負のIDを与えられているので、このコードは走らない。 foreach (CustomEpgTabInfo info in tabInfo.Where(info => info.IsVisible == true)) { tabControl.Items.Add(new EpgTabItem(info, this, oldID, info.Uid == oldID ? oldState : null)); } if (tabControl.SelectedIndex < 0) { tabControl.SelectedIndex = 0; } } catch (Exception ex) { CommonUtil.DispatcherMsgBoxShow(ex.Message + "\r\n" + ex.StackTrace); } oldID = null; OnCreateTab = false; }