# Subtitle parsing and extraction, kept apart from the app so autotests can link it.
add_library(qtpotato_subtitles STATIC
    subtitles/subtitleparser.cpp
    subtitles/subtitleparser.h
    subtitles/subtitleextractor.cpp
    subtitles/subtitleextractor.h
)
target_include_directories(qtpotato_subtitles PUBLIC subtitles)
target_link_libraries(qtpotato_subtitles PUBLIC
    Qt6::Core
    KF6::I18n
    PRIVATE
    PkgConfig::FFMPEG
)

add_executable(qtpotato
    main.cpp
    mpv/mpvitem.cpp
    mpv/mpvitem.h
    translate/apikeystore.cpp
    translate/apikeystore.h
    translate/llmclient.cpp
    translate/llmclient.h
    translate/translationservice.cpp
    translate/translationservice.h
)

kconfig_target_kcfg_file(qtpotato
    FILE ${CMAKE_CURRENT_SOURCE_DIR}/settings/qtpotatosettings.kcfg
    CLASS_NAME QtPotatoSettings
    MUTATORS
    NOTIFIERS
    DEFAULT_VALUE_GETTERS
    GENERATE_PROPERTIES
    GENERATE_MOC
    SINGLETON
    QML_REGISTRATION
)

ecm_add_qml_module(qtpotato
    URI dev.trivk.qtpotato
)

ecm_target_qml_sources(qtpotato SOURCES
    qml/Main.qml
    qml/PlayerPage.qml
    qml/SubtitlePopup.qml
    qml/SettingsPage.qml
)

target_include_directories(qtpotato PRIVATE mpv translate)
target_compile_definitions(qtpotato PRIVATE QTPOTATO_VERSION_STRING="${PROJECT_VERSION}")

target_link_libraries(qtpotato PRIVATE
    qtpotato_subtitles
    Qt6::Gui
    Qt6::Qml
    Qt6::Quick
    Qt6::QuickControls2
    Qt6::Widgets
    Qt6::Network
    Qt6::Concurrent
    KF6::I18n
    KF6::I18nQml
    KF6::CoreAddons
    KF6::Crash
    KF6::ConfigCore
    KF6::ConfigGui
    MpvQt::MpvQt
    QCoro6::Core
    QCoro6::Network
    qt6keychain
)

install(TARGETS qtpotato ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
