From 4f3724c550d6092dd955f4231d15df942c73e3a7 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 27 Oct 2007 10:45:33 +0000 Subject: [PATCH] give workouts a default name (in case the user doesn't have a keyboard) --- stepmania/src/ScreenOptionsReviewWorkout.cpp | 35 +++++++++++--------- stepmania/src/Workout.cpp | 4 ++- stepmania/src/Workout.h | 1 + stepmania/src/WorkoutManager.cpp | 20 +++++++++++ 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/stepmania/src/ScreenOptionsReviewWorkout.cpp b/stepmania/src/ScreenOptionsReviewWorkout.cpp index cf9b7a268b..202f2d3456 100644 --- a/stepmania/src/ScreenOptionsReviewWorkout.cpp +++ b/stepmania/src/ScreenOptionsReviewWorkout.cpp @@ -161,27 +161,30 @@ void ScreenOptionsReviewWorkout::ProcessMenuStart( const InputEventPlus &input ) this->BeginFadingOut(); return; // handled case ReviewWorkoutRow_Save: - if( WORKOUTMAN->m_pCurWorkout->m_sName.empty() ) { - ScreenTextEntry::TextEntry( - SM_BackFromEnterName, - ENTER_WORKOUT_NAME, - WORKOUTMAN->m_pCurWorkout->m_sName, - MAX_WORKOUT_NAME_LENGTH, - WorkoutManager::ValidateWorkoutName ); - } - else - { - if( WORKOUTMAN->Save( WORKOUTMAN->m_pCurWorkout ) ) + bool bPromptForName = !WORKOUTMAN->m_pCurWorkout->m_bNameWasSetByUser; + if( bPromptForName ) { - m_soundSave.Play(); - SCREENMAN->SystemMessage( WORKOUT_SAVED ); - MESSAGEMAN->Broadcast( "WorkoutChanged" ); + ScreenTextEntry::TextEntry( + SM_BackFromEnterName, + ENTER_WORKOUT_NAME, + WORKOUTMAN->m_pCurWorkout->m_sName, + MAX_WORKOUT_NAME_LENGTH, + WorkoutManager::ValidateWorkoutName ); } else { - SCREENMAN->PlayInvalidSound(); - SCREENMAN->SystemMessage( ERROR_SAVING_WORKOUT ); + if( WORKOUTMAN->Save( WORKOUTMAN->m_pCurWorkout ) ) + { + m_soundSave.Play(); + SCREENMAN->SystemMessage( WORKOUT_SAVED ); + MESSAGEMAN->Broadcast( "WorkoutChanged" ); + } + else + { + SCREENMAN->PlayInvalidSound(); + SCREENMAN->SystemMessage( ERROR_SAVING_WORKOUT ); + } } } return; // handled diff --git a/stepmania/src/Workout.cpp b/stepmania/src/Workout.cpp index 9cada3c021..6c48c2f59f 100644 --- a/stepmania/src/Workout.cpp +++ b/stepmania/src/Workout.cpp @@ -24,6 +24,7 @@ XToLocalizedString( WorkoutProgram ); Workout::Workout() { + m_bNameWasSetByUser = false; m_WorkoutProgram = (WorkoutProgram)0; m_iMinutes = 10; m_iAverageMeter = 3; @@ -152,7 +153,8 @@ bool Workout::LoadFromFile( RString sFile ) m_sFile = sFile; xml.GetChildValue("Name",m_sName); - // ValidateWorkoutName + m_bNameWasSetByUser = true; + // XXX: ValidateWorkoutName RString s; xml.GetChildValue("WorkoutProgram",s); diff --git a/stepmania/src/Workout.h b/stepmania/src/Workout.h index 4e5cef5313..23ef2e8958 100644 --- a/stepmania/src/Workout.h +++ b/stepmania/src/Workout.h @@ -35,6 +35,7 @@ public: RString m_sFile; RString m_sName; + bool m_bNameWasSetByUser; WorkoutProgram m_WorkoutProgram; int m_iMinutes; int m_iAverageMeter; diff --git a/stepmania/src/WorkoutManager.cpp b/stepmania/src/WorkoutManager.cpp index 2afdebd5e8..e835640bf5 100644 --- a/stepmania/src/WorkoutManager.cpp +++ b/stepmania/src/WorkoutManager.cpp @@ -56,11 +56,31 @@ void WorkoutManager::LoadAllFromDisk() void WorkoutManager::LoadDefaults( Workout &out ) { out = Workout(); + + // pick a default name + // XXX: Make this localizable + for( int i=0; i<10000; i++ ) + { + out.m_sName = ssprintf("Workout %d", i+1); + bool bNameInUse = true; + FOREACH_CONST( Workout*, m_vpAllWorkouts, p ) + { + if( out.m_sName != (*p)->m_sName ) + { + bNameInUse = false; + break; + } + } + + if( !bNameInUse ) + break; + } SongUtil::GetAllSongGenres( out.m_vsSongGenres ); } bool WorkoutManager::RenameAndSave( Workout *pWorkout, RString sNewName ) { + pWorkout->m_bNameWasSetByUser = true; ASSERT( !sNewName.empty() ); vector::iterator iter = find( m_vpAllWorkouts.begin(), m_vpAllWorkouts.end(), pWorkout ); if( iter == m_vpAllWorkouts.end() )