mirror of
https://github.com/QL-Win/QuickLook.git
synced 2026-01-13 07:05:24 +08:00
Renamed and reorganized ArchiveViewer files into a new ArchiveFile subfolder and namespace for better code structure. Updated all relevant namespaces and references accordingly. Minor code cleanups were also applied, such as using collection initializers and default keyword.
93 lines
3.4 KiB
C#
93 lines
3.4 KiB
C#
// Copyright © 2017-2025 QL-Win Contributors
|
|
//
|
|
// This file is part of QuickLook program.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
using QuickLook.Common.Plugin;
|
|
using QuickLook.Plugin.ArchiveViewer.ArchiveFile;
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
|
|
namespace QuickLook.Plugin.ArchiveViewer;
|
|
|
|
public class Plugin : IViewer
|
|
{
|
|
private static readonly string[] _extensions =
|
|
[
|
|
// List of supported archive file extensions
|
|
".asar", // Electron archive (used to package Electron app resources)
|
|
".7z", // 7-Zip compressed archive (uses LZMA/LZMA2 compression)
|
|
".bz2", // bzip2 compressed file (often used with tar, e.g. .tar.bz2)
|
|
".cb7", // Comic book archive based on 7z format
|
|
".cbr", // Comic book archive based on RAR format
|
|
".cbt", // Comic book archive based on TAR format
|
|
".cbz", // Comic book archive based on ZIP format
|
|
".crx", // Chrome extension package (used for Chrome browser add-ons)
|
|
".gz", // gzip compressed file (commonly used with tar, e.g. .tar.gz)
|
|
".jar", // Java archive (used for Java applications; ZIP-based)
|
|
".lz", // lzip compressed file (uses LZMA compression)
|
|
".nupkg", // NuGet package (for distributing .NET libraries; ZIP-based)
|
|
".snupkg", // Symbol NuGet package (stores debug symbols; ZIP-based)
|
|
".rar", // RAR compressed archive (proprietary compression format)
|
|
".tar", // TAR archive (packs multiple files without compression)
|
|
".tgz", // Gzipped TAR archive (short for .tar.gz)
|
|
".vsix", // Visual Studio extension package (ZIP-based)
|
|
".xz", // XZ compressed file (uses LZMA2 compression)
|
|
".zip", // ZIP compressed archive (most common compression format)
|
|
|
|
// List of supported compound file binary file extensions
|
|
//".cfb", // Compound File Binary format (used by older Microsoft Office files)
|
|
//".eif", // QQ emoji file (Compound File Binary format)
|
|
];
|
|
|
|
private IDisposable _panel;
|
|
|
|
public int Priority => -5;
|
|
|
|
public void Init()
|
|
{
|
|
}
|
|
|
|
public bool CanHandle(string path)
|
|
{
|
|
return !Directory.Exists(path) && _extensions.Any(path.ToLower().EndsWith);
|
|
}
|
|
|
|
public void Prepare(string path, ContextObject context)
|
|
{
|
|
context.PreferredSize = new Size { Width = 800, Height = 400 };
|
|
}
|
|
|
|
public void View(string path, ContextObject context)
|
|
{
|
|
_panel = new ArchiveInfoPanel(path);
|
|
|
|
context.ViewerContent = _panel;
|
|
context.Title = $"{Path.GetFileName(path)}";
|
|
|
|
context.IsBusy = false;
|
|
}
|
|
|
|
public void Cleanup()
|
|
{
|
|
GC.SuppressFinalize(this);
|
|
|
|
_panel?.Dispose();
|
|
_panel = null;
|
|
}
|
|
}
|