internal static Layout ShowLayoutMenu(Layout currentLayout, int itemToSelect)
{
Layout newLayout = currentLayout;
IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
dlg.Reset();
dlg.SetHeading(GetLayoutTranslation(currentLayout));
foreach (Layout layout in Enum.GetValues(typeof(Layout)))
{
string menuItem = GetLayoutTranslation(layout);
GUIListItem pItem = new GUIListItem(menuItem);
if (layout == currentLayout) pItem.Selected = true;
dlg.Add(pItem);
}
dlg.DoModal(GUIWindowManager.ActiveWindow);
if (dlg.SelectedLabel >= 0)
{
var facade = GUIWindowManager.GetWindow(GUIWindowManager.ActiveWindow).GetControl((int)TraktGUIControls.Facade) as GUIFacadeControl;
newLayout = (Layout)dlg.SelectedLabel;
facade.SetCurrentLayout(Enum.GetName(typeof(Layout), newLayout));
GUIControl.SetControlLabel(GUIWindowManager.ActiveWindow, (int)TraktGUIControls.Layout, GetLayoutTranslation(newLayout));
// when loosing focus from the facade the current selected index is lost
// e.g. changing layout from skin side menu
facade.SelectIndex(itemToSelect);
}
return newLayout;
}