private async void SaveAction()
{
string validName = await ServiceLocator.ContextService.ConvertToValidFileName(ProgramName);
if (CurrentProgram.Name != ProgramName)
{
ProgramName = await ServiceLocator.ContextService.FindUniqueProgramName(validName);
if (CurrentProgram.LocalProgramHeader == CurrentProgramHeader)
{
CurrentProgram.LocalProgramHeader.ProjectName = ProgramName;
await CurrentProgram.SetProgramNameAndRenameDirectory(ProgramName);
CurrentProgram.Description = ProgramDescription;
}
else
{
var oldProgramPath = CurrentProgram.BasePath;
CurrentProgramHeader.ProjectName = ProgramName;
CurrentProgram.Name = ProgramName;
CurrentProgram.Description = ProgramDescription;
var programChangedMessage1 = new GenericMessage<Program>(CurrentProgram);
Messenger.Default.Send(programChangedMessage1,
ViewModelMessagingToken.CurrentProgramChangedListener);
using (var storage = StorageSystem.GetStorage())
{
await storage.RenameDirectoryAsync(oldProgramPath, ProgramName);
}
var programChangedMessage2 = new GenericMessage<Program>(CurrentProgram);
Messenger.Default.Send(programChangedMessage2,
ViewModelMessagingToken.CurrentProgramChangedListener);
await App.SaveContext(CurrentProgram);
var localProgramsChangedMessage = new MessageBase();
Messenger.Default.Send(localProgramsChangedMessage,
ViewModelMessagingToken.LocalProgramsChangedListener);
base.GoBackAction();
}
}
}