Esempio n. 1
0
        private void SetButtonState(bool aNextPrevButtonsVisible, bool aUpdateButtonVisible, string aUpdateButtonText)
        {
            OpenHome.Xapp.JsonObject joNew = new OpenHome.Xapp.JsonObject();
            joNew.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
            joNew.Add("Id", new OpenHome.Xapp.JsonValueString("NextButton"));
            joNew.Add("Visible", new OpenHome.Xapp.JsonValueBool(aNextPrevButtonsVisible));
            Send("Render", joNew);

            OpenHome.Xapp.JsonObject joPrev = new OpenHome.Xapp.JsonObject();
            joPrev.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
            joPrev.Add("Id", new OpenHome.Xapp.JsonValueString("PreviousButton"));
            joPrev.Add("Visible", new OpenHome.Xapp.JsonValueBool(aNextPrevButtonsVisible));
            Send("Render", joPrev);

            OpenHome.Xapp.JsonObject joUpdate = new OpenHome.Xapp.JsonObject();
            joUpdate.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
            joUpdate.Add("Id", new OpenHome.Xapp.JsonValueString("UpdateButton"));
            joUpdate.Add("Text", new OpenHome.Xapp.JsonValueString(aUpdateButtonText));
            joUpdate.Add("Visible", new OpenHome.Xapp.JsonValueBool(aUpdateButtonVisible));
            Send("Render", joUpdate);

            iUpdateButtonText = aUpdateButtonText;

            OpenHome.Xapp.JsonObject joUpdateBgd = new OpenHome.Xapp.JsonObject();
            joUpdateBgd.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
            joUpdateBgd.Add("Id", new OpenHome.Xapp.JsonValueString("UpdateBoxFooter"));
            joUpdateBgd.Add("Visible", new OpenHome.Xapp.JsonValueBool(aUpdateButtonVisible));
            Send("Render", joUpdateBgd);
        }
Esempio n. 2
0
        private OpenHome.Xapp.JsonObject GetBoxTracking(List <Box> aBoxList)
        {
            Dictionary <string, int> modelCount           = new Dictionary <string, int>();
            Dictionary <string, int> softwareVersionCount = new Dictionary <string, int>();

            foreach (Box b in aBoxList)
            {
                if (!modelCount.ContainsKey(b.Model))
                {
                    modelCount.Add(b.Model, 1);
                }
                else
                {
                    modelCount[b.Model] += 1;
                }

                string softwareVersion = b.SoftwareVersion;
                // log nulls and blanks as Unknown
                if (softwareVersion == null || softwareVersion == String.Empty)
                {
                    softwareVersion = "Unknown";
                }
                if (!softwareVersionCount.ContainsKey(softwareVersion))
                {
                    softwareVersionCount.Add(softwareVersion, 1);
                }
                else
                {
                    softwareVersionCount[softwareVersion] += 1;
                }
            }
            var resultJson = new OpenHome.Xapp.JsonObject();

            var modelsJson = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonObject>();

            foreach (string modelName in modelCount.Keys)
            {
                OpenHome.Xapp.JsonObject modelJson = new OpenHome.Xapp.JsonObject();
                modelJson.Add("Name", new OpenHome.Xapp.JsonValueString(modelName));
                modelJson.Add("Value", new OpenHome.Xapp.JsonValueInt(modelCount[modelName]));
                modelsJson.Add(modelJson);
            }
            resultJson.Add("Models", modelsJson);

            var versionsJson = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonObject>();

            foreach (string version in softwareVersionCount.Keys)
            {
                OpenHome.Xapp.JsonObject versionJson = new OpenHome.Xapp.JsonObject();
                versionJson.Add("Name", new OpenHome.Xapp.JsonValueString(version));
                versionJson.Add("Value", new OpenHome.Xapp.JsonValueInt(softwareVersionCount[version]));
                versionsJson.Add(versionJson);
            }
            resultJson.Add("Versions", versionsJson);

            return(resultJson);
        }
Esempio n. 3
0
        public void OverallProgress(int aValue)
        {
            Send("UpdateProgressText", aValue.ToString() + "%");

            // Set progress bar value
            OpenHome.Xapp.JsonObject joUpdateProg = new OpenHome.Xapp.JsonObject();
            joUpdateProg.Add("Id", new OpenHome.Xapp.JsonValueString("UpdateProgressBarFilled"));
            joUpdateProg.Add("Value", new OpenHome.Xapp.JsonValueString(aValue.ToString() + "%"));
            Send("UpdateProgress", joUpdateProg);
        }
