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); //} } } } } }