예제 #1
0
        /// <summary>EPGデータの表示モードを設定する</summary>
        /// <param name="setInfo">[IN]表示モードの設定値</param>
        public void SetViewMode(CustomEpgTabInfo setInfo, object state = null)
        {
            //表示モード一緒で、絞り込み内容変化のみ。
            if (viewCtrl != null)
            {
                CustomEpgTabInfo viewInfo = viewCtrl.GetViewMode();
                if (viewInfo != null && viewInfo.ViewMode == setInfo.ViewMode)
                {
                    viewInfo = setInfo.Clone();
                    viewCtrl.SetViewMode(viewInfo);
                    return;
                }
            }

            //切り替える場合
            SaveViewData();
            switch (setInfo.ViewMode)
            {
            case 1:    //1週間表示
                viewCtrl = new EpgWeekMainView();
                break;

            case 2:    //リスト表示
                viewCtrl = new EpgListMainView();
                break;

            default:    //標準ラテ欄表示
                viewCtrl = new EpgMainView();
                break;
            }

            viewCtrl.ViewSettingClick += new ViewSettingClickHandler(item_ViewSettingClick);
            viewCtrl.SetViewMode(setInfo);
            if (state != null)
            {
                SetViewState(state);
            }
            grid_main.Children.Clear();
            grid_main.Children.Add(viewCtrl as UIElement);
        }
예제 #2
0
        private void epgView_ViewSettingClick(EpgViewBase sender, int param)
        {
            try
            {
                EpgTabItem tab = Tabs.FirstOrDefault(ti => ti.view == sender);
                if (tab == null)
                {
                    return;
                }

                if (param < -2 || 2 < param)
                {
                    return;
                }

                CustomEpgTabInfo info = null;
                if (param == -1)
                {
                    //表示設定変更ダイアログから
                    var dlg = new EpgDataViewSettingWindow(tab.Info);
                    dlg.Owner = CommonUtil.GetTopWindow(this);
                    dlg.SetTryMode(Settings.Instance.UseCustomEpgView == false);
                    if (dlg.ShowDialog() == false)
                    {
                        return;
                    }

                    info = dlg.GetSetting();
                    if (info.Uid != tab.Uid)
                    {
                        return;                     //保険
                    }
                    //設定の保存。
                    if (Settings.Instance.UseCustomEpgView == true && Settings.Instance.TryEpgSetting == false &&
                        info.ID >= 0 && info.ID < tabInfo.Count && info.ID < Settings.Instance.CustomEpgTabList.Count)
                    {
                        tabInfo[info.ID] = info;
                        Settings.Instance.CustomEpgTabList[info.ID] = info;
                        Settings.SaveToXmlFile();
                        SettingWindow.UpdatesInfo("番組表関連の変更");
                    }

                    if (info.IsVisible == false)
                    {
                        tabControl.Items.Remove(tab);
                        return;
                    }
                }
                else if (param == -2)
                {
                    info = tabInfo.Find(tinfo => tinfo.ID == tab.Info.ID);
                    if (info == null)
                    {
                        return;
                    }
                }

                //選択用タブの選択を切り替え。
                tab_viewMode_Change(info != null ? info.ViewMode : param);

                tab.UpdateContent(info, param);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); }
        }