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