diff --git a/.gitignore b/.gitignore index 016b79e99..2bfb64b83 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,4 @@ debian/files .cursor/ .cursorindexingignore +.npm-cache/ \ No newline at end of file diff --git a/3rdparty/cli7zplugin/cli7zplugin.cpp b/3rdparty/cli7zplugin/cli7zplugin.cpp index 82cff7b82..79b1176ff 100644 --- a/3rdparty/cli7zplugin/cli7zplugin.cpp +++ b/3rdparty/cli7zplugin/cli7zplugin.cpp @@ -193,7 +193,10 @@ bool Cli7zPlugin::readListLine(const QString &line) return false; } - const QRegularExpression rxVersionLine(QStringLiteral("^p7zip Version ([\\d\\.]+) .*$")); + // 兼容p7zip和7z的版本输出格式 + // p7zip: "p7zip Version 16.02 (...)" + // 7z: "7-Zip 23.01 (x64) : Copyright (...)" + const QRegularExpression rxVersionLine(QStringLiteral("^(?:p7zip Version|7-Zip) ([\\d\\.]+) .*$")); QRegularExpressionMatch matchVersion; switch (m_parseState) { diff --git a/3rdparty/cli7zplugin/kerfuffle_cli7z.json b/3rdparty/cli7zplugin/kerfuffle_cli7z.json index ed3eed861..072510db6 100644 --- a/3rdparty/cli7zplugin/kerfuffle_cli7z.json +++ b/3rdparty/cli7zplugin/kerfuffle_cli7z.json @@ -41,40 +41,40 @@ "application/x-java-archive", "application/x-tzo" ], - "Name": "P7zip plugin", - "Name[ca@valencia]": "Connector del P7zip", - "Name[ca]": "Connector del P7zip", - "Name[cs]": "Modul pro p7zip", - "Name[da]": "P7zip-plugin", - "Name[de]": "P7zip-Modul", - "Name[el]": "Πρόσθετο P7zip", - "Name[en_GB]": "P7zip plugin", - "Name[es]": "Complemento P7zip", - "Name[eu]": "P7zip plugina", - "Name[fi]": "P7zip-liitännäinen", - "Name[fr]": "Module externe « P7zip »", - "Name[gl]": "Complemento de p7zip", - "Name[ia]": "Plugin de P7zip", - "Name[it]": "Estensione P7zip", - "Name[ko]": "P7zip 플러그인", - "Name[nl]": "P7zip-plug-in", - "Name[nn]": "P7zip-tillegg", - "Name[pl]": "Wtyczka p7zip", - "Name[pt]": "'Plugin' do P7zip", - "Name[pt_BR]": "Plugin 7zip", - "Name[ru]": "Модуль P7zip", - "Name[sk]": "Plugin P7zip", - "Name[sl]": "Vstavek P7zip", - "Name[sr@ijekavian]": "Прикључак за П7зип", - "Name[sr@ijekavianlatin]": "Priključak za p7zip", - "Name[sr@latin]": "Priključak za p7zip", - "Name[sr]": "Прикључак за П7зип", - "Name[sv]": "P7zip-insticksprogram", - "Name[tr]": "P7zip eklentisi", - "Name[uk]": "Додаток P7zip", - "Name[x-test]": "xxP7zip pluginxx", - "Name[zh_CN]": "P7zip 插件", - "Name[zh_TW]": "P7zip 外掛程式", + "Name": "7-Zip plugin", + "Name[ca@valencia]": "Connector del 7-Zip", + "Name[ca]": "Connector del 7-Zip", + "Name[cs]": "Modul pro 7-Zip", + "Name[da]": "7-Zip-plugin", + "Name[de]": "7-Zip-Modul", + "Name[el]": "Πρόσθετο 7-Zip", + "Name[en_GB]": "7-Zip plugin", + "Name[es]": "Complemento 7-Zip", + "Name[eu]": "7-Zip plugina", + "Name[fi]": "7-Zip-liitännäinen", + "Name[fr]": "Module externe « 7-Zip »", + "Name[gl]": "Complemento de 7-Zip", + "Name[ia]": "Plugin de 7-Zip", + "Name[it]": "Estensione 7-Zip", + "Name[ko]": "7-Zip 플러그인", + "Name[nl]": "7-Zip-plug-in", + "Name[nn]": "7-Zip-tillegg", + "Name[pl]": "Wtyczka 7-Zip", + "Name[pt]": "'Plugin' do 7-Zip", + "Name[pt_BR]": "Plugin 7-Zip", + "Name[ru]": "Модуль 7-Zip", + "Name[sk]": "Plugin 7-Zip", + "Name[sl]": "Vstavek 7-Zip", + "Name[sr@ijekavian]": "Прикључак за 7-Зип", + "Name[sr@ijekavianlatin]": "Priključak za 7-Zip", + "Name[sr@latin]": "Priključak za 7-Zip", + "Name[sr]": "Прикључак за 7-Зип", + "Name[sv]": "7-Zip-insticksprogram", + "Name[tr]": "7-Zip eklentisi", + "Name[uk]": "Додаток 7-Zip", + "Name[x-test]": "xx7-Zip pluginxx", + "Name[zh_CN]": "7-Zip 插件", + "Name[zh_TW]": "7-Zip 外掛程式", "ServiceTypes": [ "Kerfuffle/Plugin" ], diff --git a/README.md b/README.md index dc0c06830..93676d131 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Build-Depends: debhelper (>= 11), cmake, libgsettings-qt-dev, libarchive-dev, libsecret-1-dev, libpoppler-cpp-dev, libudisks2-qt5-dev, libdisomaster-dev, libkf5codecs-dev, libzip-dev, qttools5-dev-tools, deepin-gettext-tools, qtbase5-dev, qtchooser (>= 55-gc9562a1-1~), qt5-qmake, libdtkwidget-dev,libqt5svg5-dev, libqt5x11extras5-dev, libkf5archive-dev, libminizip-dev, qttools5-dev, libgtest-dev Execute Depends: -${shlibs:Depends}, ${misc:Depends}, p7zip-full, deepin-shortcut-viewer, unar[i386 amd64], rar[i386 amd64], unrar[i386 amd64] +${shlibs:Depends}, ${misc:Depends}, 7zip, deepin-shortcut-viewer, unar[i386 amd64], rar[i386 amd64], unrar[i386 amd64] ### Third Party Code [KDE ark](https://github.com/kde/ark) diff --git a/README.zh_CN.md b/README.zh_CN.md index 814434d49..fa7dc4bbd 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -12,7 +12,7 @@ Build-Depends: debhelper (>= 11), cmake, libgsettings-qt-dev, libarchive-dev, libsecret-1-dev, libpoppler-cpp-dev, libudisks2-qt5-dev, libdisomaster-dev, libkf5codecs-dev, libzip-dev, qttools5-dev-tools, deepin-gettext-tools, qtbase5-dev, qtchooser (>= 55-gc9562a1-1~), qt5-qmake, libdtkwidget-dev,libqt5svg5-dev, libqt5x11extras5-dev, libkf5archive-dev, libminizip-dev, qttools5-dev, libgtest-dev Execute Depends: -${shlibs:Depends}, ${misc:Depends}, p7zip-full, deepin-shortcut-viewer, unar[i386 amd64], rar[i386 amd64], unrar[i386 amd64] +${shlibs:Depends}, ${misc:Depends}, 7zip, deepin-shortcut-viewer, unar[i386 amd64], rar[i386 amd64], unrar[i386 amd64] ### 第三方代码 diff --git a/debian/control b/debian/control index 0a50f459b..8fbc6a6e7 100644 --- a/debian/control +++ b/debian/control @@ -30,7 +30,7 @@ Standards-Version: 4.1.3 Package: deepin-compressor Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, p7zip-full, deepin-shortcut-viewer, unar[i386 amd64], unrar[i386 amd64], pigz, lzop +Depends: ${shlibs:Depends}, ${misc:Depends}, 7zip, deepin-shortcut-viewer, unar[i386 amd64], unrar[i386 amd64], pigz, lzop Recommends: uos-reporter, deepin-event-log Description: Archive Manager is a fast and lightweight application for creating and extracting archives. Archive Manager is a user-friendly and easy-to-use compressing and decompressing software, supporting multiple compressing formats such as 7z, jar, tar, tar.bz2, tar.gz, tar.lz, tar.lzm, tar.lzo, tar.Z, zip as well as encrypted compressing settings. diff --git a/debian/control.1 b/debian/control.1 index 8f49e351c..32638bf4c 100644 --- a/debian/control.1 +++ b/debian/control.1 @@ -30,7 +30,7 @@ Standards-Version: 4.1.3 Package: deepin-compressor Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, p7zip-full, deepin-shortcut-viewer, unar[i386 amd64], unrar[i386 amd64], pigz, lzop +Depends: ${shlibs:Depends}, ${misc:Depends}, 7zip, deepin-shortcut-viewer, unar[i386 amd64], unrar[i386 amd64], pigz, lzop Recommends: uos-reporter, deepin-event-log Description: Archive Manager is a fast and lightweight application for creating and extracting archives. Archive Manager is a user-friendly and easy-to-use compressing and decompressing software, supporting multiple compressing formats such as 7z, jar, tar, tar.bz2, tar.gz, tar.lz, tar.lzm, tar.lzo, tar.Z, zip as well as encrypted compressing settings. diff --git a/docs/compressor_cmd.txt b/docs/compressor_cmd.txt index d870222d5..31d7bef97 100644 --- a/docs/compressor_cmd.txt +++ b/docs/compressor_cmd.txt @@ -11,8 +11,8 @@ 准备测试的单文件:tar -cvf chrome.tar /opt/google/chrome 测试软件: - 1)7z (p7zip) - sudo apt-get install p7zip-full + 1)7z + sudo apt-get install 7zip 文件夹压缩测试:time 7z a chrome_7z.zip /opt/google/chrome diff --git a/src/source/common/uitools.cpp b/src/source/common/uitools.cpp index 6a26c9218..873f46c8e 100644 --- a/src/source/common/uitools.cpp +++ b/src/source/common/uitools.cpp @@ -270,9 +270,9 @@ ReadOnlyArchiveInterface *UiTools::createInterface(const QString &fileName, bool return nullptr; } - //tar.lzo格式 由P7zip插件压缩mimeFromContent为"application/x-7z-compressed",由Libarchive插件压缩mimeFromContent为"application/x-lzop" + //tar.lzo格式 由cli7z插件压缩mimeFromContent为"application/x-7z-compressed",由Libarchive插件压缩mimeFromContent为"application/x-lzop" // 若未指定使用cli7z插件,则需要对zip和tar格式的解压屏蔽7z,选用libzip或libarchive插件 - //删除P7zip插件处理 mimeFromContent为"application/x-lzop" 的情况 + //删除cli7z插件处理 mimeFromContent为"application/x-lzop" 的情况 QMimeDatabase db; QMimeType mimeFromContent = db.mimeTypeForFile(fileName, QMimeDatabase::MatchContent); bool remove7zFlag = false; @@ -295,7 +295,7 @@ ReadOnlyArchiveInterface *UiTools::createInterface(const QString &fileName, bool ReadOnlyArchiveInterface *pIface = nullptr; qDebug() << "Iterating through" << offers.size() << "plugins"; for (Plugin *plugin : offers) { - //删除P7zip插件 + //删除cli7z插件 if (remove7zFlag && plugin->metaData().name().contains("7zip", Qt::CaseInsensitive)) { qDebug() << "Skipping 7zip plugin due to remove flag"; continue; diff --git a/tests/UnitTest/3rdparty/cli7zplugin/ut_cli7zplugin.cpp b/tests/UnitTest/3rdparty/cli7zplugin/ut_cli7zplugin.cpp index 624d4f5d1..9d45ab259 100644 --- a/tests/UnitTest/3rdparty/cli7zplugin/ut_cli7zplugin.cpp +++ b/tests/UnitTest/3rdparty/cli7zplugin/ut_cli7zplugin.cpp @@ -305,6 +305,15 @@ TEST_F(UT_Cli7zPlugin, test_readListLine_001) TEST_F(UT_Cli7zPlugin, test_readListLine_002) { m_tester->m_parseState = ParseStateTitle; + // 兼容p7zip和7z版本格式 - 测试7z版本 + EXPECT_EQ(m_tester->readListLine("7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20"), true); + EXPECT_EQ(m_tester->m_parseState, ParseStateHeader); +} + +TEST_F(UT_Cli7zPlugin, test_readListLine_002_p7zip) +{ + m_tester->m_parseState = ParseStateTitle; + // 兼容p7zip和7z版本格式 - 测试p7zip版本(向后兼容) EXPECT_EQ(m_tester->readListLine("p7zip Version 16.02 (locale=zh_CN.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz (A0655),ASM,AES-NI)"), true); EXPECT_EQ(m_tester->m_parseState, ParseStateHeader); }