Skip to content

Commit

Permalink
feat: adapt Qt6
Browse files Browse the repository at this point in the history
   adapt Qt6

Log: adapt Qt6
  • Loading branch information
starhcq committed Sep 4, 2024
1 parent 0579e23 commit ba74525
Show file tree
Hide file tree
Showing 98 changed files with 1,078 additions and 809 deletions.
18 changes: 15 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.13)

project(deepin-album LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include_directories(${PROJECT_BINARY_DIR})
configure_file(${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h @ONLY)

find_package(DtkDeclarative REQUIRED)
# Find the Qt library
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
message("Using Qt version: ${QT_VERSION_MAJOR}")

# Select major DTK version.
if(QT_VERSION_MAJOR EQUAL "6")
set(BUILD_WITH_QT6 ON)
set(DTK_VERSION_MAJOR 6)
else()
set(DTK_VERSION_MAJOR "")
endif()

#find_package(Dtk${DTK_VERSION_MAJOR}Declarative REQUIRED)

# Application
add_subdirectory(src)
Expand Down
41 changes: 38 additions & 3 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,49 @@ Priority: optional
Maintainer: Deepin Packages Builder <[email protected]>
Build-Depends:
debhelper (>= 11),
cmake, pkg-config, qtdeclarative5-dev, libdtkdeclarative-dev, qtbase5-dev,libexif-dev, libqt5svg5-dev, qttools5-dev-tools, qttools5-dev, libstartup-notification0-dev, libfreeimage-dev, libudev-dev, libfontconfig1-dev, libglib2.0-dev, libxrender-dev, libdtkgui-dev, libdtkwidget-dev, libgio-qt-dev, libudisks2-qt5-dev, libavformat-dev, libffmpegthumbnailer-dev
cmake,
pkg-config,
# Qt6
qt6-base-dev,
qt6-tools-dev,
qt6-tools-dev-tools,
qt6-svg-dev,
qt6-declarative-dev,
# Dtk
libdtk6gui-dev,
libdtk6widget-dev,
libdtk6declarative-dev,
# Deepin
# null
# 3rd party
libfreeimage-dev,
libexif-dev,
libstartup-notification0-dev,
libudev-dev,
libfontconfig1-dev,
libglib2.0-dev,
libxrender-dev,
#libgio-qt-dev,
#libudisks2-qt5-dev,
libdfm6-mount-dev,
libavformat-dev,
libffmpegthumbnailer-dev
Standards-Version: 4.1.3
Homepage: http://www.deepin.org

Package: deepin-album
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, qml-module-qt-labs-settings , qml-module-qt-labs-folderlistmodel
Recommends: deepin-ocr
Depends: ${shlibs:Depends}, ${misc:Depends},
qml6-module-qt-labs-settings,
qml6-module-qt-labs-folderlistmodel,
qml6-module-qtquick-dialogs,
qml6-module-qtquick-layouts,
qml6-module-qtquick-effects,
qml6-module-qtquick-window,
qml6-module-qt5compat-graphicaleffects,
libqt6sql6-sqlite,
qt6-image-formats-plugins
Recommends: qt6-gtk-platformtheme, deepin-ocr
Description: Simple description
A detailed description.

125 changes: 73 additions & 52 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,73 +1,91 @@
cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.13)

#玲珑构建依赖目录
include_directories(${CMAKE_INSTALL_PREFIX}/include)

set(APP_BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin/)
set(BIN_NAME ${CMAKE_PROJECT_NAME})
set(CMAKE_CXX_STANDARD 14)
list (APPEND RESOURCES)

# Set sources
set(SRC
main.cpp
)

# 源文件
file(GLOB_RECURSE SRCS
./src/*.h
./src/*.cpp
)

file(GLOB_RECURSE QMLSRC
./*.qml
)

# Find the Qt5Quick library
find_package(Qt5Quick CONFIG REQUIRED)
find_package(Qt5QuickCompiler REQUIRED)
find_package(Qt5DBus CONFIG REQUIRED)
find_package(Qt5Concurrent CONFIG REQUIRED)
find_package(Qt5Svg CONFIG REQUIRED)
find_package(Qt5PrintSupport CONFIG REQUIRED)
find_package(Qt5LinguistTools CONFIG REQUIRED)
find_package(Qt5Sql CONFIG REQUIRED)

qtquick_compiler_add_resources(RCC_SOURCES ${RESOURCES})

list(APPEND RESOURCES)

find_package(Qt${QT_VERSION_MAJOR} CONFIG REQUIRED COMPONENTS
Qml
Quick
DBus
Concurrent
Svg
PrintSupport
LinguistTools
Sql
)

find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS
Widget
Declarative
)

find_package(dfm${DTK_VERSION_MAJOR}-mount REQUIRED)

if(${QT_VERSION_MAJOR} EQUAL "6")
set(DFM_MOUNT_HEADERS ${dfm6-mount_INCLUDE_DIR})
else()
set(DFM_MOUNT_HEADERS ${dfm-mount_INCLUDE_DIR})
endif()
# 三方库
find_package(PkgConfig REQUIRED)
pkg_check_modules(3rd_lib REQUIRED
dtkwidget gio-qt udisks2-qt5 libavformat
#[[gio-qt udisks2-qt5]] libavformat
)

# 保证 src 目录下头文件全局可见
include_directories(src)

# Translation
file(GLOB TS LIST_DIRECTORIES false translations/${CMAKE_PROJECT_NAME}*.ts)
set_source_files_properties(${TS} PROPERTIES OUTPUT_LOCATION ${PROJECT_SOURCE_DIR}/translations)
qt5_create_translation(QM ${SRC} ${SRCS} ${RCC_SOURCES} ${QMLSRC} ${GLOB})
# 源文件
file(GLOB_RECURSE SRCS CONFIGURE_DEPENDS "./*.h" "./*.cpp")
file(GLOB_RECURSE QMLSRC ./*.qml)

if (NOT (${CMAKE_BUILD_TYPE} MATCHES "Debug"))
qt5_create_translation(QM ${SRC} ${SRCS} ${RCC_SOURCES} ${QMLSRC} ${TS})
endif ()
if(NOT BUILD_WITH_QT6)
find_package(Qt5QuickCompiler CONFIG REQUIRED)
qtquick_compiler_add_resources(RCC_SOURCES ${RESOURCES})
endif()

if(NOT(${CMAKE_BUILD_TYPE} MATCHES "Debug"))
# 调整优化级别
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")

# Add LIB
# Translation
file(GLOB TS LIST_DIRECTORIES false translations/${CMAKE_PROJECT_NAME}*.ts)
set_source_files_properties(${TS} PROPERTIES OUTPUT_LOCATION ${PROJECT_SOURCE_DIR}/translations)
qt_create_translation(QM ${SRCS} ${QMLSRC} ${TS})
endif()

# 仅生成 EXE 文件,用以兼容新(5.6.0+dev-1及以上)旧两版本DtkDeclarative库
add_executable(${BIN_NAME}
${SRC}
${SRCS}
${RCC_SOURCES}
${QM}
${CMAKE_PROJECT_NAME}.qrc
res.qrc
)
)

target_include_directories(${BIN_NAME} PUBLIC ${3rd_lib_INCLUDE_DIRS} )
target_link_libraries(${BIN_NAME}
${DtkDeclarative_LIBRARIES}
Qt5::Quick
Qt5::PrintSupport
Qt5::Gui Qt5::Qml Qt5::Core Qt5::DBus Qt5::Concurrent Qt5::Svg Qt5::Sql GL pthread freeimage
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Qml
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::DBus
Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::Svg
Qt${QT_VERSION_MAJOR}::Sql

Dtk${DTK_VERSION_MAJOR}::Widget
Dtk${DTK_VERSION_MAJOR}::Declarative
GL
pthread
freeimage
dfm${DTK_VERSION_MAJOR}-mount
${3rd_lib_LIBRARIES}
)

Expand All @@ -80,19 +98,22 @@ set_target_properties(${BIN_NAME} PROPERTIES INSTALL_RPATH ${DTK_QML_APP_PLUGIN_
set(PREFIX ${CMAKE_INSTALL_PREFIX})
set(AppIconDir ${PREFIX}/share/icons/hicolor/scalable/apps)
set(APPSHAREDIR ${CMAKE_INSTALL_PREFIX}/share/${CMAKE_PROJECT_NAME})
install(FILES com.deepin.album.service DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dbus-1/services/)

# Add install rule
install(TARGETS ${BIN_NAME} DESTINATION ${APP_BIN_INSTALL_DIR})
install(FILES ${PROJECT_SOURCE_DIR}/src/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
install(FILES ${PROJECT_SOURCE_DIR}/src/icon/deepin-album.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps)
install(FILES com.deepin.album.service DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dbus-1/services/)

install(TARGETS ${LIB_NAME} DESTINATION ${DTK_QML_APP_PLUGIN_PATH})
install(TARGETS ${LIB_NAME} DESTINATION ${PREFIX}/plugins/imageformats)
#desktop
install(FILES ${PROJECT_SOURCE_DIR}/src/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
#manual
install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/assets/deepin-album DESTINATION ${CMAKE_INSTALL_PREFIX}/share/deepin-manual/manual-assets/application/)
#icon
install(FILES ${PROJECT_SOURCE_DIR}/src/icon/deepin-album.svg DESTINATION ${AppIconDir})

#translations
install(DIRECTORY ${PROJECT_SOURCE_DIR}/translations
DESTINATION ${APPSHAREDIR}
FILES_MATCHING PATTERN "*.qm")

#manual
install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/assets/deepin-album
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/deepin-manual/manual-assets/application/
FILES_MATCHING PATTERN "*")
3 changes: 2 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include "thumbnailview/thumbnailmodel.h"
#include "thumbnailview/qimageitem.h"

#include <dapplicationhelper.h>
#include <DGuiApplicationHelper>
#include <DApplication>

#include <DLog>
Expand All @@ -42,6 +42,7 @@

DWIDGET_USE_NAMESPACE
DCORE_USE_NAMESPACE
DGUI_USE_NAMESPACE

int main(int argc, char *argv[])
{
Expand Down
25 changes: 15 additions & 10 deletions src/qml/AlbumTitle.qml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Layouts 1.11
import QtQuick.Controls 2.4
import QtQuick.Dialogs 1.3
import Qt.labs.folderlistmodel 2.11
import QtQuick
import QtQuick.Window
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Dialogs
import org.deepin.dtk 1.0
import org.deepin.album 1.0 as Album

Expand Down Expand Up @@ -247,7 +246,10 @@ TitleBar {
id: collectionBtnBox
Layout.preferredHeight: iconSize
property bool refreshVisilbe: false
visible: GStatus.currentViewType === Album.Types.ViewCollecttion && albumControl.getYears(refreshVisilbe).length !== 0 && window.width > showCollComboWidth
visible: {
refreshVisilbe
GStatus.currentViewType === Album.Types.ViewCollecttion && albumControl.getYears().length !== 0 && window.width > showCollComboWidth
}

padding: 3
ToolButton {
Expand Down Expand Up @@ -494,7 +496,10 @@ TitleBar {
}
ToolButton {
id: titleCollectionBtn
property bool canFavorite: albumControl.canFavorite(GStatus.selectedPaths,GStatus.bRefreshFavoriteIconFlag)
property bool canFavorite: {
GStatus.bRefreshFavoriteIconFlag
return albumControl.canFavorite(GStatus.selectedPaths)
}
visible: !titleImportBtn.visible && GStatus.currentViewType !== Album.Types.ViewDevice
Layout.preferredWidth: iconSize
Layout.preferredHeight: iconSize
Expand Down Expand Up @@ -567,14 +572,14 @@ TitleBar {

Connections {
target: GStatus
onSigFlushSearchView: {
function onSigFlushSearchView() {
searchEdit.executeSearch(true)
}
}

Connections {
target: albumControl
onSigRefreshAllCollection: {
function onSigRefreshAllCollection() {
if (GStatus.currentViewType === Album.Types.ViewCollecttion) {
collectionBtnBox.refreshVisilbe = !collectionBtnBox.refreshVisilbe
}
Expand Down
2 changes: 1 addition & 1 deletion src/qml/BottomBar.qml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtQuick 2.11
import QtQuick

Item {

Expand Down
4 changes: 2 additions & 2 deletions src/qml/Control/Animation/FadeInoutAnimation.qml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick
import QtQuick.Controls

Item {
id: fadeInoutAnimation
Expand Down
9 changes: 6 additions & 3 deletions src/qml/Control/Animation/SwitchViewAnimation.qml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick
import QtQuick.Controls

import org.deepin.album 1.0 as Album

Expand All @@ -20,7 +20,7 @@ Item {
property string idName: ""
property real hideOpacity: 0
property real hideX: -width - 20
property real hideScale: 0.5
property real hideScale: 1


property int switchType: GStatus.currentSwitchType
Expand All @@ -30,12 +30,15 @@ Item {
if (switchType === Album.Types.FlipScroll) {
x = width + 20
switchPropertys = "x,opacity"
hideScale = 1
} else if (switchType === Album.Types.FadeInOut) {
x = 0
switchPropertys = "opacity"
hideScale = 1
} else if (switchType === Album.Types.ScaleInOUt) {
x = 0
switchPropertys = "scale,opacity"
hideScale = 0.5
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/qml/Control/BaseView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later

import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick
import QtQuick.Controls

import "./Animation"
FadeInoutAnimation {
Expand Down
Loading

0 comments on commit ba74525

Please sign in to comment.