Пример #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
 private void button_del_Click(object sender, RoutedEventArgs e)
 {
     if (recInfo != null)
     {
         if (Settings.Instance.ConfirmDelRecInfo)
         {
             if ((recInfo.RecFilePath.Length > 0 || Settings.Instance.ConfirmDelRecInfoAlways) &&
                 MessageBox.Show("削除してよろしいですか?" +
                                 (recInfo.RecFilePath.Length > 0 ? "\r\n\r\n「録画ファイルも削除する」設定が有効な場合、ファイルも削除されます。" : ""), "確認",
                                 MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.OK) != MessageBoxResult.OK)
             {
                 return;
             }
         }
         try
         {
             CommonManager.CreateSrvCtrl().SendDelRecInfo(new List <uint>()
             {
                 recInfo.ID
             });
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString());
         }
     }
     DialogResult = false;
 }
Пример #3
0
        /// <summary>
        /// 指定IDの番組情報を取得する。できるだけServiceEventListを利用する
        /// </summary>
        public EpgEventInfo GetPgInfo(ushort onid, ushort tsid, ushort sid, ushort eventID, bool cacheOnly)
        {
            var eventInfo = new EpgEventInfo();
            EpgServiceAllEventInfo allInfo;

            if (serviceEventList.TryGetValue(CommonManager.Create64Key(onid, tsid, sid), out allInfo))
            {
                //過去でない番組情報は必ずID順になっている
                eventInfo.event_id = eventID;
                int index = allInfo.eventList.BinarySearch(eventInfo, new EpgEventInfoComparer());
                if (index >= 0)
                {
                    return(allInfo.eventList[index]);
                }
            }
            try
            {
                if (cacheOnly == false &&
                    CommonManager.CreateSrvCtrl().SendGetPgInfo(CommonManager.Create64PgKey(onid, tsid, sid, eventID), ref eventInfo) == ErrCode.CMD_SUCCESS)
                {
                    return(eventInfo);
                }
            }
            catch { }
            return(null);
        }
