示例#1
0
        public async Task <bool> RemoveDictionary(DictionaryViewModel dictionaryViewModel)
        {
            if (dictionaryViewModel.Status != DictionaryStatus.Installed)
            {
                return(false);
            }

            if (IsImportInProgress)
            {
                ContentDialog contentDialog = new ContentDialog()
                {
                    Title           = resourceLoader.GetString("Import_In_Progress_Title"),
                    Content         = resourceLoader.GetString("Import_In_Progress_Body"),
                    CloseButtonText = "OK",
                    XamlRoot        = MainWindow.Instance.Content.XamlRoot
                };

                await contentDialog.ShowAsync();

                return(false);
            }

            await DatabaseManager.Instance.DeleteDictionary(dictionaryViewModel.Dictionary);

            Dictionaries.Remove(dictionaryViewModel);

            DictionariesChanged?.Invoke(this, EventArgs.Empty);

            return(true);
        }
示例#2
0
        private async Task ProcessImportQueue()
        {
            while (true)
            {
                DictionaryViewModel dictionaryViewModel = Dictionaries.FirstOrDefault(dict => dict.Status == DictionaryStatus.Queued);

                if (dictionaryViewModel == null)
                {
                    break;
                }

                dictionaryViewModel.Status = DictionaryStatus.Installing;

                try
                {
                    await DatabaseManager.Instance.ImportWordlist(dictionaryViewModel, cancellationTokenSource.Token);

                    await DatabaseManager.Instance.OptimizeTable(dictionaryViewModel.Dictionary);
                }
                catch (OperationCanceledException)
                {
                    Dictionaries.Remove(dictionaryViewModel);
                    cancellationTokenSource = new CancellationTokenSource();
                    continue;
                }
                catch
                {
                    ContentDialog contentDialog = new ContentDialog()
                    {
                        Title           = resourceLoader.GetString("Import_Error_Title"),
                        Content         = string.Format(resourceLoader.GetString("Import_Error_Body"), dictionaryViewModel.OriginLanguage, dictionaryViewModel.DestinationLanguage),
                        CloseButtonText = "OK",
                        XamlRoot        = MainWindow.Instance.Content.XamlRoot
                    };

                    await contentDialog.ShowAsync();

                    Dictionaries.Remove(dictionaryViewModel);
                    continue;
                }
                finally
                {
                    dictionaryViewModel.WordlistReader.Dispose();
                    dictionaryViewModel.WordlistReader = null;
                }

                dictionaryViewModel.Status = DictionaryStatus.Installed;

                DictionariesChanged?.Invoke(this, EventArgs.Empty);
            }
        }