Esempio n. 4
0
        protected override void OnActivated(Session aSession)
        {
            // get the page model for this session
            IPageModel model = GetSessionModel(aSession);

            // enable analytics and send page view event if tracking
            aSession.Tracker.SetTracking(aSession.Tracking);
            aSession.Tracker.TrackPageView(Id);

            // update any ui widgets that reflect tracking state
            aSession.Send("DataCollectionEnabled", aSession.Tracking);

            // render widgets
            foreach (PageDefinitions.Widget widget in iPageDefinition.Widgets)
            {
                // get the value of the data from the page model
                Assert.Check(model != null);
                System.Reflection.PropertyInfo prop = model.GetType().GetProperty(widget.DataId);
                string data = prop.GetValue(model, null) as string;

                // create the json object
                OpenHome.Xapp.JsonObject json = new OpenHome.Xapp.JsonObject();

                // add the basic required properties
                json.Add("Id", new OpenHome.Xapp.JsonValueString(widget.Id));
                json.Add("DataId", new OpenHome.Xapp.JsonValueString(widget.DataId));
                json.Add("Value", new OpenHome.Xapp.JsonValueString(data));

                // add the optional allowed values
                if (widget.AllowedValues != null || widget.AllowedValuesSource != null)
                {
                    // get the list of string allowed values from either the widget XML or an IPageModel property
                    string[] allowedValuesStr = (widget.AllowedValues != null)
                                              ? widget.AllowedValues
                                              : model.GetType().GetProperty(widget.AllowedValuesSource).GetValue(model, null) as string[];

                    // create the json array of allowed values
                    OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonValueString> allowedValues = new OpenHome.Xapp.JsonArray <OpenHome.Xapp.JsonValueString>();

                    foreach (string value in allowedValuesStr)
                    {
                        allowedValues.Add(new OpenHome.Xapp.JsonValueString(value));
                    }

                    json.Add("AllowedValues", allowedValues);
                }

                // render the widget
                aSession.Send(widget.XappEvent, json);
            }
        }
Esempio n. 5
0
        // IUpdateFirmwareHandler interface
        public void Started()
        {
            Send("UpdateBoxTitle", "Update In Progress");
            Send("UpdateBoxText", "");
            SetButtonState(false, false);

            // Set progress bar visible
            Send("Unhide", "UpdateProgressBar");
            Send("Unhide", "UpdateProgressBarFilled");
            Send("Unhide", "UpdateProgressText");
            Send("UpdateProgressText", "0%");

            // Set progress bar value
            OpenHome.Xapp.JsonObject joUpdateProg = new OpenHome.Xapp.JsonObject();
            joUpdateProg.Add("Id", new OpenHome.Xapp.JsonValueString("UpdateProgressBarFilled"));
            joUpdateProg.Add("Value", new OpenHome.Xapp.JsonValueString("0%"));
            Send("UpdateProgress", joUpdateProg);
        }
Esempio n. 6
0
        private void RenderControls(Session aSession, string aType)
        {
            Component[] list = iPageDefinition.GetComponents(aType);

            foreach (Component c in list)
            {
                OpenHome.Xapp.JsonObject jo = new OpenHome.Xapp.JsonObject();
                jo.Add("Type", new OpenHome.Xapp.JsonValueString(aType));
                jo.Add("Id", new OpenHome.Xapp.JsonValueString(c.Id));
                jo.Add("Visible", new OpenHome.Xapp.JsonValueBool(c.Visible));
                jo.Add("Enabled", new OpenHome.Xapp.JsonValueBool(c.Enabled));
                jo.Add("Displayed", new OpenHome.Xapp.JsonValueBool(c.Displayed));
                jo.Add("Top", new OpenHome.Xapp.JsonValueString(c.Top));
                jo.Add("Left", new OpenHome.Xapp.JsonValueString(c.Left));
                jo.Add("HeightSet", new OpenHome.Xapp.JsonValueBool(c.HeightSet));
                jo.Add("Height", new OpenHome.Xapp.JsonValueString(c.Height));
                jo.Add("WidthSet", new OpenHome.Xapp.JsonValueBool(c.WidthSet));
                jo.Add("Width", new OpenHome.Xapp.JsonValueString(c.Width));
                jo.Add("Image", new OpenHome.Xapp.JsonValueString(c.Image));
                jo.Add("BackgroundImage", new OpenHome.Xapp.JsonValueString(c.BackgroundImage));
                jo.Add("Color", new OpenHome.Xapp.JsonValueString(c.Color));
                jo.Add("BackgroundColor", new OpenHome.Xapp.JsonValueString(c.BackgroundColor));

                // set the text to add to the DOM element
                if (!string.IsNullOrEmpty(c.Parameter))
                {
                    jo.Add("Text", new OpenHome.Xapp.JsonValueString(c.Parameter));
                }

                // set the 'class' attribute of the DOM element
                if (!string.IsNullOrEmpty(c.Class))
                {
                    jo.Add("Class", new OpenHome.Xapp.JsonValueString(c.Class));
                }

                aSession.Send("Render", jo);

                Console.WriteLine("{0} id [{1}]:  message: {2}", aType, c.Id, c.Parameter);
            }
        }
Esempio n. 7
0
        private void SetSelected(Session aSession)
        {
            if ((iMacAddress != null) && (iMacAddress != ""))
            {
                Box box = iBoxSelection.Box(iMacAddress);

                if ((aSession.Model.SelectedBoxMacAddress != box.MacAddress) || (iShowSelected == true))
                {
                    iShowSelected = false;
                    aSession.Model.SelectedBoxMacAddress = box.MacAddress;

                    // make 'next' button available
                    OpenHome.Xapp.JsonObject jo = new OpenHome.Xapp.JsonObject();
                    jo.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
                    jo.Add("Id", new OpenHome.Xapp.JsonValueString("NextButton"));
                    jo.Add("Visible", new OpenHome.Xapp.JsonValueBool(true));
                    aSession.Send("Render", jo);

                    iBoxSelection.ShowButtons();    // update display
                }
            }
        }
