From f049654b2392c39bb885110aecc8c85e6935e621 Mon Sep 17 00:00:00 2001 From: Wang Zichong Date: Tue, 7 Apr 2026 17:38:20 +0800 Subject: [PATCH] chore: port project to Qt 6 and drop Qt 5 support --- .github/workflows/builds.yml | 10 +++--- .gitignore | 3 +- CMakeLists.txt | 36 +++++++------------ .../sources/packagekit/packagekitsource.cpp | 13 +++---- backend/sources/packagekit/packagekitsource.h | 2 +- pages/homepage.cpp | 4 +-- pages/itempage.cpp | 6 ++-- widgets/list.cpp | 2 +- widgets/stars.cpp | 2 +- 9 files changed, 35 insertions(+), 43 deletions(-) diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index 6324813..f4f48af 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -14,11 +14,11 @@ jobs: container: docker.io/library/archlinux:latest steps: - name: Checkout branch - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Update packages run: pacman -Syu --noconfirm - name: Install build dependencies - run: pacman -S --noconfirm base-devel cmake ninja qt5-base qt5-tools dtkwidget appstream-qt5 packagekit-qt5 + run: pacman -S --noconfirm base-devel cmake ninja qt6-base qt6-tools qt6-declarative dtk6widget appstream-qt packagekit-qt6 - name: CMake and Make run: | mkdir build @@ -31,11 +31,11 @@ jobs: container: docker.io/library/debian:unstable steps: - name: Checkout branch - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Refresh repos run: apt-get update - name: Install build dependencies - run: DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential cmake ninja-build pkg-config qtbase5-dev libdtkwidget-dev libdtkcore-dev libdtkgui-dev libpackagekitqt5-dev libappstreamqt5-dev libsnapd-qt-dev qttools5-dev + run: DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential cmake ninja-build pkg-config qt6-base-dev libdtkwidget-dev libdtkcore-dev libdtkgui-dev libpackagekitqt6-dev libappstreamqt-dev libsnapd-qt-dev qt6-tools-dev - name: CMake and Make run: | mkdir build @@ -48,7 +48,7 @@ jobs: container: docker.io/library/ubuntu:24.04 steps: - name: Checkout branch - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Refresh repos run: apt-get update - name: Add UbuntuDDE PPA diff --git a/.gitignore b/.gitignore index 0e424ef..495f278 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /.vscode /Makefile /build -*.qm \ No newline at end of file +*.qm +.cache/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index b790511..4a20ac3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.16) project(dde-store) @@ -10,21 +10,16 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(PkgConfig REQUIRED) -find_package(Qt5 REQUIRED Core Widgets Network DBus Gui LinguistTools) -find_package(Dtk REQUIRED Widget Gui) -find_package(PackageKitQt5 REQUIRED) -find_package(AppStreamQt5 1.0 REQUIRED) +find_package(Qt6 REQUIRED Core Widgets Network DBus Gui LinguistTools) +find_package(Dtk6 REQUIRED Widget Gui) +find_package(PackageKitQt6 REQUIRED) +find_package(AppStreamQt 1.0 REQUIRED) find_package(PkgConfig REQUIRED) include(FindPkgConfig) include(GNUInstallDirs) -include_directories( - ${PackageKitQt5_INCLUDE_DIR} - ${AppStreamQt5_INCLUDE_DIRS} -) - file(GLOB TS_FILES ./translations/*.ts) -qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) file(GLOB SRC main.cpp @@ -61,19 +56,14 @@ add_executable(${PROJECT_NAME} ${QM_FILES} ) -target_include_directories(${PROJECT_NAME} PUBLIC - ${PackageKitQt5_INCLUDE_DIR} - ${AppStreamQt5_INCLUDE_DIRS} -) - target_link_libraries(${PROJECT_NAME} - ${DtkWidget_LIBRARIES} - ${DtkCore_LIBRARIES} - ${DtkGui_LIBRARIES} - ${Qt5Widgets_LIBRARIES} - ${Qt5Network_LIBRARIES} - ${PackageKitQt5_LIBRARIES} - AppStreamQt5 + Dtk6::Widget + Dtk6::Core + Dtk6::Gui + Qt6::Widgets + Qt6::Network + PK::packagekitqt6 + AppStreamQt ) add_subdirectory(backend/sources) diff --git a/backend/sources/packagekit/packagekitsource.cpp b/backend/sources/packagekit/packagekitsource.cpp index 27b4229..0d312ce 100644 --- a/backend/sources/packagekit/packagekitsource.cpp +++ b/backend/sources/packagekit/packagekitsource.cpp @@ -2,11 +2,12 @@ #include "backend/settings.h" #include "backend/ratingshelper.h" #include
-#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include using namespace PackageKit; using namespace AppStream; @@ -195,7 +196,7 @@ void PackageKitSource::search(QString query) break; Component component = metadata.value(key); bool noMatch = false; - for (QString item : query.split(QRegExp("\\s"), Qt::SkipEmptyParts)) { + for (QString item : query.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts)) { if (!component.name().contains(item, Qt::CaseInsensitive) && !component.description().contains(item, Qt::CaseInsensitive)) noMatch = true; } diff --git a/backend/sources/packagekit/packagekitsource.h b/backend/sources/packagekit/packagekitsource.h index d5e77b0..3abb5a1 100644 --- a/backend/sources/packagekit/packagekitsource.h +++ b/backend/sources/packagekit/packagekitsource.h @@ -3,7 +3,7 @@ #include "backend/sourcemanager.h" #include -#include +#include class PackageKitSource : public Source { diff --git a/pages/homepage.cpp b/pages/homepage.cpp index 0c9c409..9fbba33 100644 --- a/pages/homepage.cpp +++ b/pages/homepage.cpp @@ -26,7 +26,7 @@ HomePage::HomePage(MainWindow *parent) layout->setAlignment(Qt::AlignTop); widget->setLayout(layout); QHBoxLayout *mainLayout = new QHBoxLayout; - mainLayout->setMargin(0); + mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); setLayout(mainLayout); mainLayout->addWidget(scroll); @@ -65,7 +65,7 @@ void HomePage::addCategory(QString name, QString category, MainWindow *parent) for (App *app : map.values()) { items.insert(0, app); } - for (int i = 0; i < 10; i++) { + for (int i = 0; i < qMin(10, items.size()); i++) { list->addItem(items[i]->name, items[i]->icon, i); apps->append(items[i]); } diff --git a/pages/itempage.cpp b/pages/itempage.cpp index eaf6dc8..b014c44 100644 --- a/pages/itempage.cpp +++ b/pages/itempage.cpp @@ -21,7 +21,7 @@ ItemPage::ItemPage(App *app) this->app = app; QHBoxLayout *mainLayout = new QHBoxLayout; - mainLayout->setMargin(0); + mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); setLayout(mainLayout); mainLayout->addWidget(scroll); @@ -48,7 +48,7 @@ void ItemPage::load() spinner->hide(); layout->removeWidget(spinner); QHBoxLayout *header = new QHBoxLayout; - header->setMargin(10); + header->setContentsMargins(10, 10, 10, 10); header->setAlignment(Qt::AlignVCenter); QLabel *icon = new QLabel; @@ -56,7 +56,7 @@ void ItemPage::load() header->addWidget(icon); QVBoxLayout *nameSection = new QVBoxLayout; - nameSection->setMargin(0); + nameSection->setContentsMargins(0, 0, 0, 0); nameSection->setAlignment(Qt::AlignTop); DLabel *name = new DLabel(app->name); diff --git a/widgets/list.cpp b/widgets/list.cpp index 04ac467..7892978 100644 --- a/widgets/list.cpp +++ b/widgets/list.cpp @@ -14,7 +14,7 @@ List::List(QString title) headerLayout->addWidget(titleLabel); headerLayout->addStretch(); headerLayout->setSpacing(10); - headerLayout->setMargin(10); + headerLayout->setContentsMargins(10, 10, 10, 10); layout->addLayout(headerLayout); listView = new DListView; diff --git a/widgets/stars.cpp b/widgets/stars.cpp index a6d0dd3..24e9a5b 100644 --- a/widgets/stars.cpp +++ b/widgets/stars.cpp @@ -7,7 +7,7 @@ stars::stars(QString app) { QHBoxLayout *layout = new QHBoxLayout; this->setLayout(layout); - layout->setMargin(0); + layout->setContentsMargins(0, 0, 0, 0); layout->setAlignment(Qt::AlignLeft); double rating = RatingsHelper::instance()->averageRating(app); for (int i = 0; i < int(rating); i++) {