cmake_minimum_required(VERSION 3.16)

project(audio_U5 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Debug)

find_package(PkgConfig)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Widgets DBus LinguistTools REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets DBus LinguistTools REQUIRED)

pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0)
pkg_check_modules(KYSDK REQUIRED kysdk-qtwidgets)
pkg_check_modules(PA REQUIRED libpulse libpulse-mainloop-glib)
if(QT_VERSION_MAJOR EQUAL 6)
    pkg_check_modules(QGSETTING REQUIRED gsettings-qt6)
else()
    pkg_check_modules(QGSETTING REQUIRED gsettings-qt)
endif()

include_directories(${GLIB2_INCLUDE_DIRS})
include_directories(${KYSDK_INCLUDE_DIRS})
include_directories(${QGSETTING_INCLUDE_DIRS})

file(GLOB TS_FILES translations/*.ts)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt6_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES} OPTIONS -no-obsolete -no-ui-lines)
else()
    qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES} OPTIONS -no-obsolete -no-ui-lines)
endif()

add_library(audio_U5 SHARED
    audio.ui
    main.cpp
    customstyle.cpp
    customstyle.h
    ClientMethod.cpp
    ClientMethod.h
    IDetailSettingsItem.cpp
    IDetailSettingsItem.h
    IVolumeSliderItem.cpp
    IVolumeSliderItem.h
    ISelectComboxItem.cpp
    ISelectComboxItem.h
    ISwitchButtonItem.h
    ISwitchButtonItem.cpp
    IAudioMainWidow.cpp
    IAudioMainWidow.h
    ClientManager.cpp
    ClientManager.h
    MonitorStream.cpp
    MonitorStream.h
    MainWidget.cpp
    MainWidget.h
    VersionStrategy.h
    ConcreteStrategy.cpp
    ConcreteStrategy.h
    TitleLabelItem.cpp
    TitleLabelItem.h
    Ukui4MainWidget.cpp
    Ukui4MainWidget.h
    ukui4.0/Ukui4SwitchButtonItem.cpp
    ukui4.0/Ukui4SwitchButtonItem.h
    ukui4.0/Ukui4VolumeSliderItem.cpp
    ukui4.0/Ukui4VolumeSliderItem.h
    ukui4.0/Ukui4SelectComboxItem.cpp
    ukui4.0/Ukui4SelectComboxItem.h
    ukui4.0/Audio.cpp
    ukui4.0/Audio.h
    Ukcc5DevicePortItem.cpp
    Ukcc5DevicePortItem.h
    Ukui5MainWidget.cpp
    Ukui5MainWidget.h
    Ukui5DetailSettingsItem.cpp
    Ukui5DetailSettingsItem.h
    IDeviceManagerItem.h
    DeviceManagerMainWidget.cpp
    DeviceManagerMainWidget.h
    DeviceManagerWidget.cpp
    DeviceManagerWidget.h
    AppManagerMainWidget.cpp
    AppManagerMainWidget.h
    AppManagerItemWidget.cpp
    AppManagerItemWidget.h
    AppManagerSelectComboxItem.cpp
    AppManagerSelectComboxItem.h
    AppManagerSliderItem.cpp
    AppManagerSliderItem.h
    include/SwitchButton.cpp
    include/SwitchButton.h
    include/interface.h
    ../common/Ukui4CustomControl.cpp
    ../common/Ukui4CustomControl.h
    ../common/DBusClient.cpp
    ../common/DBusClient.h
    ${QM_FILES})

target_include_directories(audio_U5
    PUBLIC ../backend ../tray ../common)

target_link_libraries(audio_U5
    ${KYSDK_LIBRARIES}
    ${GLIB2_LIBRARIES}
    ${PA_LIBRARIES}
    ${QGSETTING_LIBRARIES}
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::DBus
    -lukcc)

set(CMAKE_INSTALL_LIBDIR /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/ukui-control-center)

install(FILES ${TS_FILES} DESTINATION "/usr/share/ukui-media/translations/audio")
install(FILES ${QM_FILES} DESTINATION "/usr/share/ukui-media/translations/audio")

install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
