Beispiel #1
0
 protected override void SetData(bool IsAllData = false)
 {
     base.SetData(IsAllData);
     if (_getSearchList != null)//SearchItemリストがある場合
     {
         List <SearchItem> searchList = _getSearchList(IsAllData);
         searchList = searchList == null ? new List <SearchItem>() : searchList.OfType <SearchItem>().ToList();//無くても大丈夫なはずだが一応
         OrderAdjust <SearchItem>(searchList, _selectSingleSearchData);
         dataList    = searchList.GetReserveList();
         eventList   = searchList.GetEventList();
         eventListEx = searchList.GetNoReserveList();
         headData    = searchList.Count == 0 ? null : searchList[0].IsReserved == true ? searchList[0].ReserveInfo as object : searchList[0].EventInfo as object;
     }
     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 => CtrlCmdDefEx.EqualsPg(epg, res) == false))
             {
                 eventListEx.Add(epg);
             }
         });
         headData = dataList.Count != 0 ? dataList[0] as object : eventList.Count != 0 ? eventList[0] as object : null;
     }
 }
 private void SetProgramContent(EpgEventInfo info)
 {
     //放映時刻情報に対してEPGデータ無い場合もあるので、resInfoDisplayとは別にeventInfoDisplayを管理する
     if (CtrlCmdDefEx.EqualsPg(eventInfoDisplay, info) == false)
     {
         richTextBox_descInfo.Document = CommonManager.Instance.ConvertDisplayText(info);
     }
     eventInfoDisplay = info;
 }
        private void ReserveModeChanged()
        {
            // UIに反映させる
            SetResModeProgram();

            if (!initialized)
            {
                return;
            }

            if (ReserveMode == UIReserveMode.Program)
            {
                eventInfoNew = null;
            }
            else if (ReserveMode == UIReserveMode.EPGManual)
            {
                var resInfo = new ReserveData();
                GetReserveTimeInfo(ref resInfo);

                if (reserveInfo.IsEpgReserve == true && CtrlCmdDefEx.EqualsPg(reserveInfo, resInfo, false, true) == true)
                {
                    //EPG予約で、元の状態に戻る場合
                    textBox_title.Text = reserveInfo.Title;
                    eventInfoNew       = null;
                }
                else
                {
                    eventInfoNew = resInfo.SearchEventInfoLikeThat();
                    if (eventInfoNew == null)
                    {
                        MessageBox.Show("変更可能な番組がありません。\r\n" +
                                        "EPGの期間外か、EPGデータが読み込まれていません。");
                        ReserveMode = UIReserveMode.Program;
                    }
                    else
                    {
                        SetReserveTimeInfo(CtrlCmdDefEx.ConvertEpgToReserveData(eventInfoNew));
                    }
                }
            }
            else if (ReserveMode == UIReserveMode.EPGAuto)
            {
                SetReserveTimeInfo(reserveInfo);
            }

            eventInfoSelected = eventInfoNew;
        }
        private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (tabControl.SelectedIndex == TabSelectedIndex)
            {
                return;
            }
            TabSelectedIndex = tabControl.SelectedIndex;

            if (tabItem_program.IsSelected)
            {
                if (ReserveMode == UIReserveMode.Program)
                {
                    var resInfo = new ReserveData();
                    GetReserveTimeInfo(ref resInfo);

                    //描画回数の削減を気にしないなら、この条件文は無くてもいい
                    if (CtrlCmdDefEx.EqualsPg(resInfoDisplay, resInfo, false, true) == false)
                    {
                        //EPGを自動で読み込んでない時でも、元がEPG予約ならその番組情報は表示させられるようにする
                        if (reserveInfo.IsEpgReserve == true && CtrlCmdDefEx.EqualsPg(reserveInfo, resInfo, false, true) == true)
                        {
                            SetProgramContent(reserveInfo.SearchEventInfo(true));
                        }
                        else
                        {
                            SetProgramContent(resInfo.SearchEventInfoLikeThat());
                        }

                        resInfoDisplay = resInfo;
                    }
                }
                else
                {
                    //EPG予約を変更していない場合引っかかる。
                    //最も表示される可能性が高いので、何度も探しにいかせないようにする。
                    if (eventInfoSelected == null)
                    {
                        eventInfoSelected = reserveInfo.SearchEventInfo(true);
                    }
                    SetProgramContent(eventInfoSelected);
                    resInfoDisplay = null;
                }
            }
        }
        private void button_chg_reserve_Click(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                if (CmdExeUtil.IsDisplayKgMessage(e) == true)
                {
                    bool change_proc = false;
                    switch (addMode)
                    {
                    case AddMode.Add:
                        change_proc = (MessageBox.Show("予約を追加します。\r\nよろしいですか?", "予約の確認", MessageBoxButton.OKCancel) == MessageBoxResult.OK);
                        break;

                    case AddMode.Re_Add:
                        change_proc = (MessageBox.Show("この内容で再予約します。\r\nよろしいですか?", "再予約の確認", MessageBoxButton.OKCancel) == MessageBoxResult.OK);
                        break;

                    case AddMode.Change:
                        change_proc = (MessageBox.Show("この予約を変更します。\r\nよろしいですか?", "変更の確認", MessageBoxButton.OKCancel) == MessageBoxResult.OK);
                        break;
                    }
                    if (change_proc == false)
                    {
                        return;
                    }
                }

                if (addMode == AddMode.Change && CheckExistReserveItem() == false)
                {
                    return;
                }

                //ダイアログを閉じないときはreserveInfoを変更しないよう注意する
                if (ReserveMode == UIReserveMode.Program)
                {
                    var resInfo = new ReserveData();
                    if (GetReserveTimeInfo(ref resInfo) == -2)
                    {
                        MessageBox.Show("終了日時が開始日時より前です");
                        return;
                    }

                    //reserveInfo取得前に保存する。サービスや時間が変わったら、個別予約扱いにする。タイトルのみ変更は見ない。
                    bool chgManualMode = !CtrlCmdDefEx.EqualsPg(resInfo, reserveInfo, false, true);

                    GetReserveTimeInfo(ref reserveInfo);
                    if (reserveInfo.EventID != 0xFFFF || chgManualMode == true)
                    {
                        reserveInfo.EventID = 0xFFFF;
                        reserveInfo.Comment = "";
                    }
                    reserveInfo.StartTimeEpg = reserveInfo.StartTime;
                }
                else if (ReserveMode == UIReserveMode.EPGManual)
                {
                    //EPG予約に変える場合、またはEPG予約で別の番組に変わる場合
                    if (eventInfoNew != null)
                    {
                        //基本的にAddReserveEpgWindowと同じ処理内容
                        if (MenuUtil.IsEnableReserveAdd(eventInfoNew) == false)
                        {
                            return;
                        }
                        eventInfoNew.ConvertToReserveData(ref reserveInfo);
                        reserveInfo.Comment = "";
                    }
                    // 自動予約から個別予約に変える場合
                    else if (GetReserveModeFromInfo() == UIReserveMode.EPGAuto)
                    {
                        reserveInfo.Comment = "";
                    }
                }

                reserveInfo.RecSetting = recSettingView.GetRecSetting();

                if (addMode == AddMode.Change)
                {
                    bool ret = MenuUtil.ReserveChange(CommonUtil.ToList(reserveInfo));
                    CommonManager.Instance.StatusNotifySet(ret, "録画予約を変更");
                }
                else
                {
                    bool ret = MenuUtil.ReserveAdd(CommonUtil.ToList(reserveInfo));
                    CommonManager.Instance.StatusNotifySet(ret, "録画予約を追加");
                }

                // EPG自動予約以外になったら戻せないようにしておく
                if (ReserveMode != UIReserveMode.EPGAuto)
                {
                    CanSelectAutoAdd = false;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }

            DialogResult = true;
        }