public async Task Save(DocumentTabViewModel tabs) { Contract.Requires(tabs != null, "The tabs parameter must not be null"); try { // exit here if no tabs are open if (tabs.Items.Count == 0) { return; } var index = GetCurrentAutoSaveIndex(); foreach (DocumentViewModel tab in tabs.Items) { if (tab.IsDirty) { index.Add(tab); } // don't autosave if the document has not changed since last save // or if IsDirty is false meaning that the file has been manually saved if (tab.IsDirty && tab.LastAutoSaveUtcTime < tab.LastModifiedUtcTime) { await tab.AutoSave().ConfigureAwait(false); } } SaveIndex(index); } catch (Exception ex) { Log.Error(ex, "{class} {method} {message}", "AutoSaver", "Save", ex.Message); } }
private ProfileSettingsViewModelBundle BuildViewModelBundle(IInteractionInvoker invoker, ITranslator translator) { var documentTabViewModel = new DocumentTabViewModel(translator, invoker, Substitute.For <IFontHelper>()); var saveTabViewModel = new SaveTabViewModel(translator, invoker); var autoSaveTabViewModel = new AutoSaveTabViewModel(translator, invoker); var actionsTabViewModel = new ActionsTabViewModel(translator); var imageTabViewModel = new ImageFormatsTabViewModel(translator); var pdfTabViewModel = new PdfTabViewModel(translator, invoker, Substitute.For <IFile>(), Substitute.For <IOpenFileInteractionHelper>()); return(new ProfileSettingsViewModelBundle(documentTabViewModel, saveTabViewModel, autoSaveTabViewModel, actionsTabViewModel, imageTabViewModel, pdfTabViewModel)); }
private ProfileSettingsViewModelBundle BuildViewModelBundle(IInteractionInvoker invoker) { var documentTabViewModel = new DocumentTabViewModel(new DocumentTabTranslation(), invoker, Substitute.For <IFontHelper>(), new TokenHelper(new TokenPlaceHoldersTranslation())); var saveTabViewModel = new SaveTabViewModel(new SaveTabTranslation(), invoker, new TokenHelper(new TokenPlaceHoldersTranslation())); var autoSaveTabViewModel = new AutoSaveTabViewModel(invoker, new AutosaveTabTranslation(), new TokenHelper(new TokenPlaceHoldersTranslation())); var actionsTabViewModel = new ActionsTabViewModel(new ActionsTabTranslation()); var imageTabViewModel = new ImageFormatsTabViewModel(new ImageFormatsTabTranslation()); var pdfTabViewModel = new PdfTabViewModel(new PdfTabTranslation(), invoker, Substitute.For <IFile>(), Substitute.For <IOpenFileInteractionHelper>(), new EditionHintOptionProvider(true), Substitute.For <IPdfProcessor>(), Substitute.For <IUserGuideHelper>()); return(new ProfileSettingsViewModelBundle(documentTabViewModel, saveTabViewModel, autoSaveTabViewModel, actionsTabViewModel, imageTabViewModel, pdfTabViewModel)); }
public DocumentLibraryTab() { InitializeComponent(); //Loading Data when Tab pages is Clicked MessagingCenter.Subscribe <object>(this, "document_library_tab", obj => { if (CrossConnectivity.Current.IsConnected) { BindingContext = new DocumentTabViewModel(Navigation); } else { DisplayAlert("Warning!!", "Pls Enable your Internet Connection", "Done"); } }); }
public async static Task Save(DocumentTabViewModel tabs) { try { // exit here if no tabs are open if (tabs.Items.Count == 0) { return; } var currentProcessId = Process.GetCurrentProcess().Id; AutoSaveIndex index; _masterAutoSaveIndex.TryGetValue(currentProcessId, out index); if (index == null) { index = new AutoSaveIndex(); _masterAutoSaveIndex.Add(currentProcessId, index); } foreach (DocumentViewModel tab in tabs.Items) { if (tab.IsDirty) { index.Add(tab); } // don't autosave if the document has not changed since last save // or if IsDirty is false meaning that the file has been manually saved if (tab.IsDirty || tab.LastAutoSaveUtcTime < tab.LastModifiedUtcTime) { await tab.AutoSave(); } } SaveIndex(index); } catch (Exception ex) { Log.Error(ex, "{class} {method} {message}", "AutoSaver", "Save", ex.Message); } }