Пример #1
0
        private void FillCameras()
        {
            CTV.Nodes[0].Nodes.Clear();
            CTV.Nodes[0].Expanded = true;
            Functions F = new Functions();
            Rooms AR = F.ALLRooms();
            LUser = (OysterClassLibrary.User)Session["LUser"];
            OSystem = (OysterClassLibrary.Oyster)Session["Oyster"];
            OysterClassLibrary.Groups AG = null;
            if(LUser.HighestAuthorityLevel.ID == OSystem.SectionTypeSysAdmin.ID)
            {
                AG = OSystem.GetALLGroups(false);
            }
            else
                AG = LUser.CurrentGroups;

            TreeNode NPublic = new TreeNode();
            NPublic.Type = "Group";
            NPublic.ImageUrl = CTV.TreeNodeTypes[4].ImageUrl;
            NPublic.Text = "Public Groups";
            NPublic.DefaultStyle.Add("color","DarkBlue");

            CTV.Nodes[0].Nodes.Add(NPublic);

            TreeNode NPrivate = new TreeNode();
            NPrivate.Type = "Group";
            NPrivate.ImageUrl = CTV.TreeNodeTypes[5].ImageUrl;
            NPrivate.DefaultStyle.Add("color","DarkGreen");
            NPrivate.Text = "Private Groups";
            CTV.Nodes[0].Nodes.Add(NPrivate);
            int[] UO = OSystem.UnassignedIDs;

            foreach(OysterClassLibrary.Group CurrentGroup in AG)
            {
                TreeNode GroupNODE = new TreeNode();
                GroupNODE.Text = CurrentGroup.Description;
                GroupNODE.ImageUrl = CTV.TreeNodeTypes[3].ImageUrl;

                if(CurrentGroup.IsPublicAccess)
                {

                    int NumEncoders = CurrentGroup.CurrentStreamingEncoders.Count;
                    if(NumEncoders > 0)
                        NPublic.Nodes.Add(GroupNODE);
                    GroupNODE.DefaultStyle.Add("color","Blue");
                    TreeNode[] PubScenes = new TreeNode[NumEncoders];
                    int iCount = 0;

                    ListBox LB = new ListBox();

                    foreach(OysterClassLibrary.StreamingEncoder S in CurrentGroup.CurrentStreamingEncoders)
                    {
                        foreach(ListItem LI in LB.Items)
                        {
                            if(S.RoomID.ToString() == LI.Value)
                            {
                                goto skipme;
                            }
                        }

                        ListItem LA = new ListItem(S.CurrentRoom.Description,S.RoomID.ToString());
                        LB.Items.Add(LA);
                        PubScenes[iCount] = new TreeNode();
                        PubScenes[iCount].Type = "Scene";
                        PubScenes[iCount].ImageUrl = CTV.TreeNodeTypes[2].ImageUrl;
                        PubScenes[iCount].NodeData = CurrentGroup.ID.ToString() + "~" + S.RoomID.ToString();
                        PubScenes[iCount].Text = S.CurrentRoom.Description;
                        GroupNODE.Nodes.Add(PubScenes[iCount]);
                        iCount++;

                    skipme:{}
                    }

                    foreach(OysterClassLibrary.StreamingEncoder S in CurrentGroup.CurrentStreamingEncoders)
                    {
                        for(int i=0;i<iCount;i++)
                        {
                            string sMatch = CurrentGroup.ID.ToString() + "~" + S.RoomID.ToString();
                            if(sMatch == PubScenes[i].NodeData)
                            {
                                TreeNode SEncoder = new TreeNode();
                                SEncoder.Type = "Camera";
                                SEncoder.ImageUrl = CTV.TreeNodeTypes[1].ImageUrl;
                                SEncoder.NodeData = S.ID.ToString();
                                SEncoder.Text = S.Description;
                                PubScenes[i].Nodes.Add(SEncoder);
                            }
                        }
                    }

                }
                else
                {
                    if(CurrentGroup.CurrentRooms.Count > 0)
                        NPrivate.Nodes.Add(GroupNODE);
                    foreach(Room r in CurrentGroup.CurrentRooms)
                    {

                        if(r.ID != UO[1])
                        {
                            int NumEncoders = r.AllCurrentStreamingEncoders.Count;

                            GroupNODE.DefaultStyle.Add("color","Green");
                            TreeNode Scene = new TreeNode();
                            Scene.Type = "Scene";
                            Scene.ImageUrl = CTV.TreeNodeTypes[2].ImageUrl;
                            Scene.NodeData = CurrentGroup.ID.ToString() + "~" + r.ID.ToString();
                            Scene.Text = r.Description;

                            Scene.DefaultStyle.Add("color","Green");
                            GroupNODE.Nodes.Add(Scene);

                            int NumCameras = 0;

                            StreamingEncoders ASE = r.AllCurrentStreamingEncoders;
                            foreach(StreamingEncoder SE in ASE)
                            {
                                NumCameras++;
                                TreeNode SEncoder = new TreeNode();
                                SEncoder.Type = "Camera";
                                SEncoder.ImageUrl = CTV.TreeNodeTypes[1].ImageUrl;
                                SEncoder.NodeData = SE.ID.ToString();
                                SEncoder.Text = SE.Description;
                                Scene.Nodes.Add(SEncoder);
                            }
                            //if(NumCameras > 0)
                            //{
                            //	CTV.Nodes[0].Nodes.Add(Scene);
                            //}
                        }
                    }
                }
            }
        }