示例#1
0
 private void listView_recinfo_MouseDoubleClick(object sender, MouseButtonEventArgs e)
 {
     if (listView_recinfo.SelectedItem != null)
     {
         if (Settings.Instance.PlayDClick == false)
         {
             RecInfoItem       info = listView_recinfo.SelectedItem as RecInfoItem;
             RecInfoDescWindow dlg  = new RecInfoDescWindow();
             dlg.Owner = (Window)PresentationSource.FromVisual(this).RootVisual;
             RecFileInfo extraRecInfo = new RecFileInfo();
             if (CommonManager.CreateSrvCtrl().SendGetRecInfo(info.RecInfo.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
             {
                 info.RecInfo.ProgramInfo = extraRecInfo.ProgramInfo;
                 info.RecInfo.ErrInfo     = extraRecInfo.ErrInfo;
             }
             dlg.SetRecInfo(info.RecInfo);
             dlg.ShowDialog();
         }
         else
         {
             RecInfoItem info = listView_recinfo.SelectedItem as RecInfoItem;
             if (info.RecInfo.RecFilePath.Length > 0)
             {
                 try
                 {
                     CommonManager.Instance.FilePlay(info.RecInfo.RecFilePath);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show(ex.Message);
                 }
             }
         }
     }
 }
示例#2
0
        public RecFileInfoAppend GetRecFileAppend(RecFileInfo master, bool UpdateDB = false)
        {
            if (master == null)
            {
                return(null);
            }

            if (recFileAppendList == null)
            {
                recFileAppendList = new Dictionary <uint, RecFileInfoAppend>();
            }

            RecFileInfoAppend retv = null;

            if (recFileAppendList.TryGetValue(master.ID, out retv) == false)
            {
                //UpdataDBのときは、取得出来なくても取得済み扱いにする。
                if (UpdateDB == true)
                {
                    ReadRecFileAppend(RecFileInfo.Values.Where(info => info.HasErrPackets == true));
                    recFileAppendList.TryGetValue(master.ID, out retv);
                }
                else
                {
                    var extraRecInfo = new RecFileInfo();
                    if (CommonManager.CreateSrvCtrl().SendGetRecInfo(master.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
                    {
                        retv = new RecFileInfoAppend(extraRecInfo);
                        recFileAppendList.Add(master.ID, retv);
                    }
                }
            }
            return(retv ?? new RecFileInfoAppend(master));
        }
示例#3
0
        public static void CopyContent2Clipboard(RecFileInfo recInfo, bool NotToggle = false)
        {
            string text = "";

            if (recInfo != null)
            {
                bool setting = Settings.Instance.MenuSet.CopyContentBasic;
                if (Keyboard.Modifiers == ModifierKeys.Shift && NotToggle == false)
                {
                    setting = !setting;
                }

                if (setting == true)
                {
                    string[] stArrayData = recInfo.ProgramInfo.Replace("\r\n", "\n").Split('\n');
                    int      endI        = Math.Min(stArrayData.Length, 3);

                    for (int i = 0; i < endI; i++)
                    {
                        text += stArrayData[i] + "\r\n";
                    }
                }
                else
                {
                    text = recInfo.ProgramInfo;
                }

                text = text.TrimEnd() + "\r\n";
            }

            Clipboard.SetDataObject(text, true);
        }
示例#4
0
        public void showResult(RecFileInfo recFileInfo0)
        {
            reset();
            if (Settings.Instance.RecLog_SearchLog_IsEnabled)
            {
                _recFileInfo        = recFileInfo0;
                _selectedRecLogItem = _mainWindow.recLogView.db_RecLog.exists(recFileInfo0);
                if (_selectedRecLogItem != null)
                {
                    switch (_selectedRecLogItem.recodeStatus)
                    {
                    case RecLogItem.RecodeStatuses.録画完了:
                        menuItem_ChangeStatus_NONE.IsEnabled     = true;
                        menuItem_ChangeStatus_Recorded.IsEnabled = false;
                        break;

                    default:
                        menuItem_ChangeStatus_NONE.IsEnabled     = false;
                        menuItem_ChangeStatus_Recorded.IsEnabled = true;
                        break;
                    }
                }
                search(recFileInfo0.Title, _selectedRecLogItem);
            }
            else
            {
                drawText(RecLogView.notEnabledMessage);
            }
            show();
        }
示例#5
0
 public void SetRecInfo(RecFileInfo info)
 {
     recInfo = info;
     richTextBox_pgInfo.Document = new FlowDocument(CommonManager.ConvertDisplayText(info.ProgramInfo));
     textBox_errLog.Text         = info.ErrInfo;
     textBox_recFilePath.Text    = info.RecFilePath;
     button_rename.IsEnabled     = false;
 }
示例#6
0
 void reset()
 {
     menuItem_ChangeStatus_Recorded.IsEnabled = true;
     richTextBox_SelectedItem.Visibility      = Visibility.Visible;
     _resultList.Clear();
     _epgEventInfo       = null;
     _recFileInfo        = null;
     _selectedRecLogItem = null;
     richTextBox.Document.Blocks.Clear();
 }
示例#7
0
 protected override void ClearData()
 {
     base.ClearData();
     headData    = null;
     headDataRec = null;
     headDataEv  = null;
     eventList.Clear();
     eventListEx.Clear();
     recinfoList.Clear();
 }
示例#8
0
 private void button_play_Click(object sender, RoutedEventArgs e)
 {
     if (listView_recinfo.SelectedItem != null)
     {
         RecFileInfo info = ((RecInfoItem)listView_recinfo.SelectedItem).RecInfo;
         if (info.RecFilePath.Length > 0)
         {
             CommonManager.Instance.FilePlay(info.RecFilePath);
         }
     }
 }
示例#9
0
 public override int MoveToRecInfoItem(RecFileInfo target, JumpItemStyle style = JumpItemStyle.MoveTo, bool dryrun = false)
 {
     if (dryrun == true)
     {
         return(target == null ? -1 : viewData.HasKey(target.Create64Key()) ? 1 : -1);
     }
     if (target != null)
     {
         ChangeViewService(target.Create64Key());
     }
     return(base.MoveToRecInfoItem(target, style));
 }
示例#10
0
 public RecFileInfoAppend(RecFileInfo info, bool isValid = true)
 {
     if (isValid == true)
     {
         ProgramInfo = info._ProgramInfo;
         errInfo     = info._ErrInfo;
     }
     drops             = info.Drops;
     dropsCritical     = drops;
     scrambles         = info.Scrambles;
     scramblesCritical = scrambles;
     SetUpdateNotify();
 }
示例#11
0
 public static bool?OpenRecInfoDialog(RecFileInfo info, Control Owner)
 {
     try
     {
         var dlg = new RecInfoDescWindow();
         dlg.Owner = CommonUtil.GetTopWindow(Owner);
         cmd.SendGetRecInfo(info.ID, ref info);//***
         dlg.SetRecInfo(info);
         return(dlg.ShowDialog());
     }
     catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
     return(null);
 }
示例#12
0
        public RecFileInfoAppend GetRecFileAppend(RecFileInfo master, bool UpdateDB = false)
        {
            if (master == null)
            {
                return(null);
            }

            if (recFileAppendList == null)
            {
                recFileAppendList = new Dictionary <uint, RecFileInfoAppend>();
            }

            RecFileInfoAppend retv = null;

            if (recFileAppendList.TryGetValue(master.ID, out retv) == false)
            {
                if (UpdateDB == true)
                {
                    var list = recFileInfo.Values.Where(info => info.HasErrPackets == true &&
                                                        recFileAppendList.ContainsKey(info.ID) == false).ToList();

                    try
                    {
                        var extraDatalist = new List <RecFileInfo>();
                        if (cmd.SendGetRecInfoList(list.Select(info => info.ID).ToList(), ref extraDatalist) == ErrCode.CMD_SUCCESS)
                        {
                            extraDatalist.ForEach(item => recFileAppendList.Add(item.ID, new RecFileInfoAppend(item)));
                        }
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }

                    //何か問題があった場合でも何度もSendGetRecInfoList()しないよう残りも全て登録してしまう。
                    foreach (var item in list.Where(info => recFileAppendList.ContainsKey(info.ID) == false))
                    {
                        recFileAppendList.Add(item.ID, new RecFileInfoAppend(item, false));
                    }

                    recFileAppendList.TryGetValue(master.ID, out retv);
                }
                else
                {
                    var extraRecInfo = new RecFileInfo();
                    if (cmd.SendGetRecInfo(master.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
                    {
                        retv = new RecFileInfoAppend(extraRecInfo);
                        recFileAppendList.Add(master.ID, retv);
                    }
                }
            }
            return(retv ?? new RecFileInfoAppend(master));
        }
示例#13
0
        public RecInfoDescWindow(RecFileInfo info = null)
        {
            InitializeComponent();

            try
            {
                base.SetParam(false, checkBox_windowPinned, checkBox_dataReplace);

                //最初にコマンド集の初期化
                mc = new CmdExeRecinfo(this);
                mc.SetFuncGetDataList(isAll => recInfo.IntoList());

                //コマンド集に無いもの,変更するもの
                mc.AddReplaceCommand(EpgCmds.Play, (sender, e) => CommonManager.Instance.FilePlay(recInfo.RecFilePath), (sender, e) => e.CanExecute = recInfo.ID != 0);
                mc.AddReplaceCommand(EpgCmds.Cancel, (sender, e) => this.Close());
                mc.AddReplaceCommand(EpgCmds.BackItem, (sender, e) => MoveViewNextItem(-1));
                mc.AddReplaceCommand(EpgCmds.NextItem, (sender, e) => MoveViewNextItem(1));
                mc.AddReplaceCommand(EpgCmds.Search, (sender, e) => MoveViewRecinfoTarget(), (sender, e) => e.CanExecute = DataView is EpgViewBase);
                mc.AddReplaceCommand(EpgCmds.DeleteInDialog, info_del, (sender, e) => e.CanExecute = recInfo.ID != 0 && recInfo.ProtectFlag == 0);
                mc.AddReplaceCommand(EpgCmds.ChgOnOffCheck, (sender, e) => EpgCmds.ProtectChange.Execute(null, this));

                //コマンド集からコマンドを登録
                mc.ResetCommandBindings(this);

                //ボタンの設定
                mBinds.View = CtxmCode.RecInfoView;
                mBinds.SetCommandToButton(button_play, EpgCmds.Play);
                mBinds.SetCommandToButton(button_cancel, EpgCmds.Cancel);
                mBinds.SetCommandToButton(button_up, EpgCmds.BackItem);
                mBinds.SetCommandToButton(button_down, EpgCmds.NextItem);
                mBinds.SetCommandToButton(button_chk, EpgCmds.Search);
                mBinds.SetCommandToButton(button_del, EpgCmds.DeleteInDialog);
                mBinds.AddInputCommand(EpgCmds.ProtectChange);//ショートカット登録
                RefreshMenu();

                button_del.ToolTipOpening += (sender, e) => button_del.ToolTip = (button_del.ToolTip as string +
                                                                                  (IniFileHandler.GetPrivateProfileBool("SET", "RecInfoDelFile", false, SettingPath.CommonIniPath) ?
                                                                                   "\r\n録画ファイルが存在する場合は一緒に削除されます。" : "")).Trim();

                grid_protect.ToolTipOpening += (sender, e) => grid_protect.ToolTip =
                    ("" + MenuBinds.GetInputGestureTextView(EpgCmds.ProtectChange, mBinds.View) + "\r\nプロテクト設定/解除").Trim();

                //ステータスバーの設定
                this.statusBar.Status.Visibility = Visibility.Collapsed;
                StatusManager.RegisterStatusbar(this.statusBar, this);

                ChangeData(info);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
        }
示例#14
0
 public static bool?OpenRecInfoDialog(RecFileInfo info)
 {
     try
     {
         if (RecInfoDescWindow.ChangeDataLastUsedWindow(info) != null)
         {
             return(true);
         }
         new RecInfoDescWindow(info).Show();
         return(true);
     }
     catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
     return(null);
 }
示例#15
0
        public static void CopyContent2Clipboard(RecFileInfo recInfo, bool NotToggle = false)
        {
            string text = "";

            if (recInfo != null)
            {
                text = recInfo.ProgramInfo;
                if (CheckShiftToggled(Settings.Instance.MenuSet.CopyContentBasic, NotToggle) == true)
                {
                    text = string.Join("\r\n", text.Replace("\r\n", "\n").Split('\n').Take(3));
                }
                text = text.TrimEnd() + "\r\n";
            }
            Clipboard.SetDataObject(text, true);
        }
示例#16
0
        public override void ChangeData(object data)
        {
            var info = data as RecFileInfo;

            chk_key.DataContext  = new RecInfoItem(info);
            label_Msg.Visibility = info != null ? Visibility.Hidden : Visibility.Visible;
            if (info == null)
            {
                return;
            }

            recInfo             = info;
            this.Title          = ViewUtil.WindowTitleText(recInfo.Title, "録画情報");
            textBox_pgInfo.Text = recInfo.ProgramInfo;
            textBox_errLog.Text = recInfo.ErrInfo;
        }
示例#17
0
 public RecFileInfoAppend(RecFileInfo info, bool isValid = true)
 {
     if (isValid == true)
     {
         if (info.EventID == 0xFFFF || string.IsNullOrEmpty(info._ProgramInfo) == false)
         {
             ProgramInfo = info._ProgramInfo;
         }
         errInfo = info._ErrInfo;
     }
     drops             = info.Drops;
     dropsCritical     = drops;
     scrambles         = info.Scrambles;
     scramblesCritical = scrambles;
     SetUpdateNotify();
 }
示例#18
0
        public RecFileInfoAppend(RecFileInfo info, bool isValid = true)
        {
            if (isValid == true)
            {
                ProgramInfo = info._ProgramInfo;
                ErrInfo     = info._ErrInfo;
            }

            if (string.IsNullOrEmpty(ErrInfo) == false)
            {
                try
                {
                    DropsCritical     = 0;
                    ScramblesCritical = 0;
                    var newInfo = new StringBuilder("");

                    string[] lines = ErrInfo.Split(new char[] { '\n' });
                    foreach (string line1 in lines)
                    {
                        string line_new = line1;
                        if (line1.StartsWith("PID:") == true)
                        {
                            string[] words = line1.Split(new char[] { ' ', ':' }, StringSplitOptions.RemoveEmptyEntries);
                            //デフォルト { "EIT", "NIT", "CAT", "SDT", "SDTT", "TOT", "ECM", "EMM" }
                            if (Settings.Instance.RecInfoDropExclude.FirstOrDefault(s => words[8].Contains(s)) == null)
                            {
                                DropsCritical     += (Int64)Convert.ToUInt64(words[5]);
                                ScramblesCritical += (Int64)Convert.ToUInt64(words[7]);
                                line_new           = line1.Replace(" " + words[8], "*" + words[8]);
                            }
                        }
                        newInfo.Append(line_new.TrimEnd('\r') + "\r\n");//単に\n付けるだけでも良いが、一応"\r\n"に確定させる
                    }

                    newInfo.AppendFormat("                              * = Critical Drop/Scramble Parameter.\r\n");
                    newInfo.AppendFormat("                              Drop:{0,9}  Scramble:{1,10}  Total\r\n", info.Drops, info.Scrambles);
                    newInfo.AppendFormat("                             *Drop:{0,9} *Scramble:{1,10} *Critical\r\n", DropsCritical, ScramblesCritical);
                    ErrInfo = newInfo.ToString();

                    return;
                }
                catch { }//エラーがあったときは、ラストへ
            }

            DropsCritical     = info.Drops;
            ScramblesCritical = info.Scrambles;
        }
示例#19
0
 private void button_recInfo_Click(object sender, RoutedEventArgs e)
 {
     if (listView_recinfo.SelectedItem != null)
     {
         RecInfoItem       info = listView_recinfo.SelectedItem as RecInfoItem;
         RecInfoDescWindow dlg  = new RecInfoDescWindow();
         dlg.Owner = (Window)PresentationSource.FromVisual(this).RootVisual;
         RecFileInfo extraRecInfo = new RecFileInfo();
         if (CommonManager.CreateSrvCtrl().SendGetRecInfo(info.RecInfo.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
         {
             info.RecInfo.ProgramInfo = extraRecInfo.ProgramInfo;
             info.RecInfo.ErrInfo     = extraRecInfo.ErrInfo;
         }
         dlg.SetRecInfo(info.RecInfo);
         dlg.ShowDialog();
     }
 }
示例#20
0
 /*
  * public static EpgEventInfo ToEpgEventInfo(this RecFileInfo recinfo)
  * {
  *  return recinfo == null ? null : new EpgEventInfo
  *  {
  *      original_network_id = recinfo.OriginalNetworkID,
  *      transport_stream_id = recinfo.TransportStreamID,
  *      service_id = recinfo.ServiceID,
  *      event_id = recinfo.EventID,
  *      start_time = recinfo.StartTime,
  *      durationSec = recinfo.DurationSecond,
  *      StartTimeFlag = 1,
  *  };
  * }
  */
 public static ReserveDataEnd ToReserveData(this RecFileInfo recinfo)
 {
     return(recinfo == null ? null : new ReserveDataEnd
     {
         //ReserveID = recinfo.ID,副作用が多いので0固定
         StartTime = recinfo.StartTime,
         DurationSecond = recinfo.DurationSecond,
         OriginalNetworkID = recinfo.OriginalNetworkID,
         TransportStreamID = recinfo.TransportStreamID,
         ServiceID = recinfo.ServiceID,
         EventID = recinfo.EventID,
         //Title = recinfo.Title,
         //StationName = recinfo.ServiceName,
         //Comment = recinfo.Comment,
         //RecFileNameList = CommonUtil.ToList(recinfo.RecFilePath),
         //RecSetting.RecFolderList =,
     });
 }
示例#21
0
        public override void ChangeData(object data)
        {
            var info = data as RecFileInfo ?? new RecFileInfo();//nullデータを受け付ける

            DataContext = new RecInfoItem(info);

            //Appendデータが無くなる場合を考慮し、テキストはrecInfoと連動させない
            if (recInfo != data)
            {
                recInfo    = info;
                this.Title = ViewUtil.WindowTitleText(recInfo.Title, "録画情報");
                if (recInfo.ID != 0 && recInfo.ProgramInfo == null)//.program.txtがない
                {
                    recInfo.ProgramInfo = CommonManager.ConvertProgramText(recInfo.GetPgInfo(), EventInfoTextMode.All);
                }
                textBox_pgInfo.Text = recInfo.ProgramInfo;
                textBox_errLog.Text = recInfo.ErrInfo;
            }
            UpdateViewSelection(0);
        }
示例#22
0
 private static void CopyData(RecFileInfo src, RecFileInfo dest)
 {
     dest.Comment           = src.Comment;
     dest.Drops             = src.Drops;
     dest.DurationSecond    = src.DurationSecond;
     dest._ErrInfo          = src._ErrInfo;
     dest.EventID           = src.EventID;
     dest.ID                = src.ID;
     dest.OriginalNetworkID = src.OriginalNetworkID;
     dest._ProgramInfo      = src._ProgramInfo;
     dest.ProtectFlag       = src.ProtectFlag;
     dest.RecFilePath       = src.RecFilePath;
     dest.RecStatus         = src.RecStatus;
     dest.Scrambles         = src.Scrambles;
     dest.ServiceID         = src.ServiceID;
     dest.ServiceName       = src.ServiceName;
     dest.StartTime         = src.StartTime;
     dest.StartTimeEpg      = src.StartTimeEpg;
     dest.Title             = src.Title;
     dest.TransportStreamID = src.TransportStreamID;
 }
示例#23
0
 private void button_recInfo_Click(object sender, RoutedEventArgs e)
 {
     if (listView_recinfo.SelectedItem != null)
     {
         RecFileInfo       info = ((RecInfoItem)listView_recinfo.SelectedItem).RecInfo;
         RecInfoDescWindow dlg  = new RecInfoDescWindow();
         dlg.Owner = (Window)PresentationSource.FromVisual(this).RootVisual;
         RecFileInfo extraRecInfo = new RecFileInfo();
         if (CommonManager.CreateSrvCtrl().SendGetRecInfo(info.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
         {
             info.ProgramInfo = extraRecInfo.ProgramInfo;
             info.ErrInfo     = extraRecInfo.ErrInfo;
             if (info.ProgramInfo.Length == 0 && info.EventID != 0xFFFF)
             {
                 //過去番組情報を探してみる
                 var arcList = new List <EpgServiceEventInfo>();
                 if (CommonManager.CreateSrvCtrl().SendEnumPgArc(new List <long> {
                     0, (long)CommonManager.Create64Key(info.OriginalNetworkID, info.TransportStreamID, info.ServiceID),
                     info.StartTime.ToFileTimeUtc(), info.StartTime.ToFileTimeUtc() + 1
                 }, ref arcList) == ErrCode.CMD_SUCCESS &&
                     arcList.Count > 0 && arcList[0].eventList.Count > 0)
                 {
                     info.ProgramInfo = CommonManager.Instance.ConvertProgramText(arcList[0].eventList[0], EventInfoTextMode.All);
                 }
                 else
                 {
                     //番組情報を探してみる
                     EpgEventInfo eventInfo = CommonManager.Instance.DB.GetPgInfo(info.OriginalNetworkID, info.TransportStreamID,
                                                                                  info.ServiceID, info.EventID, false);
                     if (eventInfo != null && eventInfo.StartTimeFlag != 0 && eventInfo.start_time == info.StartTime)
                     {
                         info.ProgramInfo = CommonManager.Instance.ConvertProgramText(eventInfo, EventInfoTextMode.All);
                     }
                 }
             }
         }
         dlg.SetRecInfo(info);
         dlg.ShowDialog();
     }
 }
示例#24
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();
        }
示例#25
0
        public override void ChangeData(object data)
        {
            var info = data as RecFileInfo ?? new RecFileInfo();//nullデータを受け付ける

            DataContext = new RecInfoItem(info);

            //Appendデータが無くなる場合を考慮し、テキストはrecInfoと連動させない
            if (recInfo != data)
            {
                recInfo = info;
                recInfo.ProgramInfoSet();
                this.Title = ViewUtil.WindowTitleText(recInfo.Title, "録画情報");

                // 詳細情報を分離して表示に送る
                string[] parts = recInfo.GetProgramInfoParts();
                textBox_pgInfo.Document  = CommonManager.ConvertDisplayText(parts[0], parts[1], parts[2]);
                textBox_errLog.Text      = recInfo.ErrInfo;
                textBox_recFilePath.Text = recInfo.RecFilePath;
                button_rename.IsEnabled  = false;
            }
            UpdateViewSelection(0);
        }
示例#26
0
        public void ClearRecFileAppend(bool connect = false)
        {
            if (recFileAppendList == null)
            {
                return;
            }

            if (Settings.Instance.RecInfoExtraDataCache == false ||
                connect == true && Settings.Instance.RecInfoExtraDataCacheKeepConnect == false)
            {
                recFileAppendList = null;
            }
            else if (connect == false && Settings.Instance.RecInfoExtraDataCacheOptimize == true)
            {
                //Appendリストにあるが、有効でないデータ(通信エラーなどで仮登録されたもの)を削除。
                var delList = recFileAppendList.Where(item => item.Value.IsValid == false).Select(item => item.Key).ToList();
                delList.ForEach(key => recFileAppendList.Remove(key));

                //現在の録画情報リストにないデータを削除。
                var delList2 = recFileAppendList.Keys.Where(key => RecFileInfo.ContainsKey(key) == false).ToList();
                delList2.ForEach(key => recFileAppendList.Remove(key));
            }
        }
示例#27
0
 /// <summary>録画済み情報取得</summary>
 public ErrCode SendGetRecInfo(uint id, ref RecFileInfo val)
 {
     object o = val; return(SendAndReceiveCmdData2(CtrlCmd.CMD_EPG_SRV_GET_RECINFO2, id, ref o));
 }
示例#28
0
 public void SetRecInfo(RecFileInfo info)
 {
     recInfo = info;
     textBox_pgInfo.Text = info.ProgramInfo;
     textBox_errLog.Text = info.ErrInfo;
 }
示例#29
0
 public RecInfoItem(RecFileInfo item)
 {
     this.RecInfo = item;
 }
示例#30
0
        public RecFileInfoAppend(RecFileInfo info, bool isValid = true)
        {
            if (isValid == true)
            {
                ProgramInfo = info._ProgramInfo;
                ErrInfo = info._ErrInfo;
            }

            if (string.IsNullOrEmpty(ErrInfo) == false)
            {
                try
                {
                    DropsCritical = 0;
                    ScramblesCritical = 0;
                    var newInfo = new StringBuilder("");

                    string[] lines = ErrInfo.Split(new char[] { '\n' });
                    foreach (string line1 in lines)
                    {
                        string line_new = line1;
                        if (line1.StartsWith("PID:") == true)
                        {
                            string[] words = line1.Split(new char[] { ' ', ':' }, StringSplitOptions.RemoveEmptyEntries);
                            //デフォルト { "EIT", "NIT", "CAT", "SDT", "SDTT", "TOT", "ECM", "EMM" }
                            if (Settings.Instance.RecInfoDropExclude.FirstOrDefault(s => words[8].Contains(s)) == null)
                            {
                                DropsCritical += (Int64)Convert.ToUInt64(words[5]);
                                ScramblesCritical += (Int64)Convert.ToUInt64(words[7]);
                                line_new = line1.Replace(" " + words[8], "*" + words[8]);
                            }
                        }
                        newInfo.Append(line_new.TrimEnd('\r') + "\r\n");//単に\n付けるだけでも良いが、一応"\r\n"に確定させる
                    }

                    newInfo.AppendFormat("                              * = Critical Drop/Scramble Parameter.\r\n");
                    newInfo.AppendFormat("                              Drop:{0,9}  Scramble:{1,10}  Total\r\n", info.Drops, info.Scrambles);
                    newInfo.AppendFormat("                             *Drop:{0,9} *Scramble:{1,10} *Critical\r\n", DropsCritical, ScramblesCritical);
                    ErrInfo = newInfo.ToString();

                    return;
                }
                catch { }//エラーがあったときは、ラストへ
            }

            DropsCritical = info.Drops;
            ScramblesCritical = info.Scrambles;
        }
示例#31
0
        public RecFileInfoAppend GetRecFileAppend(RecFileInfo master, bool UpdateDB = false)
        {
            if (master == null) return null;

            if (recFileAppendList == null)
            {
                recFileAppendList = new Dictionary<uint, RecFileInfoAppend>();
            }

            RecFileInfoAppend retv = null;
            if (recFileAppendList.TryGetValue(master.ID, out retv) == false)
            {
                if (UpdateDB == true)
                {
                    var list = recFileInfo.Values.Where(info => info.HasErrPackets == true
                        && recFileAppendList.ContainsKey(info.ID) == false).ToList();

                    try
                    {
                        var extraDatalist = new List<RecFileInfo>();
                        if (cmd.SendGetRecInfoList(list.Select(info => info.ID).ToList(), ref extraDatalist) == ErrCode.CMD_SUCCESS)
                        {
                            extraDatalist.ForEach(item => recFileAppendList.Add(item.ID, new RecFileInfoAppend(item)));
                        }
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }

                    //何か問題があった場合でも何度もSendGetRecInfoList()しないよう残りも全て登録してしまう。
                    foreach (var item in list.Where(info => recFileAppendList.ContainsKey(info.ID) == false))
                    {
                        recFileAppendList.Add(item.ID, new RecFileInfoAppend(item, false));
                    }

                    recFileAppendList.TryGetValue(master.ID, out retv);
                }
                else
                {
                    var extraRecInfo = new RecFileInfo();
                    if (cmd.SendGetRecInfo(master.ID, ref extraRecInfo) == ErrCode.CMD_SUCCESS)
                    {
                        retv = new RecFileInfoAppend(extraRecInfo);
                        recFileAppendList.Add(master.ID, retv);
                    }
                }
            }
            return retv ?? new RecFileInfoAppend(master);
        }
示例#32
0
 public void showResult(RecFileInfo recFileInfo0)
 {
     reset();
     if (Settings.Instance.RecLog_SearchLog_IsEnabled)
     {
         _recFileInfo = recFileInfo0;
         _selectedRecLogItem = _mainWindow.recLogView.db_RecLog.exists(recFileInfo0);
         if (_selectedRecLogItem != null )
         {
             switch (_selectedRecLogItem.recodeStatus)
             {
                 case RecLogItem.RecodeStatuses.録画完了:
                     menuItem_ChangeStatus_NONE.IsEnabled = true;
                     menuItem_ChangeStatus_Recorded.IsEnabled = false;
                     break;
                 default:
                     menuItem_ChangeStatus_NONE.IsEnabled = false;
                     menuItem_ChangeStatus_Recorded.IsEnabled = true;
                     break;
             }
         }
         search(recFileInfo0.Title, _selectedRecLogItem);
     }
     else
     {
         drawText(RecLogView.notEnabledMessage);
     }
     show();
 }
示例#33
0
 public RecInfoItem(RecFileInfo item)
 {
     RecInfo = item;
 }
示例#34
0
 public static void CopyTo(this RecFileInfo src, RecFileInfo dest)
 {
     CopyObj.CopyTo(src, dest, CopyData);
 }
示例#35
0
 void reset()
 {
     menuItem_ChangeStatus_Recorded.IsEnabled = true;
     richTextBox_SelectedItem.Visibility = Visibility.Visible;
     _resultList.Clear();
     _epgEventInfo = null;
     _recFileInfo = null;
     _selectedRecLogItem = null;
     richTextBox.Document.Blocks.Clear();
 }
示例#36
0
 public RecInfoItem(RecFileInfo item)
 {
     this.RecInfo = item;
 }
示例#37
0
 private static void CopyData(RecFileInfo src, RecFileInfo dest)
 {
     dest.Comment = src.Comment;
     dest.Drops = src.Drops;
     dest.DurationSecond = src.DurationSecond;
     dest.ErrInfo = src.ErrInfo;
     dest.EventID = src.EventID;
     dest.ID = src.ID;
     dest.OriginalNetworkID = src.OriginalNetworkID;
     dest.ProgramInfo = src.ProgramInfo;
     dest.ProtectFlag = src.ProtectFlag;
     dest.RecFilePath = src.RecFilePath;
     dest.RecStatus = src.RecStatus;
     dest.Scrambles = src.Scrambles;
     dest.ServiceID = src.ServiceID;
     dest.ServiceName = src.ServiceName;
     dest.StartTime = src.StartTime;
     dest.StartTimeEpg = src.StartTimeEpg;
     dest.Title = src.Title;
     dest.TransportStreamID = src.TransportStreamID;
 }
示例#38
0
 public static void CopyTo(this RecFileInfo src, RecFileInfo dest)
 {
     CopyObj.CopyTo(src, dest, CopyData);
 }