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