/// <summary> /// Open a translation /// </summary> public async Task<TranslationEditorViewModel> OpenTranslationAsync(TranslationFileViewModel file) { if (file == null) return null; TranslationEditorViewModel trans = Editors.FirstOrDefault(e => e.File == file); if (trans == null) { if (Loading) return null; Loading = true; try { trans = new TranslationEditorViewModel(file); Editors.Add(trans); await trans.LoadAsync(); } finally { Loading = false; } } CurrentEditor = trans; return trans; }
/// <summary> /// Close an editor /// </summary> public async Task<bool> CloseEditorAsync(TranslationEditorViewModel editor) { var idx = Editors.IndexOf(editor); if (idx < 0) return false; if (editor.IsDirty) { var res = await _AppService.ConfirmYesNoCancelAsync( Locales.SR.CloseEditor_ConfirmSaveModifications_Message, Locales.SR.CloseEditor_ConfirmSaveModifications_Title ); if (!res.HasValue) return false; if (res == true) { await editor.SaveAsync(); } } Editors.Remove(editor); idx = Math.Min(idx, Editors.Count - 1); CurrentEditor = idx >= 0 ? Editors[idx] : null; return true; }
/// <summary> /// Create a new model /// </summary> public TranslationViewModel(TranslationEditorViewModel editor, Model.TranslationContentValue value) { this.Editor = editor; this.ContentValue = value; }