Catrobat.IDE.Core.App.SaveContext C# (CSharp) Method

SaveContext() public static method

public static SaveContext ( System.Program currentProject ) : Task
currentProject System.Program
return Task
        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();


        }
    }