/*
========================
idMenuScreen_Shell_Resolution::ShowScreen
========================
*/
void idMenuScreen_Shell_Resolution::ShowScreen( const mainMenuTransition_t transitionType ) {


	originalOption.fullscreen = r_fullscreen.GetInteger();
	originalOption.vidmode = r_vidMode.GetInteger();

	idList< idList< idStr, TAG_IDLIB_LIST_MENU >, TAG_IDLIB_LIST_MENU > menuOptions;
	menuOptions.Alloc().Alloc() = "#str_swf_disabled";
	optionData.Append( optionData_t( 0, 0 ) );

	int viewIndex = 0;
	idList< idList<vidMode_t> > displays;
	for ( int displayNum = 0 ; ; displayNum++ ) {
		idList<vidMode_t> & modeList = displays.Alloc();
		if ( !R_GetModeListForDisplay( displayNum, modeList ) ) {
			displays.RemoveIndex( displays.Num() - 1 );
			break;
		}
	}
	for ( int displayNum = 0 ; displayNum < displays.Num(); displayNum++ ) {
		idList<vidMode_t> & modeList = displays[displayNum];
		for ( int i = 0; i < modeList.Num(); i++ ) {
			const optionData_t thisOption( displayNum + 1, i );
			if ( originalOption == thisOption ) {
				viewIndex = menuOptions.Num();
			}
			idStr str;
			if ( displays.Num() > 1 ) {
				str.Append( va( "%s %i: ", idLocalization::GetString( "#str_swf_monitor" ), displayNum+1 ) );
			}
			str.Append( va( "%4i x %4i", modeList[i].width, modeList[i].height ) );
			if ( modeList[i].displayHz != 60 ) {
				str.Append( va( " @ %dhz", modeList[i].displayHz ) );
			}
			menuOptions.Alloc().Alloc() = str;
			optionData.Append( thisOption );
		}
	}
	
	options->SetListData( menuOptions );
	options->SetViewIndex( viewIndex );
	const int topOfLastPage = menuOptions.Num() - NUM_SETTING_OPTIONS;
	if ( viewIndex < NUM_SETTING_OPTIONS ) {
		options->SetViewOffset( 0 );
		options->SetFocusIndex( viewIndex );
	} else if ( viewIndex >= topOfLastPage ) {
		options->SetViewOffset( topOfLastPage );
		options->SetFocusIndex( viewIndex - topOfLastPage );
	} else {
		options->SetViewOffset( viewIndex );
		options->SetFocusIndex( 0 );
	}

	idMenuScreen::ShowScreen( transitionType );
}
/*
========================
idMenuScreen_Shell_SystemOptions::idMenuDataSource_SystemSettings::LoadData
========================
*/
void idMenuScreen_Shell_SystemOptions::idMenuDataSource_SystemSettings::LoadData() {
    originalFramerate = com_engineHz.GetInteger();
    originalAntialias = r_multiSamples.GetInteger();
    originalMotionBlur = r_motionBlur.GetInteger();
    originalVsync = r_swapInterval.GetInteger();
    originalBrightness = r_lightScale.GetFloat();
    originalVolume = s_volume_dB.GetFloat();

    const int fullscreen = r_fullscreen.GetInteger();
    if ( fullscreen > 0 ) {
        R_GetModeListForDisplay( fullscreen - 1, modeList );
    } else {
        modeList.Clear();
    }
}
/*
========================
idMenuScreen_Shell_SystemOptions::idMenuDataSource_SystemSettings::LoadData
========================
*/
void idMenuScreen_Shell_SystemOptions::idMenuDataSource_SystemSettings::LoadData()
{
	originalFramerate = com_engineHz.GetInteger();
	originalAntialias = r_antiAliasing.GetInteger();
	originalMotionBlur = r_motionBlur.GetInteger();
	originalVsync = r_swapInterval.GetInteger();
	originalBrightness = r_exposure.GetFloat();
	originalVolume = s_volume_dB.GetFloat();
	// RB begin
	originalShadowMapping = r_useShadowMapping.GetInteger();
	// RB end
	
	const int fullscreen = r_fullscreen.GetInteger();
	if( fullscreen > 0 )
	{
		R_GetModeListForDisplay( fullscreen - 1, modeList );
	}
	else
	{
		modeList.Clear();
	}
}