示例#1
0
 protected virtual void PopupClear()
 {
     if (PopUp != null)
     {
         PopUp.Visibility = Visibility.Hidden;
     }
     lastPopupInfo = null;
     lastPopupPos  = new Point(-1, -1);
 }
示例#2
0
        // PopUpの初期化
        protected virtual void SetPopup(ViewPanelItemBase popInfo)
        {
            UpdatePopupPosition(popInfo);

            PopUp.Width = popInfo.Width;
            if (popInfo.TopPos < scroll.ContentVerticalOffset)
            {
                PopUp.MinHeight = Math.Max(0, popInfo.TopPos + popInfo.Height - scroll.ContentVerticalOffset);
            }
            else
            {
                PopUp.MinHeight = Math.Max(0, Math.Min(scroll.ContentVerticalOffset + scroll.ViewportHeight - popInfo.TopPos, popInfo.Height));
            }
        }
示例#3
0
        // PopUp が画面内に収まるように調整する
        protected void UpdatePopupPosition(ViewPanelItemBase popInfo)
        {
            // offsetHが正のとき右にはみ出している
            double offsetH = popInfo.LeftPos + PopUp.ActualWidth - (scroll.ContentHorizontalOffset + scroll.ViewportWidth);
            // 右にはみ出した分だけ左にずらす
            double left = popInfo.LeftPos - Math.Max(0, offsetH);

            // 左にはみ出てる場合はscrollエリアの左端から表示する
            Canvas.SetLeft(PopUp, Math.Floor(Math.Max(left, scroll.ContentHorizontalOffset)));

            // offsetVが正のとき下にはみ出している
            double offsetV = popInfo.TopPos + PopUp.ActualHeight - (scroll.ContentVerticalOffset + scroll.ViewportHeight);
            // 下にはみ出した分だけ上にずらす
            double top = popInfo.TopPos - Math.Max(0, offsetV);

            // 上にはみ出てる場合はscrollエリアの上端から表示する
            Canvas.SetTop(PopUp, Math.Floor(Math.Max(top, scroll.ContentVerticalOffset - 1)));
        }
示例#4
0
        protected virtual void PopUpWork(bool reset = false)
        {
            if (IsPopupEnabled == false)
            {
                return;
            }

            if (reset == true)
            {
                PopupClear();
            }

            Point cursorPos = Mouse.GetPosition(scroll);

            if (lastPopupPos != cursorPos)
            {
                lastPopupPos = cursorPos;

                if (cursorPos.X < 0 || cursorPos.Y < 0 ||
                    scroll.ViewportWidth < cursorPos.X || scroll.ViewportHeight < cursorPos.Y)
                {
                    PopupClear();
                    return;
                }

                Point             itemPos = Mouse.GetPosition(cnvs);
                ViewPanelItemBase item    = GetPopupItem(itemPos);

                if (item != lastPopupInfo)
                {
                    lastPopupInfo = item;

                    if (item == null)
                    {
                        PopupClear();
                        return;
                    }

                    SetPopup(item);
                    PopUp.Visibility = Visibility.Visible;
                }
            }
        }
示例#5
0
        protected override void SetPopup(ViewPanelItemBase item)
        {
            base.SetPopup(item);

            var viewInfo = (ReserveViewItem)item;
            var resItem  = new ReserveItem(viewInfo.ReserveInfo);

            popupItem.Background     = viewInfo.BackColorTuner;
            popupItemTextArea.Margin = new Thickness(1, -1, 5, 1);

            double     sizeTitle    = Settings.Instance.TunerFontSizeService;
            double     sizeNormal   = Settings.Instance.TunerFontSize;
            double     indentTitle  = Math.Floor((Settings.Instance.TunerPopupRecinfo == false || Settings.Instance.TunerTitleIndent == true) ? sizeNormal * 1.7 : 2);
            double     indentNormal = Math.Floor(Settings.Instance.TunerTitleIndent == true ? indentTitle : 2);
            var        fontTitle    = new FontFamily(Settings.Instance.TunerFontNameService);
            var        fontNormal   = new FontFamily(Settings.Instance.TunerFontName);
            FontWeight weightTitle  = Settings.Instance.TunerFontBoldService == true ? FontWeights.Bold : FontWeights.Normal;
            Brush      colorTitle   = Settings.Instance.TunerColorModeUse == true ? viewInfo.ForeColorPriTuner : CommonManager.Instance.CustTunerServiceColor;
            Brush      colorNormal  = CommonManager.Instance.CustTunerTextColor;

            //録画中は枠をかえる
            popupItem.BorderBrush = viewInfo.BorderBrushTuner;

            //追加情報の表示
            if (Settings.Instance.TunerPopupRecinfo == true)
            {
                timeText.Visibility    = Visibility.Visible;
                recInfoText.Visibility = Visibility.Visible;
                minText.Visibility     = Visibility.Collapsed;

                //'録画中'を表示
                statusText.Text       = viewInfo.StatusTuner;
                statusText.Visibility = Visibility.Collapsed;
                if (statusText.Text != "")
                {
                    statusText.Visibility = Visibility.Visible;
                    statusText.FontFamily = fontNormal;
                    statusText.FontSize   = sizeNormal;
                    //statusText.FontWeight = FontWeights.Normal;
                    statusText.Foreground = CommonManager.Instance.StatRecForeColor;
                    minText.Margin        = new Thickness(1, 1, 0, 4);
                    statusText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
                }

                timeText.Text       = resItem.StartTimeShort;
                timeText.FontFamily = fontNormal;
                timeText.FontSize   = sizeNormal;
                timeText.Foreground = colorTitle;
                timeText.Margin     = new Thickness(1, 1, 0, 2);
                timeText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);

                recInfoText.Text       = "優先度 : " + resItem.Priority + "\r\n" + "録画モード : " + resItem.RecMode;
                recInfoText.FontFamily = fontNormal;
                recInfoText.FontSize   = sizeNormal;
                //recInfoText.FontWeight = FontWeights.Normal;
                recInfoText.Foreground = colorTitle;
                recInfoText.Margin     = new Thickness(2 + indentTitle, 0, 2, 4);
                recInfoText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
            }
            else
            {
                statusText.Visibility  = Visibility.Collapsed;
                timeText.Visibility    = Visibility.Collapsed;
                recInfoText.Visibility = Visibility.Collapsed;
                minText.Visibility     = Visibility.Visible;

                minText.Text       = viewInfo.ReserveInfo.StartTime.Minute.ToString("d02");
                minText.FontFamily = fontNormal;
                minText.FontSize   = sizeNormal;
                //minText.FontWeight = FontWeights.Normal;
                minText.Foreground = colorTitle;
                minText.Margin     = new Thickness(1, 1, 0, 0);
                minText.LineHeight = Settings.Instance.TunerFontHeight;
            }

            var titletext = resItem.ServiceName + "(" + resItem.NetworkName + ")";

            titleText.Text       = Regex.Replace(titletext, ".", "$0\u200b");
            titleText.FontFamily = fontTitle;
            titleText.FontSize   = sizeTitle;
            titleText.FontWeight = weightTitle;
            titleText.Foreground = colorTitle;
            titleText.Margin     = new Thickness(2 + indentTitle, 1, 0, 2);
            titleText.LineHeight = Math.Max(Settings.Instance.TunerFontHeightService, sizeTitle + 2);

            //必ず文字単位で折り返すためにZWSPを挿入 (\\w を使うと記号の間にZWSPが入らない)
            infoText.Text = Regex.Replace(resItem.EventName, ".", "$0\u200b");
            //infoText.Text = resItem.EventName;
            infoText.FontFamily = fontNormal;
            infoText.FontSize   = sizeNormal;
            //infoText.FontWeight = FontWeights.Normal;
            infoText.Foreground = colorNormal;
            infoText.Margin     = new Thickness(2 + indentNormal, 0, 0, 2);
            infoText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
        }
示例#6
0
        protected override void SetPopup(ViewPanelItemBase item)
        {
            base.SetPopup(item);

            var          viewInfo = (ProgramViewItem)item;
            EpgEventInfo epgInfo  = viewInfo.EventInfo;

            popupItem.Background = viewInfo.ContentColor;

            double     sizeMin      = Settings.Instance.FontSizeTitle - 1;
            double     sizeTitle    = Settings.Instance.FontSizeTitle;
            double     sizeNormal   = Settings.Instance.FontSize;
            double     indentTitle  = Math.Floor(sizeMin * 1.7 + 1);
            double     indentNormal = Math.Floor(Settings.Instance.EpgTitleIndent ? indentTitle : 3);
            var        fontNormal   = new FontFamily(Settings.Instance.FontName);
            var        fontTitle    = new FontFamily(Settings.Instance.FontNameTitle);
            FontWeight titleWeight  = Settings.Instance.FontBoldTitle == true ? FontWeights.Bold : FontWeights.Normal;

            minText.Text       = (epgInfo.StartTimeFlag != 1 ? "未定" : epgInfo.start_time.Minute.ToString("d02"));
            minText.FontFamily = fontTitle;
            minText.FontSize   = sizeMin;
            minText.FontWeight = titleWeight;
            minText.Foreground = CommonManager.Instance.CustTitle1Color;
            minText.Margin     = new Thickness(1, 1, 0, 0);
            minText.LineHeight = Settings.Instance.FontHeightTitle;

            if (epgInfo.ShortInfo != null)
            {
                //必ず文字単位で折り返すためにZWSPを挿入 (\\w を使うと記号の間にZWSPが入らない)
                titleText.Text       = System.Text.RegularExpressions.Regex.Replace(epgInfo.ShortInfo.event_name, ".", "$0\u200b");
                titleText.FontFamily = fontTitle;
                titleText.FontSize   = sizeTitle;
                titleText.FontWeight = titleWeight;
                titleText.Foreground = CommonManager.Instance.CustTitle1Color;
                titleText.Margin     = new Thickness(indentTitle, 1, 0, 3);
                titleText.LineHeight = Math.Max(Settings.Instance.FontHeightTitle, sizeTitle + 2);

                if (epgInfo.ShortInfo.text_char.Length == 0)
                {
                    infoText.Visibility = Visibility.Collapsed;
                }
                else
                {
                    infoText.Visibility = Visibility.Visible;
                    infoText.Text       = System.Text.RegularExpressions.Regex.Replace(epgInfo.ShortInfo.text_char, ".", "$0\u200b");
                    infoText.FontFamily = fontNormal;
                    infoText.FontSize   = sizeNormal;
                    //infoText.FontWeight = FontWeights.Normal;
                    infoText.Foreground = CommonManager.Instance.CustTitle2Color;
                    infoText.Margin     = new Thickness(indentNormal, 1, 0, 3);
                    infoText.LineHeight = Math.Max(Settings.Instance.FontHeight, sizeNormal + 2);
                }
            }
            else
            {
                titleText.Text = null;
                infoText.Text  = null;
            }

            //予約枠の表示
            double marginEpg = 1;
            double marginRes = marginEpg + 3;

            popupItemTextArea.Margin = new Thickness(marginEpg, marginEpg - 2, marginEpg + 3, marginEpg);
            if (resPopItem != null)
            {
                SetReserveBorder(popupItemBorder, resPopItem);
                popupItemBorder.Visibility = Visibility.Visible;
                if (Settings.Instance.ReserveRectBackground == false)
                {
                    popupItemTextArea.Margin = new Thickness(marginRes, marginRes - 1, marginRes, marginRes);
                }
            }
            else
            {
                popupItemBorder.Visibility = Visibility.Collapsed;
            }
        }
示例#7
0
        protected override void SetPopup(ViewPanelItemBase item)
        {
            base.SetPopup(item);

            var viewInfo = (ReserveViewItem)item;
            var resItem = new ReserveItem(viewInfo.ReserveInfo);

            popupItem.Background = viewInfo.BackColorTuner;
            popupItemTextArea.Margin = new Thickness(1, -1, 5, 1);

            double sizeTitle = Settings.Instance.TunerFontSizeService;
            double sizeNormal = Settings.Instance.TunerFontSize;
            double indentTitle = Math.Floor((Settings.Instance.TunerPopupRecinfo == false || Settings.Instance.TunerTitleIndent == true) ? sizeNormal * 1.7 : 2);
            double indentNormal = Math.Floor(Settings.Instance.TunerTitleIndent == true ? indentTitle : 2);
            var fontTitle = new FontFamily(Settings.Instance.TunerFontNameService);
            var fontNormal = new FontFamily(Settings.Instance.TunerFontName);
            FontWeight weightTitle = Settings.Instance.TunerFontBoldService == true ? FontWeights.Bold : FontWeights.Normal;
            Brush colorTitle = Settings.Instance.TunerColorModeUse == true ? viewInfo.ForeColorPriTuner : CommonManager.Instance.CustTunerServiceColor;
            Brush colorNormal = CommonManager.Instance.CustTunerTextColor;

            //録画中は枠をかえる
            popupItem.BorderBrush = viewInfo.BorderBrushTuner;

            //追加情報の表示
            if (Settings.Instance.TunerPopupRecinfo == true)
            {
                timeText.Visibility = Visibility.Visible;
                recInfoText.Visibility = Visibility.Visible;
                minText.Visibility = Visibility.Collapsed;

                //'録画中'を表示
                statusText.Text = viewInfo.StatusTuner;
                statusText.Visibility = Visibility.Collapsed;
                if (statusText.Text != "")
                {
                    statusText.Visibility = Visibility.Visible;
                    statusText.FontFamily = fontNormal;
                    statusText.FontSize = sizeNormal;
                    //statusText.FontWeight = FontWeights.Normal;
                    statusText.Foreground = CommonManager.Instance.StatRecForeColor;
                    minText.Margin = new Thickness(1, 1, 0, 4);
                    statusText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
                }

                timeText.Text = resItem.StartTimeShort;
                timeText.FontFamily = fontNormal;
                timeText.FontSize = sizeNormal;
                timeText.Foreground = colorTitle;
                timeText.Margin = new Thickness(1, 1, 0, 2);
                timeText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);

                recInfoText.Text = "優先度 : " + resItem.Priority + "\r\n" + "録画モード : " + resItem.RecMode;
                recInfoText.FontFamily = fontNormal;
                recInfoText.FontSize = sizeNormal;
                //recInfoText.FontWeight = FontWeights.Normal;
                recInfoText.Foreground = colorTitle;
                recInfoText.Margin = new Thickness(2 + indentTitle, 0, 2, 4);
                recInfoText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
            }
            else
            {
                statusText.Visibility = Visibility.Collapsed;
                timeText.Visibility = Visibility.Collapsed;
                recInfoText.Visibility = Visibility.Collapsed;
                minText.Visibility = Visibility.Visible;

                minText.Text = viewInfo.ReserveInfo.StartTime.Minute.ToString("d02");
                minText.FontFamily = fontNormal;
                minText.FontSize = sizeNormal;
                //minText.FontWeight = FontWeights.Normal;
                minText.Foreground = colorTitle;
                minText.Margin = new Thickness(1, 1, 0, 0);
                minText.LineHeight = Settings.Instance.TunerFontHeight;
            }

            var titletext = resItem.ServiceName + "(" + resItem.NetworkName + ")";
            titleText.Text = Regex.Replace(titletext, ".", "$0\u200b");
            titleText.FontFamily = fontTitle;
            titleText.FontSize = sizeTitle;
            titleText.FontWeight = weightTitle;
            titleText.Foreground = colorTitle;
            titleText.Margin = new Thickness(2 + indentTitle, 1, 0, 2);
            titleText.LineHeight = Math.Max(Settings.Instance.TunerFontHeightService, sizeTitle + 2);

            //必ず文字単位で折り返すためにZWSPを挿入 (\\w を使うと記号の間にZWSPが入らない)
            infoText.Text = Regex.Replace(resItem.EventName, ".", "$0\u200b");
            //infoText.Text = resItem.EventName;
            infoText.FontFamily = fontNormal;
            infoText.FontSize = sizeNormal;
            //infoText.FontWeight = FontWeights.Normal;
            infoText.Foreground = colorNormal;
            infoText.Margin = new Thickness(2 + indentNormal, 0, 0, 2);
            infoText.LineHeight = Math.Max(Settings.Instance.TunerFontHeight, sizeNormal + 2);
        }
示例#8
0
        protected override void SetPopup(ViewPanelItemBase item)
        {
            base.SetPopup(item);

            var viewInfo = (ProgramViewItem)item;
            EpgEventInfo epgInfo = viewInfo.EventInfo;

            popupItem.Background = viewInfo.ContentColor;

            double sizeMin = Settings.Instance.FontSizeTitle - 1;
            double sizeTitle = Settings.Instance.FontSizeTitle;
            double sizeNormal = Settings.Instance.FontSize;
            double indentTitle = Math.Floor(sizeMin * 1.7 + 1);
            double indentNormal = Math.Floor(Settings.Instance.EpgTitleIndent ? indentTitle : 3);
            var fontNormal = new FontFamily(Settings.Instance.FontName);
            var fontTitle = new FontFamily(Settings.Instance.FontNameTitle);
            FontWeight titleWeight = Settings.Instance.FontBoldTitle == true ? FontWeights.Bold : FontWeights.Normal;

            minText.Text = (epgInfo.StartTimeFlag != 1 ? "未定" : epgInfo.start_time.Minute.ToString("d02"));
            minText.FontFamily = fontTitle;
            minText.FontSize = sizeMin;
            minText.FontWeight = titleWeight;
            minText.Foreground = CommonManager.Instance.CustTitle1Color;
            minText.Margin = new Thickness(1, 1, 0, 0);
            minText.LineHeight = Settings.Instance.FontHeightTitle;

            if (epgInfo.ShortInfo != null)
            {
                //必ず文字単位で折り返すためにZWSPを挿入 (\\w を使うと記号の間にZWSPが入らない)
                titleText.Text = System.Text.RegularExpressions.Regex.Replace(epgInfo.ShortInfo.event_name, ".", "$0\u200b");
                titleText.FontFamily = fontTitle;
                titleText.FontSize = sizeTitle;
                titleText.FontWeight = titleWeight;
                titleText.Foreground = CommonManager.Instance.CustTitle1Color;
                titleText.Margin = new Thickness(indentTitle, 1, 0, 3);
                titleText.LineHeight = Math.Max(Settings.Instance.FontHeightTitle, sizeTitle + 2);

                if (epgInfo.ShortInfo.text_char.Length == 0)
                {
                    infoText.Visibility = Visibility.Collapsed;
                }
                else
                {
                    infoText.Visibility = Visibility.Visible;
                    infoText.Text = System.Text.RegularExpressions.Regex.Replace(epgInfo.ShortInfo.text_char, ".", "$0\u200b");
                    infoText.FontFamily = fontNormal;
                    infoText.FontSize = sizeNormal;
                    //infoText.FontWeight = FontWeights.Normal;
                    infoText.Foreground = CommonManager.Instance.CustTitle2Color;
                    infoText.Margin = new Thickness(indentNormal, 1, 0, 3);
                    infoText.LineHeight = Math.Max(Settings.Instance.FontHeight, sizeNormal + 2);
                }
            }
            else
            {
                titleText.Text = null;
                infoText.Text = null;
            }

            //予約枠の表示
            double marginEpg = 1;
            double marginRes = marginEpg + 3;
            popupItemTextArea.Margin = new Thickness(marginEpg, marginEpg - 2, marginEpg + 3, marginEpg);
            if (resPopItem != null)
            {
                SetReserveBorder(popupItemBorder, resPopItem);
                popupItemBorder.Visibility = Visibility.Visible;
                if (Settings.Instance.ReserveRectBackground == false)
                {
                    popupItemTextArea.Margin = new Thickness(marginRes, marginRes - 1, marginRes, marginRes);
                }
            }
            else
            {
                popupItemBorder.Visibility = Visibility.Collapsed;
            }
        }