Beispiel #1
0
        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;
                    }
                }
            }
        }
Beispiel #2
0
        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);
                });
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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();
 }
Beispiel #5
0
 //CurrentPgUID()は同一のEventIDの番組をチェックするが、こちらは放映時刻をチェックする。
 //プログラム予約が絡んでいる場合、結果が変わってくる。
 public virtual bool IsSamePg(IAutoAddTargetData data)
 {
     if (data == null)
     {
         return(false);
     }
     return(PgStartTime == data.PgStartTime && PgDurationSecond == data.PgDurationSecond && Create64Key() == data.Create64Key());
 }
Beispiel #6
0
 public override bool CheckPgHit(IAutoAddTargetData data)
 {
     if (data == null)
     {
         return(false);
     }
     return(this.GetSearchList().Any(info => info.EventInfo.CurrentPgUID() == data.CurrentPgUID()));
 }
Beispiel #7
0
 public override bool CheckPgHit(IAutoAddTargetData data)
 {
     if (data == null)
     {
         return(false);
     }
     return(this.GetSearchList().FirstOrDefault(info => info.EventInfo.Create64PgKey() == data.Create64PgKey()) != null);
 }
Beispiel #8
0
 protected override void ClearData()
 {
     base.ClearData();
     headData   = null;
     headDataEv = null;
     eventList.Clear();
     eventListEx.Clear();
 }
Beispiel #9
0
 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);
 }
Beispiel #10
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);
        }
Beispiel #11
0
        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);
                }
            }
        }
Beispiel #12
0
        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;
        }
Beispiel #13
0
        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;
        }
Beispiel #14
0
        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());
            }
        }
Beispiel #15
0
        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();
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
                });
            }
        }
Beispiel #18
0
 /*
  * 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);
Beispiel #19
0
        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);
                }
            }
        }
Beispiel #20
0
 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
 }
Beispiel #21
0
        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;
                    }
                }
            }
        }