public void CtxmGenerateChgResModeAutoAddItems(MenuItem menu, IAutoAddTargetData info) { //クリア for (int i = menu.Items.Count - 1; i >= 2; i--) { menu.Items.RemoveAt(i); } if (menu.IsEnabled == false || info == null) { return; } CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ChgResMode, true, false, 30); if (menu.Items.Count > 2) { menu.Items.Insert(2, new Separator()); foreach (var item in menu.Items.OfType <MenuItem>()) { Type type = (item.CommandParameter as EpgCmdParam).Data as Type; if (type != null) { item.Header = (type == typeof(EpgAutoAddData) ? "キーワード予約:" : "プログラム自動:") + item.Header; } } } }
private void CtxmGenerateChgAutoAddMenuItem(MenuItem menu, IAutoAddTargetData info, ICommand cmd, bool?IsAutoAddEnabled, bool ByFazy) { if (info != null) { var addList = new List <AutoAddData>(); addList.AddRange(info.SearchEpgAutoAddList(IsAutoAddEnabled, ByFazy)); addList.AddRange(info.SearchManualAutoAddList(IsAutoAddEnabled)); var chkList = new List <AutoAddData>(); chkList.AddRange(info.GetEpgAutoAddList(true)); chkList.AddRange(info.GetManualAutoAddList(true)); addList.ForEach(autoAdd => { var menuItem = new MenuItem(); menuItem.IsChecked = chkList.Contains(autoAdd) && (info is ReserveData ? (info as ReserveData).IsAutoAdded : true); menuItem.Header = MenuUtil.ConvertAutoddTextMenu(autoAdd); LimitLenHeader(menuItem); if (Settings.Instance.MenuSet.AutoAddSearchToolTip == true) { menuItem.ToolTip = AutoAddDataItemEx.CreateIncetance(autoAdd).ToolTipViewAlways; } menuItem.Command = cmd; menuItem.CommandParameter = new EpgCmdParam(menu.CommandParameter as EpgCmdParam); (menuItem.CommandParameter as EpgCmdParam).Data = autoAdd.GetType();//オブジェクト入れると残るので (menuItem.CommandParameter as EpgCmdParam).ID = (int)(autoAdd.DataID); menuItem.Tag = menuItem.Command; menu.Items.Add(menuItem); }); } }
public bool CtxmGenerateChgAutoAdd(MenuItem menu, IAutoAddTargetData info) { bool skipMenu = Settings.Instance.MenuSet.AutoAddSearchSkipSubMenu; CtxmClearItemMenu(menu, skipMenu); if (menu.IsEnabled == false) { return(false); } CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ShowAutoAddDialog, null, Settings.Instance.MenuSet.AutoAddFazySearch); if (menu.Items.Count == 0) { return(false); } //候補が一つの時は直接メニューを実行出来るようにする if (skipMenu == true) { CtxmPullUpSubMenu(menu, true); } return(true); }
protected override void SetData(bool IsAllData = false) { base.SetData(IsAllData); if (HasList == true)//SearchItemリストがある場合 { List <SearchItem> searchList = _getSearchList(IsAllData); searchList = searchList == null ? new List <SearchItem>() : searchList.OfType <SearchItem>().ToList();//無くても大丈夫なはずだが一応 OrderAdjust(searchList); dataList = searchList.GetReserveList(); eventList = searchList.GetEventList(); eventListEx = searchList.GetNoReserveList(); headData = searchList.Count == 0 ? null : searchList[0].IsReserved == true ? searchList[0].ReserveInfo as IAutoAddTargetData : searchList[0].EventInfo; headDataEv = searchList.Count == 0 ? null : searchList[0].EventInfo; } else { eventList = _getEpgEventList == null ? null : _getEpgEventList(); eventList = eventList == null ? new List <EpgEventInfo>() : eventList.OfType <EpgEventInfo>().ToList(); eventListEx = new List <EpgEventInfo>(); eventList.ForEach(epg => { if (dataList.All(res => epg.CurrentPgUID() != res.CurrentPgUID())) { eventListEx.Add(epg); } }); headData = dataList.Count != 0 ? dataList[0] as IAutoAddTargetData : eventList.Count != 0 ? eventList[0] : null; headDataEv = eventList.Count != 0 ? eventList[0] as IAutoAddTargetData : dataList.Count != 0 ? dataList[0] : null; } eventList = eventList.Distinct().ToList(); eventListEx = eventListEx.Distinct().ToList(); }
//CurrentPgUID()は同一のEventIDの番組をチェックするが、こちらは放映時刻をチェックする。 //プログラム予約が絡んでいる場合、結果が変わってくる。 public virtual bool IsSamePg(IAutoAddTargetData data) { if (data == null) { return(false); } return(PgStartTime == data.PgStartTime && PgDurationSecond == data.PgDurationSecond && Create64Key() == data.Create64Key()); }
public override bool CheckPgHit(IAutoAddTargetData data) { if (data == null) { return(false); } return(this.GetSearchList().Any(info => info.EventInfo.CurrentPgUID() == data.CurrentPgUID())); }
public override bool CheckPgHit(IAutoAddTargetData data) { if (data == null) { return(false); } return(this.GetSearchList().FirstOrDefault(info => info.EventInfo.Create64PgKey() == data.Create64PgKey()) != null); }
protected override void ClearData() { base.ClearData(); headData = null; headDataEv = null; eventList.Clear(); eventListEx.Clear(); }
public override bool CheckPgHit(IAutoAddTargetData data) { if (data == null) { return(false); } return(Create64Key() == data.Create64Key() && startTime == data.PgStartTime.Hour * 3600 + data.PgStartTime.Minute * 60 + data.PgStartTime.Second && durationSecond == data.PgDurationSecond && (dayOfWeekFlag & (byte)(0x01 << (int)data.PgStartTime.DayOfWeek)) != 0); }
public static List <EpgAutoAddData> SearchEpgAutoAddHitList(IAutoAddTargetData info, bool?IsEnabled = null, bool ByFazy = false) { if (info == null) { return(new List <EpgAutoAddData>()); } // var list = GetEpgAutoAddHitList(info, IsEnabled); if (ByFazy == true) { list.AddRange(MenuUtil.FazySearchEpgAutoAddData(info.DataTitle, IsEnabled)); list = list.Distinct().OrderBy(data => data.DataID).ToList(); } return(list); }
private void CtxmGenerateChgAutoAddMenuItem(MenuItem menu, IAutoAddTargetData info, ICommand cmd, bool?IsAutoAddEnabled, bool ByFasy, int str_max = 35) { if (info != null) { Action <AutoAddData, string, uint> addSubMenuItem = (autoAdd, title, id) => { var menuItem = new MenuItem(); if (info is RecFileInfo && autoAdd is EpgAutoAddData) { menuItem.IsChecked = autoAdd.GetReserveList().FirstOrDefault(data => data.Create64Key() == info.Create64Key()) != null; } else { menuItem.IsChecked = autoAdd.CheckPgHit(info); } string header = title; if (header.Length > str_max) { header = header.Substring(0, str_max - 3) + "..."; // 長すぎる場合は省略 menuItem.ToolTip = title; } if (Settings.Instance.MenuSet.AutoAddSerachToolTip == true) { menuItem.ToolTip = AutoAddDataItemEx.CreateIncetance(autoAdd).ToolTipViewAutoAddSearch; } menuItem.Header = header; menuItem.Command = cmd; menuItem.CommandParameter = new EpgCmdParam(menu.CommandParameter as EpgCmdParam); (menuItem.CommandParameter as EpgCmdParam).Data = autoAdd.GetType();//オブジェクト入れると残るので (menuItem.CommandParameter as EpgCmdParam).ID = (int)id; menuItem.Tag = menuItem.Command; menu.Items.Add(menuItem); }; foreach (var data in info.SearchEpgAutoAddList(IsAutoAddEnabled, ByFasy).OrderBy(data => data.DataID)) { addSubMenuItem(data, data.DataTitle == "" ? "(空白)" : data.DataTitle, data.dataID); } foreach (var data in info.GetManualAutoAddList(IsAutoAddEnabled).OrderBy(data => data.DataID)) { var view = new ManualAutoAddDataItem(data); addSubMenuItem(data, string.Format("({0}){1} {2}", view.DayOfWeek, view.StartTimeShort, data.DataTitle == "" ? "(空白)" : data.DataTitle), data.dataID); } } }
public bool CtxmGenerateChgAutoAdd(MenuItem menu, IAutoAddTargetData info, bool skipSubMenu = true) { CtxmClearItemMenu(menu, true); if (menu.IsEnabled == false) return false; CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ShowAutoAddDialog, null, Settings.Instance.MenuSet.AutoAddFazySerach); if (menu.Items.Count == 0) return false; if (skipSubMenu == false) { //候補が一つの時は直接メニューを実行出来るようにする CtxmPullUpSubMenu(menu, true); } return true; }
public void CtxmGenerateChgResModeAutoAddItems(MenuItem menu, IAutoAddTargetData info) { //クリア int sPos = 2;//セパレータ位置 for (int i = menu.Items.Count - 1; i > sPos; i--) { menu.Items.RemoveAt(i); } if (menu.IsEnabled == false || info == null) { return; } CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ChgResMode, true, false); (menu.Items[sPos] as UIElement).Visibility = menu.Items.Count - 1 > sPos ? Visibility.Visible : Visibility.Collapsed; }
public void CtxmGenerateChgResModeAutoAddItems(MenuItem menu, IAutoAddTargetData info) { //クリア for (int i = menu.Items.Count - 1; i >= 2; i--) { menu.Items.RemoveAt(i); } if (menu.IsEnabled == false || info == null) { return; } CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ChgResMode, true, false); if (menu.Items.Count > 2) { menu.Items.Insert(2, new Separator()); } }
protected override void SetData(bool IsAllData = false) { base.SetData(IsAllData); if (HasList == true)//SearchItemリストがある場合 { List <SearchItem> searchList = _getSearchList(IsAllData); searchList = searchList == null ? new List <SearchItem>() : searchList.OfType <SearchItem>().ToList();//無くても大丈夫なはずだが一応 OrderAdjust(searchList); dataList = searchList.GetReserveList(); eventList = searchList.GetEventList(); eventListEx = searchList.GetNoReserveList(); headData = searchList.Count == 0 ? null : searchList[0].IsReserved == true ? searchList[0].ReserveInfo as IAutoAddTargetData : searchList[0].EventInfo; headDataEv = searchList.Count == 0 ? null : searchList[0].EventInfo; recinfoList = eventList.SelectMany(data => MenuUtil.GetRecFileInfoList(data)).ToList(); headDataRec = MenuUtil.GetRecFileInfo(eventList.FirstOrDefault()); } else { //終了済み録画データの処理 recinfoList = dataList.OfType <ReserveDataEnd>().SelectMany(data => MenuUtil.GetRecFileInfoList(data)).ToList(); headDataRec = recinfoList.FirstOrDefault(); dataList.RemoveAll(data => data is ReserveDataEnd); eventList = _getEpgEventList == null ? null : _getEpgEventList(); eventList = eventList == null ? new List <EpgEventInfo>() : eventList.OfType <EpgEventInfo>().ToList(); eventListEx = new List <EpgEventInfo>(); eventList.ForEach(epg => { if (dataList.All(res => epg.CurrentPgUID() != res.CurrentPgUID())) { eventListEx.Add(epg); } }); headData = dataList.Count != 0 ? dataList[0] as IAutoAddTargetData : eventList.Count != 0 ? eventList[0] : null; headDataEv = eventList.Count != 0 ? eventList[0] as IAutoAddTargetData : dataList.Count != 0 ? dataList[0] : null; } eventList = eventList.Distinct().ToList(); eventListEx = eventListEx.Distinct().ToList(); recinfoList = recinfoList.Distinct().ToList(); }
public static EpgEventInfo SearchEventInfoLikeThat(IAutoAddTargetData item, bool includeArc = false) { double dist = double.MaxValue; EpgEventInfo eventPossible = null; UInt64 key = item.Create64Key(); var eventDic = CommonManager.Instance.DB.ServiceEventList; if (eventDic.ContainsKey(key) == true) { var eList = includeArc == true ? eventDic[key].eventMergeList : eventDic[key].eventList; foreach (EpgEventInfo eventChkInfo in eList) { //itemが調べている番組に完全に含まれているならそれを選択する double overlapLength = CulcOverlapLength(item.PgStartTime, item.PgDurationSecond, eventChkInfo.start_time, eventChkInfo.durationSec); if (overlapLength > 0 && overlapLength == item.PgDurationSecond) { eventPossible = eventChkInfo; break; } //開始時間が最も近いものを選ぶ。同じ差なら時間が前のものを選ぶ double dist1 = Math.Abs((item.PgStartTime - eventChkInfo.start_time).TotalSeconds); if (overlapLength >= 0 && (dist > dist1 || dist == dist1 && (eventPossible == null || item.PgStartTime > eventChkInfo.start_time))) { dist = dist1; eventPossible = eventChkInfo; if (dist == 0) { break; } } } } return(eventPossible); }
private void CtxmGenerateChgAutoAddMenuItem(MenuItem menu, IAutoAddTargetData info, ICommand cmd, bool?IsAutoAddEnabled, bool ByFazy) { if (info != null) { var addList = new List <AutoAddData>(); addList.AddRange(info.SearchEpgAutoAddList(IsAutoAddEnabled, ByFazy)); addList.AddRange(info.SearchManualAutoAddList(IsAutoAddEnabled)); var chkList = new List <AutoAddData>(); chkList.AddRange(info.GetEpgAutoAddList(true)); chkList.AddRange(info.GetManualAutoAddList(true)); int idx = 0; addList.ForEach(autoAdd => { var menuItem = new MenuItem(); menuItem.IsChecked = chkList.Contains(autoAdd) && (info is ReserveData ? (info as ReserveData).IsAutoAdded : true); menuItem.Header = new InfoSearchItem(autoAdd).ViewItemName + " : " + ToMenuString(autoAdd); SetLimitLenHeader(menuItem, null, false, 42, 28); var header = menuItem.Header as Label; header.Content = MenuUtil.ToAccessKeyForm(header.Content as string).Insert(7, "(_" + ToAccessKey(idx++) + ")"); if (Settings.Instance.MenuSet.AutoAddSearchToolTip == true) { menuItem.ToolTip = AutoAddDataItemEx.CreateIncetance(autoAdd).ToolTipViewAlways; } menuItem.Command = cmd; menuItem.CommandParameter = new EpgCmdParam(menu.CommandParameter as EpgCmdParam); (menuItem.CommandParameter as EpgCmdParam).Data = autoAdd.GetType();//オブジェクト入れると残るので (menuItem.CommandParameter as EpgCmdParam).ID = (int)(autoAdd.DataID); menuItem.Tag = menuItem.Command; menu.Items.Add(menuItem); }); } }
/* * public bool CheckResHit(ReserveData data) * { * if (data == null) return false; * return this.GetReserveList().Any(info => info.ReserveID == data.ReserveID) == true; * }*/ public abstract bool CheckPgHit(IAutoAddTargetData data);
private void CtxmGenerateChgAutoAddMenuItem(MenuItem menu, IAutoAddTargetData info, ICommand cmd, bool? IsAutoAddEnabled, bool ByFasy, int str_max = 35) { if (info != null) { Action<AutoAddData, string, uint> addSubMenuItem = (autoAdd, title, id) => { var menuItem = new MenuItem(); if (info is RecFileInfo && autoAdd is EpgAutoAddData) { menuItem.IsChecked = autoAdd.GetReserveList().FirstOrDefault(data => data.Create64Key() == info.Create64Key()) != null; } else { menuItem.IsChecked = autoAdd.CheckPgHit(info); } string header = title; if (header.Length > str_max) { header = header.Substring(0, str_max - 3) + "..."; // 長すぎる場合は省略 menuItem.ToolTip = title; } if (Settings.Instance.MenuSet.AutoAddSerachToolTip == true) { menuItem.ToolTip = AutoAddDataItemEx.CreateIncetance(autoAdd).ToolTipViewAutoAddSearch; } menuItem.Header = header; menuItem.Command = cmd; menuItem.CommandParameter = new EpgCmdParam(menu.CommandParameter as EpgCmdParam); (menuItem.CommandParameter as EpgCmdParam).Data = autoAdd.GetType();//オブジェクト入れると残るので (menuItem.CommandParameter as EpgCmdParam).ID = (int)id; menuItem.Tag = menuItem.Command; menu.Items.Add(menuItem); }; foreach (var data in info.SearchEpgAutoAddList(IsAutoAddEnabled, ByFasy).OrderBy(data => data.DataID)) { addSubMenuItem(data, data.DataTitle == "" ? "(空白)" : data.DataTitle, data.dataID); } foreach (var data in info.GetManualAutoAddList(IsAutoAddEnabled).OrderBy(data => data.DataID)) { var view = new ManualAutoAddDataItem(data); addSubMenuItem(data, string.Format("({0}){1} {2}", view.DayOfWeek, view.StartTimeShort, data.DataTitle == "" ? "(空白)" : data.DataTitle), data.dataID); } } }
public static List <ManualAutoAddData> GetManualAutoAddHitList(IAutoAddTargetData info, bool?IsEnabled = null) { return(CommonManager.Instance.DB.ManualAutoAddList.Values.GetAutoAddList(IsEnabled) .FindAll(data => data.CheckPgHit(info) == true));//info==nullでもOK }
public void CtxmGenerateChgResModeAutoAddItems(MenuItem menu, IAutoAddTargetData info) { //クリア for (int i = menu.Items.Count - 1; i >= 2; i--) menu.Items.RemoveAt(i); if (menu.IsEnabled == false || info == null) return; CtxmGenerateChgAutoAddMenuItem(menu, info, EpgCmds.ChgResMode, true, false, 30); if (menu.Items.Count > 2) { menu.Items.Insert(2, new Separator()); foreach (var item in menu.Items.OfType<MenuItem>()) { Type type = (item.CommandParameter as EpgCmdParam).Data as Type; if (type != null) { item.Header = (type == typeof(EpgAutoAddData) ? "キーワード予約:" : "プログラム自動:") + item.Header; } } } }