qt_add_library(QodeAssistChatView STATIC)

qt_policy(SET QTP0001 NEW)
qt_policy(SET QTP0004 NEW)

qt_add_qml_module(QodeAssistChatView
    URI ChatView
    VERSION 1.0
    DEPENDENCIES
    QtQuick
    QML_FILES
    qml/RootItem.qml

    qml/chatparts/CodeBlock.qml
    qml/chatparts/FileEditBlock.qml
    qml/chatparts/TextBlock.qml
    qml/chatparts/ThinkingBlock.qml
    qml/chatparts/ToolBlock.qml
    qml/chatparts/PermissionBlock.qml
    qml/chatparts/PlanBlock.qml
    qml/chatparts/ChatItem.qml
    qml/chatparts/BlockPayload.js

    qml/controls/AttachedFilesPlace.qml
    qml/controls/BottomBar.qml
    qml/controls/FileMentionPopup.qml
    qml/controls/FileEditsActionBar.qml
    qml/controls/ContextViewer.qml
    qml/controls/SkillCommandPopup.qml
    qml/controls/Toast.qml
    qml/controls/TopBar.qml
    qml/controls/DropZone.qml
    qml/controls/MessageNavigator.qml

    RESOURCES
    icons/attach-file-light.svg
    icons/attach-file-dark.svg
    icons/close-dark.svg
    icons/close-light.svg
    icons/image-dark.svg
    icons/load-chat-dark.svg
    icons/save-chat-dark.svg
    icons/clean-icon-dark.svg
    icons/file-in-system.svg
    icons/window-lock.svg
    icons/window-unlock.svg
    icons/chat-icon.svg
    icons/chat-pause-icon.svg
    icons/warning-icon.svg
    icons/new-chat-icon.svg
    icons/rules-icon.svg
    icons/context-icon.svg
    icons/open-in-editor.svg
    icons/open-in-window.svg
    icons/apply-changes-button.svg
    icons/undo-changes-button.svg
    icons/reject-changes-button.svg
    icons/thinking-icon-on.svg
    icons/thinking-icon-off.svg
    icons/tools-icon-on.svg
    icons/tools-icon-off.svg
    icons/settings-icon.svg
    icons/compress-icon.svg
    icons/open-in-code.svg

    SOURCES
    ChatWidget.hpp ChatWidget.cpp
    ChatModel.hpp ChatModel.cpp
    ChatRootView.hpp ChatRootView.cpp
    ChatController.hpp ChatController.cpp
    ConversationPorts.hpp
    ConversationCoordinator.hpp ConversationCoordinator.cpp
    LlmChatBackend.hpp LlmChatBackend.cpp
    MessagePart.hpp
    ChatUtils.h ChatUtils.cpp
    ChatFileStore.hpp ChatFileStore.cpp
    TurnContextAdapters.hpp TurnContextAdapters.cpp
    ChatView.hpp ChatView.cpp
    ChatData.hpp
    FileItem.hpp FileItem.cpp
    AttachmentStaging.hpp AttachmentStaging.cpp
    ChatCompressor.hpp ChatCompressor.cpp
    ChatConfigurationController.hpp ChatConfigurationController.cpp
    FileEditController.hpp FileEditController.cpp
    InputTokenCounter.hpp InputTokenCounter.cpp
    FileMentionItem.hpp FileMentionItem.cpp
    SessionFileRegistry.hpp SessionFileRegistry.cpp
)

target_link_libraries(QodeAssistChatView
    PUBLIC
    Qt::Widgets
    Qt::Quick
    Qt::QuickWidgets
    Qt::Network
    QtCreator::Core
    QtCreator::Utils
    QodeAssistSettings
    Context
    QodeAssistSession
    QodeAssistAcp
    QodeAssistUIControlsplugin
    QodeAssistLogger
    LLMQore
    Skills
)

target_include_directories(QodeAssistChatView
    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/sources
)
