Exemple #1
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!
        }
        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();
        }
        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;
        }
 public void SetSkin(JwSkinPackage pkg)
 {
     skinPackage = pkg;
     BindSkins();
 }
 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
     };
 }
        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;
        }
        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++;
            }
        }
        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;
        }
        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);
        }
        /// <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--;
            }
        }
        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();
        }
Exemple #12
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();
        }