KinectWithVRServer.MainWindow.UpdatePageListing C# (CSharp) Method

UpdatePageListing() private method

private UpdatePageListing ( ) : void
return void
        void UpdatePageListing()
        {
            kinectsPageList.RemoveRange(1, kinectsPageList.Count - 1); //Clear all but the first page, which we will always show

            for (int i = 0; i < availableKinects.Count; i++)
            {
                if (availableKinects[i].UseKinect)
                {
                    //Check if the GUI page exists, and create it if it doesn't exist
                    bool exists = false;
                    for (int j = 0; j < kinectOptionGUIPages.Count; j++)
                    {
                        if (kinectOptionGUIPages[j].uniqueKinectID == availableKinects[i].UniqueID)
                        {
                            exists = true;
                            kinectOptionGUIPages[j].kinectID = availableKinects[i].KinectID.Value;
                            break;
                        }
                    }
                    if (!exists)
                    {
                        if (availableKinects[i].kinectType == KinectVersion.KinectV1)
                        {
                            IKinectSettingsControl tempControl = new KinectV1Wrapper.SettingsControl(availableKinects[i].KinectID.Value, ref server.serverMasterOptions, server.kinects[availableKinects[i].KinectID.Value]);
                            kinectOptionGUIPages.Add(tempControl);
                            KinectTabMasterGrid.Children.Add((UserControl)tempControl);
                        }
                        else if (availableKinects[i].kinectType == KinectVersion.KinectV2)
                        {
                            IKinectSettingsControl tempControl = new KinectV2Wrapper.SettingsControl(availableKinects[i].KinectID.Value, ref server.serverMasterOptions, server.kinects[availableKinects[i].KinectID.Value]);
                            kinectOptionGUIPages.Add(tempControl);
                            KinectTabMasterGrid.Children.Add((UserControl)tempControl);
                        }
                        else if (availableKinects[i].kinectType == KinectVersion.NetworkKinect)
                        {
                            IKinectSettingsControl tempControl = new NetworkKinectWrapper.SettingsControl(availableKinects[i].KinectID.Value, ref server.serverMasterOptions, server.kinects[availableKinects[i].KinectID.Value]);
                            kinectOptionGUIPages.Add(tempControl);
                            KinectTabMasterGrid.Children.Add((UserControl)tempControl);
                        }
                    }
                    kinectsPageList.Add("Kinect " + availableKinects[i].KinectID.ToString());
                }
                else
                {
                    //Check if the GUI exist for the one we are removing, and set the Kinect ID to null so it will go to the end
                    for (int j = 0; j < kinectOptionGUIPages.Count; j++)
                    {
                        //TODO: Figure out a way to perserve the settings and the acceleration updating
                        if (kinectOptionGUIPages[j].uniqueKinectID == availableKinects[i].UniqueID)
                        {
                            //((KinectV1Wrapper.SettingsControl)kinectOptionGUIPages[j]).kinectID = null;  //This will cause the page to be hidden, but not destroyed (which saves the settings on the GUI, but breaks acceleration updating)
                            kinectOptionGUIPages.RemoveAt(j);  //This will destroy the page and cause it to be recreated when the Kinect is set to be used again (which saves the acceleration updating, but losses all the settings)
                            break;
                        }
                    }
                }
            }

            kinectOptionGUIPages.Sort(new KinectSettingsControlComparer());
            kinectTabListBox.ItemsSource = kinectsPageList;
            kinectTabListBox.Items.Refresh();
        }
MainWindow