cmake_minimum_required(VERSION 3.18)

find_package(Qt6 REQUIRED COMPONENTS Core Widgets Quick QuickControls2 WebEngineQuick Network)
qt_standard_project_setup()
qt_policy(SET QTP0001 NEW)
qt_policy(SET QTP0004 OLD)

set(CMAKE_AUTOMOC ON)

qt_add_executable(blogi-editor
    main.cpp
    documentmanager.cpp
    documentmanager.h
    htmlimport.cpp
    htmlimport.h
    edit.cpp
    edit.h
    publishclient.cpp
    publishclient.h
    localapi.cpp
    localapi.h
    themeprovider.h
    authimageprovider.cpp
    authimageprovider.h
    gitfilesystemmodel.cpp
    gitfilesystemmodel.h
)

qt_add_qml_module(blogi-editor
    URI BlogiEditor
    VERSION 1.0
    QML_FILES
        qml/Main.qml
        qml/SidebarSection.qml
        qml/WidgetToolbar.qml
        qml/DocumentTree.qml
        qml/PropertyPanel.qml
        qml/HtmlEditorField.qml
        qml/PreviewPane.qml
        qml/RgbaColorPicker.qml
        qml/ConnectionPanel.qml
        qml/FileBrowserTab.qml
        qml/GitTab.qml
        qml/MediaBrowser.qml
        qml/PublishDialog.qml
        qml/publishhelper.js
        qml/AiPromptDialog.qml
        qml/AiTab.qml
        qml/LlmSettingsDialog.qml
        qml/SurveyListDialog.qml
        qml/SurveyEditorDialog.qml
)

target_link_libraries(blogi-editor PRIVATE
    Qt6::Core
    Qt6::Widgets
    Qt6::Quick
    Qt6::QuickControls2
    Qt6::WebEngineQuick
    Qt6::Network
    blogidev
    tinyxml2::tinyxml2
    json-c::json-c
    uuidp::uuidp
    htmlpp::htmlpp
)

target_include_directories(blogi-editor PRIVATE
    ${CMAKE_SOURCE_DIR}/src
)

target_compile_definitions(blogi-editor PRIVATE
    WEBEDIT_PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/lib/blogi/plugins/webedit"
)

add_subdirectory(widgets)

install(TARGETS blogi-editor DESTINATION bin)
install(FILES blogi-editor.desktop DESTINATION share/applications)
install(FILES ${CMAKE_SOURCE_DIR}/data/logo_runes.svg DESTINATION share/icons/hicolor/scalable/apps RENAME blogi-editor.svg)

if(APPLE)
    set_target_properties(blogi-editor PROPERTIES
        MACOSX_BUNDLE TRUE
        MACOSX_BUNDLE_GUI_IDENTIFIER "de.tuxist.blogi-editor"
        MACOSX_BUNDLE_BUNDLE_NAME "Blogi Editor"
        MACOSX_BUNDLE_BUNDLE_VERSION "1.0.0"
        MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0"
    )

    # Copy widget plugins into the app bundle after build
    set(_webedit_plugins
        accordion article button container customhtml grid
        image list popup section slider surveywidget webedit_table textbox video
    )
    set(_webedit_dest "$<TARGET_BUNDLE_DIR:blogi-editor>/Contents/PlugIns/webedit")
    add_custom_command(TARGET blogi-editor POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E make_directory "${_webedit_dest}"
    )
    foreach(_wplug ${_webedit_plugins})
        add_custom_command(TARGET blogi-editor POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy_if_different
                "$<TARGET_FILE:${_wplug}>"
                "${_webedit_dest}/"
        )
    endforeach()
endif()
