project(libqmmpui)

add_definitions(-DQMMPUI_LIBRARY)

set(QMMP_DEFAULT_UI "" CACHE STRING "default user interface")
if(QMMP_DEFAULT_UI)
    set(libqmmpui_DEFINES ${libqmmpui_DEFINES} QMMP_DEFAULT_UI="${QMMP_DEFAULT_OUTPUT}")
    message(STATUS "Default user interface: ${QMMP_DEFAULT_UI}")
endif(QMMP_DEFAULT_UI)


set(libqmmpui_SRCS
    general.cpp
    uihelper.cpp
    playlistparser.cpp
    commandlinemanager.cpp
    commandlinehandler.cpp
    filedialog.cpp
    qtfiledialog.cpp
    fileloader.cpp
    playstate.cpp
    playlistmodel.cpp
    playlistitem.cpp
    playlistgroup.cpp
    playlisttrack.cpp
    playlistcontainer.cpp
    normalcontainer.cpp
    groupedcontainer.cpp
    mediaplayer.cpp
    detailsdialog.cpp
    tageditor.cpp
    playlistmanager.cpp
    metadataformatter.cpp
    metadataformattermenu.cpp
    templateeditor.cpp
    uiloader.cpp
    jumptotrackdialog.cpp
    configdialog.cpp
    pluginitem.cpp
    aboutdialog.cpp
    qmmpuisettings.cpp
    radioitemdelegate.cpp
    playlistdownloader.cpp
    addurldialog.cpp
    qmmpuiplugincache.cpp
    playlisttask.cpp
    playlistheadermodel.cpp
    columneditor.cpp
    metadatahelper.cpp
    coverviewer.cpp
    covereditor.cpp
    coverloader.cpp
    generalfactory.cpp
    cueeditor.cpp
    visualmenu.cpp
    colorwidget.cpp
    shortcutdialog.cpp
    forms/detailsdialog.ui
    forms/tageditor.ui
    forms/templateeditor.ui
    forms/jumptotrackdialog.ui
    forms/configdialog.ui
    forms/aboutdialog.ui
    forms/addurldialog.ui
    forms/columneditor.ui
    forms/covereditor.ui
    forms/cueeditor.ui
    forms/shortcutdialog.ui
    translations/libqmmpui_locales.qrc
    txt/txt.qrc
    images/qmmpui_images.qrc
)

SET(libqmmpui_DEVEL_HDRS
    colorwidget.h
    commandlinehandler.h
    commandlinemanager.h
    configdialog.h
    detailsdialog.h
    filedialogfactory.h
    filedialog.h
    generalfactory.h
    general.h
    mediaplayer.h
    metadataformatter.h
    metadataformattermenu.h
    playlistdownloader.h
    playlistformat.h
    playlistgroup.h
    playlistheadermodel.h
    playlistitem.h
    playlistmanager.h
    playlistmodel.h
    playlistparser.h
    playlisttrack.h
    qmmpui_export.h
    qmmpuisettings.h
    shortcutdialog.h
    templateeditor.h
    uifactory.h
    uihelper.h
    uiloader.h
    visualmenu.h
)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_CURRENT_SOURCE_DIR}/forms)

add_library(libqmmpui SHARED ${libqmmpui_SRCS})
target_link_libraries(libqmmpui PRIVATE Qt6::Widgets Qt6::Network libqmmp)
set_target_properties(libqmmpui PROPERTIES VERSION ${QMMP_VERSION} SOVERSION ${QMMP_SOVERSION} OUTPUT_NAME qmmpui${APP_NAME_SUFFIX})
target_compile_definitions(libqmmpui PRIVATE ${libqmmpui_DEFINES})
install(TARGETS libqmmpui LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                          RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                          ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})


if(APP_NAME_SUFFIX)
    install(FILES ${libqmmpui_DEVEL_HDRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qmmp${APP_NAME_SUFFIX}/qmmpui)
    set(QMMP_INCLUDE_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR}/qmmp${APP_NAME_SUFFIX})
else()
    install(FILES ${libqmmpui_DEVEL_HDRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qmmpui)
    set(QMMP_INCLUDE_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
endif()

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qmmpui.pc.in ${CMAKE_CURRENT_BINARY_DIR}/qmmpui${APP_NAME_SUFFIX}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmmpui${APP_NAME_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
