# SPDX-License-Identifier: BSD-2-Clause
# SPDX-FileCopyrightText: 2024 Carl Schwan <carl@carlschwan.eu>

add_subdirectory(commands)

find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
find_package(Gpgmepp REQUIRED)

# Target: static library
qt_add_qml_module(imprint_static
    STATIC
    URI eu.carlschwan.imprint
    VERSION 1.0
    DEPENDENCIES
        org.kde.ki18n
        org.kde.kirigamiaddons.actions
        org.kde.kirigamiaddons.components
    QML_FILES
        qml/Main.qml
        qml/EditorPage.qml
        qml/PageEditorPage.qml
        qml/PagePreview.qml
        qml/AnnotationLayer.qml
        qml/AnnotationSelectionOverlay.qml
        qml/CropSelection.qml
        qml/ColorCheckBox.qml
)

target_sources(imprint_static PRIVATE
    pdfannotationmodel.cpp
    pdfannotationmodel.h
    pdfannotationgeometry.cpp
    pdfannotationgeometry.h
    pdfannotationselectionmodel.cpp
    pdfannotationselectionmodel.h
    pdfannotationcoordinate.cpp
    pdfannotationcoordinate.h
    pdfannotationserializer.cpp
    pdfannotationserializer.h
    pdfannotationtype.h
    pdfannotationitem.cpp
    pdfannotationitem.h
    pdfpagetransform.cpp
    pdfpagetransform.h
    pdfcommands.cpp
    pdfcommands.h
    pdfimageprovider.cpp
    pdfimageprovider.h
    pdfpagemodel.h
    pdfpagemodel.cpp
)

target_link_libraries(imprint_static PUBLIC
    Qt6::Core
    Qt6::Gui
    Qt6::Qml
    Qt6::Quick
    Qt6::QuickControls2
    Qt6::CanvasPainter
    Gpgmepp
    Qt6::Svg
    KirigamiAddonsStatefulApp
    KF6::I18n
    KF6::I18nQml
    KF6::CoreAddons
    KF6::ConfigCore
    KF6::ConfigGui
    Poppler::Qt6
    qpdf::libqpdf
    imprint_commands
)
target_include_directories(imprint_static PUBLIC ${CMAKE_BINARY_DIR})

if (ANDROID)
    kirigami_package_breeze_icons(ICONS
        list-add
        help-about
        application-exit
        applications-graphics
    )
else()
    target_link_libraries(imprint_static PUBLIC Qt::Widgets)
endif()

kconfig_add_kcfg_files(imprint_static GENERATE_MOC pdfeditorconfig.kcfgc)
kconfig_target_kcfg_file(imprint_static
    FILE recentfiles.kcfg
    CLASS_NAME RecentFilesConfig
    MUTATORS
    GENERATE_PROPERTIES
    GENERATE_MOC
    PARENT_IN_CONSTRUCTOR
    SINGLETON
)

# Target: main executable
add_executable(imprint main.cpp)
target_sources(imprint PRIVATE commandlinearguments.cpp commandlinearguments.h)
target_link_libraries(imprint PUBLIC imprint_static imprint_staticplugin)
qt_import_qml_plugins(imprint)
install(TARGETS imprint ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
