Example #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();
        }
Example #2
0
 /// <summary>
 /// if no implicit button defined, add one after the target button (if there is one)
 /// </summary>
 void InjectImplicitButton(string implicitButton, string targetButton)
 {
     if (elements.Any(e => (e.Type == ControlBarElement.ElementType.Button) && (e.Name == implicitButton)))
     {
         return;
     }
     for (var i = 0; i < elements.Count; i++)
     {
         if ((elements[i].Type != ControlBarElement.ElementType.Button) || (elements[i].Name != targetButton))
         {
             continue;
         }
         elements.Insert(i, ControlBarElement.Button(implicitButton));
         break;
     }
 }
Example #3
0
        void ReadPlaceholders(XElement layout, string groupName)
        {
            foreach (var item in GroupNodes(layout, groupName))
            {
                var name    = item.AttributeValue("name");
                var element = item.AttributeValue("element");
                var width   = item.AttributeValue("width");
                switch (item.Name.LocalName.ToLower())
                {
                case "button":
                    if (name != null && name != "blank")
                    {
                        elements.Add(ControlBarElement.Button(name));
                    }
                    break;

                case "text":
                    if (name != null)
                    {
                        elements.Add(ControlBarElement.Text(name));
                    }
                    break;

                case "divider":
                    if (width == null)
                    {
                        elements.Add(ControlBarElement.Divider(element));
                    }
                    else
                    {
                        elements.Add(ControlBarElement.Gap(int.Parse(width)));
                    }
                    break;

                case "slider":
                    if (name == "time")
                    {
                        elements.Add(ControlBarElement.TimeSlider());
                    }
                    else if (name == "volume")
                    {
                        elements.Add(ControlBarElement.VolumeSlider());
                    }
                    break;
                }
            }
        }
Example #4
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);
        }
Example #5
0
 void SetupDefaults()
 {
     elements.Add(ControlBarElement.Button("play"));
     elements.Add(ControlBarElement.Button("pause"));
     elements.Add(ControlBarElement.Button("stop"));
     elements.Add(ControlBarElement.Button("prev"));
     elements.Add(ControlBarElement.Button("next"));
     elements.Add(ControlBarElement.Divider("divider"));
     elements.Add(ControlBarElement.Text("elapsed"));
     elements.Add(ControlBarElement.TimeSlider());
     elements.Add(ControlBarElement.Text("duration"));
     elements.Add(ControlBarElement.Divider("divider"));
     elements.Add(ControlBarElement.Divider("divider"));
     elements.Add(ControlBarElement.Button("fullscreen"));
     elements.Add(ControlBarElement.Button("normalscreen"));
     elements.Add(ControlBarElement.Divider("divider"));
     elements.Add(ControlBarElement.Button("mute"));
     elements.Add(ControlBarElement.Button("unmute"));
     elements.Add(ControlBarElement.VolumeSlider());
 }
        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;
        }