move course rename and delete into Overview
This commit is contained in:
@@ -23,6 +23,8 @@ enum CourseOverviewRow
|
|||||||
CourseOverviewRow_Play,
|
CourseOverviewRow_Play,
|
||||||
CourseOverviewRow_Edit,
|
CourseOverviewRow_Edit,
|
||||||
CourseOverviewRow_Shuffle,
|
CourseOverviewRow_Shuffle,
|
||||||
|
CourseOverviewRow_Rename,
|
||||||
|
CourseOverviewRow_Delete,
|
||||||
CourseOverviewRow_Save,
|
CourseOverviewRow_Save,
|
||||||
NUM_CourseOverviewRow
|
NUM_CourseOverviewRow
|
||||||
};
|
};
|
||||||
@@ -32,12 +34,24 @@ static const MenuRowDef g_MenuRows[] =
|
|||||||
MenuRowDef( -1, "Play", true, EditMode_Practice, true, false, 0, NULL ),
|
MenuRowDef( -1, "Play", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
MenuRowDef( -1, "Edit Course", true, EditMode_Practice, true, false, 0, NULL ),
|
MenuRowDef( -1, "Edit Course", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
MenuRowDef( -1, "Shuffle", true, EditMode_Practice, true, false, 0, NULL ),
|
MenuRowDef( -1, "Shuffle", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
|
MenuRowDef( -1, "Rename", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
|
MenuRowDef( -1, "Delete", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
MenuRowDef( -1, "Save", true, EditMode_Practice, true, false, 0, NULL ),
|
MenuRowDef( -1, "Save", true, EditMode_Practice, true, false, 0, NULL ),
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_SCREEN_CLASS( ScreenOptionsCourseOverview );
|
REGISTER_SCREEN_CLASS( ScreenOptionsCourseOverview );
|
||||||
|
|
||||||
|
static LocalizedString ENTER_COURSE_NAME ("ScreenOptionsCourseOverview", "Enter a name for the course.");
|
||||||
|
static LocalizedString ERROR_SAVING_COURSE ("ScreenOptionsCourseOverview", "Error saving course.");
|
||||||
|
static LocalizedString COURSE_SAVED ("ScreenOptionsCourseOverview", "Course saved successfully.");
|
||||||
|
static LocalizedString ERROR_RENAMING ("ScreenOptionsCourseOverview", "Error renaming file.");
|
||||||
|
static LocalizedString ERROR_DELETING_FILE ("ScreenOptionsCourseOverview", "Error deleting the file '%s'.");
|
||||||
|
static LocalizedString COURSE_WILL_BE_LOST ("ScreenOptionsCourseOverview", "This course will be lost permanently.");
|
||||||
|
static LocalizedString CONTINUE_WITH_DELETE ("ScreenOptionsCourseOverview", "Continue with delete?");
|
||||||
|
|
||||||
AutoScreenMessage( SM_BackFromEnterName )
|
AutoScreenMessage( SM_BackFromEnterName )
|
||||||
|
AutoScreenMessage( SM_BackFromRename )
|
||||||
|
AutoScreenMessage( SM_BackFromDelete )
|
||||||
|
|
||||||
void ScreenOptionsCourseOverview::Init()
|
void ScreenOptionsCourseOverview::Init()
|
||||||
{
|
{
|
||||||
@@ -88,8 +102,6 @@ void ScreenOptionsCourseOverview::ExportOptions( int iRow, const vector<PlayerNu
|
|||||||
sValue = row.GetRowDef().m_vsChoices[ iIndex ];
|
sValue = row.GetRowDef().m_vsChoices[ iIndex ];
|
||||||
}
|
}
|
||||||
|
|
||||||
static LocalizedString ERROR_SAVING_COURSE ( "ScreenOptionsCourseOverview", "Error saving course." );
|
|
||||||
static LocalizedString COURSE_SAVED ( "ScreenOptionsCourseOverview", "Course saved successfully." );
|
|
||||||
void ScreenOptionsCourseOverview::HandleScreenMessage( const ScreenMessage SM )
|
void ScreenOptionsCourseOverview::HandleScreenMessage( const ScreenMessage SM )
|
||||||
{
|
{
|
||||||
if( SM == SM_GoToPrevScreen )
|
if( SM == SM_GoToPrevScreen )
|
||||||
@@ -124,6 +136,38 @@ void ScreenOptionsCourseOverview::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( SM == SM_BackFromRename )
|
||||||
|
{
|
||||||
|
if( !ScreenTextEntry::s_bCancelledLast )
|
||||||
|
{
|
||||||
|
ASSERT( ScreenTextEntry::s_sLastAnswer != "" ); // validate should have assured this
|
||||||
|
|
||||||
|
if( !EditCourseUtil::RenameAndSave(GAMESTATE->m_pCurCourse, ScreenTextEntry::s_sLastAnswer) )
|
||||||
|
{
|
||||||
|
ScreenPrompt::Prompt( SM_None, ERROR_RENAMING );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCREENMAN->SetNewScreen( this->m_sName ); // reload
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( SM == SM_BackFromDelete )
|
||||||
|
{
|
||||||
|
if( ScreenPrompt::s_LastAnswer == ANSWER_YES )
|
||||||
|
{
|
||||||
|
if( !EditCourseUtil::RemoveAndDeleteFile(GAMESTATE->m_pCurCourse) )
|
||||||
|
{
|
||||||
|
ScreenPrompt::Prompt( SM_None, ssprintf(ERROR_DELETING_FILE.GetValue(), GAMESTATE->m_pCurCourse->m_sPath.c_str()) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GAMESTATE->m_pCurCourse.Set( NULL );
|
||||||
|
GAMESTATE->m_pCurTrail[PLAYER_1].Set( NULL );
|
||||||
|
|
||||||
|
/* Our course is gone, so back out. */
|
||||||
|
StartTransitioningScreen( SM_GoToPrevScreen );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScreenOptions::HandleScreenMessage( SM );
|
ScreenOptions::HandleScreenMessage( SM );
|
||||||
}
|
}
|
||||||
@@ -134,7 +178,6 @@ void ScreenOptionsCourseOverview::AfterChangeValueInRow( int iRow, PlayerNumber
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static LocalizedString ENTER_COURSE_NAME ( "ScreenOptionsCourseOverview", "Enter a name for the course." );
|
|
||||||
void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input )
|
void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input )
|
||||||
{
|
{
|
||||||
if( IsTransitioning() )
|
if( IsTransitioning() )
|
||||||
@@ -158,6 +201,17 @@ void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input
|
|||||||
MESSAGEMAN->Broadcast("CurrentCourseChanged");
|
MESSAGEMAN->Broadcast("CurrentCourseChanged");
|
||||||
}
|
}
|
||||||
return; // handled
|
return; // handled
|
||||||
|
case CourseOverviewRow_Rename:
|
||||||
|
ScreenTextEntry::TextEntry(
|
||||||
|
SM_BackFromRename,
|
||||||
|
ENTER_COURSE_NAME,
|
||||||
|
GAMESTATE->m_pCurCourse->GetDisplayFullTitle(),
|
||||||
|
EditCourseUtil::MAX_NAME_LENGTH,
|
||||||
|
EditCourseUtil::ValidateEditCourseName );
|
||||||
|
break;
|
||||||
|
case CourseOverviewRow_Delete:
|
||||||
|
ScreenPrompt::Prompt( SM_BackFromDelete, COURSE_WILL_BE_LOST.GetValue()+"\n\n"+CONTINUE_WITH_DELETE.GetValue(), PROMPT_YES_NO, ANSWER_NO );
|
||||||
|
break;
|
||||||
case CourseOverviewRow_Save:
|
case CourseOverviewRow_Save:
|
||||||
{
|
{
|
||||||
bool bPromptForName = EditCourseUtil::s_bNewCourseNeedsName;
|
bool bPromptForName = EditCourseUtil::s_bNewCourseNeedsName;
|
||||||
|
|||||||
@@ -19,29 +19,6 @@
|
|||||||
#include "RageFileManager.h"
|
#include "RageFileManager.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
|
|
||||||
AutoScreenMessage( SM_BackFromRename )
|
|
||||||
AutoScreenMessage( SM_BackFromDelete )
|
|
||||||
AutoScreenMessage( SM_BackFromContextMenu )
|
|
||||||
|
|
||||||
enum CourseAction
|
|
||||||
{
|
|
||||||
CourseAction_Edit,
|
|
||||||
CourseAction_Rename,
|
|
||||||
CourseAction_Delete,
|
|
||||||
NUM_CourseAction
|
|
||||||
};
|
|
||||||
static const char *CourseActionNames[] = {
|
|
||||||
"Edit",
|
|
||||||
"Rename",
|
|
||||||
"Delete",
|
|
||||||
};
|
|
||||||
XToString( CourseAction );
|
|
||||||
#define FOREACH_CourseAction( i ) FOREACH_ENUM( CourseAction, i )
|
|
||||||
|
|
||||||
static MenuDef g_TempMenu(
|
|
||||||
"ScreenMiniMenuContext"
|
|
||||||
);
|
|
||||||
|
|
||||||
REGISTER_SCREEN_CLASS( ScreenOptionsManageCourses );
|
REGISTER_SCREEN_CLASS( ScreenOptionsManageCourses );
|
||||||
|
|
||||||
|
|
||||||
@@ -177,11 +154,6 @@ void ScreenOptionsManageCourses::BeginScreen()
|
|||||||
AfterChangeRow( GAMESTATE->m_MasterPlayerNumber );
|
AfterChangeRow( GAMESTATE->m_MasterPlayerNumber );
|
||||||
}
|
}
|
||||||
|
|
||||||
static LocalizedString ERROR_RENAMING ("ScreenOptionsManageCourses", "Error renaming file.");
|
|
||||||
static LocalizedString ERROR_DELETING_FILE ("ScreenOptionsManageCourses", "Error deleting the file '%s'.");
|
|
||||||
static LocalizedString COURSE_WILL_BE_LOST ( "ScreenOptionsManageCourses", "This course will be lost permanently." );
|
|
||||||
static LocalizedString CONTINUE_WITH_DELETE ( "ScreenOptionsManageCourses", "Continue with delete?" );
|
|
||||||
static LocalizedString ENTER_COURSE_NAME ( "ScreenOptionsManageCourses", "Enter a name for the course." );
|
|
||||||
void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
|
void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
|
||||||
{
|
{
|
||||||
if( SM == SM_GoToNextScreen )
|
if( SM == SM_GoToNextScreen )
|
||||||
@@ -212,65 +184,6 @@ void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
// do base behavior
|
// do base behavior
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( SM == SM_BackFromRename )
|
|
||||||
{
|
|
||||||
if( !ScreenTextEntry::s_bCancelledLast )
|
|
||||||
{
|
|
||||||
ASSERT( ScreenTextEntry::s_sLastAnswer != "" ); // validate should have assured this
|
|
||||||
|
|
||||||
if( !EditCourseUtil::RenameAndSave(GAMESTATE->m_pCurCourse, ScreenTextEntry::s_sLastAnswer) )
|
|
||||||
{
|
|
||||||
ScreenPrompt::Prompt( SM_None, ERROR_RENAMING );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SCREENMAN->SetNewScreen( this->m_sName ); // reload
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( SM == SM_BackFromDelete )
|
|
||||||
{
|
|
||||||
if( ScreenPrompt::s_LastAnswer == ANSWER_YES )
|
|
||||||
{
|
|
||||||
Course *pCourse = GetCourseWithFocus();
|
|
||||||
if( !EditCourseUtil::RemoveAndDeleteFile( pCourse ) )
|
|
||||||
{
|
|
||||||
ScreenPrompt::Prompt( SM_None, ssprintf(ERROR_DELETING_FILE.GetValue(),pCourse->m_sPath.c_str()) );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
GAMESTATE->m_pCurCourse.Set( NULL );
|
|
||||||
GAMESTATE->m_pCurTrail[PLAYER_1].Set( NULL );
|
|
||||||
SCREENMAN->SetNewScreen( this->m_sName ); // reload
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( SM == SM_BackFromContextMenu )
|
|
||||||
{
|
|
||||||
if( !ScreenMiniMenu::s_bCancelled )
|
|
||||||
{
|
|
||||||
switch( ScreenMiniMenu::s_iLastRowCode )
|
|
||||||
{
|
|
||||||
case CourseAction_Edit:
|
|
||||||
{
|
|
||||||
GAMESTATE->m_pCurCourse.Set( GetCourseWithFocus() );
|
|
||||||
EditCourseUtil::UpdateAndSetTrail();
|
|
||||||
EditCourseUtil::s_bNewCourseNeedsName = false;
|
|
||||||
ScreenOptions::BeginFadingOut();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CourseAction_Rename:
|
|
||||||
ScreenTextEntry::TextEntry(
|
|
||||||
SM_BackFromRename,
|
|
||||||
ENTER_COURSE_NAME,
|
|
||||||
GAMESTATE->m_pCurCourse->GetDisplayFullTitle(),
|
|
||||||
EditCourseUtil::MAX_NAME_LENGTH,
|
|
||||||
EditCourseUtil::ValidateEditCourseName );
|
|
||||||
break;
|
|
||||||
case CourseAction_Delete:
|
|
||||||
ScreenPrompt::Prompt( SM_None, COURSE_WILL_BE_LOST.GetValue()+"\n\n"+CONTINUE_WITH_DELETE.GetValue(), PROMPT_YES_NO, ANSWER_NO );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( SM == SM_LoseFocus )
|
else if( SM == SM_LoseFocus )
|
||||||
{
|
{
|
||||||
this->PlayCommand( "ScreenLoseFocus" );
|
this->PlayCommand( "ScreenLoseFocus" );
|
||||||
@@ -332,16 +245,10 @@ void ScreenOptionsManageCourses::ProcessMenuStart( const InputEventPlus &input )
|
|||||||
}
|
}
|
||||||
else // a course
|
else // a course
|
||||||
{
|
{
|
||||||
g_TempMenu.rows.clear();
|
GAMESTATE->m_pCurCourse.Set( GetCourseWithFocus() );
|
||||||
FOREACH_CourseAction( i )
|
EditCourseUtil::UpdateAndSetTrail();
|
||||||
{
|
EditCourseUtil::s_bNewCourseNeedsName = false;
|
||||||
MenuRowDef mrd( i, CourseActionToString(i), true, EditMode_Home, true, true, 0, "" );
|
ScreenOptions::BeginFadingOut();
|
||||||
g_TempMenu.rows.push_back( mrd );
|
|
||||||
}
|
|
||||||
|
|
||||||
int iWidth, iX, iY;
|
|
||||||
this->GetWidthXY( GAMESTATE->m_MasterPlayerNumber, iCurRow, 0, iWidth, iX, iY );
|
|
||||||
ScreenMiniMenu::MiniMenu( &g_TempMenu, SM_BackFromContextMenu, SM_BackFromContextMenu, (float)iX, (float)iY );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user