# SPDX-FileCopyrightText: 2026 Marco Martin <notmart@gmail.com>
# SPDX-License-Identifier: BSD-3-Clause
add_library(KirigamiActionCollection)
add_library(KF6::KirigamiActionCollection ALIAS KirigamiActionCollection)
set_target_properties(KirigamiActionCollection PROPERTIES
    SOVERSION ${KF6KirigamiActionCollection_SOVERSION}
    VERSION ${KF6KirigamiActionCollection_VERSION}
)

target_compile_definitions(KirigamiActionCollection PRIVATE -DTRANSLATION_DOMAIN=\"kirigami-app-components\")

ecm_add_qml_module(KirigamiActionCollection
    URI "org.kde.kirigami.actioncollection"
    VERSION 1.0
    DEPENDENCIES QtQuick org.kde.kirigami
    GENERATE_PLUGIN_SOURCE
    INSTALLED_PLUGIN_TARGET KF6::KirigamiActionCollectionplugin
)

target_sources(KirigamiActionCollection PRIVATE
    actioncollection.cpp
    actioncollections.cpp
    actiondata.cpp
    actionmodel.cpp
    keysequencehelper.cpp
    qmlactioncollection.cpp
    standardactiondata.cpp
)

ecm_qt_declare_logging_category(KirigamiActionCollection
    HEADER loggingcategory.h
    IDENTIFIER KirigamiActionCollectionLog
    CATEGORY_NAME kf.kirigami.actioncollection
    DESCRIPTION "KirigamiActionCollection"
    DEFAULT_SEVERITY Warning
    EXPORT KIRIGAMI
)

ecm_target_qml_sources(KirigamiActionCollection SOURCES
    qml/ActionCollectionManager.qml
    qml/ActionsExplorer.qml
    qml/KeySequenceItem.qml
    qml/ShortcutsEditor.qml
)

set_target_properties(KirigamiActionCollection PROPERTIES
    VERSION     ${PROJECT_VERSION}
    SOVERSION   6
    EXPORT_NAME "KirigamiActionCollection"
)

ecm_generate_export_header(KirigamiActionCollection
    BASE_NAME KirigamiActionCollection
    GROUP_BASE_NAME KAC
    VERSION ${KIRIGAMIAPPCOMPONENTS_CURRENT_VERSION}
    DEPRECATED_BASE_VERSION 0
    DEPRECATION_VERSIONS
    EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
)

target_include_directories(KirigamiActionCollection PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/..)

target_include_directories(KirigamiActionCollection
    INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/Kirigami;${KDE_INSTALL_INCLUDEDIR_KF}/Kirigami/ActionCollection>"
)

target_link_libraries(KirigamiActionCollection PUBLIC
    Qt6::Core
    Qt6::Qml
    Qt6::Quick
PRIVATE
    Qt6::QuickControls2
    KF6::ConfigCore
    KF6::ConfigGui
    KF6::GuiAddons
    KF6::I18n
)

ecm_setup_version(
    PROJECT
    VARIABLE_PREFIX KF6KirigamiActionCollection
    VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kirigamiactioncollection_version.h"
    PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6KirigamiActionCollectionConfigVersion.cmake"
    SOVERSION 1
)

ecm_generate_headers(KirigamiActionCollection_CamelCase_HEADERS
    HEADER_NAMES
    ActionCollection
    ActionCollections
    REQUIRED_HEADERS KirigamiActionCollection_HEADERS
)

install(FILES
    ${KirigamiActionCollection_HEADERS}
    ${CMAKE_CURRENT_BINARY_DIR}/kirigamiactioncollection_export.h
    ${CMAKE_CURRENT_BINARY_DIR}/kirigamiactioncollection_version.h
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Kirigami/ActionCollection # prefix matching C++ namespace
    COMPONENT Devel
)
install(FILES
    ${KirigamiActionCollection_CamelCase_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Kirigami/ActionCollection # prefix matching C++ namespace
    COMPONENT Devel
)

ecm_finalize_qml_module(KirigamiActionCollection DESTINATION ${KDE_INSTALL_QMLDIR} EXPORT KirigamiAppComponentsTargets)

install(TARGETS KirigamiActionCollection EXPORT KirigamiAppComponentsTargets ${KF_INSTALL_DEFAULT_ARGUMENTS})
