예제 #1
0
        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");
                }
            });
        }
예제 #5
0
        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);
            }
        }