Esempio n. 8
0
 void OpenHome.Xapp.ITrackerSender.Send(string aName, OpenHome.Xapp.JsonObject aValue)
 {
     Send(aName, aValue);
 }
Esempio n. 9
0
            public void ShowButtons()
            {
                iBoxListDisplayed.Sort(CompareByRoom);
                int  index     = 0;
                int  button    = 0;
                bool morepages = false;

                foreach (Box box in iBoxListDisplayed)
                {
                    if (box.Model == iSelectedProduct && box.State == Linn.ProductSupport.Box.EState.eOn)
                    //if (box.Room.Contains("Jim") || box.Room.Contains("EPB"))
                    {
                        // filter out fake Majik DSM devices (non-HDMI)
                        if (box.Model == "Majik DSM" && box.BoardDescription.Length > 0)
                        {
                            if (box.BoardDescription[0].ToLowerInvariant() == "2011 variant")
                            {
                                continue;
                            }
                        }
                        index++;
                        //limit to current page of 5
                        if (index > (iButtonPage * iButtonsPerPage))
                        {
                            if (button >= iButtonsPerPage)
                            {
                                morepages = true;
                                break;
                            }
                            else
                            {
                                bool   selected        = (iSelectedMacAddress == box.MacAddress) ? true : false;
                                bool   newbox          = (box.Room == "Main Room") ? true : false;
                                string color           = selected ? "white" : "black";
                                string backgroundcolor = selected ? "rgb(223, 80, 92)" : "#c6bfb7";
                                iMacAddressList[button] = box.MacAddress;     // use mac address to identify button
                                button++;

                                OpenHome.Xapp.JsonObject jo = new OpenHome.Xapp.JsonObject();
                                jo.Add("Button", new OpenHome.Xapp.JsonValueString("DeviceButton" + button));
                                jo.Add("Id", new OpenHome.Xapp.JsonValueString(box.MacAddress));
                                jo.Add("Room", new OpenHome.Xapp.JsonValueString(box.Room));
                                jo.Add("Name", new OpenHome.Xapp.JsonValueString(box.Name));
                                jo.Add("Selected", new OpenHome.Xapp.JsonValueBool(selected));
                                jo.Add("New", new OpenHome.Xapp.JsonValueBool(newbox));
                                jo.Add("Color", new OpenHome.Xapp.JsonValueString(color));
                                jo.Add("BackgroundColor", new OpenHome.Xapp.JsonValueString(backgroundcolor));

                                iSession.Send("DeviceButtonUpdate", jo);
                            }
                        }
                    }
                }
                while (button < iButtonsPerPage)                    // clear out remaining buttons
                {
                    iMacAddressList[button % iButtonsPerPage] = ""; // use mac address to identify button
                    button++;

                    OpenHome.Xapp.JsonObject jo = new OpenHome.Xapp.JsonObject();
                    jo.Add("Button", new OpenHome.Xapp.JsonValueString("DeviceButton" + button));
                    jo.Add("Id", new OpenHome.Xapp.JsonValueString(""));
                    jo.Add("Room", new OpenHome.Xapp.JsonValueString(""));
                    jo.Add("Name", new OpenHome.Xapp.JsonValueString(""));
                    jo.Add("Selected", new OpenHome.Xapp.JsonValueBool(false));
                    jo.Add("New", new OpenHome.Xapp.JsonValueBool(false));
                    jo.Add("Color", new OpenHome.Xapp.JsonValueString("gray"));
                    jo.Add("BackgroundColor", new OpenHome.Xapp.JsonValueString("#c6bfb7"));

                    iSession.Send("DeviceButtonUpdate", jo);
                }

                bool visible = (morepages || iButtonPage > 0);

                // 'previous page' button availability
                OpenHome.Xapp.JsonObject joUp = new OpenHome.Xapp.JsonObject();
                joUp.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
                joUp.Add("Id", new OpenHome.Xapp.JsonValueString("DeviceListPageUp"));
                joUp.Add("Visible", new OpenHome.Xapp.JsonValueBool(visible));
                joUp.Add("Enabled", new OpenHome.Xapp.JsonValueBool(iButtonPage > 0));
                iSession.Send("Render", joUp);

                // 'next page' button availability
                OpenHome.Xapp.JsonObject joDown = new OpenHome.Xapp.JsonObject();
                joDown.Add("Type", new OpenHome.Xapp.JsonValueString("Control"));
                joDown.Add("Id", new OpenHome.Xapp.JsonValueString("DeviceListPageDown"));
                joDown.Add("Visible", new OpenHome.Xapp.JsonValueBool(visible));
                joDown.Add("Enabled", new OpenHome.Xapp.JsonValueBool(morepages));
                iSession.Send("Render", joDown);
            }