configure_file(akonadiwidgetstests_export.h.in "${CMAKE_CURRENT_BINARY_DIR}/akonadiwidgetstests_export.h")

# base install include dir
set(AkonadiWidgets_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/KPim6/AkonadiWidgets")

add_library(KPim6AkonadiWidgets)
add_library(KPim6::AkonadiWidgets ALIAS KPim6AkonadiWidgets)

qt_add_dbus_interfaces(akonadiwidget_dbus_SRCS ${Akonadi_SOURCE_DIR}/src/interfaces/org.freedesktop.Akonadi.Agent.Control.xml)

target_sources(
    KPim6AkonadiWidgets
    PRIVATE
        actionstatemanager.cpp
        agentactionmanager.cpp
        agentconfigurationdialog.cpp
        agentconfigurationwidget.cpp
        agentinstancewidget.cpp
        agenttypedialog.cpp
        agenttypewidget.cpp
        cachepolicypage.cpp
        collectioncombobox.cpp
        collectiondialog.cpp
        collectiongeneralpropertiespage.cpp
        collectionmaintenancepage.cpp
        collectionpropertiesdialog.cpp
        collectionpropertiespage.cpp
        collectionrequester.cpp
        collectionstatisticsdelegate.cpp
        conflictresolvedialog.cpp
        controlgui.cpp
        dragdropmanager.cpp
        entitylistview.cpp
        entitytreeview.cpp
        erroroverlay.cpp
        etmviewstatesaver.cpp
        manageaccountwidget.cpp
        progressspinnerdelegate.cpp
        recentcollectionaction.cpp
        renamefavoritedialog.cpp
        standardactionmanager.cpp
        selftestdialog.cpp
        subscriptiondialog.cpp
        tageditwidget.cpp
        tagmanagementdialog.cpp
        tagselectioncombobox.cpp
        tagselectiondialog.cpp
        tagwidget.cpp
        tagselectwidget.cpp
        actionstatemanager_p.h
        agentactionmanager.h
        agentconfigurationdialog.h
        agentconfigurationwidget.h
        agentinstancewidget.h
        agenttypedialog.h
        agenttypewidget.h
        cachepolicypage.h
        collectioncombobox.h
        collectiondialog.h
        collectiongeneralpropertiespage_p.h
        collectionmaintenancepage.h
        collectionpropertiesdialog.h
        collectionpropertiespage.h
        collectionrequester.h
        collectionstatisticsdelegate.h
        conflictresolvedialog_p.h
        controlgui.h
        dragdropmanager_p.h
        entitylistview.h
        entitytreeview.h
        erroroverlay_p.h
        etmviewstatesaver.h
        manageaccountwidget.h
        progressspinnerdelegate_p.h
        recentcollectionaction_p.h
        renamefavoritedialog_p.h
        standardactionmanager.h
        selftestdialog.h
        subscriptiondialog.h
        tageditwidget.h
        tagmanagementdialog.h
        tagselectioncombobox.h
        tagselectiondialog.h
        tagwidget.h
        tagselectwidget.h
        clearcachefoldersjob.cpp
        clearcachefoldersjob.h
        dbaccess.cpp
        dbaccess.h
        ${akonadiwidget_dbus_SRCS}
)

ecm_qt_declare_logging_category(KPim6AkonadiWidgets HEADER akonadiwidgets_debug.h IDENTIFIER AKONADIWIDGETS_LOG CATEGORY_NAME org.kde.pim.akonadiwidgets
        DESCRIPTION "akonadi (Akonadi Widget Library)"
        OLD_CATEGORY_NAMES akonadiwidgets_log
        EXPORT AKONADI
)

set(akonadiwidgets_UI
    cachepolicypage.ui
    collectiongeneralpropertiespage.ui
    collectionmaintenancepage.ui
    controlprogressindicator.ui
    erroroverlay.ui
    manageaccountwidget.ui
    renamefavoritedialog.ui
    selftestdialog.ui
    subscriptiondialog.ui
    tageditwidget.ui
    tagmanagementdialog.ui
    tagselectiondialog.ui
    tagwidget.ui
)

ecm_generate_headers(AkonadiWidgets_CC_HEADERS
    HEADER_NAMES
    AgentActionManager
    AgentConfigurationDialog
    AgentConfigurationWidget
    AgentInstanceWidget
    AgentTypeDialog
    AgentTypeWidget
    ClearCacheFoldersJob
    CollectionComboBox
    CollectionDialog
    CollectionPropertiesDialog
    CollectionPropertiesPage
    CollectionMaintenancePage
    CollectionRequester
    CollectionStatisticsDelegate
    ControlGui
    DbAccess
    EntityListView
    EntityTreeView
    ETMViewStateSaver
    ManageAccountWidget
    StandardActionManager
    SubscriptionDialog
    TagManagementDialog
    TagSelectionComboBox
    TagSelectionDialog
    TagEditWidget
    TagWidget
    TagSelectWidget
    REQUIRED_HEADERS AkonadiWidgets_HEADERS
    PREFIX Akonadi
)

ki18n_wrap_ui(KPim6AkonadiWidgets ${akonadiwidgets_UI})
if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
    set_target_properties(
        KPim6AkonadiWidgets
        PROPERTIES
            UNITY_BUILD
                ON
    )
endif()

generate_export_header(KPim6AkonadiWidgets BASE_NAME akonadiwidgets)

target_include_directories(KPim6AkonadiWidgets INTERFACE "$<INSTALL_INTERFACE:${AkonadiWidgets_INSTALL_INCLUDEDIR}>")

target_link_libraries(
    KPim6AkonadiWidgets
    PUBLIC
        KPim6::AkonadiCore
        KF6::ItemModels
        Qt::Widgets
        KF6::ConfigWidgets
    PRIVATE
        KF6::I18n
        KF6::IconThemes
        KF6::IconWidgets
        KF6::XmlGui
        KF6::ColorScheme
        Qt::Sql
        KPim6::AkonadiPrivate
)

set_target_properties(
    KPim6AkonadiWidgets
    PROPERTIES
        VERSION
            ${AKONADI_VERSION}
        SOVERSION
            ${AKONADI_SOVERSION}
        EXPORT_NAME
            AkonadiWidgets
)

install(TARGETS KPim6AkonadiWidgets EXPORT KPim6AkonadiTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/akonadiwidgets_export.h
        ${AkonadiWidgets_HEADERS}
    DESTINATION ${AkonadiWidgets_INSTALL_INCLUDEDIR}/akonadi
    COMPONENT Devel
)
install(FILES ${AkonadiWidgets_CC_HEADERS} DESTINATION ${AkonadiWidgets_INSTALL_INCLUDEDIR}/Akonadi COMPONENT Devel)

######### Build and install QtDesigner plugin #############

if(BUILD_DESIGNERPLUGIN)
    include(ECMAddQtDesignerPlugin)
    ecm_qtdesignerplugin_widget(Akonadi::AgentInstanceWidget
	    INCLUDE_FILE "Akonadi/AgentInstanceWidget"
        TOOLTIP "Akonadi Agent Instance Settings (Akonadi)"
        WHATSTHIS "A widget to configure akonadi instance."
        GROUP "Input (KDE-PIM)"
    )
    ecm_qtdesignerplugin_widget(Akonadi::EntityTreeView
	    INCLUDE_FILE "Akonadi/EntityTreeView"
        TOOLTIP "A view to show an item/collection tree provided by an EntityTreeModel (Akonadi)"
        WHATSTHIS "A view to show an item/collection tree provided by an EntityTreeModel."
        GROUP "Input (KDE-PIM)"
    )
    ecm_qtdesignerplugin_widget(Akonadi::TagSelectWidget
	    INCLUDE_FILE "Akonadi/TagSelectWidget"
        TOOLTIP "A Widget to select tag (Akonadi)"
        WHATSTHIS "A Widget to select tag."
        GROUP "Input (KDE-PIM)"
    )
    ecm_qtdesignerplugin_widget(Akonadi::ManageAccountWidget
	    INCLUDE_FILE "Akonadi/ManageAccountWidget"
        TOOLTIP "A Widget to Manage Akonadi Account (KDE-PIM)"
        WHATSTHIS "A Widget to Manage Akonadi Account."
        GROUP "Input (KDE-PIM)"
    )

    ecm_add_qtdesignerplugin(akonadiwidgets
        NAME AkonadiWidgets
        OUTPUT_NAME akonadi6widgets
        WIDGETS
        Akonadi::AgentInstanceWidget
        Akonadi::EntityTreeView
        Akonadi::TagSelectWidget
        Akonadi::ManageAccountWidget
        LINK_LIBRARIES
        KPim6::AkonadiCore
        KPim6::AkonadiWidgets
        INSTALL_DESTINATION "${KDE_INSTALL_QTPLUGINDIR}/designer"
        COMPONENT Devel
    )
endif()

if(BUILD_QCH)
    ecm_add_qch(
        KPim6AkonadiWidgets_QCH
        NAME KPim6AkonadiWidgets
        BASE_NAME KPim6AkonadiWidgets
        VERSION ${PIM_VERSION}
        ORG_DOMAIN org.kde
        SOURCES # using only public headers, to cover only public API
            ${AkonadiWidgets_HEADERS}
        #MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
        #IMAGE_DIRS "${CMAKE_SOURCE_DIR}/docs/pics"
        LINK_QCHS
            Qt6Core_QCH
            Qt6Gui_QCH
            Qt6Widgets_QCH
        INCLUDE_DIRS
            ${CMAKE_CURRENT_BINARY_DIR}
        BLANK_MACROS
            AKONADIWIDGETS_EXPORT
        TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
        QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
        COMPONENT Devel
    )
endif()
