public async Task<Program> CreateEmptyProgram(string newProgramName) { // TODO: move this code into a ProjectGenerator see ProjectGeneratorWhackAMole var newProject = new Program { Name = newProgramName, UploadHeader = new UploadHeader { MediaLicense = "http://developer.catrobat.org/ccbysa_v3", ProgramLicense = "http://developer.catrobat.org/agpl_v3", Url = "http://pocketcode.org/details/871" } }; using (var storage = StorageSystem.GetStorage()) { var destinationPath = Path.Combine(StorageConstants.ProgramsPath, newProgramName); var counter = 1; while (await storage.DirectoryExistsAsync(destinationPath)) { newProgramName = newProgramName + counter; destinationPath = Path.Combine(StorageConstants.ProgramsPath, newProgramName); counter++; } } await newProject.Save(); return newProject; }
public static async Task SaveContext(Program currentProject) { try { if (_context == null) return; var themeChooser = ServiceLocator.ThemeChooser; var settingsViewModel = ServiceLocator.GetInstance<SettingsViewModel>(); if (themeChooser.SelectedTheme != null) { _context.LocalSettings.CurrentThemeIndex = themeChooser.SelectedThemeIndex; } if (settingsViewModel.CurrentCulture != null) { _context.LocalSettings.CurrentLanguageString = settingsViewModel.CurrentCulture.Name; } if (currentProject == null) { await ServiceLocator.TraceService.SaveLocal(); return; } _context.LocalSettings.CurrentProgramName = currentProject.Name; await ServiceLocator.ContextService.StoreLocalSettings(_context.LocalSettings); await currentProject.Save(); // allow viewmodels to save settings // TODO: check if this is awaited Messenger.Default.Send(new GenericMessage<LocalSettings>(_context.LocalSettings), ViewModelMessagingToken.SaveSettings); await ServiceLocator.TraceService.SaveLocal(); } catch (Exception e) { throw; } //await ServiceLocator.TraceService.SaveLocal(); }