Пример #4
0
        private void MenuItem_Click_Priority(object sender, RoutedEventArgs e)
        {
            if (listView_result.SelectedItem != null)
            {
                List <ReserveData> list = new List <ReserveData>();

                foreach (SearchItem item in listView_result.SelectedItems)
                {
                    if (item.IsReserved == true)
                    {
                        item.ReserveInfo.RecSetting.Priority = byte.Parse((string)((MenuItem)sender).Tag);
                        list.Add(item.ReserveInfo);
                    }
                }

                if (list.Count > 0)
                {
                    try
                    {
                        ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
                        if (err != ErrCode.CMD_SUCCESS)
                        {
                            MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約変更でエラーが発生しました。");
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
                    }
                }
            }
        }
Пример #5
0
        public void ReadRecFileAppend(IEnumerable <RecFileInfo> rlist = null)
        {
            var list = (rlist ?? RecFileInfo.Values).Where(info => recFileAppendList.ContainsKey(info.ID) == false).ToList();

            if (list.Count == 0)
            {
                return;
            }

            try
            {
                var extraDatalist = new List <RecFileInfo>();
                if (CommonManager.CreateSrvCtrl().SendGetRecInfoList(list.Select(info => info.ID).ToList(), ref extraDatalist) == ErrCode.CMD_SUCCESS)
                {
                    extraDatalist.ForEach(item => recFileAppendList[item.ID] = new RecFileInfoAppend(item));
                }
            }
            catch { }

            //何か問題があった場合でも何度もSendGetRecInfoList()しないよう残りも全て登録してしまう。
            foreach (var item in list.Where(info => recFileAppendList.ContainsKey(info.ID) == false))
            {
                recFileAppendList[item.ID] = new RecFileInfoAppend(item, false);
            }
        }
Пример #6
0
        /// <summary>録画済み情報の更新があれば再読み込みする</summary>
        public ErrCode ReloadRecFileInfo(bool immediately = false, bool noRaiseChanged = false)
        {
            return(ReloadWork(UpdateNotifyItem.RecInfo, immediately, noRaiseChanged, ret =>
            {
                RecFileInfo = new Dictionary <uint, RecFileInfo>();
                RecFileUIDList = new Dictionary <UInt64, List <RecFileInfo> >();
                var list = new List <RecFileInfo>();

                try { ret = CommonManager.CreateSrvCtrl().SendEnumRecInfoBasic(ref list); } catch { ret = ErrCode.CMD_ERR; }
                if (ret != ErrCode.CMD_SUCCESS)
                {
                    return ret;
                }

                list.ForEach(info => RecFileInfo[info.ID] = info);

                //追加の検索用リスト
                RecFileUIDList = list.GroupBy(item => item.CurrentPgUID()).ToDictionary(gr => gr.Key, gr => gr.ToList());

                //無効データ(通信エラーなどで仮登録されたもの)と録画結果一覧に無いデータを削除して再構築。
                recFileAppendList = recFileAppendList.Where(item => item.Value.IsValid == true && RecFileInfo.ContainsKey(item.Key) == true).ToDictionary(item => item.Key, item => item.Value);

                return ret;
            }));
        }
Пример #7
0
        private void ReloadList()
        {
            string notifyLog = "";

            if (CommonManager.CreateSrvCtrl().SendGetNotifyLog(Math.Max(Settings.Instance.NotifyLogMax, 1), ref notifyLog) == ErrCode.CMD_SUCCESS)
            {
                //サーバに保存されたログを使う
                listView_log.ItemsSource = notifyLog.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Select(text => new NotifySrvInfoItem(text)).ToList();
                textBox_logMax.IsEnabled = true;
            }
            else
            {
                //クライアントで蓄積したログを使う
                listView_log.ItemsSource = CommonManager.Instance.NotifyLogList.Select(info => new NotifySrvInfoItem(info)).ToList();
                textBox_logMax.IsEnabled = false;
            }

            if (_lastHeaderClicked != null)
            {
                Sort(_lastHeaderClicked, _lastDirection);
            }
            else
            {
                string header = ((Binding)gridView_log.Columns[0].DisplayMemberBinding).Path.Path;
                Sort(header, _lastDirection);
                _lastHeaderClicked = header;
            }
        }
Пример #8
0
 private void cm_chg_priority_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         List <ReserveData> list = new List <ReserveData>();
         foreach (SearchItem item in listView_event.SelectedItems)
         {
             if (item.IsReserved == true)
             {
                 item.ReserveInfo.RecSetting.Priority = (byte)(sender == priority_1 ? 1 :
                                                               sender == priority_2 ? 2 :
                                                               sender == priority_3 ? 3 :
                                                               sender == priority_4 ? 4 : 5);
                 list.Add(item.ReserveInfo);
             }
         }
         if (list.Count > 0)
         {
             ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
             if (err != ErrCode.CMD_SUCCESS)
             {
                 MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約変更でエラーが発生しました。");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #9
0
        /// <summary>SPKeyが無ければ指定サービスのみ過去EPGを読み込む</summary>
        public ErrCode LoadEpgArcData(DateTime start, DateTime end, ref List <EpgServiceEventInfo> list, IEnumerable <ulong> keys = null)
        {
            try
            {
                List <long> keyList;
                if (keys == null || keys.Any(key => EpgServiceInfo.IsSPKey(key)))
                {
                    keyList = new List <long> {
                        0xFFFFFFFFFFFF, 0xFFFFFFFFFFFF
                    };
                }
                else
                {
                    keyList = keys.Select(key => new List <long> {
                        0, (long)key
                    }).SelectMany(lst => lst).ToList();
                }
                //EDCB系の時刻は、UTCじゃないけどUTC扱いなので
                keyList.Add(start.ToFileTimeUtc());
                keyList.Add(end == DateTime.MaxValue ? long.MaxValue : end.ToFileTimeUtc());

                return(CommonManager.CreateSrvCtrl().SendEnumPgArc(keyList, ref list));
            }
            catch { return(ErrCode.CMD_ERR); }
        }
Пример #10
0
        /// <summary>
        /// 自動予約登録情報の更新があれば再読み込みする
        /// </summary>
        /// <returns></returns>
        public ErrCode ReloadManualAutoAddInfo()
        {
            ErrCode ret = ErrCode.CMD_SUCCESS;

            if (updateAutoAddManualInfo)
            {
                manualAutoAddList = new Dictionary <uint, ManualAutoAddData>();
                var list = new List <ManualAutoAddData>();
                try
                {
                    ret = ErrCode.CMD_ERR;
                    ret = CommonManager.CreateSrvCtrl().SendEnumManualAdd(ref list);
                }
                catch { }
                if (ret == ErrCode.CMD_SUCCESS)
                {
                    foreach (ManualAutoAddData info in list)
                    {
                        manualAutoAddList.Add(info.dataID, info);
                    }
                    updateAutoAddManualInfo = false;
                }
            }
            return(ret);
        }
Пример #11
0
        public EpgEventInfo GetPgInfo(bool isSrv = true)
        {
            //まずは手持ちのデータを探す
            EpgEventInfo pg = MenuUtil.GetPgInfoUidAll(CurrentPgUID());

            if (pg != null || isSrv == false)
            {
                return(pg);
            }

            //過去番組情報を探してみる
            if (PgStartTime >= CommonManager.Instance.DB.EventTimeMinArc)
            {
                var arcList = new List <EpgServiceEventInfo>();
                CommonManager.Instance.DB.LoadEpgArcData(PgStartTime, PgStartTime.AddSeconds(1), ref arcList, Create64Key().IntoList());
                if (arcList.Any())
                {
                    return(arcList[0].eventList.FirstOrDefault());
                }
            }

            //現在番組情報も探してみる ※EPGデータ未読み込み時で、録画直後の場合
            if (CommonManager.Instance.DB.IsEpgLoaded == false)
            {
                var list = new List <EpgEventInfo>();
                try { CommonManager.CreateSrvCtrl().SendGetPgInfoList(Create64PgKey().IntoList(), ref list); } catch { }
                return(list.FirstOrDefault());
            }

            return(null);
        }
Пример #12
0
        public void ReadRecFileAppend(IEnumerable <RecFileInfo> rlist = null)
        {
            if (recFileAppendList == null)
            {
                recFileAppendList = new Dictionary <uint, RecFileInfoAppend>();
            }

            var list = (rlist ?? RecFileInfo.Values).Where(info => recFileAppendList.ContainsKey(info.ID) == false).ToList();

            if (list.Count == 0)
            {
                return;
            }

            try
            {
                var extraDatalist = new List <RecFileInfo>();
                if (CommonManager.CreateSrvCtrl().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));
            }
        }
Пример #13
0
 void setRecMode(int redMode0)
 {
     try
     {
         List <ReserveData> list = new List <ReserveData>();
         foreach (ReserveItem item in listView_reserve.SelectedItems)
         {
             ReserveData reserveInfo = item.ReserveInfo;
             reserveInfo.RecSetting.RecMode = BitConverter.GetBytes(redMode0)[0];
             list.Add(reserveInfo);
         }
         if (list.Count > 0)
         {
             ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
             if (err != ErrCode.CMD_SUCCESS)
             {
                 MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "チューナー一覧の取得でエラーが発生しました。");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
     }
 }
Пример #14
0
        private void button_del_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                List <UInt32> list = new List <UInt32>();
                foreach (ReserveItem item in listView_reserve.SelectedItems)
                {
                    ReserveData reserveInfo = item.ReserveInfo;

                    list.Add(reserveInfo.ReserveID);
                }
                if (list.Count > 0)
                {
                    ErrCode err = CommonManager.CreateSrvCtrl().SendDelReserve(list);
                    if (err != ErrCode.CMD_SUCCESS)
                    {
                        MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "チューナー一覧の取得でエラーが発生しました。");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Пример #15
0
        /// <summary>録画済み情報の更新があれば再読み込みする</summary>
        public ErrCode ReloadRecFileInfo(bool immediately = false)
        {
            if (immediately == true)
            {
                SetUpdateNotify(UpdateNotifyItem.RecInfo);
            }
            var ret = ErrCode.CMD_SUCCESS;

            try
            {
                if (updateRecInfo == true)
                {
                    RecFileInfo = new Dictionary <uint, RecFileInfo>();
                    var list = new List <RecFileInfo>();

                    ret = CommonManager.CreateSrvCtrl().SendEnumRecInfoBasic(ref list);
                    if (ret != ErrCode.CMD_SUCCESS)
                    {
                        return(ret);
                    }

                    list.ForEach(info => RecFileInfo.Add(info.ID, info));

                    ClearRecFileAppend();
                    updateRecInfo = false;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
            return(ret);
        }
Пример #16
0
        void saveItemOrder()
        {
            if (resultListMoved == null)
            {
                return;
            }
            //
            List <uint> dataIdList1 = new List <uint>();

            foreach (EpgAutoDataItem item1 in resultListMoved)
            {
                dataIdList1.Add(item1.EpgAutoAddInfo.dataID);
            }
            dataIdList1.Sort();
            //
            List <EpgAutoAddData> addList1 = new List <EpgAutoAddData>();

            for (int i1 = 0; i1 < resultListMoved.Count; i1++)
            {
                EpgAutoDataItem item1 = resultListMoved[i1];
                item1.EpgAutoAddInfo.dataID = dataIdList1[i1];
                addList1.Add(item1.EpgAutoAddInfo);
            }
            if (CommonManager.CreateSrvCtrl().SendChgEpgAutoAdd(addList1) != ErrCode.CMD_SUCCESS)
            {
                MessageBox.Show("変更に失敗しました");
            }
        }
Пример #17
0
        private void priority_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                byte priority           = byte.Parse(((MenuItem)sender).Name.Substring("priority_".Length));
                List <ReserveData> list = new List <ReserveData>();
                foreach (ReserveItem item in listView_reserve.SelectedItems)
                {
                    ReserveData reserveInfo = item.ReserveInfo;
                    reserveInfo.RecSetting.Priority = priority;

                    list.Add(reserveInfo);
                }
                if (list.Count > 0)
                {
                    ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
                    if (err != ErrCode.CMD_SUCCESS)
                    {
                        MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "チューナー一覧の取得でエラーが発生しました。");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Пример #18
0
        /// <summary>自動予約登録情報の更新があれば再読み込みする</summary>
        public ErrCode ReloadManualAutoAddInfo(bool immediately = false)
        {
            if (immediately == true)
            {
                SetUpdateNotify(UpdateNotifyItem.AutoAddManualInfo);
            }
            var ret = ErrCode.CMD_SUCCESS;

            try
            {
                if (updateAutoAddManualInfo == true)
                {
                    ManualAutoAddList = new Dictionary <uint, ManualAutoAddData>();
                    var list = new List <ManualAutoAddData>();

                    ret = CommonManager.CreateSrvCtrl().SendEnumManualAdd(ref list);
                    if (ret != ErrCode.CMD_SUCCESS)
                    {
                        return(ret);
                    }

                    list.ForEach(info => ManualAutoAddList.Add(info.dataID, info));

                    updateAutoAddManualInfo = false;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
            return(ret);
        }
Пример #19
0
 private void button_del_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         if (listView_recinfo.SelectedItems.Count > 0)
         {
             if ((sender is ListViewItem) || Settings.Instance.ConfirmDelRecInfo)
             {
                 bool hasPath = listView_recinfo.SelectedItems.Cast <RecInfoItem>().Any(info => info.RecFilePath.Length > 0);
                 if ((hasPath || (sender is ListViewItem) || Settings.Instance.ConfirmDelRecInfoAlways) &&
                     MessageBox.Show(listView_recinfo.SelectedItems.Count + "項目を削除してよろしいですか?" +
                                     (hasPath ? "\r\n\r\n「録画ファイルも削除する」設定が有効な場合、ファイルも削除されます。" : ""), "確認",
                                     MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.OK) != MessageBoxResult.OK)
                 {
                     return;
                 }
             }
             List <UInt32> IDList = new List <uint>();
             foreach (RecInfoItem info in listView_recinfo.SelectedItems)
             {
                 IDList.Add(info.RecInfo.ID);
             }
             CommonManager.CreateSrvCtrl().SendDelRecInfo(IDList);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #20
0
 private void cm_del_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         List <UInt32> list = new List <UInt32>();
         foreach (SearchItem item in listView_event.SelectedItems)
         {
             if (item.IsReserved == true)
             {
                 list.Add(item.ReserveInfo.ReserveID);
             }
         }
         if (list.Count > 0)
         {
             ErrCode err = CommonManager.CreateSrvCtrl().SendDelReserve(list);
             if (err != ErrCode.CMD_SUCCESS)
             {
                 MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約削除でエラーが発生しました。");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
     }
 }
Пример #21
0
        /// <summary>PlugInFileの再読み込み指定があればする</summary>
        public ErrCode ReloadPlugInFile(bool immediately = false)
        {
            if (immediately == true)
            {
                SetUpdateNotify(UpdateNotifyItem.PlugInFile);
            }
            var ret = ErrCode.CMD_SUCCESS;

            try
            {
                if (updatePlugInFile == true)
                {
                    var recNameList = new List <string>();
                    var writeList   = new List <string>();
                    RecNamePlugInList = recNameList;
                    WritePlugInList   = writeList;

                    ret = CommonManager.CreateSrvCtrl().SendEnumPlugIn(1, ref recNameList);
                    if (ret != ErrCode.CMD_SUCCESS)
                    {
                        return(ret);
                    }

                    ret = CommonManager.CreateSrvCtrl().SendEnumPlugIn(2, ref writeList);
                    if (ret != ErrCode.CMD_SUCCESS)
                    {
                        return(ret);
                    }

                    updatePlugInFile = false;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
            return(ret);
        }
Пример #22
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));
        }
Пример #23
0
 private void cm_chg_no_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         var list = new List <ReserveData>();
         foreach (SearchItem item in listView_event.SelectedItems)
         {
             if (item.IsReserved)
             {
                 byte recMode = item.ReserveInfo.RecSetting.GetRecMode();
                 if (item.ReserveInfo.RecSetting.IsNoRec() == false)
                 {
                     //録画モード情報を維持して無効化
                     recMode = (byte)(CommonManager.Instance.DB.FixNoRecToServiceOnly ? 5 : 5 + (recMode + 4) % 5);
                 }
                 item.ReserveInfo.RecSetting.RecMode = recMode;
                 list.Add(item.ReserveInfo);
             }
         }
         if (list.Count > 0)
         {
             ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
             if (err != ErrCode.CMD_SUCCESS)
             {
                 MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約変更でエラーが発生しました。");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #24
0
        /// <summary>
        /// 録画済み情報の更新があれば再読み込みする
        /// </summary>
        /// <returns></returns>
        public ErrCode ReloadrecFileInfo()
        {
            ErrCode ret = ErrCode.CMD_SUCCESS;

            if (updateRecInfo)
            {
                recFileInfo = new Dictionary <uint, RecFileInfo>();
                var list = new List <RecFileInfo>();
                try
                {
                    ret = ErrCode.CMD_ERR;
                    ret = CommonManager.CreateSrvCtrl().SendEnumRecInfoBasic(ref list);
                    if (ret == ErrCode.CMD_NON_SUPPORT)
                    {
                        ret = ErrCode.CMD_ERR;
                        ret = CommonManager.CreateSrvCtrl().SendEnumRecInfo(ref list);
                    }
                }
                catch { }
                if (ret == ErrCode.CMD_SUCCESS)
                {
                    foreach (RecFileInfo info in list)
                    {
                        recFileInfo.Add(info.ID, info);
                    }
                    updateRecInfo = false;
                }
            }
            return(ret);
        }
Пример #25
0
 private void recmode_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         List <ReserveData> list = new List <ReserveData>();
         foreach (ReserveItem item in listView_reserve.SelectedItems)
         {
             byte recMode = byte.Parse((string)((MenuItem)sender).Tag);
             if (item.ReserveInfo.RecSetting.IsNoRec())
             {
                 //録画モード情報を維持して無効化
                 recMode = (byte)(CommonManager.Instance.DB.FixNoRecToServiceOnly ? 5 : 5 + (recMode + 4) % 5);
             }
             item.ReserveInfo.RecSetting.RecMode = recMode;
             list.Add(item.ReserveInfo);
         }
         if (list.Count > 0)
         {
             ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
             if (err != ErrCode.CMD_SUCCESS)
             {
                 MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "チューナー一覧の取得でエラーが発生しました。");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #26
0
        /// <summary>
        /// baseTimeから1週間分(EventBaseTimeをしきい値とし、このとき上限なし)のEPGデータを読み込む
        /// </summary>
        public ErrCode LoadWeeklyEpgData(DateTime baseTime, out Dictionary <ulong, EpgServiceAllEventInfo> list)
        {
            list = null;
            List <EpgServiceEventInfo> arcList = null;
            ErrCode ret = ReloadEpgData();

            if (ret == ErrCode.CMD_SUCCESS)
            {
                baseTime = baseTime > EventBaseTime ? EventBaseTime : baseTime;
                if (baseTime < EventBaseTime)
                {
                    ret     = ErrCode.CMD_ERR;
                    arcList = new List <EpgServiceEventInfo>();
                    try
                    {
                        //1週間分の過去番組情報
                        CommonManager.CreateSrvCtrl().SendEnumPgArc(
                            new List <long> {
                            0xFFFFFFFFFFFF, 0xFFFFFFFFFFFF, baseTime.ToFileTime(), baseTime.AddDays(7).ToFileTime()
                        }, ref arcList);
                        ret = ErrCode.CMD_SUCCESS;
                    }
                    catch { }
                }
            }
            if (ret == ErrCode.CMD_SUCCESS)
            {
                list = new Dictionary <ulong, EpgServiceAllEventInfo>();
                foreach (var info in serviceEventList)
                {
                    if (arcList != null)
                    {
                        //対応する過去番組情報があれば付加する
                        int i = arcList.FindIndex(a => info.Key == CommonManager.Create64Key(a.serviceInfo.ONID, a.serviceInfo.TSID, a.serviceInfo.SID));
                        list.Add(info.Key, new EpgServiceAllEventInfo(info.Value.serviceInfo,
                                                                      info.Value.eventList.Where(a => a.StartTimeFlag != 0 && a.start_time >= baseTime && a.start_time < baseTime.AddDays(7)).ToList(),
                                                                      i < 0 ? new List <EpgEventInfo>() : arcList[i].eventList));
                    }
                    else
                    {
                        list.Add(info.Key, new EpgServiceAllEventInfo(info.Value.serviceInfo,
                                                                      info.Value.eventList.Where(a => a.StartTimeFlag == 0 || a.start_time >= baseTime).ToList(),
                                                                      info.Value.eventArcList));
                    }
                }
                if (arcList != null)
                {
                    foreach (EpgServiceEventInfo info in arcList)
                    {
                        ulong id = CommonManager.Create64Key(info.serviceInfo.ONID, info.serviceInfo.TSID, info.serviceInfo.SID);
                        if (list.ContainsKey(id) == false)
                        {
                            //過去番組情報のみ存在
                            list.Add(id, new EpgServiceAllEventInfo(info.serviceInfo, new List <EpgEventInfo>(), info.eventList));
                        }
                    }
                }
            }
            return(ret);
        }
Пример #27
0
        /// <summary>
        /// 初期値の予約情報をセットする
        /// </summary>
        /// <param name="info">[IN] 初期値の予約情報</param>
        public void SetReserveInfo(ReserveData info)
        {
            try
            {
                reserveInfo = info;
                recSettingView.SetDefSetting(info.RecSetting);

                if (info.EventID != 0xFFFF)
                {
                    UInt64       key       = CommonManager.Create64Key(info.OriginalNetworkID, info.TransportStreamID, info.ServiceID);
                    EpgEventInfo eventInfo = null;
                    if (CommonManager.Instance.DB.ServiceEventList.ContainsKey(key) == true)
                    {
                        foreach (EpgEventInfo eventChkInfo in CommonManager.Instance.DB.ServiceEventList[key].eventList)
                        {
                            if (eventChkInfo.event_id == info.EventID)
                            {
                                eventInfo = eventChkInfo;
                                break;
                            }
                        }
                    }
                    if (eventInfo == null)
                    {
                        UInt64 pgId = CommonManager.Create64PgKey(info.OriginalNetworkID, info.TransportStreamID, info.ServiceID, info.EventID);
                        eventInfo = new EpgEventInfo();
                        CommonManager.CreateSrvCtrl().SendGetPgInfo(pgId, ref eventInfo);
                    }
                    if (eventInfo != null)
                    {
                        String text = CommonManager.Instance.ConvertProgramText(eventInfo, EventInfoTextMode.All);

                        int       searchFrom = 0;
                        Paragraph para       = new Paragraph();
                        string    rtext      = CommonManager.ReplaceText(text, CommonManager.Instance.ReplaceUrlDictionary);
                        if (rtext.Length == text.Length)
                        {
                            for (Match m = Regex.Match(rtext, @"https?://[0-9A-Za-z!#$%&'()~=@;:?_+\-*/.]+"); m.Success; m = m.NextMatch())
                            {
                                para.Inlines.Add(text.Substring(searchFrom, m.Index - searchFrom));
                                Hyperlink h = new Hyperlink(new Run(text.Substring(m.Index, m.Length)));
                                h.MouseLeftButtonDown += new MouseButtonEventHandler(h_MouseLeftButtonDown);
                                h.Foreground           = Brushes.Blue;
                                h.Cursor      = Cursors.Hand;
                                h.NavigateUri = new Uri(m.Value);
                                para.Inlines.Add(h);
                                searchFrom = m.Index + m.Length;
                            }
                        }
                        para.Inlines.Add(text.Substring(searchFrom));
                        richTextBox_descInfo.Document = new FlowDocument(para);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Пример #28
0
        private void cm_chg_recmode_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                List <ReserveData> list = new List <ReserveData>();
                foreach (SearchItem item in listView_event.SelectedItems)
                {
                    if (item.IsReserved == true)
                    {
                        ReserveData reserveInfo = item.ReserveInfo;

                        byte recMode = 0;
                        if (sender == recmode_all)
                        {
                            recMode = 0;
                        }
                        else if (sender == recmode_only)
                        {
                            recMode = 1;
                        }
                        else if (sender == recmode_all_nodec)
                        {
                            recMode = 2;
                        }
                        else if (sender == recmode_only_nodec)
                        {
                            recMode = 3;
                        }
                        else if (sender == recmode_view)
                        {
                            recMode = 4;
                        }
                        else if (sender == recmode_no)
                        {
                            recMode = 5;
                        }
                        else
                        {
                            return;
                        }
                        reserveInfo.RecSetting.RecMode = recMode;

                        list.Add(reserveInfo);
                    }
                }
                if (list.Count > 0)
                {
                    ErrCode err = CommonManager.CreateSrvCtrl().SendChgReserve(list);
                    if (err != ErrCode.CMD_SUCCESS)
                    {
                        MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約変更でエラーが発生しました。");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Пример #29
0
        private void button_add_reserve_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (eventInfo.StartTimeFlag == 0)
                {
                    MessageBox.Show("開始時間未定のため予約できません");
                    if (this.Visibility == System.Windows.Visibility.Visible)
                    {
                        DialogResult = false;
                    }
                }

                ReserveData reserveInfo = new ReserveData();
                if (eventInfo.ShortInfo != null)
                {
                    reserveInfo.Title = eventInfo.ShortInfo.event_name;
                }

                reserveInfo.StartTime    = eventInfo.start_time;
                reserveInfo.StartTimeEpg = eventInfo.start_time;

                if (eventInfo.DurationFlag == 0)
                {
                    reserveInfo.DurationSecond = 10 * 60;
                }
                else
                {
                    reserveInfo.DurationSecond = eventInfo.durationSec;
                }

                UInt64 key = CommonManager.Create64Key(eventInfo.original_network_id, eventInfo.transport_stream_id, eventInfo.service_id);
                if (ChSet5.Instance.ChList.ContainsKey(key) == true)
                {
                    reserveInfo.StationName = ChSet5.Instance.ChList[key].ServiceName;
                }
                reserveInfo.OriginalNetworkID = eventInfo.original_network_id;
                reserveInfo.TransportStreamID = eventInfo.transport_stream_id;
                reserveInfo.ServiceID         = eventInfo.service_id;
                reserveInfo.EventID           = eventInfo.event_id;
                reserveInfo.RecSetting        = recSettingView.GetRecSetting();

                List <ReserveData> list = new List <ReserveData>();
                list.Add(reserveInfo);
                ErrCode err = CommonManager.CreateSrvCtrl().SendAddReserve(list);
                if (err != ErrCode.CMD_SUCCESS)
                {
                    MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約登録でエラーが発生しました。終了時間がすでに過ぎている可能性があります。");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
            if (this.Visibility == System.Windows.Visibility.Visible)
            {
                DialogResult = true;
            }
        }
Пример #30
0
        private void AddReserveFromPreset(uint presetID)
        {
            try
            {
                if (listView_event.SelectedItem == null)
                {
                    return;
                }

                SearchItem   item      = listView_event.SelectedItem as SearchItem;
                EpgEventInfo eventInfo = item.EventInfo;
                if (eventInfo.StartTimeFlag == 0)
                {
                    MessageBox.Show("開始時間未定のため予約できません");
                    return;
                }

                ReserveData reserveInfo = new ReserveData();
                if (eventInfo.ShortInfo != null)
                {
                    reserveInfo.Title = eventInfo.ShortInfo.event_name;
                }

                reserveInfo.StartTime    = eventInfo.start_time;
                reserveInfo.StartTimeEpg = eventInfo.start_time;

                if (eventInfo.DurationFlag == 0)
                {
                    reserveInfo.DurationSecond = 10 * 60;
                }
                else
                {
                    reserveInfo.DurationSecond = eventInfo.durationSec;
                }

                UInt64 key = CommonManager.Create64Key(eventInfo.original_network_id, eventInfo.transport_stream_id, eventInfo.service_id);
                if (ChSet5.Instance.ChList.ContainsKey(key) == true)
                {
                    reserveInfo.StationName = ChSet5.Instance.ChList[key].ServiceName;
                }
                reserveInfo.OriginalNetworkID = eventInfo.original_network_id;
                reserveInfo.TransportStreamID = eventInfo.transport_stream_id;
                reserveInfo.ServiceID         = eventInfo.service_id;
                reserveInfo.EventID           = eventInfo.event_id;
                reserveInfo.RecSetting        = Settings.CreateRecSetting(presetID);

                List <ReserveData> list = new List <ReserveData>();
                list.Add(reserveInfo);
                ErrCode err = CommonManager.CreateSrvCtrl().SendAddReserve(list);
                if (err != ErrCode.CMD_SUCCESS)
                {
                    MessageBox.Show(CommonManager.GetErrCodeText(err) ?? "予約登録でエラーが発生しました。終了時間がすでに過ぎている可能性があります。");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }