示例#1
0
        public ControlBarLayout(JwSkinPackage pkg)
        {
            elements = new List <ControlBarElement>();

            var component = pkg.GetComponent("controlbar");
            var layout    = component.Elements("layout").ToArray();

            elements.Add(ControlBarElement.CapLeft());
            if (layout.Length < 1)
            {
                SetupDefaults();
            }
            else
            {
                ReadPlaceholders(layout[0], "left");
                ReadPlaceholders(layout[0], "center");
                ReadPlaceholders(layout[0], "right");
            }
            elements.Add(ControlBarElement.CapRight());

            InjectImplicitButton("pause", "play");
            InjectImplicitButton("normalscreen", "fullscreen");
            InjectImplicitButton("unmute", "mute");

            RemoveUnrenderableElements(pkg);
            RemoveRepeatedDividers();
        }
示例#2
0
        public MainPage()
        {
            InitializeComponent();
            players = new ComposerControlHelper();

            jwSkinPackage            = new JwSkinPackage();
            jwSkinPackage.SkinReady += JwSkinPackageSkinPackageReady;

            Player.MouseLeftButtonUp += Player_MouseLeftButtonUp;
            Player.Cursor             = Cursors.Hand;

            bridge = new HtmlInteraction(this);
            bridge.AddBinding(Player);

            if (!String.IsNullOrEmpty(srcPlaylist))
            {
                Player.LoadPlaylist(srcPlaylist);
            }

            AddBinding(Player);
            ControlBarView.AddBinding(Player);
            DisplayView.AddBinding(Player);
            DockView.AddBinding(Player);
            PlaylistView.AddBinding(Player);
            CaptionView.AddBinding(Player);

            DockView.CaptionVisibilityChanged += DockView_CaptionVisibilityChanged;

            controlBarFader = new OpacityFader(ControlBarView);
            dockFader       = new OpacityFader(DockView);
            SetFadeTimer();
            CaptionView.Margin = new Thickness(0, 0, 0, 75);            // we don't know the height until images are all loaded... take a guess for now!
        }
示例#3
0
        public void SetSkin(JwSkinPackage pkg)
        {
            skinPackage = pkg;

            pkg.BindHoverButton(CaptionsButton, "dock", "button", "buttonOver");
            CaptionsButton.BadgeImage   = pkg.GetNamedElement("captions", "dockIcon");
            CaptionsButton.CaptionText  = "Subtitles\r\nOn";
            CaptionsButton.CaptionColor = (pkg.GetSettingValue("dock", "fontcolor") ?? "0xffffff").HexToColor();
        }
        public void SetSkin(JwSkinPackage pkg)
        {
            SetImages(
                pkg.GetNamedElement(PlaylistComponent, "item"),
                pkg.GetNamedElement(PlaylistComponent, "itemActive"),
                pkg.GetNamedElement(PlaylistComponent, "itemOver"),
                pkg.GetNamedElement(PlaylistComponent, "itemImage"));

            var outHex = pkg.GetSettingValue(PlaylistComponent, "fontcolor") ?? "0xffffff";

            outColor    = (outHex).HexToColor();
            overColor   = (pkg.GetSettingValue(PlaylistComponent, "overcolor") ?? outHex).HexToColor();
            activeColor = (pkg.GetSettingValue(PlaylistComponent, "activecolor") ?? outHex).HexToColor();
        }
示例#5
0
        public void SetSkin(JwSkinPackage pkg)
        {
            pkg.BindAndResize(BackgroundIcon, componentName, "background");
            pkg.BindHoverButton(PlayIcon, componentName, "playIcon", "playIconOver");
            pkg.BindHoverButton(MuteIcon, componentName, "muteIcon", "muteIconOver");
            pkg.BindAndResize(BufferIcon, componentName, "bufferIcon");

            var interval = pkg.GetSettingValue(componentName, "bufferinterval") ?? "100";
            var rotation = pkg.GetSettingValue(componentName, "bufferrotation") ?? "15";

            spinAnimation = new RotationAnimation(BufferIcon, TimeSpan.FromMilliseconds(double.Parse(interval)), double.Parse(rotation));

            PlayIcon.Clicked += PlayIconClicked;
        }
示例#6
0
        void GetBackground(JwSkinPackage pkg)
        {
            var img = pkg.GetNamedElement(ControlBarComponent, "background");

            if (img == null)
            {
                return;
            }
            backgroundBrush = new ImageBrush {
                ImageSource = img,
                Stretch     = Stretch.Fill,
                AlignmentX  = AlignmentX.Left,
                AlignmentY  = AlignmentY.Top
            };
        }
示例#7
0
        /// <summary>
        /// If elements are declared, but have no graphics, we won't try to render them.
        /// </summary>
        void RemoveUnrenderableElements(JwSkinPackage pkg)
        {
            for (var i = 0; i < elements.Count; i++)
            {
                if (elements[i].Type != ControlBarElement.ElementType.Button)
                {
                    continue;
                }
                if (pkg.HasNamedElement("controlbar", elements[i].ElementName()))
                {
                    continue;
                }

                elements.RemoveAt(i);
                i--;
            }
        }
示例#8
0
        ImageHoverButton BindButton(ControlBarElement element, JwSkinPackage pkg)
        {
            var btn = new ImageHoverButton();

            pkg.BindHoverButton(btn, ControlBarComponent, element.ElementName(), element.ElementName() + "Over");
            btn.Clicked += GetBinding(element.Name);

            if (element.Name == "play")
            {
                playButton = btn;
            }
            if (element.Name == "pause")
            {
                pauseButton = btn;
            }

            if (element.Name == "fullscreen")
            {
                fullScreenButton = btn;
            }
            if (element.Name == "normalscreen")
            {
                normalScreenButton = btn;
            }

            if (element.Name == "mute")
            {
                muteButton = btn;
            }
            if (element.Name == "unmute")
            {
                unmuteButton = btn;
            }

            if (element.Name == "prev")
            {
                prevButton = btn;
            }
            if (element.Name == "next")
            {
                nextButton = btn;
            }

            return(btn);
        }
示例#9
0
        JwSliderHorizontal BuildVolumeSlider(JwSkinPackage pkg)
        {
            volumeSlider = new JwSliderHorizontal();
            volumeSlider.SetSkin(
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderRail"),
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderBuffer"),
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderProgress"),
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderThumb"),
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderCapLeft"),
                pkg.GetNamedElement(ControlBarComponent, "volumeSliderCapRight"));

            volumeSlider.BufferProgress = 0.75;
            volumeSlider.SliderProgress = 0.25;

            volumeSlider.TargetProportionChanged += VolumeSlider_TargetProportionChanged;

            volumeSlider.Margin = new Thickness(0);
            return(volumeSlider);
        }
示例#10
0
        public void SetSkin(JwSkinPackage pkg)
        {
            GetBackground(pkg);
            LayoutRoot.SizeChanged += LayoutRoot_SizeChanged;

            var baseColor = pkg.GetSettingValue("frontcolor");

            ControlbarOverMargin = double.Parse(pkg.GetSettingValue(ControlBarComponent, "margin") ?? "0.0");
            TargetFontSize       = double.Parse(pkg.GetSettingValue(ControlBarComponent, "fontsize") ?? "10.0");
            FontColour           = (pkg.GetSettingValue(ControlBarComponent, "fontcolor") ?? baseColor ?? "0xffffff").HexToColor();

            var layout = new ControlBarLayout(pkg);

            BuildControls(pkg, layout);

            UpdateFullScreenButtonState(null, null);
            UpdateSoundButtonState();
            UpdatePlaylistButtonVisibility();
            ShowPlayButton();
            PaddingBorder.Padding = new Thickness(ControlbarOverMargin);
        }
示例#11
0
 public void SetSkin(JwSkinPackage pkg)
 {
     skinPackage = pkg;
     BindSkins();
 }
示例#12
0
        void BuildControls(JwSkinPackage pkg, ControlBarLayout layout)
        {
            SetColumnDefinitions(layout);
            int i = 0;
            FrameworkElement lastElement = null;

            foreach (var element in layout.Elements)
            {
                FrameworkElement c;

                switch (element.Type)
                {
                case ControlBarElement.ElementType.Gap:
                    i++; continue;

                case ControlBarElement.ElementType.Text:
                    if (element.Name == "elapsed")
                    {
                        elapsedText = new JwElapsedText {
                            FontSize   = TargetFontSize,
                            FontColour = FontColour
                        };
                        c = elapsedText;
                        players.EachPlayer(p => players.AddBinding(p, elapsedText));
                    }
                    else if (element.Name == "duration")
                    {
                        durationText = new JwDurationText {
                            FontSize   = TargetFontSize,
                            FontColour = FontColour
                        };
                        c = durationText;
                        players.EachPlayer(p => players.AddBinding(p, durationText));
                    }
                    else
                    {
                        i++; continue;
                    }
                    break;

                case ControlBarElement.ElementType.Divider:
                    c = new PairedImage(lastElement);
                    pkg.BindAndResize(((PairedImage)c).Image, ControlBarComponent, element.Name ?? "divider");
                    break;

                case ControlBarElement.ElementType.CapLeft:
                    c = leftCap = new Image();
                    pkg.BindAndResize(leftCap, ControlBarComponent, element.Name ?? "divider");
                    break;

                case ControlBarElement.ElementType.CapRight:
                    c = rightCap = new Image();
                    pkg.BindAndResize(rightCap, ControlBarComponent, element.Name ?? "divider");
                    break;

                case ControlBarElement.ElementType.Button:
                    var btn = BindButton(element, pkg);
                    c        = btn;
                    c.Cursor = Cursors.Hand;
                    break;

                case ControlBarElement.ElementType.TimeSlider:
                    var tsl = BuildTimeSlider(pkg);
                    c        = tsl;
                    c.Cursor = Cursors.Hand;
                    break;

                case ControlBarElement.ElementType.VolumeSlider:
                    var vsl = BuildVolumeSlider(pkg);
                    c        = vsl;
                    c.Cursor = Cursors.Hand;
                    break;

                default:
                    i++; continue;
                }

                LayoutRoot.Children.Add(c);
                lastElement = c;
                if (element.Name == "play" || element.Name == "pause")
                {
                    lastElement = null;
                }
                c.SetValue(Grid.ColumnProperty, i);
                i++;
            }
        }