# SPDX-FileCopyrightText: 2025 Manuel Alcaraz Zambrano <manuel@alcarazzam.dev>
# SPDX-License-Identifier: BSD-3-Clause

add_library(tournament STATIC)

target_sources(tournament PRIVATE
    arbiter.cpp
    event.cpp
    pairing.cpp
    pairingengine.cpp
    player.cpp
    round.cpp
    standing.cpp
    state.cpp
    timecontrol.cpp
    tournament.cpp
    utils.cpp
)

add_subdirectory(ratinglists)
add_subdirectory(tiebreaks)
add_subdirectory(trf)

if (BUILD_EXPERIMENTAL)
    add_subdirectory(sync)
endif()

ecm_add_qml_module(tournament
    URI org.kde.chessament.tournament
    OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src/org/kde/chessament/tournament
    GENERATE_PLUGIN_SOURCE
    QML_FILES
        qml/FieldSaverHack.qml

        qml/SettingsDialog.qml
        qml/SettingsCalendarPage.qml
        qml/SettingsCloudPage.qml
        qml/SettingsInformationPage.qml
        qml/SettingsFormatPage.qml

        qml/AddTiebreakDialog.qml
        qml/TiebreakDialog.qml
    IMPORTS
        QtCore
        QtQml.Models
        QtQuick
        QtQuick.Controls
        QtQuick.Layouts
        org.kde.ki18n
        org.kde.kirigami
        org.kde.kirigamiaddons.formcard
        org.kde.kirigamiaddons.settings
)

target_link_libraries(tournament PUBLIC
    Qt6::Concurrent
    Qt6::Core
    Qt6::Network
    Qt6::Qml
    Qt6::Quick
    Qt6::QuickControls2
    Qt6::Sql
    KF6::Archive
    KF6::ConfigCore
    KF6::ConfigGui
    KF6::CoreAddons
    KF6::I18n
    QCoro6::Core
    QCoro6::Network
    QCoro6::Qml
)

if (BUILD_EXPERIMENTAL)
    kde_source_files_enable_exceptions(
        ${CMAKE_CURRENT_SOURCE_DIR}/sync/accountmanager.cpp
    )

    kconfig_target_kcfg_file(tournament
        FILE accountconfig.kcfg
        CLASS_NAME AccountConfig

        MUTATORS
        GENERATE_PROPERTIES
        GENERATE_MOC
        PARENT_IN_CONSTRUCTOR
    )
endif()

