/// <summary> /// Tries to set preview for selected file in archive. /// </summary> /// <param name="filePath">Path to file from archive.</param> private void SetPreview(string fileName) { if (Archive == null || Archive.IsDisposed) { return; } if (!IsEnabled || !Archive.Archive.ContainsFile(fileName)) { return; // TODO set error preview? } int fileIndex = Archive.Archive.GetFileIndex(fileName); if (fileIndex == -1) { return; // TODO set error preview? } PreviewFileType fileType = FilePreviewer.ResolveFileTypeFromFileName(fileName); if (m_previewWorker.IsBusy) { if (fileType == PreviewFileType.Unknown) { m_previewWorker.CancelAsync(); SetUnknownPreview(fileName); return; } else { SetQueueFileName(fileName); } } else { if (fileType == PreviewFileType.Unknown) { SetUnknownPreview(fileName); return; } m_previewWorker.RunWorkerAsync(new object[] { Archive, fileIndex, fileType }); } }