diff --git a/CMakeLists.txt b/CMakeLists.txt index 3492c16..ef30f3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.13) # If do't define version number, specify the version number set(VERSION "1.0.0" CACHE STRING "define project version") -project(dtkio +project(dtk6io LANGUAGES CXX HOMEPAGE_URL https://github.com/linuxdeepin/dtkio DESCRIPTION "dtk library for dtkio." @@ -25,25 +25,45 @@ set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--as-needed") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Install settings -if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr) -endif () +endif() set(CMAKE_CXX_FLAGS Release CACHE STRING "define CXXFLAGS") +# Qt6 +option(ENABLE_QT6 "Enable Qt6" ON) +set(BUILD_WITH_QT6 OFF CACHE BOOL "Build with Qt6") find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) message("Using Qt version: ${QT_VERSION_MAJOR}") -if(QT_VERSION_MAJOR EQUAL "5") - if (CMAKE_BUILD_TYPE STREQUAL "Debug") +if(ENABLE_QT6 AND Qt6_FOUND) + set(QT_VERSION_MAJOR 6) + set(DTK_VERSION_MAJOR 6) + set(KF_VERSION_MAJOR 6) + set(BUILD_WITH_QT6 ON) + + + if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(BUILD_TESTING ON) set(BUILD_EXAMPLES ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") endif() + +else() + set(QT_VERSION_MAJOR 5) + set(KF_VERSION_MAJOR 5) + + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(BUILD_TESTING ON) + set(BUILD_EXAMPLES ON) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") + endif() + endif() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core DBus) -find_package(DtkCore REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core) add_compile_definitions(QT_NO_SIGNALS_SLOTS_KEYWORDS) # src @@ -52,16 +72,17 @@ add_subdirectory(src) # docs set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation") find_package(Doxygen) -if (BUILD_DOCS AND DOXYGEN_FOUND) + +if(BUILD_DOCS AND DOXYGEN_FOUND) add_subdirectory(docs) -endif () +endif() # example -if (BUILD_EXAMPLES) +if(BUILD_EXAMPLES) add_subdirectory(examples) endif() # test -if (BUILD_TESTING) - add_subdirectory(tests) -endif () +if(BUILD_TESTING) + add_subdirectory(tests) +endif() diff --git a/README.md b/README.md index 3725c2b..f9102e6 100644 --- a/README.md +++ b/README.md @@ -8,26 +8,31 @@ Qt-based development library for I/O on Deepin. ### Build dependencies -- cmake, -- doxygen, -- graphviz, -- pkg-config, -- qhelpgenerator-qt5 | qttools5-dev-tools, -- librsvg2-dev, -- qtbase5-dev, -- libsecret-1-dev, -- libglib2.0-dev, -- libdtkcore-dev, -- libarchive-dev, -- libsecret-1-dev, -- libpoppler-cpp-dev, -- libudisks2-qt5-dev, -- libdisomaster-dev, -- libkf5codecs-dev, -- libzip-dev, -- libkf5archive-dev, -- libminizip-dev, -- libisoburn-dev +- cmake, +- doxygen, +- graphviz, +- pkg-config, +- libdtk6core-dev, +- libdtk6widget-dev, +- libkf6codecs-dev, +- libkf6archive-dev, +- qt6-base-dev, +- qt6-tools-dev, +- qt6-documentation-tools | qt6-tools-dev-tools, +- qt6-5compat-dev, +- libudisks2-qt6-dev, +- librsvg2-dev, +- libsecret-1-dev, +- libglib2.0-dev, +- libarchive-dev, +- libsecret-1-dev, +- libpoppler-cpp-dev, +- libzip-dev, +- libminizip-dev, +- libisoburn-dev, +- liblucene++-dev, +- libdocparser-dev, +- libboost-filesystem-dev ## Build and install diff --git a/README.zh_CN.md b/README.zh_CN.md index f5baad7..a8df058 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -6,26 +6,31 @@ ### 编译依赖 -- cmake, -- doxygen, -- graphviz, -- pkg-config, -- qhelpgenerator-qt5 | qttools5-dev-tools, -- librsvg2-dev, -- qtbase5-dev, -- libsecret-1-dev, -- libglib2.0-dev, -- libdtkcore-dev, -- libarchive-dev, -- libsecret-1-dev, -- libpoppler-cpp-dev, -- libudisks2-qt5-dev, -- libdisomaster-dev, -- libkf5codecs-dev, -- libzip-dev, -- libkf5archive-dev, -- libminizip-dev, -- libisoburn-dev +- cmake, +- doxygen, +- graphviz, +- pkg-config, +- libdtk6core-dev, +- libdtk6widget-dev, +- libkf6codecs-dev, +- libkf6archive-dev, +- qt6-base-dev, +- qt6-tools-dev, +- qt6-documentation-tools | qt6-tools-dev-tools, +- qt6-5compat-dev, +- libudisks2-qt6-dev, +- librsvg2-dev, +- libsecret-1-dev, +- libglib2.0-dev, +- libarchive-dev, +- libsecret-1-dev, +- libpoppler-cpp-dev, +- libzip-dev, +- libminizip-dev, +- libisoburn-dev, +- liblucene++-dev, +- libdocparser-dev, +- libboost-filesystem-dev ## 构建安装 diff --git a/debian/control b/debian/control index 8656307..e494264 100644 --- a/debian/control +++ b/debian/control @@ -8,104 +8,108 @@ Build-Depends: doxygen, graphviz, pkg-config, - qhelpgenerator-qt5 | qttools5-dev-tools, +# dde + libdtk6core-dev, + libdtk6widget-dev, +# kde + libkf6codecs-dev, + libkf6archive-dev, +# qt + qt6-base-dev, + qt6-tools-dev, + qt6-documentation-tools | qt6-tools-dev-tools, + qt6-5compat-dev, + libudisks2-qt6-dev, librsvg2-dev, - qtbase5-dev, libsecret-1-dev, libglib2.0-dev, - libdtkcore-dev, - libdtkwidget-dev, libarchive-dev, libsecret-1-dev, libpoppler-cpp-dev, - libudisks2-qt5-dev, - libkf5codecs-dev, libzip-dev, - libkf5archive-dev, libminizip-dev, libisoburn-dev, - qttools5-dev, liblucene++-dev, libdocparser-dev, libboost-filesystem-dev Standards-Version: 4.5.0 -Package: libdtkmount +Package: libdtk6mount Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Deepin Tool Kit template library - libdtkmount is base library of Deepin Qt/C++ applications. + libdtk6mount is base library of Deepin Qt/C++ applications. . This package contains the shared libraries. -Package: libdtkmount-dev +Package: libdtk6mount-dev Architecture: any -Depends:${misc:Depends}, libdtkmount( =${binary:Version}) +Depends:${misc:Depends}, libdtk6mount( =${binary:Version}) Description: Deepin Tool Kit template devel library - libdtkmount-dev is base devel library of Deepin Qt/C++ applications. + libdtk6mount-dev is base devel library of Deepin Qt/C++ applications. . This package contains the header files and static libraries. -Package: libdtkcompressor +Package: libdtk6compressor Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Development Tool Kit template library - libdtkcompressor is base library of Deepin Qt/C++ applications. + libdtk6compressor is base library of Deepin Qt/C++ applications. . This package contains the shared libraries. -Package: libdtkcompressor-dev +Package: libdtk6compressor-dev Architecture: any -Depends:${misc:Depends}, libdtkcompressor( =${binary:Version}) +Depends:${misc:Depends}, libdtk6compressor( =${binary:Version}) Description: Development Tool Kit template devel library - libdtkcompressor-dev is base devel library of Deepin Qt/C++ applications. + libdtk6compressor-dev is base devel library of Deepin Qt/C++ applications. -Package: libdtkio +Package: libdtk6io Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Deepin Tool Kit template library - libdtkio is base library of Deepin Qt/C++ applications. + libdtk6io is base library of Deepin Qt/C++ applications. . This package contains the shared libraries. -Package: libdtkio-dev +Package: libdtk6io-dev Architecture: any -Depends:${misc:Depends}, libdtkio( =${binary:Version}) +Depends:${misc:Depends}, libdtk6io( =${binary:Version}) Description: Deepin Tool Kit template devel library - libdtkio-dev is base devel library of Deepin Qt/C++ applications. + libdtk6io-dev is base devel library of Deepin Qt/C++ applications. . This package contains the header files and static libraries. -Package: libdtksearch +Package: libdtk6search Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Deepin Tool Kit template library - libdtksearch is base library of Deepin Qt/C++ applications. + libdtk6search is base library of Deepin Qt/C++ applications. . This package contains the shared libraries. -Package: libdtksearch-dev +Package: libdtk6search-dev Architecture: any -Depends:${misc:Depends}, libdtksearch( =${binary:Version}) +Depends:${misc:Depends}, libdtk6search( =${binary:Version}) Description: Deepin Tool Kit template devel library - libdtksearch-dev is base devel library of Deepin Qt/C++ applications. + libdtk6search-dev is base devel library of Deepin Qt/C++ applications. . This package contains the header files and static libraries. -Package: libdtkburn +Package: libdtk6burn Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Recommends: libudfburn Description: A libaray about burning CD - libdtkburn is base library of Deepin Qt/C++ applications. + libdtk6burn is base library of Deepin Qt/C++ applications. . This package contains the shared libraries. -Package: libdtkburn-dev +Package: libdtk6burn-dev Architecture: any -Depends:${misc:Depends}, libdtkburn( =${binary:Version}) +Depends:${misc:Depends}, libdtk6burn( =${binary:Version}) Description: A libaray about burning CD - libdtkburn-dev is base devel library of Deepin Qt/C++ applications. + libdtk6burn-dev is base devel library of Deepin Qt/C++ applications. . This package contains the header files and static libraries. diff --git a/debian/libdtk6burn-dev.install b/debian/libdtk6burn-dev.install new file mode 100644 index 0000000..2ac76bf --- /dev/null +++ b/debian/libdtk6burn-dev.install @@ -0,0 +1,5 @@ +usr/include/dtk6burn/* +usr/lib/*/pkgconfig/dtk6burn.pc +usr/lib/*/cmake/dtk6burn/*.cmake +usr/lib/*/*/mkspecs/modules/*dtk6burn.pri +usr/share/*/doc/*.qch diff --git a/debian/libdtk6burn.install b/debian/libdtk6burn.install new file mode 100644 index 0000000..305cbe3 --- /dev/null +++ b/debian/libdtk6burn.install @@ -0,0 +1 @@ +usr/lib/*/libdtk6burn.so* diff --git a/debian/libdtk6compressor-dev.install b/debian/libdtk6compressor-dev.install new file mode 100644 index 0000000..e499d91 --- /dev/null +++ b/debian/libdtk6compressor-dev.install @@ -0,0 +1,5 @@ +usr/include/dtk6compressor/* +usr/lib/*/pkgconfig/dtk6compressor.pc +usr/lib/*/cmake/*/dtk6compressor*.cmake +usr/lib/*/*/mkspecs/modules/*dtk6compressor.pri +usr/share/*/doc/*.qch diff --git a/debian/libdtk6compressor.install b/debian/libdtk6compressor.install new file mode 100644 index 0000000..e3c10ed --- /dev/null +++ b/debian/libdtk6compressor.install @@ -0,0 +1,12 @@ +usr/lib/*/libdtk6compressor.so* +usr/lib/*/dtk6compressor/plugins/libcli7zplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libclirarplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libzipplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libpigzplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libminizipplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libreadwritelibarchiveplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libreadonlylibarchiveplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libinterfacecompressor.so +usr/lib/*/dtk6compressor/plugins/libbz2plugincompressor.so +usr/lib/*/dtk6compressor/plugins/libgzplugincompressor.so +usr/lib/*/dtk6compressor/plugins/libxzplugincompressor.so diff --git a/debian/libdtk6io-dev.install b/debian/libdtk6io-dev.install new file mode 100644 index 0000000..ae58091 --- /dev/null +++ b/debian/libdtk6io-dev.install @@ -0,0 +1,5 @@ +usr/include/dtk6io/* +usr/lib/*/pkgconfig/dtk6io.pc +usr/lib/*/cmake/dtk6io/*.cmake +usr/lib/*/*/mkspecs/modules/*dtk6io.pri +usr/share/*/doc/*.qch diff --git a/debian/libdtk6io.install b/debian/libdtk6io.install new file mode 100644 index 0000000..466149a --- /dev/null +++ b/debian/libdtk6io.install @@ -0,0 +1 @@ +usr/lib/*/libdtk6io*.so* diff --git a/debian/libdtk6mount-dev.install b/debian/libdtk6mount-dev.install new file mode 100644 index 0000000..db6a067 --- /dev/null +++ b/debian/libdtk6mount-dev.install @@ -0,0 +1,5 @@ +usr/include/dtk6mount/* +usr/lib/*/pkgconfig/dtk6mount.pc +usr/lib/*/cmake/dtk6mount/*.cmake +usr/lib/*/*/mkspecs/modules/*dtk6mount.pri +usr/share/*/doc/*.qch diff --git a/debian/libdtk6mount.install b/debian/libdtk6mount.install new file mode 100644 index 0000000..3123dee --- /dev/null +++ b/debian/libdtk6mount.install @@ -0,0 +1 @@ +usr/lib/*/libdtk6mount*.so* diff --git a/debian/libdtk6search-dev.install b/debian/libdtk6search-dev.install new file mode 100644 index 0000000..33b394c --- /dev/null +++ b/debian/libdtk6search-dev.install @@ -0,0 +1,5 @@ +usr/include/dtk6search/* +usr/lib/*/pkgconfig/dtk6search.pc +usr/lib/*/cmake/dtk6search/*.cmake +usr/lib/*/*/mkspecs/modules/*dtk6search.pri +usr/share/*/doc/*.qch diff --git a/debian/libdtk6search.install b/debian/libdtk6search.install new file mode 100644 index 0000000..7222c61 --- /dev/null +++ b/debian/libdtk6search.install @@ -0,0 +1 @@ +usr/lib/*/libdtk6search*.so* diff --git a/debian/libdtkburn-dev.install b/debian/libdtkburn-dev.install deleted file mode 100644 index 2213ae5..0000000 --- a/debian/libdtkburn-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/dtkburn/* -usr/lib/*/pkgconfig/dtkburn.pc -usr/lib/*/cmake/dtkburn/*.cmake -usr/lib/*/*/mkspecs/modules/*dtkburn.pri -usr/share/*/doc/*.qch diff --git a/debian/libdtkburn.install b/debian/libdtkburn.install deleted file mode 100644 index 0ce8617..0000000 --- a/debian/libdtkburn.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdtkburn.so* diff --git a/debian/libdtkcompressor-dev.install b/debian/libdtkcompressor-dev.install deleted file mode 100644 index 767bc52..0000000 --- a/debian/libdtkcompressor-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/dtkcompressor/* -usr/lib/*/pkgconfig/dtkcompressor.pc -usr/lib/*/cmake/*/dtkcompressor*.cmake -usr/lib/*/*/mkspecs/modules/*dtkcompressor.pri -usr/share/*/doc/*.qch diff --git a/debian/libdtkcompressor.install b/debian/libdtkcompressor.install deleted file mode 100644 index 3250875..0000000 --- a/debian/libdtkcompressor.install +++ /dev/null @@ -1,12 +0,0 @@ -usr/lib/*/libdtkcompressor.so* -usr/lib/*/dtkcompressor/plugins/libcli7zplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libclirarplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libzipplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libpigzplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libminizipplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libreadwritelibarchiveplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libreadonlylibarchiveplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libinterfacecompressor.so -usr/lib/*/dtkcompressor/plugins/libbz2plugincompressor.so -usr/lib/*/dtkcompressor/plugins/libgzplugincompressor.so -usr/lib/*/dtkcompressor/plugins/libxzplugincompressor.so diff --git a/debian/libdtkio-dev.install b/debian/libdtkio-dev.install deleted file mode 100644 index c22639d..0000000 --- a/debian/libdtkio-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/dtkio/* -usr/lib/*/pkgconfig/dtkio.pc -usr/lib/*/cmake/dtkio/*.cmake -usr/lib/*/*/mkspecs/modules/*dtkio.pri -usr/share/*/doc/*.qch diff --git a/debian/libdtkio.install b/debian/libdtkio.install deleted file mode 100644 index 39fc1f0..0000000 --- a/debian/libdtkio.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdtkio*.so* diff --git a/debian/libdtkmount-dev.install b/debian/libdtkmount-dev.install deleted file mode 100644 index 462b9a1..0000000 --- a/debian/libdtkmount-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/dtkmount/* -usr/lib/*/pkgconfig/dtkmount.pc -usr/lib/*/cmake/dtkmount/*.cmake -usr/lib/*/*/mkspecs/modules/*dtkmount.pri -usr/share/*/doc/*.qch diff --git a/debian/libdtkmount.install b/debian/libdtkmount.install deleted file mode 100644 index ca2d9a6..0000000 --- a/debian/libdtkmount.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdtkmount*.so* diff --git a/debian/libdtksearch-dev.install b/debian/libdtksearch-dev.install deleted file mode 100644 index 1effd8b..0000000 --- a/debian/libdtksearch-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/dtksearch/* -usr/lib/*/pkgconfig/dtksearch.pc -usr/lib/*/cmake/dtksearch/*.cmake -usr/lib/*/*/mkspecs/modules/*dtksearch.pri -usr/share/*/doc/*.qch diff --git a/debian/libdtksearch.install b/debian/libdtksearch.install deleted file mode 100644 index 52aaae7..0000000 --- a/debian/libdtksearch.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdtksearch*.so* diff --git a/debian/rules b/debian/rules index e6e859d..62deacf 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f include /usr/share/dpkg/default.mk -export QT_SELECT = qt5 +export QT_SELECT = qt6 %: dh $@ --parallel diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 2a9c866..9ddde17 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,8 +1,20 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt5/doc CACHE STRING "QCH install location") +if (BUILD_WITH_QT6) + find_package(Qt6 COMPONENTS ToolsTools CONFIG REQUIRED) + if (TARGET Qt6::qhelpgenerator) + get_target_property(QHelpGenerator_EXECUTABLE Qt6::qhelpgenerator LOCATION) + set (DOXYGEN_QHG_LOCATION "${QHelpGenerator_EXECUTABLE}") + else () + message ("error: can't found qhelpgenerator from Qt6 tools.") + endif () +else () + set (DOXYGEN_QHG_LOCATION "qhelpgenerator") +endif () + +set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/qt${QT_VERSION_MAJOR}/doc CACHE STRING "QCH install location") set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output") set (DOXYGEN_GENERATE_XML "NO" CACHE STRING "Doxygen XML output") set (DOXYGEN_GENERATE_QHP "YES" CACHE STRING "Doxygen QHP output") @@ -11,12 +23,11 @@ set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should b set (DOXYGEN_EXTRACT_STATIC YES) set (DOXYGEN_OUTPUT_LANGUAGE "Chinese") set (DOXYGEN_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/docs/) -set (DOXYGEN_QHG_LOCATION "qhelpgenerator") set (DOXYGEN_QHP_NAMESPACE "org.deepin.dtk.io") set (DOXYGEN_QCH_FILE "${PROJECT_NAME}.qch") set (DOXYGEN_QHP_VIRTUAL_FOLDER ${PROJECT_NAME}) set (DOXYGEN_HTML_EXTRA_STYLESHEET "" CACHE STRING "Doxygen custom stylesheet for HTML output") -set (DOXYGEN_TAGFILES "qtcore.tags=qthelp://doc.qt.io/qt-5/" CACHE STRING "Doxygen tag files") +set (DOXYGEN_TAGFILES "qtcore.tags=qthelp://doc.qt.io/qt-${QT_VERSION_MAJOR}/" CACHE STRING "Doxygen tag files") set (DOXYGEN_MACRO_EXPANSION "YES") set (DOXYGEN_EXPAND_ONLY_PREDEF "YES") set (DOXYGEN_PREDEFINED diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 30fceb1..eef1dd4 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/examples/dtkburn/CMakeLists.txt b/examples/dtkburn/CMakeLists.txt index a692bf6..ba8ce0c 100644 --- a/examples/dtkburn/CMakeLists.txt +++ b/examples/dtkburn/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/examples/dtkburn/burn_client/CMakeLists.txt b/examples/dtkburn/burn_client/CMakeLists.txt index 59c9b60..e01dbda 100644 --- a/examples/dtkburn/burn_client/CMakeLists.txt +++ b/examples/dtkburn/burn_client/CMakeLists.txt @@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) -find_package(Dtk COMPONENTS Core REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} COMPONENTS Core REQUIRED) #find_package(dtkburn REQUIRED) file(GLOB PROJECT_SOURCES CONFIGURE_DEPENDS ./*.cpp ./*.h) @@ -23,7 +23,6 @@ target_include_directories(${PROJECT_NAME} PUBLIC include) target_link_libraries( ${PROJECT_NAME} PRIVATE - ${DtkCore_LIBRARIES} - ${dtkburn_LIBRARIES} - dtkburn + Dtk${DTK_VERSION_MAJOR}::Core + dtk${DTK_VERSION_MAJOR}burn ) diff --git a/examples/dtkcompressor/dtkcompressor/CMakeLists.txt b/examples/dtkcompressor/dtkcompressor/CMakeLists.txt index 91357dd..b5ef82f 100644 --- a/examples/dtkcompressor/dtkcompressor/CMakeLists.txt +++ b/examples/dtkcompressor/dtkcompressor/CMakeLists.txt @@ -14,8 +14,8 @@ PROJECT(testcompressor) find_package(Qt${QT_VERSION_MAJOR}Widgets) find_package(PkgConfig REQUIRED) -find_package(DtkCore REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) # 4.source directory AUX_SOURCE_DIRECTORY(. DIR_SRCS) @@ -34,10 +34,10 @@ target_include_directories(${PROJECT_NAME} PUBLIC set(TARGET_LIBS Qt${QT_VERSION_MAJOR}::Widgets - ${DtkCore_LIBRARIES} - KF5::Codecs + Dtk${DTK_VERSION_MAJOR}::Core + KF${KF_VERSION_MAJOR}::Codecs Qt${QT_VERSION_MAJOR}::DBus - dtkcompressor + dtk${DTK_VERSION_MAJOR}compressor ) # 7.add link library diff --git a/examples/dtkcompressor/dtkcompressor/compressortest.cpp b/examples/dtkcompressor/dtkcompressor/compressortest.cpp index e5e417f..d97e874 100644 --- a/examples/dtkcompressor/dtkcompressor/compressortest.cpp +++ b/examples/dtkcompressor/dtkcompressor/compressortest.cpp @@ -26,8 +26,11 @@ DArchiveManager::MgrFileEntry CompressorTest::fileInfo2Entry(const QFileInfo &fi // 文件直接显示大小 entry.qSize = fileInfo.size(); } - +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + entry.uLastModifiedTime = fileInfo.lastModified().toSecsSinceEpoch(); +#else entry.uLastModifiedTime = fileInfo.lastModified().toTime_t(); // 最后一次修改时间 +#endif return entry; } diff --git a/examples/dtkio/CMakeLists.txt b/examples/dtkio/CMakeLists.txt index f49d3bf..158b862 100644 --- a/examples/dtkio/CMakeLists.txt +++ b/examples/dtkio/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/examples/dtkio/io_client/CMakeLists.txt b/examples/dtkio/io_client/CMakeLists.txt index 82a681c..0c17100 100644 --- a/examples/dtkio/io_client/CMakeLists.txt +++ b/examples/dtkio/io_client/CMakeLists.txt @@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) -find_package(Dtk COMPONENTS Core REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} COMPONENTS Core REQUIRED) #find_package(dtkio REQUIRED) file(GLOB PROJECT_SOURCES CONFIGURE_DEPENDS ./*.cpp ./*.h) @@ -23,7 +23,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC include) target_link_libraries( ${PROJECT_NAME} PRIVATE - ${DtkCore_LIBRARIES} - ${dtkburn_LIBRARIES} - dtkio + Dtk${DTK_VERSION_MAJOR}::Core + dtk${DTK_VERSION_MAJOR}burn + dtk${DTK_VERSION_MAJOR}io ) diff --git a/examples/dtkmount/CMakeLists.txt b/examples/dtkmount/CMakeLists.txt index 8179284..310ddf0 100644 --- a/examples/dtkmount/CMakeLists.txt +++ b/examples/dtkmount/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/examples/dtkmount/device_monitor/CMakeLists.txt b/examples/dtkmount/device_monitor/CMakeLists.txt index c930f2b..7e40db2 100755 --- a/examples/dtkmount/device_monitor/CMakeLists.txt +++ b/examples/dtkmount/device_monitor/CMakeLists.txt @@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Core Gui DBus LinguistTools REQUIRED) -find_package(Dtk COMPONENTS Widget Core Gui REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} COMPONENTS Widget Core Gui REQUIRED) #find_package(dtkmount REQUIRED) file(GLOB TS_FILES CONFIGURE_DEPENDS translations/*.ts) @@ -40,9 +40,10 @@ target_include_directories(${PROJECT_NAME} PUBLIC include) target_link_libraries( ${PROJECT_NAME} PRIVATE - ${DtkWidget_LIBRARIES} - ${DtkCore_LIBRARIES} - dtkmount + Dtk${DTK_VERSION_MAJOR}::Core + Dtk${DTK_VERSION_MAJOR}::Gui + Dtk${DTK_VERSION_MAJOR}::Widget + dtk${DTK_VERSION_MAJOR}mount Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus diff --git a/examples/dtkmount/device_monitor/src/window.cpp b/examples/dtkmount/device_monitor/src/window.cpp index eb10b70..b5048ae 100755 --- a/examples/dtkmount/device_monitor/src/window.cpp +++ b/examples/dtkmount/device_monitor/src/window.cpp @@ -148,9 +148,16 @@ void Window::deviceMountAdd(const QString &devPath, const QString &mountPoint) data.mountPoint = mountPoint; data.isMount = true; data.usedSize = data.size - (new QStorageInfo(mountPoint))->bytesAvailable(); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + m_model->setData(index, QVariant(data.isMount), Qt::UserRole + 1); + variant.setValue(std::move(data)); + m_model->setData(index, variant, Qt::UserRole); +#else variant.setValue(data); m_model->setData(index, variant, Qt::UserRole); m_model->setData(index, QVariant(data.isMount), Qt::UserRole + 1); +#endif return; } } @@ -166,9 +173,16 @@ void Window::deviceMountRemove(const QString &devPath) data.mountPoint = ""; data.isMount = false; data.usedSize = 0; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + m_model->setData(index, QVariant(data.isMount), Qt::UserRole + 1); + variant.setValue(std::move(data)); + m_model->setData(index, variant, Qt::UserRole); +#else variant.setValue(data); m_model->setData(index, variant, Qt::UserRole); m_model->setData(index, QVariant(data.isMount), Qt::UserRole + 1); +#endif return; } } diff --git a/examples/dtksearch/search_client/CMakeLists.txt b/examples/dtksearch/search_client/CMakeLists.txt index bc2630f..ccf9861 100644 --- a/examples/dtksearch/search_client/CMakeLists.txt +++ b/examples/dtksearch/search_client/CMakeLists.txt @@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Core Gui REQUIRED) -find_package(Dtk COMPONENTS Widget Core Gui REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} COMPONENTS Widget Core Gui REQUIRED) file(GLOB PROJECT_SOURCES CONFIGURE_DEPENDS ./*.cpp ./*.h) @@ -22,10 +22,11 @@ target_include_directories(${PROJECT_NAME} PUBLIC include) target_link_libraries( ${PROJECT_NAME} PRIVATE - ${DtkWidget_LIBRARIES} - ${DtkCore_LIBRARIES} - dtksearch + Dtk${DTK_VERSION_MAJOR}::Core + Dtk${DTK_VERSION_MAJOR}::Gui + Dtk${DTK_VERSION_MAJOR}::Widget Qt${QT_VERSION_MAJOR}::Widgets - Qt${QT_VERSION_MAJOR}::Core + Qt${Qt_VERSION_MAJOR}::Core + dtk${DTK_VERSION_MAJOR}search ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ea14d90..aa8ad33 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/dtkburn/CMakeLists.txt b/src/dtkburn/CMakeLists.txt index 37da2e2..bb5c8f5 100644 --- a/src/dtkburn/CMakeLists.txt +++ b/src/dtkburn/CMakeLists.txt @@ -1,10 +1,11 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set(BIN_NAME dtkburn) +set(BIN_NAME dtk${DTK_VERSION_MAJOR}burn) +set(BASE_NAME dtkburn) -file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") +file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/*") file(GLOB_RECURSE SRCS "./*.h" "./*.cpp" @@ -15,7 +16,7 @@ add_library(${BIN_NAME} SHARED ${SRCS} ) -target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/) +target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/) set_target_properties(${BIN_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} @@ -33,7 +34,7 @@ target_include_directories(${BIN_NAME} PUBLIC target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${ISOBURN_LIBRARIES} ) @@ -46,16 +47,16 @@ set(PC_REQ_PRIVATE) set(PC_REQ_PUBLIC) # config pkgconfig file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # config cmake file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) # config qmake moudule file set(DTK_MODULE ${BIN_NAME}) set(DTK_DEPS "core dbus") set(QMKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "INSTALL DIR FOR qt pri files") -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/qt_lib_${BIN_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/qt_lib_${BASE_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_${BIN_NAME}.pri DESTINATION "${QMKSPECS_INSTALL_DIR}") diff --git a/src/dtkcompressor/3rdparty/CMakeLists.txt b/src/dtkcompressor/3rdparty/CMakeLists.txt index acea47a..abf55e1 100644 --- a/src/dtkcompressor/3rdparty/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/src/dtkcompressor/3rdparty/cli7zplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/cli7zplugin/CMakeLists.txt index 74948ee..766f4c3 100644 --- a/src/dtkcompressor/3rdparty/cli7zplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/cli7zplugin/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) include(FindPkgConfig) #指定头文件路径 @@ -28,6 +28,6 @@ add_library(${LIB_NAME} SHARED ${c_files} ${json_files} ${h_files}) link_directories(${LIBRARY_OUTPUT_PATH}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs interfacecompressor ) diff --git a/src/dtkcompressor/3rdparty/cli7zplugin/cli7zplugin.cpp b/src/dtkcompressor/3rdparty/cli7zplugin/cli7zplugin.cpp index d3c3023..8925488 100644 --- a/src/dtkcompressor/3rdparty/cli7zplugin/cli7zplugin.cpp +++ b/src/dtkcompressor/3rdparty/cli7zplugin/cli7zplugin.cpp @@ -248,18 +248,31 @@ bool Cli7zPlugin::readListLine(const QString &line) m_fileEntry.strFullPath = entryFilename; // 文件名称 - const QStringList pieces = entryFilename.split(QLatin1Char('/'), QString::SkipEmptyParts); + const QStringList pieces = entryFilename.split(QLatin1Char('/'), +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + ); m_fileEntry.strFileName = pieces.isEmpty() ? QString() : pieces.last(); } else if (line.startsWith(QLatin1String("Size = "))) { // 单文件实际大小 - m_fileEntry.qSize = line.midRef(7).trimmed().toLongLong(); + m_fileEntry.qSize = line.mid(7).trimmed().toLongLong(); // 压缩包内所有文件总大小 stArchiveData.qSize += m_fileEntry.qSize; } else if (line.startsWith(QLatin1String("Modified = "))) { // 文件最后修改时间 + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + m_fileEntry.uLastModifiedTime = QDateTime::fromString(line.mid(11).trimmed(), + QStringLiteral("yyyy-MM-dd hh:mm:ss")).toSecsSinceEpoch(); +#else m_fileEntry.uLastModifiedTime = QDateTime::fromString(line.mid(11).trimmed(), QStringLiteral("yyyy-MM-dd hh:mm:ss")).toTime_t(); +#endif + if (ArchiveTypeIso == m_archiveType || ArchiveTypeUdf == m_archiveType) { // 读取的压缩包是iso、udf文件,读到Modified的时候已经结束了 // QString name = m_fileEntry.strFullPath; @@ -276,7 +289,7 @@ bool Cli7zPlugin::readListLine(const QString &line) m_fileEntry.reset(); } } else if (line.startsWith(QLatin1String("Attributes = "))) { // 文件权限 - const QStringRef attributes = line.midRef(13).trimmed(); + const auto attributes = line.mid(13).trimmed(); // D开头为文件夹 if (attributes.startsWith(QLatin1Char('D'))) { @@ -303,7 +316,7 @@ bool Cli7zPlugin::readListLine(const QString &line) // clear m_fileEntry m_fileEntry.reset(); } else if (line.startsWith(QLatin1String("Folder = "))) { // 是否文件夹 - const QStringRef folder = line.midRef(9, 1); + const auto folder = line.mid(9, 1); // "+" 为文件夹 if (0 == folder.compare(QLatin1String("+"))) { diff --git a/src/dtkcompressor/3rdparty/clirarplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/clirarplugin/CMakeLists.txt index 8152621..49083d7 100644 --- a/src/dtkcompressor/3rdparty/clirarplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/clirarplugin/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #设置项目名称 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) include(FindPkgConfig) #指定头文件路径 @@ -28,6 +28,6 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) link_directories(${LIBRARY_OUTPUT_PATH}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs interfacecompressor ) diff --git a/src/dtkcompressor/3rdparty/clirarplugin/clirarplugin.cpp b/src/dtkcompressor/3rdparty/clirarplugin/clirarplugin.cpp index 72b64b9..23f486c 100644 --- a/src/dtkcompressor/3rdparty/clirarplugin/clirarplugin.cpp +++ b/src/dtkcompressor/3rdparty/clirarplugin/clirarplugin.cpp @@ -216,7 +216,13 @@ bool CliRarPlugin::readListLine(const QString &line) m_fileEntry.strFullPath = parseLineRight; // 文件名称 - const QStringList pieces = m_fileEntry.strFullPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + const QStringList pieces = m_fileEntry.strFullPath.split(QLatin1Char('/'), +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + ); m_fileEntry.strFileName = pieces.isEmpty() ? QString() : pieces.last(); } else if (parseLineLeft == QLatin1String("Type")) { if (parseLineRight == QLatin1String("Directory")) { @@ -240,8 +246,13 @@ bool CliRarPlugin::readListLine(const QString &line) } else if (parseLineLeft == QLatin1String("mtime")) { QString time = line.left((line.length() - 10)); // 文件最后修改时间 +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + m_fileEntry.uLastModifiedTime = QDateTime::fromString(time.right(time.length() - 14), + QStringLiteral("yyyy-MM-dd hh:mm:ss")).toSecsSinceEpoch(); +#else m_fileEntry.uLastModifiedTime = QDateTime::fromString(time.right(time.length() - 14), QStringLiteral("yyyy-MM-dd hh:mm:ss")).toTime_t(); +#endif QString name = m_fileEntry.strFullPath; diff --git a/src/dtkcompressor/3rdparty/cliunarchiverplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/cliunarchiverplugin/CMakeLists.txt index d302af4..51fb6ac 100644 --- a/src/dtkcompressor/3rdparty/cliunarchiverplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/cliunarchiverplugin/CMakeLists.txt @@ -8,7 +8,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) include(FindPkgConfig) @@ -30,6 +30,6 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} Qt{QT_VERSION_MAJOR}::Widgets - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs compressor-interface ) diff --git a/src/dtkcompressor/3rdparty/clizipplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/clizipplugin/CMakeLists.txt index b76dad1..749f3df 100644 --- a/src/dtkcompressor/3rdparty/clizipplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/clizipplugin/CMakeLists.txt @@ -13,17 +13,7 @@ find_package(PkgConfig REQUIRED) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui Widgets Network Concurrent Xml Svg) include(FindPkgConfig) -pkg_search_module(DtkWidget REQUIRED dtkwidget) -include_directories(${DtkWidget_INCLUDE_DIRS}) - -pkg_search_module(DtkCore REQUIRED dtkcore) -include_directories(${DtkCore_INCLUDE_DIRS}) - -set(LIBS_INCLUDE_DIRS - ${DtkWidget_LIBRARIES} - ${DtkCore_LIBRARIES} -) - +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core Widget) include_directories(${PROJECT_SOURCE_DIR}/../ChardetDetector) include_directories(${PROJECT_SOURCE_DIR}/../interface) @@ -39,5 +29,5 @@ include_directories(${PROJECT_SOURCE_DIR}) add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) target_link_libraries(${LIB_NAME} Qt${QT_VERSION_MAJOR}::Widgets) -target_link_libraries(${LIB_NAME} ${LIBS_INCLUDE_DIRS}) +target_link_libraries(${LIB_NAME} DTK${DTK_VERSION_MAJOR}::Core DTK${DTK_VERSION_MAJOR}::Widget) target_link_libraries( ${LIB_NAME} compressor-interface) diff --git a/src/dtkcompressor/3rdparty/interface/CMakeLists.txt b/src/dtkcompressor/3rdparty/interface/CMakeLists.txt index 09f29c7..7088112 100644 --- a/src/dtkcompressor/3rdparty/interface/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/interface/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -11,7 +11,11 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) +if(BUILD_WITH_QT6) + find_package(Qt${QT_VERSION_MAJOR}Core5Compat REQUIRED) +endif() + include(FindPkgConfig) pkg_search_module(GOBJECT REQUIRED gobject-2.0) @@ -21,7 +25,11 @@ file(GLOB_RECURSE c_files RELATIVE ${PROJECT_SOURCE_DIR} *.cpp) file(GLOB_RECURSE h_files RELATIVE ${PROJECT_SOURCE_DIR} *.h) #指定头文件路径 -include_directories(${KF5Codecs_INCLUDE_DIRS}) +if(BUILD_WITH_QT6) + include_directories(${KF6Codecs_INCLUDE_DIRS}) +else() + include_directories(${KF5Codecs_INCLUDE_DIRS}) +endif() include_directories(${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_SOURCE_DIR}/archiveinterface) include_directories(${PROJECT_SOURCE_DIR}/plugin) @@ -58,7 +66,10 @@ add_library(${LIB_NAME} SHARED ${h_files} ${c_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs chardetdetectorcompressor ) +if(BUILD_WITH_QT6) + target_link_libraries(${LIB_NAME} Qt${QT_VERSION_MAJOR}::Core5Compat) +endif() diff --git a/src/dtkcompressor/3rdparty/interface/archiveinterface/cliinterface.cpp b/src/dtkcompressor/3rdparty/interface/archiveinterface/cliinterface.cpp index 14b9388..f79bf05 100644 --- a/src/dtkcompressor/3rdparty/interface/archiveinterface/cliinterface.cpp +++ b/src/dtkcompressor/3rdparty/interface/archiveinterface/cliinterface.cpp @@ -271,7 +271,11 @@ PluginFinishType CliInterface::addFiles(const QList &files, const Com QDir::setCurrent(m_extractTempDir->path()); // 添加临时路径中的第一层文件(夹) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + fileList.append(destinationPath.split(QLatin1Char('/'), Qt::SkipEmptyParts).at(0)); +#else fileList.append(destinationPath.split(QLatin1Char('/'), QString::SkipEmptyParts).at(0)); +#endif } else { // 压缩、向压缩包第一层文件追加压缩 QList tempfiles = files; // 获取待压缩的文件 @@ -622,7 +626,7 @@ void CliInterface::handleProgress(const QString &line) if (m_process && m_process->program().at(0).contains("7z")) { // 解析7z相关进度、文件名 int pos = line.indexOf(QLatin1Char('%')); if (pos > 1) { - int percentage = line.midRef(pos - 3, 3).toInt(); + int percentage = line.mid(pos - 3, 3).toInt(); if (percentage > 0) { if (line.contains("\b\b\b\b") == true) { QString strfilename; @@ -640,7 +644,7 @@ void CliInterface::handleProgress(const QString &line) } if (count > 0) { - strfilename = line.midRef(count + 2).toString(); // 文件名 + strfilename = line.mid(count + 2); // 文件名 // 右键 解压到当前文件夹 if (m_workStatus == WT_Extract && !m_extractOptions.bExistList && m_indexOfListRootEntry == 0) { m_indexOfListRootEntry++; @@ -673,18 +677,15 @@ void CliInterface::handleProgress(const QString &line) } else if (m_process && m_process->program().at(0).contains("unrar")) { // 解析rar相关进度、文件名 int pos = line.indexOf(QLatin1Char('%')); if (pos > 1) { - int percentage = line.midRef(pos - 3, 3).toInt(); + int percentage = line.mid(pos - 3, 3).toInt(); emit signalprogress(percentage); } - QStringRef strfilename; QString fileName; if (line.startsWith("Extracting")) { // 普通文件 - strfilename = line.midRef(12, pos - 24); - fileName = strfilename.toString(); + fileName = line.mid(12, pos - 24); } else if (line.startsWith("Creating")) { // 文件夹 - strfilename = line.midRef(10, pos - 22); - fileName = strfilename.toString(); + fileName = line.mid(10, pos - 22); } if (!fileName.isEmpty()) { @@ -1026,7 +1027,7 @@ void CliInterface::getChildProcessId(qint64 processId, const QStringList &listKe for (const QByteArray &line : qAsConst(lines)) { for (const QString &strKey : qAsConst(listKey)) { - QString str = QString("-%1(").arg(strKey); + QByteArray str = QString("-%1(").arg(strKey).toUtf8(); int iCount = line.count(str.toStdString().c_str()); // 多个子进程都需要获取到 int iIndex = 0; for (int i = 0; i < iCount; ++i) { diff --git a/src/dtkcompressor/3rdparty/interface/common.cpp b/src/dtkcompressor/3rdparty/interface/common.cpp index 395df75..980aefe 100644 --- a/src/dtkcompressor/3rdparty/interface/common.cpp +++ b/src/dtkcompressor/3rdparty/interface/common.cpp @@ -55,7 +55,7 @@ break; default: // full-width character, emoji, 常用标点, 拉丁文补充1,天城文补充,CJK符号和标点符号(如:【】) - if ((ch.unicode() >= 0xff00 && ch <= 0xffef) + if ((ch.unicode() >= 0xff00 && ch <= QChar(0xffef)) || (ch.unicode() >= 0x2600 && ch.unicode() <= 0x27ff) || (ch.unicode() >= 0x2000 && ch.unicode() <= 0x206f) || (ch.unicode() >= 0x80 && ch.unicode() <= 0xff) @@ -132,7 +132,7 @@ QByteArray Common::detectEncode(const QByteArray &data, const QString &fileName) QString detectedResult; float chardetconfidence = 0; QString str(data); - bool bFlag = str.contains(QRegExp("[\\x4e00-\\x9fa5]+")); //匹配的是中文 + bool bFlag = str.contains(QRegularExpression("[\\x4e00-\\x9fa5]+")); //匹配的是中文 if (bFlag) { QByteArray newData = data; newData += "为增加探测率保留的中文"; //手动添加中文字符,避免字符长度太短而导致判断编码错误 @@ -273,7 +273,12 @@ QByteArray Common::textCodecDetect(const QByteArray &data, const QString &fileNa QTextStream stream(data); pattern.setPatternOptions(QRegularExpression::DontCaptureOption | QRegularExpression::CaseInsensitiveOption); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + stream.setEncoding(QStringConverter::Latin1); +#else stream.setCodec("latin1"); +#endif while (!stream.atEnd()) { const QString &_data = stream.readLine(); diff --git a/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory.cpp b/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory.cpp index 4255875..0715d95 100644 --- a/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory.cpp +++ b/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory.cpp @@ -81,7 +81,7 @@ void KPluginFactory::registerPlugin(const QString &keyword, const QMetaObject *m } } - d->createInstanceHash.insertMulti(keyword, KPluginFactoryPrivate::Plugin(metaObject, instanceFunction)); + d->createInstanceHash.insert(keyword, KPluginFactoryPrivate::Plugin(metaObject, instanceFunction)); } } diff --git a/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory_p.h b/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory_p.h index 317b4e0..cecf1e2 100644 --- a/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory_p.h +++ b/src/dtkcompressor/3rdparty/interface/plugin/kpluginfactory_p.h @@ -37,7 +37,7 @@ class KPluginFactoryPrivate { } - QHash createInstanceHash; + QMultiHash createInstanceHash; QString catalogName; bool catalogInitialized; diff --git a/src/dtkcompressor/3rdparty/interface/plugin/kpluginloader.cpp b/src/dtkcompressor/3rdparty/interface/plugin/kpluginloader.cpp index c1b730d..7ecde45 100644 --- a/src/dtkcompressor/3rdparty/interface/plugin/kpluginloader.cpp +++ b/src/dtkcompressor/3rdparty/interface/plugin/kpluginloader.cpp @@ -191,7 +191,18 @@ bool KPluginLoader::load() Q_ASSERT(!fileName().isEmpty()); QLibrary lib(fileName()); + + // Note: Prior to Qt 6.6, this function would return true even without + // a call to load() if another QLibrary object on the same library had + // caused it to be loaded. +#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0) + lib.load(); + if (!lib.load()) { + return false; + } +#else Q_ASSERT(lib.isLoaded()); // already loaded by QPluginLoader::load() +#endif // TODO: this messes up KPluginLoader::errorString(): it will change from unknown error to could not resolve kde_plugin_version quint32 *version = reinterpret_cast(lib.resolve("kde_plugin_version")); diff --git a/src/dtkcompressor/3rdparty/interface/plugin/kpluginmetadata.cpp b/src/dtkcompressor/3rdparty/interface/plugin/kpluginmetadata.cpp index 332aa17..699c2d8 100644 --- a/src/dtkcompressor/3rdparty/interface/plugin/kpluginmetadata.cpp +++ b/src/dtkcompressor/3rdparty/interface/plugin/kpluginmetadata.cpp @@ -167,8 +167,11 @@ QJsonValue KPluginMetaData::readTranslatedValue(const QJsonObject &jo, const QSt if (it != jo.constEnd()) { return it.value(); } - +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString language = languageWithCountry.mid(0, languageWithCountry.indexOf(QLatin1Char('_'))); +#else const QStringRef language = languageWithCountry.midRef(0, languageWithCountry.indexOf(QLatin1Char('_'))); +#endif it = jo.constFind(key + QLatin1Char('[') + language + QLatin1Char(']')); if (it != jo.constEnd()) { return it.value(); diff --git a/src/dtkcompressor/3rdparty/interface/process/kprocess.cpp b/src/dtkcompressor/3rdparty/interface/process/kprocess.cpp index 6df5667..2f92c2e 100644 --- a/src/dtkcompressor/3rdparty/interface/process/kprocess.cpp +++ b/src/dtkcompressor/3rdparty/interface/process/kprocess.cpp @@ -403,10 +403,16 @@ int KProcess::startDetached(const QStringList &argv) int KProcess::pid() const { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + auto pid = QProcess::processId(); +#else + auto pid = QProcess::pid(); +#endif + #ifdef Q_OS_UNIX - return (int) QProcess::pid(); + return pid; #else - return QProcess::pid() ? QProcess::pid()->dwProcessId : 0; + return pid ? QProcess::pid()->dwProcessId : 0; #endif } diff --git a/src/dtkcompressor/3rdparty/interface/process/kpty.cpp b/src/dtkcompressor/3rdparty/interface/process/kpty.cpp index d015540..2bc6944 100644 --- a/src/dtkcompressor/3rdparty/interface/process/kpty.cpp +++ b/src/dtkcompressor/3rdparty/interface/process/kpty.cpp @@ -338,7 +338,7 @@ bool KPty::open() !d->chownpty(true)) { qWarning() << "chownpty failed for device " << ptyName << "::" << d->ttyName - << "\nThis means the communication can be eavesdropped." << endl; + << "\nThis means the communication can be eavesdropped." << Qt::endl; } #if defined (HAVE__GETPTY) || defined (HAVE_GRANTPT) diff --git a/src/dtkcompressor/3rdparty/interface/process/kptyprocess.cpp b/src/dtkcompressor/3rdparty/interface/process/kptyprocess.cpp index b61fd53..1f750d0 100644 --- a/src/dtkcompressor/3rdparty/interface/process/kptyprocess.cpp +++ b/src/dtkcompressor/3rdparty/interface/process/kptyprocess.cpp @@ -119,6 +119,7 @@ KPtyDevice *KPtyProcess::pty() const return d->pty; } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void KPtyProcess::setupChildProcess() { Q_D(KPtyProcess); @@ -140,5 +141,6 @@ void KPtyProcess::setupChildProcess() KProcess::setupChildProcess(); } +#endif //#include "kptyprocess.moc" diff --git a/src/dtkcompressor/3rdparty/interface/process/kptyprocess.h b/src/dtkcompressor/3rdparty/interface/process/kptyprocess.h index ae1166e..f142d75 100644 --- a/src/dtkcompressor/3rdparty/interface/process/kptyprocess.h +++ b/src/dtkcompressor/3rdparty/interface/process/kptyprocess.h @@ -141,10 +141,12 @@ class KPtyProcess : public KProcess KPtyDevice *pty() const; protected: +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) /** * @reimp */ void setupChildProcess() override; +#endif private: Q_PRIVATE_SLOT(d_func(), void _k_onStateChanged(QProcess::ProcessState)) diff --git a/src/dtkcompressor/3rdparty/libarchive/libarchive/CMakeLists.txt b/src/dtkcompressor/3rdparty/libarchive/libarchive/CMakeLists.txt index 5491f53..5f27288 100644 --- a/src/dtkcompressor/3rdparty/libarchive/libarchive/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libarchive/libarchive/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) find_package(LibArchive REQUIRED) include(FindPkgConfig) @@ -39,7 +39,7 @@ link_directories(${LIBRARY_OUTPUT_PATH}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs archive # ${GOBJECT_LIBRARIES} interfacecompressor diff --git a/src/dtkcompressor/3rdparty/libarchive/libarchive/libarchiveplugin.cpp b/src/dtkcompressor/3rdparty/libarchive/libarchive/libarchiveplugin.cpp index 6784c5c..5c348ef 100644 --- a/src/dtkcompressor/3rdparty/libarchive/libarchive/libarchiveplugin.cpp +++ b/src/dtkcompressor/3rdparty/libarchive/libarchive/libarchiveplugin.cpp @@ -725,7 +725,14 @@ void LibarchivePlugin::emitEntryForIndex(archive_entry *aentry) m_archiveEntryStat.strFullPath = entryName; // 文件名 - const QStringList pieces = m_archiveEntryStat.strFullPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + const QStringList pieces = m_archiveEntryStat.strFullPath.split( + QLatin1Char('/'), +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + ); m_archiveEntryStat.strFileName = pieces.last(); // 是否为文件夹 diff --git a/src/dtkcompressor/3rdparty/libarchive/readonlylibarchiveplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libarchive/readonlylibarchiveplugin/CMakeLists.txt index 6a9ed4f..0137fdc 100644 --- a/src/dtkcompressor/3rdparty/libarchive/readonlylibarchiveplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libarchive/readonlylibarchiveplugin/CMakeLists.txt @@ -6,8 +6,8 @@ set(LIB_NAME readonlylibarchiveplugincompressor) project(${LIB_NAME}) #查找依赖关系的包信息 -find_package(KF5Codecs REQUIRED) -find_package(KF5Archive) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Archive) #指定头文件路径 include_directories(${PROJECT_SOURCE_DIR}) @@ -26,8 +26,8 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Archive - KF5::Codecs + KF${KF_VERSION_MAJOR}::Archive + KF${KF_VERSION_MAJOR}::Codecs archivecompressor ) diff --git a/src/dtkcompressor/3rdparty/libarchive/readwritelibarchiveplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libarchive/readwritelibarchiveplugin/CMakeLists.txt index aa843d8..05c4aeb 100644 --- a/src/dtkcompressor/3rdparty/libarchive/readwritelibarchiveplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libarchive/readwritelibarchiveplugin/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) include(FindPkgConfig) #指定头文件路径 @@ -27,7 +27,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs archivecompressor ) diff --git a/src/dtkcompressor/3rdparty/libminizipplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libminizipplugin/CMakeLists.txt index 3d272b1..840093a 100644 --- a/src/dtkcompressor/3rdparty/libminizipplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libminizipplugin/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later #定义cmake版本 @@ -10,7 +10,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) find_package(ZLIB REQUIRED) include(FindPkgConfig) @@ -30,7 +30,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${json_files} ${h_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs interfacecompressor minizip ) diff --git a/src/dtkcompressor/3rdparty/libminizipplugin/libminizipplugin.cpp b/src/dtkcompressor/3rdparty/libminizipplugin/libminizipplugin.cpp index 736cea9..08c1b7e 100644 --- a/src/dtkcompressor/3rdparty/libminizipplugin/libminizipplugin.cpp +++ b/src/dtkcompressor/3rdparty/libminizipplugin/libminizipplugin.cpp @@ -249,7 +249,14 @@ bool LibminizipPlugin::handleArchiveData(unzFile zipfile) // 全路径 entry.strFullPath = name; // 文件名 - const QStringList pieces = entry.strFullPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + const QStringList pieces = entry.strFullPath.split( + QLatin1Char('/'), +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + ); entry.strFileName = pieces.isEmpty() ? QString() : pieces.last(); // 是否是文件夹 entry.isDirectory = name.endsWith(QDir::separator()); @@ -265,7 +272,11 @@ bool LibminizipPlugin::handleArchiveData(unzFile zipfile) QDateTime datetime; datetime.setDate(QDate(int(file_info.tmu_date.tm_year), int(file_info.tmu_date.tm_mon + 1), int(file_info.tmu_date.tm_mday))); datetime.setTime(QTime(int(file_info.tmu_date.tm_hour), int(file_info.tmu_date.tm_min), int(file_info.tmu_date.tm_sec))); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + entry.uLastModifiedTime = uint(datetime.toSecsSinceEpoch()); +#else entry.uLastModifiedTime = uint(datetime.toTime_t()); +#endif handleEntry(entry); diff --git a/src/dtkcompressor/3rdparty/libpigzplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libpigzplugin/CMakeLists.txt index 7227c3a..082d17f 100644 --- a/src/dtkcompressor/3rdparty/libpigzplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libpigzplugin/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) include(FindPkgConfig) #指定头文件路径 diff --git a/src/dtkcompressor/3rdparty/libpigzplugin/libpigzplugin.cpp b/src/dtkcompressor/3rdparty/libpigzplugin/libpigzplugin.cpp index f599e17..0ac0a36 100644 --- a/src/dtkcompressor/3rdparty/libpigzplugin/libpigzplugin.cpp +++ b/src/dtkcompressor/3rdparty/libpigzplugin/libpigzplugin.cpp @@ -280,7 +280,7 @@ void LibPigzPlugin::getChildProcessId(qint64 processId, const QStringList &listK if (lines.count() > 0 && lines[0].contains(strProcessId.toUtf8())) { // 从包含有processId这一行开始处理 for (const QByteArray &line : qAsConst(lines)) { for (const QString &strKey : qAsConst(listKey)) { - QString str = QString("-%1(").arg(strKey); + QByteArray str = QString("-%1(").arg(strKey).toUtf8(); int iCount = line.count(str.toStdString().c_str()); // 多个子进程都需要获取到 int iIndex = 0; for (int i = 0; i < iCount; ++i) { diff --git a/src/dtkcompressor/3rdparty/libsinglefileplugin/bz2plugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libsinglefileplugin/bz2plugin/CMakeLists.txt index ce210c0..f697960 100644 --- a/src/dtkcompressor/3rdparty/libsinglefileplugin/bz2plugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libsinglefileplugin/bz2plugin/CMakeLists.txt @@ -7,8 +7,8 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) -#find_package(KF5Archive) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) +#find_package(KF${KF_VERSION_MAJOR}Archive) include(FindPkgConfig) #指定头文件路径 @@ -28,7 +28,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs -# KF5::Archive + KF${KF_VERSION_MAJOR}::Codecs +# KF${KF_VERSION_MAJOR}::Archive singlefilecompressor ) diff --git a/src/dtkcompressor/3rdparty/libsinglefileplugin/gzplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libsinglefileplugin/gzplugin/CMakeLists.txt index 6544434..2cd20f5 100644 --- a/src/dtkcompressor/3rdparty/libsinglefileplugin/gzplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libsinglefileplugin/gzplugin/CMakeLists.txt @@ -7,8 +7,8 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) -#find_package(KF5Archive) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) +#find_package(KF${KF_VERSION_MAJOR}Archive) include(FindPkgConfig) #指定头文件路径 @@ -28,7 +28,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs -# KF5::Archive + KF${KF_VERSION_MAJOR}::Codecs +# KF${KF_VERSION_MAJOR}::Archive singlefilecompressor ) diff --git a/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/CMakeLists.txt b/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/CMakeLists.txt index d72aeb0..037e84b 100644 --- a/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/CMakeLists.txt @@ -8,7 +8,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) #find_package(LibArchive) -find_package(KF5Archive) +find_package(KF${KF_VERSION_MAJOR}Archive) include(FindPkgConfig) @@ -26,6 +26,6 @@ file(GLOB_RECURSE h_files RELATIVE ${PROJECT_SOURCE_DIR} *.h) #生成动静态库 add_library(${LIB_NAME} STATIC ${h_files} ${c_files}) target_link_libraries(${LIB_NAME} - KF5::Archive + KF${KF_VERSION_MAJOR}::Archive interfacecompressor ) diff --git a/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/singlefileplugin.cpp b/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/singlefileplugin.cpp index 1106765..4a1327e 100644 --- a/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/singlefileplugin.cpp +++ b/src/dtkcompressor/3rdparty/libsinglefileplugin/singlefile/singlefileplugin.cpp @@ -33,8 +33,14 @@ #include #include +#include + +#if KARCHIVE_VERSION_MAJOR >= 6 +#include +#else #include -//#include +#endif + #include #include @@ -42,6 +48,7 @@ LibSingleFileInterface::LibSingleFileInterface(QObject *parent, const QVariantList &args) : ReadOnlyArchiveInterface(parent, args) { + } LibSingleFileInterface::~LibSingleFileInterface() @@ -129,7 +136,12 @@ PluginFinishType LibSingleFileInterface::extractFiles(const QList &fi } // 打开压缩设备,写入数据 +#if KARCHIVE_VERSION_MAJOR >= 6 + KCompressionDevice *device = new KCompressionDevice(m_strArchiveName, KCompressionDevice::compressionTypeForMimeType(m_mimeType)); +#else KCompressionDevice *device = new KCompressionDevice(m_strArchiveName, KFilterDev::compressionTypeForMimeType(m_mimeType)); +#endif + if (!device) { emit signalFileWriteErrorName(QFileInfo(outputFile.fileName()).fileName()); m_eErrorType = ET_FileWriteError; diff --git a/src/dtkcompressor/3rdparty/libsinglefileplugin/xzplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libsinglefileplugin/xzplugin/CMakeLists.txt index a6fb544..610f221 100644 --- a/src/dtkcompressor/3rdparty/libsinglefileplugin/xzplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libsinglefileplugin/xzplugin/CMakeLists.txt @@ -7,8 +7,8 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) -#find_package(KF5Archive) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) +#find_package(KF${KF_VERSION_MAJOR}Archive) include(FindPkgConfig) #指定头文件路径 @@ -28,7 +28,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${h_files} ${json_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs -# KF5::Archive + KF${KF_VERSION_MAJOR}::Codecs +# KF${KF_VERSION_MAJOR}::Archive singlefilecompressor ) diff --git a/src/dtkcompressor/3rdparty/libzipplugin/CMakeLists.txt b/src/dtkcompressor/3rdparty/libzipplugin/CMakeLists.txt index 14141e2..131e428 100644 --- a/src/dtkcompressor/3rdparty/libzipplugin/CMakeLists.txt +++ b/src/dtkcompressor/3rdparty/libzipplugin/CMakeLists.txt @@ -7,7 +7,7 @@ project(${LIB_NAME}) #查找依赖关系的包信息 find_package(PkgConfig REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) find_package(ZLIB REQUIRED) include(FindPkgConfig) @@ -28,7 +28,7 @@ add_library(${LIB_NAME} SHARED ${c_files} ${json_files} ${h_files}) #链接动静态库 target_link_libraries(${LIB_NAME} - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs interfacecompressor zip ) diff --git a/src/dtkcompressor/3rdparty/libzipplugin/libzipplugin.cpp b/src/dtkcompressor/3rdparty/libzipplugin/libzipplugin.cpp index 160d5e5..afaa607 100644 --- a/src/dtkcompressor/3rdparty/libzipplugin/libzipplugin.cpp +++ b/src/dtkcompressor/3rdparty/libzipplugin/libzipplugin.cpp @@ -668,7 +668,13 @@ void LibzipPlugin::statBuffer2FileEntry(const zip_stat_t &statBuffer, FileEntry // 文件名 if (statBuffer.valid & ZIP_STAT_NAME) { - const QStringList pieces = entry.strFullPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + const QStringList pieces = entry.strFullPath.split(QLatin1Char('/'), +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Qt::SkipEmptyParts +#else + QString::SkipEmptyParts +#endif + ); entry.strFileName = pieces.isEmpty() ? QString() : pieces.last(); } diff --git a/src/dtkcompressor/CMakeLists.txt b/src/dtkcompressor/CMakeLists.txt index 497bdfb..7e5e953 100644 --- a/src/dtkcompressor/CMakeLists.txt +++ b/src/dtkcompressor/CMakeLists.txt @@ -1,10 +1,11 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set(BIN_NAME dtkcompressor) +set(BIN_NAME dtk${DTK_VERSION_MAJOR}compressor) +set(BASE_MAME dtkcompressor) -file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") +file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BASE_MAME}/*") file(GLOB_RECURSE SRCS "./archivemanager/*.h" "./archivemanager/*.cpp" @@ -20,15 +21,15 @@ if(NOT DEFINED HFILES_OUTPUT_PATH) set(HFILES_OUTPUT_PATH ${CMAKE_BINARY_DIR}/include) endif() add_subdirectory(3rdparty) -find_package(KF5Codecs REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) find_package(PkgConfig REQUIRED) -find_package(DtkCore REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED Core) if(QT_VERSION_MAJOR EQUAL "6") find_package(Qt6Core5Compat REQUIRED) endif() -target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/) -target_include_directories(${BIN_NAME} PUBLIC ${KF5Codecs_INCLUDE_DIRS}) +target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BASE_MAME}/) +target_include_directories(${BIN_NAME} PUBLIC ${KF${KF_VERSION_MAJOR}Codecs_INCLUDE_DIRS}) set_target_properties(${BIN_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} @@ -40,16 +41,16 @@ if(QT_VERSION_MAJOR EQUAL "6") target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt6::Core5Compat - ${DtkCore_LIBRARIES} + Dtk6::Core interfacecompressor - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs ) else() target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core - ${DtkCore_LIBRARIES} + Dtk5::Core interfacecompressor - KF5::Codecs + KF${KF_VERSION_MAJOR}::Codecs ) endif() @@ -67,23 +68,23 @@ set(PC_REQ_PRIVATE) set(PC_REQ_PUBLIC) # config pkgconfig file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_MAME}/${BASE_MAME}.pc.in ${BIN_NAME}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # config cmake file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_MAME}/${BASE_MAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) # config qmake moudule file set(DTK_MODULE ${BIN_NAME}) set(DTK_DEPS "core") set(QMKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "INSTALL DIR FOR qt pri files") -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/qt_lib_${BIN_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_MAME}/qt_lib_${BASE_MAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_${BIN_NAME}.pri DESTINATION "${QMKSPECS_INSTALL_DIR}") ## plugin install if(NOT DEFINED DTK_COMPRESSOR_PLUGIN_PATH) - set(DTK_COMPRESSOR_PLUGIN_PATH ${CMAKE_INSTALL_LIBDIR}/dtkcompressor/plugins) + set(DTK_COMPRESSOR_PLUGIN_PATH ${CMAKE_INSTALL_LIBDIR}/${BIN_NAME}/plugins) endif() if (CMAKE_BUILD_TYPE STREQUAL "Debug") diff --git a/src/dtkcompressor/archivemanager/pluginmanager.cpp b/src/dtkcompressor/archivemanager/pluginmanager.cpp index 735c7d2..37fe306 100644 --- a/src/dtkcompressor/archivemanager/pluginmanager.cpp +++ b/src/dtkcompressor/archivemanager/pluginmanager.cpp @@ -232,7 +232,11 @@ void PluginManager::loadPlugins() { QString path = QLibraryInfo::location(QLibraryInfo::LibrariesPath); QCoreApplication::addLibraryPath(path); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("dtk6compressor/plugins")); +#else const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("dtkcompressor/plugins")); +#endif QSet addedPlugins; for (const KPluginMetaData &metaData : plugins) { const auto pluginId = metaData.pluginId(); diff --git a/src/dtkio/CMakeLists.txt b/src/dtkio/CMakeLists.txt index 7d0ea75..78ad852 100644 --- a/src/dtkio/CMakeLists.txt +++ b/src/dtkio/CMakeLists.txt @@ -1,10 +1,11 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set(BIN_NAME dtkio) +set(BIN_NAME dtk${DTK_VERSION_MAJOR}io) +set(BASE_NAME dtkio) -file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") +file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/*") file(GLOB_RECURSE SRCS "./*.h" "./*.cpp" @@ -15,7 +16,7 @@ add_library(${BIN_NAME} SHARED ${SRCS} ) -target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/) +target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/) set_target_properties(${BIN_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} @@ -23,7 +24,7 @@ set_target_properties(${BIN_NAME} PROPERTIES target_compile_definitions(${BIN_NAME} PRIVATE VERSION="${CMAKE_PROJECT_VERSION}") -find_package(DtkCore REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(GLIB REQUIRED glib-2.0) pkg_check_modules(GIOUNIX REQUIRED gio-unix-2.0) @@ -36,7 +37,7 @@ target_include_directories(${BIN_NAME} PUBLIC target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${GLIB_LIBRARIES} ${GIOUNIX_LIBRARIES} ) @@ -50,16 +51,16 @@ set(PC_REQ_PRIVATE) set(PC_REQ_PUBLIC) # config pkgconfig file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # config cmake file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) # config qmake moudule file set(DTK_MODULE ${BIN_NAME}) set(DTK_DEPS "core dbus") set(QMKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "INSTALL DIR FOR qt pri files") -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/qt_lib_${BIN_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/qt_lib_${BASE_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_${BIN_NAME}.pri DESTINATION "${QMKSPECS_INSTALL_DIR}") diff --git a/src/dtkmount/CMakeLists.txt b/src/dtkmount/CMakeLists.txt index f6a5967..359b685 100644 --- a/src/dtkmount/CMakeLists.txt +++ b/src/dtkmount/CMakeLists.txt @@ -1,18 +1,19 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set(BIN_NAME dtkmount) +set(BIN_NAME dtk${DTK_VERSION_MAJOR}mount) +set(BASE_NAME dtkmount) -file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") +file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/*") file(GLOB_RECURSE SRCS "./*.h" "./*.cpp" ) # using classes generated from D-Bus XML -set(UDISKS2_OBJECT_XML ${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/org.freedesktop.UDisks2.ObjectManager.xml) -set(UDISKS2_XML ${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/org.freedesktop.UDisks2.xml) +set(UDISKS2_OBJECT_XML ${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/org.freedesktop.UDisks2.ObjectManager.xml) +set(UDISKS2_XML ${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/org.freedesktop.UDisks2.xml) set_source_files_properties( ${UDISKS2_XML} PROPERTIES NO_NAMESPACE true INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/dbus/udisks2_dbus_common.h @@ -30,7 +31,7 @@ add_library(${BIN_NAME} SHARED ${SRCS} ) -target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/) +target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/) set_target_properties(${BIN_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} @@ -55,7 +56,7 @@ target_include_directories(${BIN_NAME} PUBLIC target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${GLIB_LIBRARIES} ${GIOUNIX_LIBRARIES} ${LIBSECRET_LIBRARIES} @@ -70,16 +71,16 @@ set(PC_REQ_PRIVATE) set(PC_REQ_PUBLIC) # config pkgconfig file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # config cmake file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) # config qmake moudule file set(DTK_MODULE ${BIN_NAME}) set(DTK_DEPS "core dbus") set(QMKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "INSTALL DIR FOR qt pri files") -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/qt_lib_${BIN_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/qt_lib_${BASE_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_${BIN_NAME}.pri DESTINATION "${QMKSPECS_INSTALL_DIR}") diff --git a/src/dtksearch/CMakeLists.txt b/src/dtksearch/CMakeLists.txt index 41cbba3..1557584 100644 --- a/src/dtksearch/CMakeLists.txt +++ b/src/dtksearch/CMakeLists.txt @@ -1,10 +1,11 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later -set(BIN_NAME dtksearch) +set(BIN_NAME dtk${DTK_VERSION_MAJOR}search) +set(BASE_NAME dtksearch) -file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/*") +file(GLOB_RECURSE INCLUDE_FILES "${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/*") file(GLOB_RECURSE SRCS "./*.h" "./*.cpp" @@ -23,7 +24,7 @@ add_library(${BIN_NAME} SHARED ${QRC_RESOURCES} ) -target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BIN_NAME}/) +target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include/${BASE_NAME}/) set_target_properties(${BIN_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} @@ -58,16 +59,16 @@ set(PC_REQ_PRIVATE) set(PC_REQ_PUBLIC) # config pkgconfig file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}.pc.in ${BIN_NAME}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # config cmake file -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/${BASE_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME}) # config qmake moudule file set(DTK_MODULE ${BIN_NAME}) set(DTK_DEPS "core dbus") set(QMKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "INSTALL DIR FOR qt pri files") -configure_file(${PROJECT_SOURCE_DIR}/misc/${BIN_NAME}/qt_lib_${BIN_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/misc/${BASE_NAME}/qt_lib_${BASE_NAME}.pri.in qt_lib_${BIN_NAME}.pri @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_lib_${BIN_NAME}.pri DESTINATION "${QMKSPECS_INSTALL_DIR}") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5b5db3d..d13c42a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/tests/dtkburn/CMakeLists.txt b/tests/dtkburn/CMakeLists.txt index 2591591..c25ce1d 100644 --- a/tests/dtkburn/CMakeLists.txt +++ b/tests/dtkburn/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -36,7 +36,7 @@ target_include_directories(${BIN_NAME} PRIVATE target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${ISOBURN_LIBRARIES} -lpthread -lgcov diff --git a/tests/dtkcompressor/CMakeLists.txt b/tests/dtkcompressor/CMakeLists.txt index 189f252..b979854 100644 --- a/tests/dtkcompressor/CMakeLists.txt +++ b/tests/dtkcompressor/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -28,8 +28,8 @@ add_executable(${BIN_NAME} ) find_package(PkgConfig REQUIRED) -find_package(DtkCore REQUIRED) -find_package(KF5Codecs REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR}Core REQUIRED) +find_package(KF${KF_VERSION_MAJOR}Codecs REQUIRED) find_package(ZLIB REQUIRED) target_include_directories(${BIN_NAME} PUBLIC @@ -39,8 +39,8 @@ target_include_directories(${BIN_NAME} PUBLIC ) target_link_libraries(${BIN_NAME} PRIVATE - ${DtkCore_LIBRARIES} - KF5::Codecs + Dtk${DTK_VERSION_MAJOR}::Core + KF${KF_VERSION_MAJOR}::Codecs zip interfacecompressor -lpthread diff --git a/tests/dtkio/CMakeLists.txt b/tests/dtkio/CMakeLists.txt index 69d43e1..48c82f3 100644 --- a/tests/dtkio/CMakeLists.txt +++ b/tests/dtkio/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -40,7 +40,7 @@ target_include_directories(${BIN_NAME} PRIVATE target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${GLIB_LIBRARIES} ${GIOUNIX_LIBRARIES} -lpthread diff --git a/tests/dtkio/ut_denumerator.cpp b/tests/dtkio/ut_denumerator.cpp index 83ce83a..7a2cdeb 100644 --- a/tests/dtkio/ut_denumerator.cpp +++ b/tests/dtkio/ut_denumerator.cpp @@ -61,10 +61,20 @@ TEST_F(TestDEnumerator, hasnext) //test false { m_enumerator->d->enumeratorInited = true; - m_stub.set_lamda(ADDR(QStack, isEmpty), []() { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + using IsEmptyFunc = bool (QStack::*)() const; + IsEmptyFunc isEmptyFunc = &QStack::isEmpty; + m_stub.set_lamda(isEmptyFunc, []()->bool { __DBG_STUB_INVOKE__ return true; }); +#else + m_stub.set_lamda(ADDR(QStack, isEmpty), []()->bool { + __DBG_STUB_INVOKE__ + return true; + }); +#endif + EXPECT_FALSE(m_enumerator->hasNext().value()); } //test true @@ -74,11 +84,29 @@ TEST_F(TestDEnumerator, hasnext) __DBG_STUB_INVOKE__ return true; }); - m_stub.set_lamda(ADDR(QStack, isEmpty), []() { + + // Force set isEmpty() return true, d->stackEnumerator.top() return undefined pointer +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + using IsEmptyFunc = bool (QStack::*)() const; + IsEmptyFunc isEmptyFunc = &QStack::isEmpty; + m_stub.set_lamda(isEmptyFunc, []()->bool { __DBG_STUB_INVOKE__ return false; }); + GFileEnumerator* tmpPtr = nullptr; + using TopFunc = GFileEnumerator* & (QStack::*)(); + TopFunc topFunc = &QStack::top; + m_stub.set_lamda(topFunc, [&]()-> GFileEnumerator* &{ + __DBG_STUB_INVOKE__ + return tmpPtr; + }); +#else + m_stub.set_lamda(ADDR(QStack, isEmpty), []()->bool { + __DBG_STUB_INVOKE__ + return false; + }); +#endif m_enumerator->d->iteratorflags = IteratorFlag::NoIteratorFlags; m_stub.set_lamda(g_file_enumerator_iterate, [](GFileEnumerator *direnum, GFileInfo **out_info, GFile **out_child, GCancellable *cancellable, GError **error) { Q_UNUSED(direnum); diff --git a/tests/dtkio/ut_dfile.cpp b/tests/dtkio/ut_dfile.cpp index c5f9446..7a7ca2d 100644 --- a/tests/dtkio/ut_dfile.cpp +++ b/tests/dtkio/ut_dfile.cpp @@ -100,7 +100,12 @@ TEST_F(TestDFile, read) m_stub.set_lamda(g_input_stream_read, [](GInputStream *, void *, gsize, GCancellable *, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return 0; }); @@ -149,7 +154,12 @@ TEST_F(TestDFile, readAll) }); m_stub.set_lamda(g_input_stream_read_all, [](GInputStream *, void *, gsize, gsize *, GCancellable *, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return FALSE; }); auto ret { file.readAll() }; @@ -206,7 +216,12 @@ TEST_F(TestDFile, writeWithLen) }); m_stub.set_lamda(g_output_stream_write, [](GOutputStream *, const void *, gsize, GCancellable *, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return 0; }); auto ret { file.write(QByteArray {}, 10) }; @@ -286,7 +301,12 @@ TEST_F(TestDFile, seek) static GError err; m_stub.set_lamda(g_seekable_seek, [](GSeekable *, goffset, GSeekType, GCancellable *, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return FALSE; }); ret = file.seek(10, SeekType::Begin); @@ -370,7 +390,12 @@ TEST_F(TestDFile, flush) }); m_stub.set_lamda(g_output_stream_flush, [](GOutputStream *, GCancellable *, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return FALSE; }); auto ret { file.flush() }; @@ -401,7 +426,12 @@ TEST_F(TestDFile, size) { static GError err; m_stub.set_lamda(g_file_query_info, [](GFile *, const char *, GFileQueryInfoFlags, GCancellable *, GError **error) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return nullptr; }); auto ret { file.size() }; @@ -429,7 +459,12 @@ TEST_F(TestDFile, permissions) { static GError err; m_stub.set_lamda(g_file_query_info, [](GFile *, const char *, GFileQueryInfoFlags, GCancellable *, GError **error) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return nullptr; }); auto ret { file.permissions() }; @@ -453,7 +488,12 @@ TEST_F(TestDFile, setPermissions) static GError err; m_stub.set_lamda(ADDR(DFileHelper, setAttribute), [](GFile *, const char *, AttributeType, const QVariant &, GFileQueryInfoFlags, GCancellable *, GError **error) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return false; }); auto ret { file.setPermissions(perms) }; diff --git a/tests/dtkio/ut_dfileoperator.cpp b/tests/dtkio/ut_dfileoperator.cpp index c35819d..ccc045a 100644 --- a/tests/dtkio/ut_dfileoperator.cpp +++ b/tests/dtkio/ut_dfileoperator.cpp @@ -45,7 +45,12 @@ TEST_F(TestDFileOperator, renameFile) static GError err; m_stub.set_lamda(g_file_set_display_name, [](GFile *file, const char *display_name, GCancellable *cancellable, GError **error) { __DBG_STUB_INVOKE__ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + GQuark domain = g_quark_from_static_string("MyAppErrorDomain"); + *error = g_error_new(domain, 42, "This is a test error: %s", "something went wrong"); +#else *error = &err; +#endif return nullptr; }); auto ret { m_operator->renameFile("test666") }; @@ -56,7 +61,12 @@ TEST_F(TestDFileOperator, renameFile) { m_stub.set_lamda(g_file_set_display_name, [](GFile *file, const char *display_name, GCancellable *cancellable, GError **error) { __DBG_STUB_INVOKE__ + // avoid duplicate GFile unref +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return g_file_new_for_path("nullptr"); +#else return file; +#endif }); auto ret { m_operator->renameFile("test666") }; EXPECT_TRUE(ret.hasValue()); diff --git a/tests/dtkmount/CMakeLists.txt b/tests/dtkmount/CMakeLists.txt index f55d262..d761320 100644 --- a/tests/dtkmount/CMakeLists.txt +++ b/tests/dtkmount/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later @@ -58,7 +58,7 @@ target_include_directories(${BIN_NAME} PUBLIC target_link_libraries(${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus - Dtk::Core + Dtk${DTK_VERSION_MAJOR}::Core ${GLIB_LIBRARIES} ${GIOUNIX_LIBRARIES} ${LIBSECRET_LIBRARIES} diff --git a/tests/dtksearch/CMakeLists.txt b/tests/dtksearch/CMakeLists.txt index 3add182..f0be600 100644 --- a/tests/dtksearch/CMakeLists.txt +++ b/tests/dtksearch/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022-2025 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: LGPL-3.0-or-later