set(BIN_NAME uos-recovery-gui)

#find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6  COMPONENTS Widgets Core DBus Sql LinguistTools REQUIRED)
#find_package(Qt5Core REQUIRED)
#find_package(Qt5Gui REQUIRED)
find_package(Qt6PrintSupport REQUIRED)
#find_package(Qt5Widgets REQUIRED)
#find_package(Qt5DBus REQUIRED)
find_package(Dtk6CMake REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(PolkitQt6-1 REQUIRED)

pkg_check_modules(Dtk6Widget REQUIRED dtk6widget)

pkg_search_module(UDisk2 REQUIRED udisks2-qt6)
pkg_search_module(SELINUX REQUIRED libselinux)
include_directories(AFTER ${UDisk2_INCLUDE_DIRS})
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(.)

aux_source_directory(${GUI_DIR} GUI_SRCS)
aux_source_directory(${GUI_DIR}/backup/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/restore/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/advanced/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/common/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/immutable/backup/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/immutable/factoryrestore/ GUI_SRCS)
aux_source_directory(${GUI_DIR}/immutable/restore/ GUI_SRCS)
aux_source_directory(${UTILS_DIR} GUI_SRCS)
aux_source_directory(${GUI_DIR}/dbus/session GUI_SRCS)

add_executable(${BIN_NAME}
        ${GUI_SRCS}
        resources.qrc
        )

target_include_directories(${BIN_NAME} PUBLIC
        ${Dtk6Widget_INCLUDE_DIRS}
        ${DTK6CORE_INCLUDE_DIRS}
        ${UDisk2_INCLUDE_DIRS}
        ${SELINUX_INCLUDE_DIRS}
        )


target_link_libraries(${BIN_NAME}
        ${Qt6Widgets_LIBRARIES}
        ${Qt6DBus_LIBRARIES}
        ${Dtk6Widget_LIBRARIES}
        ${UDisk2_LIBRARIES}
        ${SELINUX_LIBRARIES}
        Qt6::PrintSupport
        PolkitQt6-1::Agent
        )

# 生成翻译
## 设置QT语言cmake模块
#find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)

## 通过源代码生成ts文件
set(CREATE_TS_DIR
        ${CMAKE_SOURCE_DIR}/src/uos-recovery-gui
        )

find_program(LUPDATE_EXECUTABLE lupdate)
execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -source-language en
        -no-obsolete
        -recursive ${CREATE_TS_DIR}
        -ts ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui.ts)

execute_process(
        COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/translate_gui_unfinised.py ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui.ts
        ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui_en_US.ts)
#execute_process(
#        COMMAND cp -rf ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui.ts
#        ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui_en_US.ts)

## 获取ts源文件
file(GLOB INSTALLER_TRANSLATION_TS
        ${CMAKE_SOURCE_DIR}/translations/gui/uos-recovery-gui*.ts)

# generate qm
execute_process(COMMAND bash "${CMAKE_SOURCE_DIR}/translate_generation.sh"
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})

if (CMAKE_BUILD_TYPE MATCHES Debug)
    add_definitions("-DDI_I18N_GUI_DIR_ENV=\"${CMAKE_SOURCE_DIR}/translations/gui\"")
else()
    add_definitions("-DDI_I18N_GUI_DIR_ENV=\"/usr/share/uos-recovery/translations/gui\"")
endif()

#install

# bin
install(TARGETS ${BIN_NAME}
        DESTINATION /usr/bin/)

#translations
# desktop
file(GLOB DESKTOP_QM_FILES "${CMAKE_SOURCE_DIR}/translations/desktop/*.qm")
install(FILES ${DESKTOP_QM_FILES}
        DESTINATION /usr/share/uos-recovery/translations/desktop/)
# gui
file(GLOB QM_FILES "${CMAKE_SOURCE_DIR}/translations/gui/*.qm")
install(FILES ${QM_FILES}
        DESTINATION /usr/share/uos-recovery/translations/gui/)
#icon
install(FILES resources/icons/uos-recovery.svg
        DESTINATION /usr/share/icons/hicolor/scalable/apps)

#desktop
# desktop
install(FILES uos-recovery-gui.desktop DESTINATION /usr/share/applications)

install(FILES com.deepin.uosrecovery.metainfo.xml DESTINATION /usr/share/metainfo)

# help manual
install(DIRECTORY ${CMAKE_SOURCE_DIR}/assets/uos-recovery-gui
        DESTINATION /usr/share/deepin-manual/manual-assets/application/)

#dbus service
install(FILES dbus/session/com.deepin.uosrecovery.session.service
        DESTINATION /usr/share/dbus-1/services/)
