/// <summary> /// Method to set a text as preview /// </summary> /// <param name="item">Listview item to preview</param> private void SetTextPreview(ListViewItem item) { string text = item.FileReference.GenericText; if (text.Length == 0 && item.FileSize.Value > 0) { switch (item.Type) { case ExtractorItem.Type.Text: case ExtractorItem.Type.Xml: CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedTextFailure, item.FileName); break; default: CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedOtherFailure, item.FileName); break; } SetTextPreviewVisible(true); } else { switch (item.Type) { case ExtractorItem.Type.Image: CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedImageFallback, item.FileName); break; case ExtractorItem.Type.Text: case ExtractorItem.Type.Xml: CurrentModel.StatusText = I18n.R(I18n.Key.StatusEmbeddedLoaded, item.FileName); break; default: CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedOtherFallback, item.FileName); break; } TextBox.Text = text; SetTextPreviewVisible(); } ImageBox.Source = null; CurrentExtractor.ResetErrors(); }
/// <summary> /// Shows the preview of the currently selected embedded file /// </summary> private void ShowPreview() { Cursor c = Cursor; CurrentModel.StatusText = I18n.T(I18n.Key.StatusLoadingEmbedded); Cursor = Cursors.Wait; try { ListViewItem[] selected = new ListViewItem[ImagesListView.SelectedItems.Count]; ImagesListView.SelectedItems.CopyTo(selected, 0); CurrentModel.SelectedItems = selected; ListViewItem item = selected.Last(); if (CurrentModel.LargeFilePreviewWarning) { long threshold = Properties.Settings.Default.LargeFileThreshold; if (item.FileSize.Value > threshold) { MessageBoxResult result = MessageBox.Show(I18n.R(I18n.Key.DialogSizeWarning, Utils.ConvertFileSize(threshold)), I18n.T(I18n.Key.DialogSizeWarningTitle), MessageBoxButton.YesNo, MessageBoxImage.Question); if (result != MessageBoxResult.Yes) { ImageBox.Source = null; SetTextPreviewVisible(true); CurrentExtractor.ResetErrors(); CurrentModel.StatusText = I18n.R(I18n.Key.StatusPreviewSkipped, item.FileName); Cursor = c; return; } } } if (item.Type == ExtractorItem.Type.Image) { CurrentExtractor.GetImageSourceByName(item.FileName, out var img); SetImagePreviewVisible(); if (CurrentExtractor.HasErrors) { if (CurrentModel.GenericTextPreview) { SetTextPreview(item); } else { CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedImageFailure, CurrentExtractor.LastError); SetTextPreviewVisible(true); } ImageBox.Source = null; CurrentExtractor.ResetErrors(); } else { ImageBox.Source = img; CurrentModel.StatusText = I18n.R(I18n.Key.StatusEmbeddedLoaded, item.FileName); } } else if (item.Type == ExtractorItem.Type.Xml || item.Type == ExtractorItem.Type.Text || CurrentModel.GenericTextPreview) { CurrentExtractor.GetGenericTextByName(item.FileName, out var text); if (CurrentExtractor.HasErrors) { SetTextPreviewVisible(); CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedTextFailure, CurrentExtractor.LastError); TextBox.Text = string.Empty; SetTextPreviewVisible(true); CurrentExtractor.ResetErrors(); } else { SetTextPreview(item); } } else { SetTextPreviewVisible(true); CurrentModel.StatusText = I18n.R(I18n.Key.StatusLoadEmbeddedOtherFailure, item.FileName); TextBox.Text = string.Empty; // Fall-back } } catch { CurrentModel.SelectedItems = new ListViewItem[0]; // ignore } Cursor = c; if (ImagesListView.Items.Count == 0) { CurrentModel.SaveSelectedStatus = false; } else { CurrentModel.SaveSelectedStatus = true; } }